From 2a7ff01e88a85ef67b2990e4b1f65ee39918dfc5 Mon Sep 17 00:00:00 2001 From: Fahri Gedik <53567152+fahrigedik@users.noreply.github.com> Date: Mon, 12 Jan 2026 22:46:04 +0300 Subject: [PATCH 01/12] Add extensible table row detail feature Introduces the ExtensibleTableRowDetailComponent for expandable row details in extensible tables. Updates the extensible table to support row detail templates via both direct input and content child component, adds toggle logic and emits rowDetailToggle events. Documentation and exports are updated accordingly. --- .../ui/angular/extensible-table-row-detail.md | 189 ++++++++++++++++++ .../extensible-table-row-detail.component.ts | 10 + .../extensible-table-row-detail/index.ts | 1 + .../extensible-table.component.html | 169 +++++++--------- .../extensible-table.component.ts | 36 +++- .../extensible/src/lib/components/index.ts | 1 + .../components/extensible/src/public-api.ts | 1 + 7 files changed, 311 insertions(+), 96 deletions(-) create mode 100644 docs/en/framework/ui/angular/extensible-table-row-detail.md create mode 100644 npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table-row-detail/extensible-table-row-detail.component.ts create mode 100644 npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table-row-detail/index.ts diff --git a/docs/en/framework/ui/angular/extensible-table-row-detail.md b/docs/en/framework/ui/angular/extensible-table-row-detail.md new file mode 100644 index 0000000000..24ae0f3b09 --- /dev/null +++ b/docs/en/framework/ui/angular/extensible-table-row-detail.md @@ -0,0 +1,189 @@ +```json +//[doc-seo] +{ + "Description": "Learn how to add expandable row details to data tables using the Extensible Table Row Detail component in ABP Framework Angular UI." +} +``` + +# Extensible Table Row Detail for Angular UI + +## Introduction + +The `` component allows you to add expandable row details to any ``. When users click the expand icon, additional content is revealed below the row. + +Extensible Table Row Detail Example + +## Quick Start + +### Step 1. Import the Component + +Import `ExtensibleTableRowDetailComponent` in your component: + +```typescript +import { + ExtensibleTableComponent, + ExtensibleTableRowDetailComponent +} from '@abp/ng.components/extensible'; + +@Component({ + // ... + imports: [ + ExtensibleTableComponent, + ExtensibleTableRowDetailComponent, + ], +}) +export class MyComponent { } +``` + +### Step 2. Add Row Detail Template + +Place `` inside `` with an `ng-template`: + +```html + + + +
+
{{ row.name }}
+

ID: {{ row.id }}

+

Status: {{ row.isActive ? 'Active' : 'Inactive' }}

+
+
+
+
+``` + +An expand/collapse chevron icon will automatically appear in the first column of each row. + +## API + +### ExtensibleTableRowDetailComponent + +| Input | Type | Default | Description | +|-------|------|---------|-------------| +| `rowHeight` | `string \| number` | `'100%'` | Height of the expanded row detail area | + +### Template Context Variables + +| Variable | Type | Description | +|----------|------|-------------| +| `row` | `R` | The current row data object | +| `expanded` | `boolean` | Whether the row is currently expanded | + +## Usage Examples + +### Basic Example + +Display additional information when a row is expanded: + +```html + + + +
+ Details for: {{ row.name }} +
{{ row | json }}
+
+
+
+
+``` + +### With Custom Row Height + +Specify a fixed height for the detail area: + +```html + + +
Fixed 200px height content
+
+
+``` + +### Using Expanded State + +Apply conditional styling based on expansion state: + +```html + + +
+

This row is {{ expanded ? 'expanded' : 'collapsed' }}

+
+
+
+``` + +### With Badges and Localization + +```html + + +
+
+
+

{{ 'MyModule::Name' | abpLocalization }}:

+

{{ row.name }}

+
+
+

{{ 'MyModule::Status' | abpLocalization }}:

+

+ @if (row.isActive) { + {{ 'AbpUi::Yes' | abpLocalization }} + } @else { + {{ 'AbpUi::No' | abpLocalization }} + } +

+
+
+
+
+
+``` + +## Alternative: Direct Template Input + +For simpler use cases, you can use the `rowDetailTemplate` input on `` directly: + +```html + + + +
{{ row.name }}
+
+``` + +## Events + +### rowDetailToggle + +The `rowDetailToggle` output emits when a row is expanded or collapsed: + +```html + + + ... + + +``` + +```typescript +onRowToggle(row: MyDto) { + console.log('Row toggled:', row); +} +``` + +## See Also + +- [Data Table Column Extensions](data-table-column-extensions.md) +- [Entity Action Extensions](entity-action-extensions.md) +- [Extensions Overview](extensions-overall.md) diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table-row-detail/extensible-table-row-detail.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table-row-detail/extensible-table-row-detail.component.ts new file mode 100644 index 0000000000..aabbd2a255 --- /dev/null +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table-row-detail/extensible-table-row-detail.component.ts @@ -0,0 +1,10 @@ +import { Component, contentChild, input, TemplateRef } from '@angular/core'; + +@Component({ + selector: 'abp-extensible-table-row-detail', + template: '', +}) +export class ExtensibleTableRowDetailComponent { + readonly rowHeight = input('100%'); + readonly template = contentChild(TemplateRef<{ row: R; expanded: boolean }>); +} diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table-row-detail/index.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table-row-detail/index.ts new file mode 100644 index 0000000000..e0666787b4 --- /dev/null +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table-row-detail/index.ts @@ -0,0 +1 @@ +export * from './extensible-table-row-detail.component'; diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html index 8581f6c4d4..a42d5d32de 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html @@ -1,21 +1,30 @@ @if (isBrowser) { - -@if(selectable) { - + + @if (effectiveRowDetailTemplate) { + + + + + + + + + + + + + + } + @if(selectable) { + @@ -44,97 +53,67 @@ } @if (actionsTemplate || (actionList.length && hasAtLeastOnePermittedAction)) { - - - - - @if (isVisibleActions(row)) { - - } - + + + + + @if (isVisibleActions(row)) { + + } - + + } @for (prop of propList; track prop.name; let i = $index) { - - - @if (prop.tooltip) { - - {{ column.name }} - - } @else { - - {{ column.name }} - - } - - - - - @if (!row['_' + prop.name].component) { - @if (prop.type === 'datetime' || prop.type === 'date' || prop.type === 'time') { -
+ + @if (prop.tooltip) { + + {{ column.name }} + + } @else { + + {{ column.name }} + + } + + + + + @if (!row['_' + prop.name].component) { + @if (prop.type === 'datetime' || prop.type === 'date' || prop.type === 'time') { +
- } @else { -
+ } @else { +
- } - } @else { -
+ } + } @else { + - } -
+ ">
+ } -
-
+ + +
}
-} +} \ No newline at end of file diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts index c70d2b39e7..bba805b684 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts @@ -4,6 +4,7 @@ import { ChangeDetectorRef, Component, computed, + ContentChild, EventEmitter, inject, Injector, @@ -17,13 +18,14 @@ import { SimpleChanges, TemplateRef, TrackByFunction, + ViewChild, } from '@angular/core'; import { AsyncPipe, isPlatformBrowser, NgComponentOutlet, NgTemplateOutlet } from '@angular/common'; import { Observable, filter, map, Subject, debounceTime, distinctUntilChanged } from 'rxjs'; import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap'; -import { NgxDatatableModule, SelectionType } from '@swimlane/ngx-datatable'; +import { NgxDatatableModule, SelectionType, DatatableComponent } from '@swimlane/ngx-datatable'; import { ABP, @@ -53,6 +55,7 @@ import { ROW_RECORD, } from '../../tokens/extensions.token'; import { GridActionsComponent } from '../grid-actions/grid-actions.component'; +import { ExtensibleTableRowDetailComponent } from './extensible-table-row-detail'; const DEFAULT_ACTIONS_COLUMN_WIDTH = 150; @@ -75,6 +78,12 @@ const DEFAULT_ACTIONS_COLUMN_WIDTH = 150; ], templateUrl: './extensible-table.component.html', changeDetection: ChangeDetectionStrategy.OnPush, + styles: [` + :host ::ng-deep .ngx-datatable.material .datatable-body .datatable-row-detail { + background: none; + padding: 0; + } + `], }) export class ExtensibleTableComponent implements OnChanges, AfterViewInit, OnDestroy { readonly #injector = inject(Injector); @@ -127,6 +136,26 @@ export class ExtensibleTableComponent implements OnChanges, AfterViewIn @Output() loadMore = new EventEmitter(); @Input() tableHeight: number; + // Row detail configuration (supports both direct template and child component) + @Input() rowDetailTemplate?: TemplateRef<{ row: R; expanded: boolean }>; + @Input() rowDetailHeight: string | number = '100%'; + @Output() rowDetailToggle = new EventEmitter(); + + @ContentChild(ExtensibleTableRowDetailComponent) + rowDetailComponent?: ExtensibleTableRowDetailComponent; + + @ViewChild('table') table!: DatatableComponent; + + /** Gets the effective row detail template (from component or direct input) */ + get effectiveRowDetailTemplate(): TemplateRef | undefined { + return this.rowDetailComponent?.template() ?? this.rowDetailTemplate; + } + + /** Gets the effective row detail height */ + get effectiveRowDetailHeight(): string | number { + return this.rowDetailComponent?.rowHeight() ?? this.rowDetailHeight; + } + hasAtLeastOnePermittedAction: boolean; readonly propList: EntityPropList; @@ -290,6 +319,11 @@ export class ExtensibleTableComponent implements OnChanges, AfterViewIn return this.tableHeight ? `${this.tableHeight}px` : 'auto'; } + toggleExpandRow(row: R): void { + this.table?.rowDetail?.toggleExpandRow(row); + this.rowDetailToggle.emit(row); + } + ngAfterViewInit(): void { if (!this.infiniteScroll) { this.list?.requestStatus$?.pipe(filter(status => status === 'loading')).subscribe(() => { diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/index.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/index.ts index 149043089b..ee501c875d 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/index.ts +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/index.ts @@ -2,6 +2,7 @@ export * from './abstract-actions/abstract-actions.component'; export * from './extensible-form/extensible-form.component'; export * from './extensible-form/extensible-form-prop.component'; export * from './extensible-table/extensible-table.component'; +export * from './extensible-table/extensible-table-row-detail'; export * from './date-time-picker/extensible-date-time-picker.component'; export * from './grid-actions/grid-actions.component'; export * from './page-toolbar/page-toolbar.component'; diff --git a/npm/ng-packs/packages/components/extensible/src/public-api.ts b/npm/ng-packs/packages/components/extensible/src/public-api.ts index e5c7883738..5d06088a02 100644 --- a/npm/ng-packs/packages/components/extensible/src/public-api.ts +++ b/npm/ng-packs/packages/components/extensible/src/public-api.ts @@ -2,6 +2,7 @@ export * from './lib/components/date-time-picker/extensible-date-time-picker.com export * from './lib/components/extensible-form/extensible-form-prop.component'; export * from './lib/components/extensible-form/extensible-form.component'; export * from './lib/components/extensible-table/extensible-table.component'; +export * from './lib/components/extensible-table/extensible-table-row-detail'; export * from './lib/components/grid-actions/grid-actions.component'; export * from './lib/components/page-toolbar/page-toolbar.component'; export * from './lib/components/multi-select'; From 677cc0abaafc0cb1c4ed890308d07855e1cb3e3f Mon Sep 17 00:00:00 2001 From: Fahri Gedik <53567152+fahrigedik@users.noreply.github.com> Date: Thu, 15 Jan 2026 14:47:04 +0300 Subject: [PATCH 02/12] Update docs/en/framework/ui/angular/extensible-table-row-detail.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/en/framework/ui/angular/extensible-table-row-detail.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/framework/ui/angular/extensible-table-row-detail.md b/docs/en/framework/ui/angular/extensible-table-row-detail.md index 24ae0f3b09..89a60d6511 100644 --- a/docs/en/framework/ui/angular/extensible-table-row-detail.md +++ b/docs/en/framework/ui/angular/extensible-table-row-detail.md @@ -61,7 +61,7 @@ An expand/collapse chevron icon will automatically appear in the first column of | Input | Type | Default | Description | |-------|------|---------|-------------| -| `rowHeight` | `string \| number` | `'100%'` | Height of the expanded row detail area | +| `rowHeight` | `string | number` | `'100%'` | Height of the expanded row detail area | ### Template Context Variables From abb68b3415d0c9d197c9bb3ad596787cfa61f07e Mon Sep 17 00:00:00 2001 From: Fahri Gedik <53567152+fahrigedik@users.noreply.github.com> Date: Thu, 15 Jan 2026 14:50:45 +0300 Subject: [PATCH 03/12] The toggleExpandRow method uses optional chaining on table Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../components/extensible-table/extensible-table.component.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts index bba805b684..6f6331c339 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts @@ -320,7 +320,9 @@ export class ExtensibleTableComponent implements OnChanges, AfterViewIn } toggleExpandRow(row: R): void { - this.table?.rowDetail?.toggleExpandRow(row); + if (this.table && this.table.rowDetail) { + this.table.rowDetail.toggleExpandRow(row); + } this.rowDetailToggle.emit(row); } From 41e3ef8fd0e03b1320f38f7f000f06e9ac2d0884 Mon Sep 17 00:00:00 2001 From: Fahri Gedik <53567152+fahrigedik@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:22:28 +0300 Subject: [PATCH 04/12] Update npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../extensible-table/extensible-table.component.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html index a42d5d32de..36670d1888 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html @@ -6,8 +6,8 @@ [footerHeight]="infiniteScroll ? false : 50"> @if (effectiveRowDetailTemplate) { - - + From 5c00d366f8ab72d4d074c3696bb3ddd927996626 Mon Sep 17 00:00:00 2001 From: Fahri Gedik <53567152+fahrigedik@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:23:00 +0300 Subject: [PATCH 05/12] The @ViewChild decorator for 'table' uses the definite assignment assertion (!) but doesn't specify the static option Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../components/extensible-table/extensible-table.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts index 6f6331c339..491e4f5a38 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts @@ -144,7 +144,7 @@ export class ExtensibleTableComponent implements OnChanges, AfterViewIn @ContentChild(ExtensibleTableRowDetailComponent) rowDetailComponent?: ExtensibleTableRowDetailComponent; - @ViewChild('table') table!: DatatableComponent; + @ViewChild('table', { static: false }) table!: DatatableComponent; /** Gets the effective row detail template (from component or direct input) */ get effectiveRowDetailTemplate(): TemplateRef | undefined { From c81124d2dc0b6bfb6e9649870db1d1d804a01266 Mon Sep 17 00:00:00 2001 From: Fahri Gedik <53567152+fahrigedik@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:24:03 +0300 Subject: [PATCH 06/12] Add ExtensibleTableRowDetailComponent to module and docs Registered ExtensibleTableRowDetailComponent in ExtensibleModule and updated documentation to reference the new row detail feature. Also improved accessibility and semantics by replacing the expand/collapse anchor with a button in the extensible table component template. --- docs/en/framework/ui/angular/data-table-column-extensions.md | 1 + .../extensible-table/extensible-table.component.html | 4 ++-- .../components/extensible/src/lib/extensible.module.ts | 4 +++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/en/framework/ui/angular/data-table-column-extensions.md b/docs/en/framework/ui/angular/data-table-column-extensions.md index 0365336d81..81312cdd75 100644 --- a/docs/en/framework/ui/angular/data-table-column-extensions.md +++ b/docs/en/framework/ui/angular/data-table-column-extensions.md @@ -342,4 +342,5 @@ export const identityEntityPropContributors = { ## See Also +- [Extensible Table Row Detail](extensible-table-row-detail.md) - [Customizing Application Modules Guide](../../architecture/modularity/extending/customizing-application-modules-guide.md) diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html index 36670d1888..c5373aacff 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.html @@ -15,10 +15,10 @@ - - + } diff --git a/npm/ng-packs/packages/components/extensible/src/lib/extensible.module.ts b/npm/ng-packs/packages/components/extensible/src/lib/extensible.module.ts index 26741c2832..9f3ebd775b 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/extensible.module.ts +++ b/npm/ng-packs/packages/components/extensible/src/lib/extensible.module.ts @@ -13,6 +13,7 @@ import { ExtensibleFormComponent, ExtensibleFormPropComponent, ExtensibleTableComponent, + ExtensibleTableRowDetailComponent, GridActionsComponent, PageToolbarComponent, ExtensibleDateTimePickerComponent, @@ -32,6 +33,7 @@ const importWithExport = [ CreateInjectorPipe, ExtensibleFormComponent, ExtensibleTableComponent, + ExtensibleTableRowDetailComponent, ExtensibleFormMultiselectComponent, ]; @@ -50,4 +52,4 @@ const importWithExport = [ ], exports: [...importWithExport], }) -export class ExtensibleModule {} +export class ExtensibleModule { } From 66cdfa2d2880ad777d2a2c7e0e81181ecb4148a0 Mon Sep 17 00:00:00 2001 From: Fahri Gedik <53567152+fahrigedik@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:51:25 +0300 Subject: [PATCH 07/12] Add ExtensibleTableRowDetailComponent to module and docs --- .../ui/angular/extensible-table-row-detail.md | 2 +- .../ui/angular/images/row-detail-image.png | Bin 0 -> 32082 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/en/framework/ui/angular/images/row-detail-image.png diff --git a/docs/en/framework/ui/angular/extensible-table-row-detail.md b/docs/en/framework/ui/angular/extensible-table-row-detail.md index 89a60d6511..1e982606f3 100644 --- a/docs/en/framework/ui/angular/extensible-table-row-detail.md +++ b/docs/en/framework/ui/angular/extensible-table-row-detail.md @@ -11,7 +11,7 @@ The `` component allows you to add expandable row details to any ``. When users click the expand icon, additional content is revealed below the row. -Extensible Table Row Detail Example +Extensible Table Row Detail Example ## Quick Start diff --git a/docs/en/framework/ui/angular/images/row-detail-image.png b/docs/en/framework/ui/angular/images/row-detail-image.png new file mode 100644 index 0000000000000000000000000000000000000000..272a0ba677dcc03ec99c92eaede479b9f2d2421f GIT binary patch literal 32082 zcmeFZcT`hd&@T*jMZiXHD!ofrI!ck=34|tw-a-pVR}oQZ(xunXLg=9v1?jy;N+S+pS@>h&&+T3>^XU_rJ+Q6jrJN55fQ2K zQ+XXCqDz)UM8rR?Tmqi#c4b=w{}H?EC_N@B?x$Y?ZZ6o!sml=&l|_;qSzH9}uev-n zawj4pYd!l%+yTu8UiZT)%ggD#F#Cz|HPP2^Io;flyP+kkcjub~e2ZLj52OrqH8eyfA3|cJMAS!?CCBDJ#l&HSi?rh6F3G0^X!`d`X>T+9^Ec5;?oin? zmj1aucU=Lf{C%Z_{cqXOt7l-Q?Zi{0X=nFdr9WZ0CHR^?NbJD*57|UwcVfC&#H!=% z$LiuFrHpB)&_fHdxuw5S3K4~)x$1PawY6Ps!TlnCUiiMGr>_quq2kNW$dKjZ1$TDj zg}YKns9&>GQB~E`HY<)`kf5a^{?mPW)Xm*}aeZ#+nPwsz%$@U*d6uXXt%m2Hb|PoR zrluyYN9NCYsz!2TmjL>J8EHcQ4&dzL?Cf0UlG$SDn5XhBvag6C-d_F!lJ_`iLFu93F_s%(%0D_`|GC@8!Q^mW2rp}R*WZyRn^SnRw5 z|I3YVXqTmqgC_X_$|1YTsUbYHKA$n7<^{9X}cEg6mL);r=pxbfp+4YkgW+QrX-P zwC=a1aJ-(dhie)N^5`(#TgH+fCj{(;9EyB>arw{qFPXl;=sQ!!$(6X^RgEG!6|R5v z{WGfdUxOF!eiViL{{0zb(@J?d@ag%(od=X+PZB+O{EfKDLzbHkPT>+@x&#RqY28`B zU1%FT-M|jMurwhjrF5bf8Fn=)ug^Z%E*a(4CkjvJ8VTmw_Gx67%1I};bEp_MYn0k^ zPo+QRmKw6Cm^nccr}97%66xOH+Y*WB8W;OW>BAQl(Hd#`c5oIDIc(K8GVMiawVwwV zacWc6w3(jOw&!Du?=IO%XZirk?AA|9_2F8II;5DGSvtdpf3D9It_L&L_jHXMTw8we=zS2P?t&iYW<3k5qq?@-;SK!iD3~`4 zG4`+-1Z}Rr@ZWY5@o~J9K3ni=PQ>3#a3fA1H&0)^qvqd zs2Fjo%*5o}KB>0**o;^tc1JlJ6H|b!x$l)!2W;X(MDYDj@jHV2yy^tm?b(T3CcdgM zCmEV-iA#8$=8SmpcwM;klh=#zTX3lApoRYGa-iq3<+3g2QBkDN0VSstzVw!^${o?H zyvd{@<3Fqt6~F8m;8^A2;P_Zw9a;8mRh-O{#XE$fJTG*34{ke~cH!6tdy}H-s@{P3 z7qvuBq)9IRAk*hpb%k)I&C5CuGA-NFr}%=W!?~#)3pZVp>%5Z~B!5(0aDJo(f7*0n#=Jgp(!OEk zYuc$+r^^mMh{)@+oX;P2D#dZ}R&f9ITj+xJAFpw55aOhbO3kUKSpkO?X>L;ZRLW*T z?JmfOGM#&zMmbm_e)WAV|K#jRow^N6YVRW_|4I@YArxc{MCho8+I?vOiFlnn_jhlv z`=;T0n#3rCiomADHPjd8-9x)}HV3^9vtnd)6KY`l!@kRLo!mJZ5-QL|(!i&IpN4gv z;l3#Grf<%!dH42~zZ6731?Fa=bLMCH#-UWly6J0@xx?{JV>Vx@+m3!}1f!{nYesuH zA>UWI#2|^xcns5@fu|oh7sen~SmgU?l>0|o^~IA5cHG-p{|xxu+JoV;U>-hQQw$e!4N|L@ z1x?7eS^Ey;NlUn!$mmOGT4D6o|n)MG}f{I#r`%5vDlu z{F*7P@YSKo6ZpaIC^C+7a_5-OX)*>$lB<&XC@z~RS`0UTnxeh@@tJpl{L0iVk8g-- zw(GyDn*%q=CoAXQEi9M)Vehk5?NL}(@$1*;ynPR;Ly^VvjDidv*j~=M3h3q9)UMHp z@YC^bRDE39M&`^s<8XS~dxMW_P zJ*u!L6%g4XVZh}--;CNC86zw`wNVdTV#M1mrCqDTfe4t!papZ7-su4v1U^^+5xC|m zCwH!C)6IAPUCg)EXF;ndCGBELr-6%0Y1w``%eqX?D}NvA{|Kd0x@l+>3=HDWiC?A- zMJ7#b{KX)mK83q~Z@ybz5d1SRk%r>`q6Qi8U5H>J5KB7o{54vaq{2e`L^U=@*~qc& zD>Wd{p-ANyp!`eOL-nD9Tc}+C$|Nw6l%4xP6cm#;FsS->022y*{V{QGLfFwHO5ooR z#BQqH*bE6?(Ha*>v@H$`)qMDH&HvYz%h5R@ zj6P3!jjM!<&zXo&P*C{nVZ7oJ6YWe`l(+Esv7Zwai}UjklQ-N&b#-8UeSQ0(tYFuh z|LUB}NN0Dqjx1IdQZ@!pPwf!dI6Bzw?(F>7WjQ?88ltbI^~?lr28Y85KPv`y*6TM4 zv$7sX>lqmp{P^+QwBf~2jkwELZC#!H&u?Wu`*R`qU#;W_<7(%vot@Ffy%|IZQ-EO% zyJmb|Uf!lN$kg7x(9CyD1fH8qONDu$kuHr?PZs55XYZ)F@-ICvFTUy}{kc4pE$&aK zRE(fMn+BejM+YiE2a`~FEDzpupk`J^f>FaUn$iVE71l!%mt@4LsHk8YGp5G`yl!*A z@o2HBL~VUNHxG~6*^?5p#)YLN>xL=)gydwzNS-F5u5PIR9U88ir(w4-(^yzsY@niY zE%Ub(YLUO?sh0!9v@#zlW1yiC!5FY_(Rg}tXg^hjwC??M4+H|?eDXBY#|!ll9>2cJ z>4QLL9McL}hn*Y@1g^FOlZ@lp)IMcQL7PoCnhuLuR)&Z&~{qokn&x_Inh8!O`SUAFD(*Ur|~CjdEwlfw;E zz_AYnC1v->h%O*hgBLGq@CUEj{kFQ;#r^h6F%PVOi?Eaot@Jwp`GlQ;? zkf1EPZeiSdcvpwvp-l%%bovGc_M`dQv|`RF;7Z%fZR~&prVgf}rlzN$5Dcz%M*6PT zDjgs0B>-xWtDam5%&VR#s4!LKG%}Q}G*$*tlG^_sv^rf|A$_oLdu^t1ia?8_Q|zND zS^QQ8xkg4dex6)1V{}vxY1Rm);xo~bmw&U~bm;7mp9HMIfb^l7QY52(C?&7Q;aWAW zUt+^iXE`Y$AulI~1?4nl(CC97{t|QA;XD@u*K?fhXr6 zncA+}QGWjZ;cYcAZ)z$$?+j<_otD9ynH7HV+vR;xa@gwd3m`oY*h~v zaJV+v9M~Kk9X;9{7zijB_q}^^6B83>=KSs^vj?C@Ym+F|larIx(Sn#WGuqklQ2+Em z4p61xC}yQf2Q*)BaBx>ok1DWtQqj}|IXf5MXJ#I2^!0-0J?lBldE}j4Rvus;iTR~Bg8Xzb@lI6asihz&O1I&Qp z)~)-1>cf@?<<{5N?Pr@BO@ER6YyQ*MuU)&gux5IiGJf62Gf3QR;az{KL|&8sVRu`b zg8$*JzMWkG=EAaZmE+Jvg^h^&lA3~&lEdeh#C6y--_gt`m+?O*bb(Q~c6SYCoBSEf z)&f>XIa%4+al2Dc^qEHrI3}#j_-^Q*o*c)eq!d-y41m%2t*zl4-Q6k_ckXmr3Kn>6%$!NOJ&Y#1v-4>^_FNJU@N8$gv);I8hF_aPPafh%3v@kO z?P2TFMz`721_4(s>^%JtNMx;aMlna{00NOZ`qf&8A2+7BaU&x?pCc|lo=Zk%*5?#3 z`*0c|#U~+TV?b95M#kcX21&rq3js#}sOU$Qi@jsHKC=efwOV&TJ&rdc14pN8-SJbiCkF4| zzvtrTN4JGikw%jJE1K_aHvrLWZEblhblwC^btMjDHgwj%8;G~_^Peh3(3jyDfHdS* zb_mm}SFZ?b&_IL$qnv8`zmLQy$PwUsF;}8@ex)A-Qd0b(-|-e;bO27z~^|e zDI!wl#L%?PV~9CYGRtlxmj+bN#fL>zI!=`L->|Ey^IR*OJ=v}HJj8afr&nIe|Gi|z z*Uu%=ooOMEcBP=9DFAfxn-3je$^dWqfJ*?BufVk4Q{40CCyi8bE5CPao12?afT)H? zM)XZhd6ny4Y-U9;$rKwP!3FvVgZBD|XNg_l&ThKK)n~mHdxx4jAHV@~9rE)Tit3ti zfMOo(?|;K22{tPOszk;hp5u(E;}jPM1JrAKd)K<65G^z%@FlVDJ1Zk~E_1IjC!1Sa z(V?pIAt8W0;Rb^uPJV~#T8K>{=bBgkB8pp-P=9DxMQ~>v~_3M{bz2{nNOicEhHx~e9>D<=?3CAU!c#yX8C|!&^$Lcm-N8maZK^x<<4?@&=I^S!? zTM0Lg)CKw{-`PbuPUrwURW~#?;t#Ot+<;vISS?aKp8xUV4O04tT8F!9BS8EBD3z57 zTpP5Cq7Huh)*hhS&DC{?J>4%W@MxatY>8m&1?~F>2L*wrCujHqSWMy3ksp2?V+?>? zyZ&$RPfi2E;}*$rz4LAwmfQ~?elxsI^b*kQGib{H7td|osQ+NeQvgoy3_cn(bX1_a zK=j#a{Vi>g?_3w?C@Jryd#%039)buLkUxRvi>Hlub07?A6_g{(K-Q0!Y!HSRA z%PHvT9eJ8~0DmVy`6nYnWI|Cr?G{?LTyAM)#hKxr0pu=$r2cOYMMUI$C;Xz|b)&!A z^Z%U8!hc5gBDZ|&gFO(0_P=)o0Gck;l~h%nt?`#Ws_8Hj2zqG~e)#+te@r{smy@s| zU?)p851fepbA3kL{hKM+`B+QL$`F$^n?F2$z2y_#m*CLh@i2RZW^H&5q#geIjh8rL zU|+NxTyo{Pvpf}F((IqS@n?L9?9!zj40%drv-al9x!)7u-vdwOH$Kr(ZSejc!X*8F z>Y&mDE4qTdcaH!|DLdL?IBa&kMsrHeAjJ2FFzdS7^NEG@P6ycM$1CZxD=*?)=lYzc z8`=C%eW_A?#uPdNHnQ~hlEM(b-ynL)R_A^83i1S}YXvr2f^aMdXu!UblsB2qF0Qa8>v90;mj6W=IS8vL{1`RUFZ(6OqII( z<2$#u@|)s!@I^O*-@M_l>}Q)2*}>gV^?v&9@#6sADfqC!F{EK_>qhutGh{d_(AMPX zyDYP=kHh8$dS_kQSD2K3uK!8KsC#Z-6ny)jy#jYv!4v<{`G=PEbP%8T?qw>ZPiKyK zn8?Z@NUd(HCOU_vq{eo_FlI@{a(FM$WoVCF6hd90&Bow6q7Yp2Y3GgW#A2!B`W`tg z)pzR$t9Ugl>n21!E2dFcH!(4>+s{ANd+v;w&TR2t)7I|Z*10p`2jEEXlSBxiW1pjO z8f%K%>J8`5uV%q)x%($47W54St4Ns-F7*OK1t8LApYQGb7Ve;>80fApdswZm=1H^f z&iB*gf=|gJu{2i0<(WEk=A5gdF(;BkImS}q+(s`{_SA(}CZ+%;Ky|QuWdskliEdlo zJZ3Uh1uLmei~f2@&FlR|A(&s7`9h1j)5xruf#LvF%9sMGYy$YEG|At{xe_s`v%jCwV zr+A*X_kVlv?|x!RcSp3Sb?4bgty(0gRqa!IkmKlCkb`@%>wD5uwqD-t3}x-KVJ~h3 ze$BN&{bTXZQY&;Rc0;h>mwLh_=)f%O;(4x53|)i7Q{GlZ)f|l}W)(VA$9|^3B6JP* zWIHWI{&95dHJj%XbKeMvIM-?Ag2|D^2J06gwI09f?P1=vU~+#gq%uFquG>o|(G|{R zx1Ge*CmK)3b2UEJ7&#G5nWu+K$x{|uP2665KLI-*%1WMenmPw1ds(z-|BQ^L$KMg! zJ~vkMBx9@>3aMpCcDnvljWF}e5SCWL7&>m?FjQv`q-e5WW8liFlf@eO>NkbeYYl?! z#(k1Pk{A0I8zSpU|B?<#J0RHwCuWz3yPA=BatV@&O%E;qW5*0$B= z!D3;|u4A+nZ8xg!7&vUI9De*h6*o4iV++bz2-i>A3HLWLWh2EWkXaisLStg}xG=Pi z*QI)iyV8B0CPNSl+pz~#_d&xd$){KY^a1bx< zz>giZVo`21kh3u>TriS3iNzoEpWLI>HRpIjJ+Br&*EufCZ1VmDAu2<~wKj0$_z!lN z*pVvS7JEYyKf~*snzhqgl1)bjv8R4aqn~&_m2ND`?TK7)<%AZCKF%cAU%7TOAVSi1 z7#ZDE(ZBheu}bZP&7GVI=d;B40H9a6Yl)ulGXY0#Mo()sJU}nm|ATc&7CU~DE8Yr6 zz9IpT!kZbSDW=qyobMv>X#US`$9R7b^TlEg?=vppRVqY_c(BRfjd5Lwr}iISR|}q z?p8+nk<7OLsW2+fb%pe6jtoAYXDG%Nrnt#>m3Z%Gl@)s)$OO9t}*>W?N`#i}ox3=eYXM-P(-bm)0$X-FBdG0{H zXKNy-PlVaBkx)nP!{eZ5zrF8gR(lP3SARFxI88eKTGQ@$vwr^)5;k7%{v7t#q-}h| zVId|vd0&=fpfrxdZ$ki&Qpz-WA!+9e3F#Zb>>T2>-R-73O)FU~)G?EtRn;GqtM{LB z={ae}sd^wH%NE@9aaDP}jn>w}?kChrlt|Vv*AL6h;wemu)kh|?v`di(yHp~_=87vN zq`kb5aRnK3P{on)@eyU~^WTED&7u>vmmS#=-0>;fic0%rL3Vey?*V64T1IOtI>!Z) z*>>B%?@P~zq*{=pbF+lylyTcI_u{pOFM=66%usAnpu;*S!)g|!0@wfQPnurV|B9uv z{TSG_({Nm}Hlz@rRHhYeIb3sB>B;LvUNaqJQ1qo8k;`&$-LFz&C8*kGZ3c1 zVn{J@r_mHj9rKo;ilv><{4EipZ}&geuIM`qPmTFFdZP$Zrf|k>#LhP{onluJ<*T!L zxT*vF)h&-WHr|r)*lHZPSiIp9{J^+-shzQxs;_#SJQD5 zINiwkjldtGOvL{uib)dbJ{prit~%dosQx{Ui$5S_V$wBhLCU#HUwnUWJc!Wjz_xs_ zXYbRpvg>&_2a5pc9}Gb=owdB=)0rOOqrIu}z@6E};a>O^5zcixD$?cWCTF#CXIBm5 zr~fYM{u>9q%=ugGGxX%|)Bg%(X#d}ejkCfXJKpt6?(mZ}AXr=xBzj7fW zdWp!wBBjC=5?KF+(7-9;ADbm|$+qSBXwmr}XP5sewO>MUaUeZ9lJGyfQa^p5OsX)y zMt+fkO3xIt{2zytVh@2zyS;eltzCQ85`(n%HV}}C|9u!+94gD!oS_A`THLb7sI2p1 zECmz)A7OJcQ1^!F=H|=a_j@lXH9gjk?x^Y3A2Gb^-bZd^V4_nvT<(T~PAM|3^Zwb- z0^+h#Iqq8;mKuxtGhmT1Gm6a>d+DzwBKD_Q&aVgzm0=;f#f)ldxUKM^YY(ui@p9c zHe>(g=IArXNiAu&m7R47Ru~wkQVQ=W$#LXOzg1k?v@}(b9M-c5`L^Y^<}2v!UFG`M zalxh=UiIc;k?dpP)x^x~%dhgx&|CYCadaDbEdFKpM@-V_O33G(Q*Li{BxqJlkPjtM znS0^jFQgnyZIa?8L_XGCbCkI}&_S1Qj>uV$boBh{bZ*h0>-;e>(dTfuq_J^4|6uPY zTZK1M=}ey<;vjHZbO)@!cAz6kj9ZbJ*=f}$NXgc*mj|gPR7^_rInHbQk{~IEOfoX3 zhQbFAx-Bfc1Y6@NH>J&7sd&7=r+mUJA|*cPIY-K(Y2Is|!^_(4MnvRdT4Pw;aO?_h zdKS+XVUok!zDPtQ8?6`HAWuFmE!XTPWgtPmSg`zjt$eFuLcD?5D9>r*B~B}@OKiX?=P!au_XZ{$KW9D8d&1zJ@ z*`+dBrr3iGi!~?N&f0pyExe88_V@784F^ zyiHCOd36dGzojPu?X0)$6DCGUbabQR2nW|MPR#82L><2m5LlyWBzV6jOXn5l1Ar^~ zgQ!%=)sY0QEs&AoII8=vK+8QK_N`^0@R-8MyJTqQ%Mj(re1~t#tt%P2NPL zgyTjCPGdFVg^@&?+6%eB(5q4PtS?>nHsECy3CjghqFzKqpOvpzuFf$^E0N@R8=qE(}=yO?kjE6lfjW66A&x0rj6BrMrcX53;d3W-pPz_^ch#Ou-QyS}WLu^LU+d}vGYEsF z%)GM;t&|20PgwE>cIWyH3lV-?PVOjh6*b~cPuH&JzZ5z6H80-QrnpaB=Id(0(9*Hw z=GdFb4~9T$K)gJkM?V#NafuB;GnrOjPW5EH$*&c6g zt0l7%5k2)r#IJ@X3FqQ?j_nlRS%mwfsE<%p;m;*kZMZ&(X#)0}WAx^0k?u?LIGvud z#*{#}dcPdQUO(#UKI1Umj+8>jsnl2|G>_c_Tt0e>bnrapZ z#%ZoR+fkebn%ti`L`HncW?Q}ugSjg z33E*DG_V=A-{&o7ywIa>NgXn}I*9XmM!1jE;EVRgyHT(P7O}JU+3w4~XR+#7_1aFb z_jmJLtI4AZjZJ7!B*~l24)$d!NXV7B<=m)h@An#C$fQi*lkVS=fvOYi-t^t7h(B+Q zL#+fX$qdIYPk7PEyx+taSM;@JS)v_d^a4b6B|wtdQ5DbE(wYrY(o%ng#cy<0MvNF& zoBoQlq_fqzX`L-1mV!Ez|3 zoq~u6jm&z{m;69Zv-s)YTtz(dbld$!fOBtwz2yn@h~%1%*<|?pZ8S&0l63rh=XvN@ zKeg`>V%A}1%2lPiil(HALsJ<+x$;W+EhH^Gm1JXxe^w)3N|D0K{un2;Qx8pYu~5>r zYR)@ND$j5>wOWdv%*a!QMc3&h^bVgVaoSU_8gG_Z+do_kbP^Rb^3W?A`_7df}{ml zSu;?TbReQCd7EK-zSq6?XT(SX$p*+v6>1|v1ur$?j{TTYH2Ow!M=w2TOSq8`-$%hg zhSJm8;c2{GKPI?j_xgu<`dxRw=)AZMq;@S!^D;FlqE_{BgXg%OFdv((yZS&{@t#9> zMpB$TgN#uQvHNM(W!^-!)o3go`3FCrl`p~Rw#Q^WFY2qN;!5?H#OVn|Cifzfu?xyC z{9mhIu83P=!N2Sq36P-OZQfzsOq1Vte5FIA7$Z(lPS!|D6Y_Nzx?5LH%GzgfQ--1_h_)kZsr= z^GX{P)I;!kYsEuzPlA*7mki)+P$Y&t+B2Z4-RE`YQSvMC<46w6z*xxp&24{yrbv%y4Fn3olLndsYzq(>g*27FE$Y4EoCK%b>`&ou<)yskiS~@$QWWHK)SY*Oy+-4{4+JI{Q(Q{b`2& zhPQ7i3=FAy5xPvHeM_j-ORmZ{O=R#=^-)ZC{pgLW8*^v24`K@0s`OT0d*BSg@(nkd zVpwarIjo}s=$xv{jY4l=>RI|t?tMtjwjh-uCi?CZRjtU~Ty`Ym5`Q9$NSHQ$x*jl; z6p**rablYyDpA8#d6-?%*AYp%el2-tWOClgvkJdDp0N@*G;1BHw^y~Uqa3yM;o9OF zNW%43zhyGFwUgS>7(J;icNa$UHhXx1>Bm$rh2oSr7W@l&P4%ml^v3MA(fA8;RS{@O zWnCQ0B~0GH@VBby=_kUQd7|&tzB(R@P8!?KA~O9loX1Ws+aF_@vAlB*>l`RN;MB23(l z*Ql1<>Fw!|%A(kZ4I6=Sk$Wx)fH<~qCf_Dg+NQtcD<@<&s2kLaV%#&U*vV6JNcY_) zQ!Od6PCfJD>VOyT?5TLPbMaDP(Ar~(SG2xfYf&=%C$PS-2ra_}VW~sqz8CA4=FSU$ z7X9{Xw?ImklA>_XTAP8&shxo|QtNBJt-7Cwg3~)lV{?7GM*S?ICYd)besn)6Q?f;5 zyXlexj~mlL!-<|dg>uU|sl(d(y1fU*RtAD&JX=6{$n@iRz<=sR0NB4)p=wU|_#WBO!&>b`s<(rHnc!R5iK7oaPctK)Ok zqYh#4kk&Ym?@;E#OyRn~M9q=gP zN!Sk)OeMVWRHEOb4wJQ*+(3h=?v;{!a+~QqgF#Y`RZ{$B+cO@cJsq#OwF4_|juup5 zBQS^BhB@Vv%|(~4mu_5LSktAe9zC2Udg*ZKm0IJ6$`PNj;03AsSzm&D2g5Y)G<(Fi zdsfu0XK<(^sQL%rT-=0_ukwOvRg>~fj43q`3|^JN)ko)^2s=K0GjH+ml9EI8A}a;* zy>4_lN@zxBjz(B+o)-DN78mh|->`mU-R~IYut6)K1X_-wLAn2^sV3FadQsWF>-qym z4J&S{b?Z*u|3>r@*V!hn^ou)>#cVrwqBnbKEiZ%dW)iiLZ`?cznFx#KeghFE`rdtI z^z#?g+E{Cu1O4u5<@`^`M!=;Rs(XP1O;LWSJh_7<=wO|CWX2`+Ca5ZAh^G zNbn<*q` z60(Hh;x(&_zr@PMo!h;5z7^)|i-1q(%y&jV5e_L#i!-#6-|_fFdC#PYS6he0K`CrU zNIG9w=~j_3l^@d)xjez$H1L&E{0@AyhJ6TWYP1&mDIc?Dn9a`9b3t)frBKh zq7Lb(PmjRE)8bteH?wBOGe^$h_t{~yp?XsSGsHx;pI=G@f~VM|>-3;);&p`5cvCvz zi3dE`HZ_LQDhg)dqLQ^1wsNFbj#H^x_l)FX97TIp&(dgBbzeXs%~-Z{>w5jH+mKRJ z)z=PO{fnNi@a01oG@B|}{0GvadTO*DEKIMbj8;76#eZB={@@1B9VLsRq%_!=U?KV} z@>;e%qk%)$IKFrM&4fb{1opPi=(*UOqv-_r;OM@8naqISm^DHcA8`fIC|(&?@Aq@# zE(18rCc(PUM914KWr?>uSBCb1_v2$wd>U^N!;{Jfnt7@$raU^s(WfK!ha$+9^<;}j z0@29SjrODvGrOBeY93`G#2_xQleN!-D18Bfst`8XZ?Chg(om!0Z0Z! zr5z7`iMyu$(W}bScGTV5yRe31#j$+ms9D4lXIgGBV-GoI1`feWe(6^yXtCG&y`q(v zA-r8)li?fcH|g;NW}P`PVK2Vl|3l&SKCYYn-M?OqnWJ z=9KaHEWk$#^YF)WLjzN0QX1urSypzbr3@?Ph@l!b z(_`Bk59LOX=+|rxb1|rn+N}m*WQv0~!`sj+Af!NZ#8$(@#w^3 zS(<6+7?DW-GLw*bbM)gWAA^!Z5%-S=%^hC+W7zm3>z{9IlPwGwBu?hGeLTHWbSnC? zeV*!gJ2z0CjOEUVSm(S2pWq-u*A4A;Ue}8Cj^#Ite3@e%z^y%5jP8!x>pOQ`X5I88 z*r7W$p2RH~Ms|V7MdW7ZQ=Lg1tpm+@n5<=3z=3DO;)S5}^-oNQNNdr6V7Y_LND(Nw z^3t1R@)yiD9bk=1H4dMDCdqy^TTK>NIxtX_${rKx*pYVM(dkR!jo1$#{hD+QJVYz? zNDvSx^Ny^e*>R)kQHO0bd^ozYL$G+|Q~GLzbzkrgUe!BU^P_DM6N*t)Ofrnf0M zh7xrMz?s$3l{Oq0bL8DF`j%O;SYP36%MXC4JhT7OQ1oD?H(0rD4g8 zH<4Z2GUIcq4L8Q13m0&%DBC`vCD%@+{y}Ulo^dF-qpCjxNS`uhmNt!4HoU(*F1o6- z$^w!d3{yxl9#OSE)!A<1DP6WHe42no8!$lnr(1Gk4bIf8m~VK>ztWkb1e@BYq;_lV|&W#efu!d98cbu?X{-_G>y5(f zV2s214~8rYp_8orIH6I@(A7Y08O-6*wZ3q&$_75KiwgaNv(nyjtzih@d$gIADvWUh z{(EJ6$=!lh8O4&m5}V~JxdHCozC#LYOqyBJ!@yulnIF%lO73oGhgMqjnF|XE%Fl?> zEvzvClTa>iepzY`Qp7+LZw#4YY`)q)TPuw4jvRF;;}#YZm!FB>Yi)F@Vf6D4KN0;> zQ=aqrW|A{a#du@Kb&P|z8PR9bjH&DXwRXWvn%5H2*D{-&GA^klW!K*3+cd;7Wj7-~ zWtYV(yDu{4pE2}}5P|A5(6z~ziZ?Y%&|$AV2YzF_)Qu$Ao?IY(FxvRKh23^NWiqY( zJj6P`zCMRCpl<%;CVmen7o2VY@7w)AxT@^?y<&{4k{M6NDv_YSb+G4qsT-*`K2v#9 zSB-Rf<8v6|@FRs4+-&`7y{1yQz1KI#?9dvZz4c_X4<8XVKGzpyee{HBB31W6^%ofe zEU4Ajq&&B(kzZjiF`dJrZ99p29b{}{H^?GX5u(` z?^Pd#`7)Ke5Ht4Z?Dk7Ua|QdcwgJs zKIzNnh-&QrhhsJh8TuY=n^VLK_$whNA2W*zUW}n{-wqb7zBl)+=;-#($&oCjF-=Wc}DXFZ2N&Ay40{{oE zKm~2-d{15?`+fR@FaxY|bUItp!DaP^lugHfPh*SYv$=(9p*1ZnO3PjPOPoKC*?5Q2 z*<9St6S*7%^C`dZ3LT%OFkeAw>;3!VAD>~J67mpi(O^=7;)e=4AgGJ_?>^W1f%p*u zd9?a-!{$FeXe@QVFQ$p9y8s-TefY0>bo(=x+;VHrFBg4Mqt%>PtyR*tNJBOIz&U=c z!H*Lx3e7Y#3ncxS9nFLE-6NF}gJuS7|FD^~F_}?&&%`qdUGmS7pFj6df1S`q=xb;L zCpeh6Wp|C#iBYbKG38MI^Wpesec5CH-q!xdv(zIO9;MXdqGlf z4f;7|v@*-L(s4fx8aD}wR@F?IHtCGKf%99rotXRtDyV)_nTgJ~(F32Nz&`VfDyGc_ zh~@zuXJt4`*I28j)Z56h(R?j$I!G0v%6&tL(3eN^HjcFm1W9}Gc%I*mxmQQVG{?%9 zo3zB3t8W6XZ@xCzG<`14Km{m+@sgFnh*&k;7q6L=e#270;g66$whkd%j4vp+#uVJ9 z7;5rNoyLdaCzsAm)sI>DG2m5)%Dv0F!wGR_)V_A@RaQ#{m5-xM7FU>x z@+H{q)HM0$Clhk!_U5({Wzx&1WcrR7O+Iu(jPc{X?^gv7n;UL1yRYV?;zALU64!?Y z(y0-~EUNQZUZ>?7y4dXz>iUgZ;8z{YgVjG3C|xp5+&eo3c3Fs?e3TxTtG}|e+r?V# zo`iVie$k*Y$(%ePrBYqLO$F1Sf~dCQtS%a!j&PtWRIXUpeG}JfI!O3h`7!*vKmVq~&-X55IM1&kYVWtrBe)HIPq9if!8B*Fb z`FVhvaxwDgj_A6yI@6E5x8M}gCh~+FS-O)ZL!4WZTUx;*+&S4+jfJHG;{+nerhZgh z9Q2Pz5Cgbpd`Kc(;*i4ah zt3v$8Ia-mL1j3t(-9r4jUA{4~A8{p}0Re6m-ropS6&(I~qD=9GaE3hX^N#5o2Em@2 zF`7@5R^Bc+j}Ge_am9^hYQ|ogpqJmieS+j|`$9`8@-(Q$r_d%ug+Wy+!*mv2P`KxG z4K?8k_mvsu=H6SbRLXCk7Eud2Ck4CDt9^Bf{2OvAOP>z5eCv62v%PauTcWtZv_A6& z83;6$s#Bt?a-^Bme|a`H3d29QJ@~l_oiCZ336(L-U7XU$&#Fr$oaUsj9!aLmWDblo z#T_z4uDnn80HM?5>}^c)5;fK_S^nM;X(c)bcFFiic)I;|*|jcywRwV9rEx2!M~N7- zx;`syQQgTZp_?~-xS9v??L@N_tmcgKdMhCU^7TG{EUOdB3OVW#iYs+U@JuT@Ja8P$ zeCYpaNF|E-t=-evwAI@S1r1^6Ri@)|QX+yxGUnj{Pm}khO^C5Vw=0j|-4XQ2#|urR zY{*sUr|7lV^x*eUcH+h>7JChf>NA&FIej*OC!22&b+gi78JcNT|Hnsqt_@lNtt~vn z9`6M`*LAFMb?NDEEjt?FGN-tgAN&X_?DKDJwG1^c)};<}>XMVLcwU{A%Sim7V}J`h ztu;4mb&&4q*DCTiZ_KOK1v}_%sFEB4$L?|HB2NwV)Q8n@pXsx?97p;&uZ(K8@Kv{s z6M-}j2(WP^%*;j;Z>O6T)ImbwcF00{)zSK}lV(Z}rh_{#}&NCa(3Ikc1o`-MIpKm+3V8BAG=Kce2NTd^DsYbw7J2=1b$~NXcUw-2)a{`;vh~QO+SF&NqVMqf&I_&eIuw)+L4@sPGbG&wV@n2vKIU4LOZZsjfW4yo3oo+j<`G?xJFiOaOot>NsWE6 zG!j`9>N{P2$yd3NtqlnQqy>yD6j$S$w`P(&hs&cX#?K*w04;PMLzIRi3Z0Ug`i>Usvt4447p*pD0g6I~p`o`Gkz~CZ~m4w!Nm>_13>f@chA$mztJwi1z`{TxShq^R| z3m0@(#dr8ZGW+2!)SdLkCFq$WL)@*%!YucXe*F}MqjGH{7094tx*Hjvvo`PwkDGjs zeiDbTTOJJlG=^6<4}g|)^6<0S^;{1!Djv5okFi4QZ|OuJ6w(ya~f(SgQV&z@ES5h#`0 ztsw9IREob=M&IcR&CNJ}{I`)vTND1C4Gk?Z((<gu72YxQ9QIU&Q}4&5x{7-X@o&_4H-)5L1z(vOJH#8mrVy|ApwJjD_Qit2f3p ziP@BGyzD1BI16h;6#0+*-Z-Nwy+g?DkiGj-lX0_Vt%qL1)!rkZl|Zo+t;76|9TPPf z7;=LA9_!>Lh7k^$_!-i2zxH~gW~Aa?d1YDez(&9WIp1BXap~sKu)VokdREILf&Z<& z?+$8ed)xIK1&=6jR1iS{3xa@vBE1TT7&?IvI!bQ=>5x!V1QewwQ~`kmNGPEs^rk3C zsFKhEBr3fG6iDcB<2k?Infu-Q&z(E-ee>O!yJs?!+1Y!qz25ciyzg53d7sDYizS$e z8LKTThIo8=8~EG1Qx&uKIu+`N4UqaM=gw+9V?;iuxs}jN@l5@CwO^=*U}`}QkZ3U$}3|4=e%T6!)x!V19&YB zRmn&(%rkd1^+Q%rOIFgtxzC3ORy^Y=R><2&o!nv?D&_{a7(K#ze=$(qoS@n9> zk2^KI&1>ZOt!yGIG%)0uT$z!H`&YM5n_HD>b8~ZmbjyN#i*D_URI=nvXas+2qq5h7m(2>S@`bx8ij4UqS49~lF1yVTT0(0NSU5vK< z^5*0E&MDr~E}dX$$rH@20IxgEYCf$pJ2CzM8%;T~5@BEaj1!UjW}ywZ2EB&q(v7*5L2zB*ZDr0W$y{=~Hg*L9(t?zSCS zQ2_98+yU*JpUeO0vE#mf-e`HT`}nL+8Eo{+W_VJ)xHf`zav`Xx z^ZxZW*sWpIZb0HyH-dqgW&)R-(`Qto0lQ7YWIQyKqSux^?Z^>jY%ogomEn_%5fg(E<^H05#o zN-@B?@soGhfH`D>!nW7&tcSw+vEHrsArZ@;w0AqKtph(+S}jr%anjvdCR>StKeA}D zuC~YO&rZVC1J%O2JeHh#W_;}O`P4%TiVOuxBOtv!dRq}l_2vevQ?9BcpUwLQIVvWm zIq7 z0LWKwEgDrD!;l=Nl^9}rhGM>SzjA$FP#bI&n1O1pqQSkQvZA4@s87)8p8KmM?c)U_UTM*CsKw4}UdFXYkgTwQ`v&|IMr!lYxYfKKykuA9 zD#{Di@|;VS*>8?J_VjZK%zv?_mR37?)*GT$jL}4#WFhc<$J!97`@F1sWjatjQm?f7 zjktZn?~vC6#?JSgrU;SLFMPy&;H$hgETmXm!k<(&TpcemI}R%=kW@@Uo4E(YIiz=r zeZi*}8T^5_Z{E7w!WdRV>~elVGA|nV{ZAHiC-)BZ^oi*5K9k0+>n;1M51d8y9fgfZ zr0(n7R+*^4HOZ0KMLBWv98zOj8_Fn^ZH5?(+fjYJRPe!IZCQ{iyUybM1NJD?=xDul z#JPJHCL@dk#(t-a_T*(pDbFiblugh5C zrfLB2l)dC|bqk)oedu}@0&B>|u29hzQ@Pk;8wxItz3A-?`5@!Iem{O~@di5en((Cv zpHf4Qsqde5WzZHH$#YabLWYGXA`m(QkDkG7%G+w{#I z7e9{6WO|>-8RMp!SG${iD6*GAzK@86U3P!H$5*$#(=(*ELHadyi|i7wdxoMb(nghb zB;%KC(3ActW<_rtS%CNC1N$lNe?+O7epnQ@=`d18YNcqxl%yiG5&qJ{geBCu|xH`_0$IIX!!ZztmV z=H^=%_jsSQoaYlGZH^TyWns_$2M2-LDU&*equ0OL;T;hKg;@Pp)dK;8@XS=1kLwm! z4_Gnud>T2pUX%X;-SnOFN8ZTh~3BzG4 zYlM&diX!-ih8iD4O`xSg4Yj7D0%`Nh6cZ(w8E-6y+uorV{ndi7;BrPmyr}8-SUoz{ z^nDh?4cAx?AQ*h9+uPvpEp%wL3VFZoL#K6?#~JmeSbw~}+ZXlC!!<-r{wRX)YciTW zyVi5MQ(`x0LjW}kyXi28-K>$M3qKkf&)NODd}imq0TG!r$0{_Z=#-Fi(=5+krCi6O zGrF9&D{$G4M(_pCBwcCH>!So&bIb=M$C6o2+^oE2OI;lR559EIlDTs486>-!-&uEm zM)hFcOga0`Q;Ch#O|d0uYTwlku3=&uSx?-&T@o9^%I)5jtDoc72D-k?`*h^z-WBvMZSge7=;G>m*&`m4 zxu0Rj8$H?w1;nV??{c~(xkIye{F9mfFGiJsbeaY!vmB2(XdJ~rz$Rho(j6uIF= z-fCaZor`r_dYj4TnrSVDTr-Zg9V^{_G3_TPZSlS{++<)X|yfR)HL@ zzSxgV7%^hq0`esOevlM&?-Vr;c<;WTUgG5*pRYet{REG2xs5e*;R{6?$y0$5Taq+I zV@#4V6qAG8KW@#OpqKUwQZWZN>cl)&{$yXGm>?Q>$$1&?!ehE6pNaQNUw|!}HZc#w zJ}{{3Eq2*yk&VQva?y`+hYn=hid9dFRrj6xBqD^q?S|Z~OZTh84mAo|dCU~v4FnGy z+ZbCu@FA8|1~FL(s?;yky(aZ4cW_&{dMhv&u?$M;a;6Ijg%kLrC#@LhRFQG^H^S?n zLu?)^=Ox8{nkZ z*uV9LWSbm5T;qtU<}C6Y4R*&YgACu%e?+{n#cIy8 zYgM0L+ynbLtHD7CEv(x}<2#KGldF;c6M9W(jFNM;S_WSZBso<@=AzYc?0Nv5WZO z&c|<-rt{k=as%>SIDwrtS9$km|Gd0OsqT$^|0*^8QW!`t{`y4FP3!l3 z0-?ND9UeMO`98L0H!+I@FOG5Q;%yK^laOEx#*79ig?mz~0y~eH$DZZ$UNH7sB)}_G zwNYxvWeU=LGk5lWQu3%^O=l79H?olr91ApOQ(Me^nrlqQIVu+1jnf}4bI(r4MiWFl z@piC9iBEj7?90klcRG(r3R!5RtQ*PuuQ&owu=5D3Z>W5em{O#TlDn~wz3AS_%r=Aw zqO$HD+e=)wo=(aPAI79k@$jm4;&)iZ` z^&X1RmB;4NuBqDQV0>onAs(% zje3FzVvWC$CpV+yP8v18D>n;W!T_$$;dM)nJUJA`eIZoauRkolD!xmHmH>4UG9tlY z>@J2UY$(V|`E)Sgt-JR}fff+>TS?7cxBa?9hwgR2g4`4)$E zDJm+?71i=B0=_d%LbKu)CMGc(Y~`#N`%1IWm5k{I(?r@}k(X$|!k;Hw9J9y??wxWV zl-nLfx`C1S#j#T^5#cN__V)K3{ZP#TLxKF48pmbBR*plzrFW1j#EdSD2+REp(>@S0 zS{s^(dM9iKLViFqoa3SzLIYhjBnf9HddkY_1%AiHEoz2eyJ8GD}$v-4`Zx zGS7iqvFzIU^fr0(K1-fs-naH=c;9}ONNRpgDlGSXr9BKNx8^G~TRRKg*Xa1@Nk`u@ z?#zwf-JDL`>|`37Q%b7(jU`oK;P4Kg;5ASY%@i|r&OUnNg{VpJV%1TExslF}Sn#}# z)#AI;-li-GImmBzz#uDHnBv^eHHnUr;YrF^iA~S2kdKd~`4~JiQ0pl)gmts}goc(( z#CiwxvGpT9U_7q%fFjYb#(}E#}TtQU&&QqJ+@4kCHmJYHcq`c_sykPDC`EQ@`CBl)b}YnBA0m@}#l= zrI)4~K5;q~C!ysb|3hv##~i7DDzDSS9%Qd77o1k~AXB|?E^g_M9VhIl`Uokv-Djc3 zd01|Y?{Y%s_S4)5@3c-_AF-Cx0pYfN#%#{Xtz&6mlhWj~$cb&v-#P8TPR%Y7R{>u^ zTTG;lOwIdzlPQkzoMsQ$5SgG1UDj6_SRx z_eMvN@W!T0BN3rq?r4e6#7pb_jD_ zENk?UvJSA_O?8iSUwd1x0VcOZl$yrRhlv;*g5K;l=y^GKdyH-?)!pw+|P-O{DpFo!$-GjXl7_@$AIXtw)uA7}MhoK$owYR) zb3v|2&-vf{2`*IRDUVJ=T=}Gh@Je}RDr!zB z^jD5Nd~=B#Ah@iOV#uS-+tFwsS~T76Q!?}E zlth=2lTI>yDsi+ znQBT#(Y0ug5V)_(El&2!<6sKNk{sM#`7mXO;cg#Y%F2OuO~~Z9PJiKRJ=agVIDHXA zH#l?CvO=XnbAqCOAbiPwkGOl_wAWKNX|rrjz#{jj_Tc4)aTguJe0o)t7)}pq-mlFv ze0f;!FEJjW7an1%CA8_0wR~TP0Mj}#y4<{EPnv>x(MJS!v7s#z$$pZ}Y#j4CCV>wH zFpW_xdnuojcWt$5^M0v+O3f;ZhTE{k4fx3l(& zPe6!2E^+vhR7=s8{vhgOT@dP!zK5Y^`WqX9n?Jj$E!WAFT3^C{STkn zu5`o+4__DRzCI>B@Ve02X^No_ieX$XVTRU;GychA9#G{X#R<|AYa*C7kufn8X#K!I z9sA7~RCUh0HUHD4(_GMj^HvIuFP+C`pfdReDNT?qO^ax2Z(bGOh(PJEhTdGZc*ZrTU26%Lt%`@z2J+nPOCLkSRw=lRU<5Q}E!YxS+^wBYMvSs_i5YdEt|fxAv-sSQ*h;cxqJE7VaZHDr#Pyy2~O%y4h%>!NyT(bJo=c zDUC?e^H}o~e5YswR!Rv3rsO@p#pApayeI_bzB%!pfO1BpgbjbW2>%@%zXP+ink|pu zXbooOKVsKD9)4gOeflgebQ279UOgV?W?dAX*Ckffpe4i1SOfvrX>VEKs|KJLX5tmn zcWSL@^!l&SlJ1@eQt)lcj%8-zE`huUf9dD*NsGh%gS|5t}4OVHGn@`JL4RL;ttqD{w?fP`Io15uDCL05#m2=fr6AlA_=wt?CSWxe8ptCxg-L1U zT!^+$Fke8)#X&OE!Iny9YdY;N7U3O`Fe52|9oy?%w^O{olJm)sKb+2d@V<1#Cx;Y+ zHNBi`gXdR68=^XyB@-h4s2*t@{Z(E-`2m+3>{yvn#fzCDc1!cd;BvY7hm`O=S?Co) z!UWo^0b_69#a&bMIl&tHkxdjAX&U2rw^z#%cKQx@GE6he_?tN3OXJ#Uq8m7=o z#h@iwz~{^ZW`e8;&|U{Vsr<>7IIY`L0@sAzT=7#MUwlP&>4hbDkz(|_Yl79IZPAdn zlrT;15j!#6IPi1ZbQZLBLY%`V94b>*=7y3b>v?b#IeT#_yoAH92{?e%}&k z>_ft2KD(^r+0mO66u#+=AQGyuE%3QGeV0Wc!U)SDr9FA!R?awTIHvSKZ|mc7lY=O( zF8|dNVL_N!*EoYhY-N~dab>)cBc;f=n92hEzyxzS_mw3+jmL$LeJd-ueQD{KdF z#_UV8OWQDrnfrD#j2SF^?9mvD=uYerZD4P^H+9UJ^@y@D_p zqtL;yAU~(n#bkCQ%qcX1mQx4;JsBsthDi*K^JF2s*27Ca@8@2dPGk%mkZg{P&Ony= z${z8EGI{-!Hi}1Z`OQryhGRqm;iA*a77+1OWK+Q<#X3{aJBT0_{Gg|mPraG3|8QwH zp5QHOOcaTg`_^no4B-?gF;3ULQ6Y%;WtTnX{km^!)Hl9K)Ab)y_JMzRcK zdvtymtedX_JJN5vIAwz858!W+1n3fDv7KU7NGtAnKSYkd#YF4=eS0Jqp$7aW_ab$C z?vA8}cU#%bX5*4BN#afw1N+A;m_6e zKl4+E7pTI{bLByGxk20n^|we+mA&X;2&(zyRH;r3z9urhp^3YRUP5MX)l04;O(fQy zErxIB$sqO`#17Pz1A9q8?i~>X9+s0=sbv$n^E^eq2g?oK zi|sDq&27dl1*>L9jLztknZmCe+GIq?y{6hVkjqaN5O>~CYv0ib%#&y~BY*@DSF6M3 zE~OR+`m_|Ycg2D1tlp(6rmcM|riwLu);bV28qF|FqsXXn6DG4NHubYLS@SKZ&V zKZ$uf%3cZ=RB6I2e>zTX73p5ByR!E%t2VsJkUAG^>hyA_PPDyEx4UTwA2}+(Um9RK z+hF62@)|ms=S&bmqSpJzB1W?hRg+Y>hETfQrvSQRt>7+6oH6sTjkS&hg-_lD@B*Zk zx@`3~LWH(4f~ACC=`K%g!vN30D`AO@ymIr`Lw9wjs;mUPlrR_S$cN?@5uR2%CDM;y zGq{?1%-)u+Y?edUI&ugV3}QyCqgQR8&U=ao6Kf$v8}l4*>muS-H-^c9wK<(CjHfXq zs_t(U7qJ_eyFo|3vv1KU;9*{fl5xr5)rh6R^74f6Jfto4hK2gx+}g76!E%pG=$nPY zV}J(VwFT5LF9tp@_kp`Hyb> z#-vRt{}Pmdgj=-KD(RtyKM{JmOa_c6my~*pc?G>sS#W|j};x)8K1_^%v4Z5JpeQsSc;n_CB^bv+q zTBXjZposvBQ=UiVs@`?zNF4yAv83;nD!B@l7?e{2*K>ZB@M}=2U|Vob<}`(%*H-|}^A~;Qk+l))zQfE{@R!lWwv!}?Kf5u{mi`Ul;+uy}0kd#W>35r= zb0dd(g5K)+x_Qr_+t02peHGgXeHW~57M45PtlzlvwyQ3-lq-mO>(hye1cBrtPO435 z$1F&UfOWrwHPN(Fj^Fvz5r<=aE`s-;lH_;ifA?qI1_xsl;G7N>t1O=u*I5o1oKz|` zg8A=BFk9s|YghG#kHwZRCwclQ{x-5kjQ*4zfY^2Fz*thNk3hHvHNh zAgB7SDcyZ#df~~$GN!Jeut+^7*}6+D?u>VSs*Xh7R8%HGHgMEPumP;0!xy54K8!1l zUqKp>LrFSyQ;HVv11ZPu)-hCN3$Tf7OqTi1e3=_-1I8{IC~|B9>EMWdm)+g3<+HZ8 zv!(82YJn}RFE1Up;(%Y0)8A52Fqqcz(v%-PMsGmrc5%2cMzs6c;Ak|!}Zmo{P1wI5EoK^H%s2SnSDXA;yHu%+gRNXE!pE&CrSy^fu5dGgmr7;H^aWfQ-jZFzT{?QgS{HI8M3I& zmWrIMNlaaPUt8X_DC>of-;R@0L+NTaFF2;%b!x|8~)Qab;T67|X4i?Iq zOlTlMl-v}3d>4@Yuz*oo-Im$Y;@$~jWTmFQ2%=R=yNQ7kl_=Jv?Zy+QnNn!)qQBjN zkVb{O4aSi)9X7<4RwJWWsWB%B9Ac1NyaP#TT=L|R51(jmJVSzLNCYfd#Bf+GWhkNq z*4NY@Bp!j`&&v(Q#d6f)$ZcfH+(BlbE)SVOR83SX1Ju%NyTdp{?f{fc8DgQ41`{F3 z)yNe)Z8H994KC0iYdy|LX$+iZ?f&%!K5=S)&$7-lGOhsv{c-=*q}EAKCyOp9Y+9xm zvh-wXDU3$VD!9Dm9anbBiC}c|u}(}}bEBx=!=#;t0ay3EEgcX=Qa?HTU`a9fvod9VE>C5tn=R-U;iepJ685@BCzc& z-@cR56uWY>u+|rL|B$S;|B@Ww&XY>61B*`=cy`JPeh$H}!;52^`roP+SFf`@|3{nf ziskbR=8haim|?EK>bl3QyUlFYV=-~8o6NV*|5hsmftYM&1>eshz&2Ol|J;RiroNxg zqOcE^sjhS}^&d3$vhcsj{+Pvw=CVxDxecwfe@?Pl`@dp6{wX!p6e@Cm&T}t43w}BY#GXDVqa*d3NT*&#+$oyi+}F@mwwSY=M+@E zUZ(3>-g*RXTr@i>{+AvaJYX@Zw;yX{3Oa2`DYM_XI~9N_whXnV4pfZ*=w3IJ>C7S{ z=Js{yWG3G5LazK>D)jC6t6lBC_CAf&nKq3KZc`g+8DDVr^Q%^i)MmEhb+u)$ymtz1 zuZ$Z3;On6d8U10NlBR(5pc_Vcw_Nu&P_M>S4nu|IQv%X4IQyJ>+G>~;XHml8{LfTH zkwZJ?4bo=5@lyXLSl;$1!(!)0XfEMu*FL`;GAOn(-1s7u*$}Ew9tf0RNW&bKB|+{! zmvu7B0)Z`V0+Ib19~YYsCH>Ve-+(ZUjB|7CL<;dz$Ko^Ype_1aVfPbu$_@1eq= zP$u+t-eO;RX!uBzi+BI!PZ>g)yAev`V~pItpXQ62&wDd#i4*!+)XTAm$xWr-d<_9d?kWdZ30qQ1mB_hfMAm=GLC{r&E8x z524G-^NK3sq=1@T50#q4IcZSaFKp+rV`um^<~R)nw1ckS-72m*XwE^LUwgeM ziLZeMGe|J!>hT`NmssfM#iHqdkw0FvdfqE)+ORbpV$M@)1`?SPYPg#|(&3Vpce(X+ z5oV~LX<9>-J->N77ZGz}1;$KoDk^D%=(Qg9?MLpgzH;^7{upEazl`MHRFg?g;o+)v z-tx;EXN^Apb%V#ag#Z7S{}LkvuGpz11eDodoX_n07WY6)5 ziPC|;2StmiWFvL``smVzC=Z*o<7n49Q+R3j@1ecD$&}tmuUdBe`@}C_s$?o`x<^LL zcMn>pd;U8AX};XWGec`zHF!Ki9E^1d*j%|n+$K?{u!)hg(_Nf9KPF;VXf&6|qYrg| z#~d56cqUKc^-<}d@RiAnsZ#9!ijrXsr}_USg3wMC`QJQ+p?oeOC*|S=-i%-E0<;b9 KS7<(Z{yzYw7DX8V literal 0 HcmV?d00001 From 6e63bb02ba1835d63ebb8437610b11d94160085c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 12:52:15 +0000 Subject: [PATCH 08/12] Optimised images with calibre/image-actions --- .../ui/angular/images/row-detail-image.png | Bin 32082 -> 8539 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/en/framework/ui/angular/images/row-detail-image.png b/docs/en/framework/ui/angular/images/row-detail-image.png index 272a0ba677dcc03ec99c92eaede479b9f2d2421f..8d7b72fb5a1fc8ba2ceb4c9b827c80debb32493e 100644 GIT binary patch literal 8539 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 literal 32082 zcmeFZcT`hd&@T*jMZiXHD!ofrI!ck=34|tw-a-pVR}oQZ(xunXLg=9v1?jy;N+S+pS@>h&&+T3>^XU_rJ+Q6jrJN55fQ2K zQ+XXCqDz)UM8rR?Tmqi#c4b=w{}H?EC_N@B?x$Y?ZZ6o!sml=&l|_;qSzH9}uev-n zawj4pYd!l%+yTu8UiZT)%ggD#F#Cz|HPP2^Io;flyP+kkcjub~e2ZLj52OrqH8eyfA3|cJMAS!?CCBDJ#l&HSi?rh6F3G0^X!`d`X>T+9^Ec5;?oin? zmj1aucU=Lf{C%Z_{cqXOt7l-Q?Zi{0X=nFdr9WZ0CHR^?NbJD*57|UwcVfC&#H!=% z$LiuFrHpB)&_fHdxuw5S3K4~)x$1PawY6Ps!TlnCUiiMGr>_quq2kNW$dKjZ1$TDj zg}YKns9&>GQB~E`HY<)`kf5a^{?mPW)Xm*}aeZ#+nPwsz%$@U*d6uXXt%m2Hb|PoR zrluyYN9NCYsz!2TmjL>J8EHcQ4&dzL?Cf0UlG$SDn5XhBvag6C-d_F!lJ_`iLFu93F_s%(%0D_`|GC@8!Q^mW2rp}R*WZyRn^SnRw5 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 KS7<(Z{yzYw7DX8V From f28dfe15b9fe38046223fd9af26e434ed921dad4 Mon Sep 17 00:00:00 2001 From: Fahri Gedik <53567152+fahrigedik@users.noreply.github.com> Date: Thu, 15 Jan 2026 16:04:39 +0300 Subject: [PATCH 09/12] Refactor row detail context and typings in table component Introduced a RowDetailContext interface for row detail templates to improve type safety and clarity. Updated rowDetailTemplate and related methods to use the new context type. Also added documentation regarding deprecated ::ng-deep usage in styles. --- .../extensible-table/extensible-table.component.ts | 10 ++++------ .../components/extensible/src/lib/models/row-detail.ts | 4 ++++ .../packages/components/extensible/src/public-api.ts | 1 + 3 files changed, 9 insertions(+), 6 deletions(-) create mode 100644 npm/ng-packs/packages/components/extensible/src/lib/models/row-detail.ts diff --git a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts index 491e4f5a38..75253b1f02 100644 --- a/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts +++ b/npm/ng-packs/packages/components/extensible/src/lib/components/extensible-table/extensible-table.component.ts @@ -56,6 +56,7 @@ import { } from '../../tokens/extensions.token'; import { GridActionsComponent } from '../grid-actions/grid-actions.component'; import { ExtensibleTableRowDetailComponent } from './extensible-table-row-detail'; +import { RowDetailContext } from '../../models/row-detail'; const DEFAULT_ACTIONS_COLUMN_WIDTH = 150; @@ -136,8 +137,7 @@ export class ExtensibleTableComponent implements OnChanges, AfterViewIn @Output() loadMore = new EventEmitter(); @Input() tableHeight: number; - // Row detail configuration (supports both direct template and child component) - @Input() rowDetailTemplate?: TemplateRef<{ row: R; expanded: boolean }>; + @Input() rowDetailTemplate?: TemplateRef>; @Input() rowDetailHeight: string | number = '100%'; @Output() rowDetailToggle = new EventEmitter(); @@ -146,13 +146,11 @@ export class ExtensibleTableComponent implements OnChanges, AfterViewIn @ViewChild('table', { static: false }) table!: DatatableComponent; - /** Gets the effective row detail template (from component or direct input) */ - get effectiveRowDetailTemplate(): TemplateRef | undefined { + protected get effectiveRowDetailTemplate(): TemplateRef> | undefined { return this.rowDetailComponent?.template() ?? this.rowDetailTemplate; } - /** Gets the effective row detail height */ - get effectiveRowDetailHeight(): string | number { + protected get effectiveRowDetailHeight(): string | number { return this.rowDetailComponent?.rowHeight() ?? this.rowDetailHeight; } diff --git a/npm/ng-packs/packages/components/extensible/src/lib/models/row-detail.ts b/npm/ng-packs/packages/components/extensible/src/lib/models/row-detail.ts new file mode 100644 index 0000000000..c344e9add7 --- /dev/null +++ b/npm/ng-packs/packages/components/extensible/src/lib/models/row-detail.ts @@ -0,0 +1,4 @@ +export interface RowDetailContext { + row: R; + expanded: boolean; +} diff --git a/npm/ng-packs/packages/components/extensible/src/public-api.ts b/npm/ng-packs/packages/components/extensible/src/public-api.ts index 5d06088a02..6d53f8ba9a 100644 --- a/npm/ng-packs/packages/components/extensible/src/public-api.ts +++ b/npm/ng-packs/packages/components/extensible/src/public-api.ts @@ -69,4 +69,5 @@ export * from './lib/utils/form-props.util'; export * from './lib/utils/props.util'; export * from './lib/utils/state.util'; export * from './lib/utils/model.utils'; +export * from './lib/models/row-detail'; export * from './lib/extensible.module'; From 94c0b602ffe84f2d965941d0e8acd093d396bfc1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 13:08:10 +0000 Subject: [PATCH 10/12] Optimised images with calibre/image-actions --- .../ui/angular/images/row-detail-image.png | Bin 8539 -> 7869 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/en/framework/ui/angular/images/row-detail-image.png b/docs/en/framework/ui/angular/images/row-detail-image.png index 8d7b72fb5a1fc8ba2ceb4c9b827c80debb32493e..87d67646088a990c52018c979c2bd1f77aae3b9d 100644 GIT binary patch delta 7080 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 literal 8539 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 From 3113cbe46c6e44493f24db7a2e63c5e606f5c4f8 Mon Sep 17 00:00:00 2001 From: sumeyye Date: Fri, 16 Jan 2026 08:49:53 +0300 Subject: [PATCH 11/12] fix: document escape character errors --- .../ui/angular/extensible-table-row-detail.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/en/framework/ui/angular/extensible-table-row-detail.md b/docs/en/framework/ui/angular/extensible-table-row-detail.md index 1e982606f3..0ae24e69e1 100644 --- a/docs/en/framework/ui/angular/extensible-table-row-detail.md +++ b/docs/en/framework/ui/angular/extensible-table-row-detail.md @@ -44,9 +44,9 @@ Place `` inside `` with a
-
{{ row.name }}
-

ID: {{ row.id }}

-

Status: {{ row.isActive ? 'Active' : 'Inactive' }}

+
{%{{{ row.name }}}%}
+

ID: {%{{{ row.id }}}%}

+

Status: {%{{{ row.isActive ? 'Active' : 'Inactive' }}}%}

@@ -61,7 +61,7 @@ An expand/collapse chevron icon will automatically appear in the first column of | Input | Type | Default | Description | |-------|------|---------|-------------| -| `rowHeight` | `string | number` | `'100%'` | Height of the expanded row detail area | +| `rowHeight` | `string` | `number` | `'100%'` | Height of the expanded row detail area | ### Template Context Variables @@ -81,8 +81,8 @@ Display additional information when a row is expanded:
- Details for: {{ row.name }} -
{{ row | json }}
+ Details for: {%{{{ row.name }}}%} +
{%{{{ row | json }}}%}
@@ -109,7 +109,7 @@ Apply conditional styling based on expansion state:
-

This row is {{ expanded ? 'expanded' : 'collapsed' }}

+

This row is {%{{{ expanded ? 'expanded' : 'collapsed' }}}%}

@@ -123,16 +123,16 @@ Apply conditional styling based on expansion state:
-

{{ 'MyModule::Name' | abpLocalization }}:

-

{{ row.name }}

+

{%{{{ 'MyModule::Name' | abpLocalization }}}%}

+

{%{{{ row.name }}}%}

-

{{ 'MyModule::Status' | abpLocalization }}:

+

{%{{{ 'MyModule::Status' | abpLocalization }}}%}

@if (row.isActive) { - {{ 'AbpUi::Yes' | abpLocalization }} + {%{{{ 'AbpUi::Yes' | abpLocalization }}}%} } @else { - {{ 'AbpUi::No' | abpLocalization }} + {%{{{ 'AbpUi::No' | abpLocalization }}}%} }

@@ -154,7 +154,7 @@ For simpler use cases, you can use the `rowDetailTemplate` input on ` -
{{ row.name }}
+
{%{{{ row.name }}}%}
``` From 6391840c98e0b645bb52d4a8f71ffaec9b9000dd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 16 Jan 2026 05:50:38 +0000 Subject: [PATCH 12/12] Optimised images with calibre/image-actions --- .../ui/angular/images/row-detail-image.png | Bin 7869 -> 7312 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/en/framework/ui/angular/images/row-detail-image.png b/docs/en/framework/ui/angular/images/row-detail-image.png index 87d67646088a990c52018c979c2bd1f77aae3b9d..c99ff98ca06a367fa9f0776b4e7dda640d0d7e5d 100644 GIT binary patch delta 6524 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