ngx-edu-sharing-metaqs2 0.9.35 → 0.9.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -122,6 +122,18 @@ selector: `<metaqs2--quality-matrix-v2 />`
122
122
  Übersicht über die Anzahl der Materialien in Sammlungen über die Zeit.
123
123
  [CollectionCountHistoryComponent](./src/lib/collection-count-history/collection-count-history.component.ts)
124
124
 
125
+ ### Lizenzübersicht für Sammlungen
126
+ Übersicht der verwendeten Lizenzen in einer Sammlung und ihren Unter-Sammlungen.
127
+ Diese Komponente leitet sich von [CountsWithHistoryComponent](#counts-with-history) ab und benutzt auch deren Template
128
+ Sie überschreibt die `apiMethod` und `sourceType` Eingaben.
129
+ Sie überschreibt die `getCountByDate()` Methode und benutzt eigenes css um die icons darzustellen.
130
+
131
+ [TreeLicenseComponent](./src/lib/tree-license/tree-license.component.ts)
132
+ - selector: `<metaqs2-tree-license />`
133
+ - inputs:
134
+ - `collectionId` (required) - the id of the collection to display
135
+
136
+
125
137
  ### Counts with History
126
138
  [CountHistoryComponent](./src/lib/counts-with-history/counts-with-history.component.ts)
127
139
  - selector: `<metaqs2-counts-with-history />`.
@@ -204,13 +216,16 @@ Currently the following manifestations are implemented:
204
216
  },
205
217
  ```
206
218
 
219
+
207
220
  ## Build
208
221
 
209
222
  Run `ng build ng-meta-widgets-lib -c production` to build the project. The build artifacts will be stored in the `dist/` directory.
210
223
 
211
- ## Publishing
212
- The gitlab pipeline is configured to publish the library to npm on every tag.
213
- Run the `publish` job in the pipeline manually to publish the library to npm.
224
+ ## Publishing to npm
225
+ 1. in gitlab create a new tag
226
+ 2. in the pipeline select the job `publish` and run it manually
227
+ 3. this will update the version in the `lib/package.json` file and publish to npm
228
+
214
229
 
215
230
  ## Running unit tests
216
231
 
@@ -13,6 +13,9 @@ const ICONS = {
13
13
  'types/video': '<svg width="36" height="27" viewBox="0 0 36 27" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6.45 0.169922C2.89915 0.169922 0 3.06907 0 6.61992V20.3799C0 23.9308 2.89915 26.8299 6.45 26.8299H28.81C32.3609 26.8299 35.26 23.9308 35.26 20.3799V6.61992C35.26 3.06907 32.3609 0.169922 28.81 0.169922H6.45ZM6.45 2.74992H28.81C30.9768 2.74992 32.68 4.45311 32.68 6.61992V20.3799C32.68 22.5467 30.9768 24.2499 28.81 24.2499H6.45C4.28319 24.2499 2.58 22.5467 2.58 20.3799V6.61992C2.58 4.45311 4.28319 2.74992 6.45 2.74992ZM13.8004 6.61992C13.451 6.60816 13.1134 6.73918 12.8615 6.98273C12.6112 7.22629 12.4701 7.56057 12.4701 7.9099V19.0899C12.4667 19.7517 12.9656 20.311 13.6257 20.3799C13.8861 20.4068 14.1481 20.3564 14.3782 20.2321L24.6982 14.6421C25.1165 14.417 25.3751 13.9803 25.3751 13.5066C25.3751 13.0313 25.1165 12.5962 24.6982 12.3712L14.3782 6.78117C14.2002 6.68207 14.0037 6.62664 13.8004 6.61992H13.8004ZM15.0501 10.0868L21.3659 13.4999L15.0501 16.9265V10.0868Z" fill="black"/></svg>',
14
14
  'types/worksheet': '<svg width="29" height="28" viewBox="0 0 29 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M27.4071 8.81132C26.4479 7.8521 24.886 7.8521 23.9267 8.81132C23.6314 9.10664 21.7469 10.9934 21.4592 11.281L21.4581 4.78081C21.4581 4.12345 21.2022 3.50549 20.7373 3.04066L18.4175 0.720807C17.9526 0.255951 17.3347 3.05176e-05 16.6773 3.05176e-05H2.59083C1.23347 3.05176e-05 0.129883 1.10362 0.129883 2.46098V25.5391C0.129883 26.8965 1.23347 28.0001 2.59083 28.0001H18.9971C20.3545 28.0001 21.4581 26.8965 21.4581 25.5391V18.246L27.407 12.2915C28.3684 11.3301 28.3684 9.77368 27.407 8.8111L27.4071 8.81132ZM16.5364 1.6408C16.6917 1.6408 16.9903 1.61346 17.2572 1.88143L19.577 4.20129C19.8373 4.4616 19.8177 4.74706 19.8177 4.92206H16.5363L16.5364 1.6408ZM19.8177 25.5394C19.8177 25.9922 19.4502 26.3597 18.9974 26.3597H2.59108C2.13827 26.3597 1.77077 25.9922 1.77077 25.5394V2.4612C1.77077 2.00839 2.13827 1.64089 2.59108 1.64089H14.8957V5.74233C14.8957 6.19514 15.2632 6.56264 15.716 6.56264H19.8174V12.924L17.397 15.3466L16.2376 16.506C16.1479 16.5957 16.0801 16.7061 16.0396 16.8264L14.8792 20.3068C14.7807 20.6022 14.8573 20.927 15.0772 21.1468C15.297 21.3667 15.6218 21.4432 15.9172 21.3448L19.3975 20.1843C19.5179 20.1439 19.6283 20.0761 19.718 19.9864L19.8175 19.8868L19.8177 25.5394ZM17.978 17.0859L19.1385 18.2463L18.6955 18.6893L16.9554 19.269L17.5351 17.5288L17.978 17.0859ZM20.2979 17.0859L19.1374 15.9254C19.7554 15.3075 22.4985 12.5609 23.0804 11.9791L24.2408 13.1396L20.2979 17.0859ZM26.2468 11.1325L25.4013 11.9791L24.2408 10.8186L25.0863 9.97206C25.4068 9.6527 25.9263 9.6527 26.2468 9.97206C26.5661 10.2925 26.5683 10.811 26.2468 11.1325Z" fill="black"/><path d="M15.7159 8.20319H4.23145C3.77863 8.20319 3.41113 8.57069 3.41113 9.0235C3.41113 9.47632 3.77863 9.84382 4.23145 9.84382H15.7159C16.1687 9.84382 16.5362 9.47632 16.5362 9.0235C16.5362 8.57069 16.1687 8.20319 15.7159 8.20319Z" fill="black"/><path d="M12.4346 11.4845H4.23145C3.77863 11.4845 3.41113 11.852 3.41113 12.3048C3.41113 12.7576 3.77863 13.1251 4.23145 13.1251H12.4346C12.8874 13.1251 13.2549 12.7576 13.2549 12.3048C13.2549 11.852 12.8874 11.4845 12.4346 11.4845Z" fill="black"/><path d="M12.4346 14.7655H4.23145C3.77863 14.7655 3.41113 15.133 3.41113 15.5859C3.41113 16.0387 3.77863 16.4062 4.23145 16.4062H12.4346C12.8874 16.4062 13.2549 16.0387 13.2549 15.5859C13.2549 15.133 12.8874 14.7655 12.4346 14.7655Z" fill="black"/><path d="M12.4346 18.0468H4.23145C3.77863 18.0468 3.41113 18.4143 3.41113 18.8672C3.41113 19.32 3.77863 19.6875 4.23145 19.6875H12.4346C12.8874 19.6875 13.2549 19.32 13.2549 18.8672C13.2549 18.4143 12.8874 18.0468 12.4346 18.0468Z" fill="black"/><path d="M15.7163 23.0782H10.7944C10.3416 23.0782 9.97412 23.4457 9.97412 23.8985C9.97412 24.3513 10.3416 24.7188 10.7944 24.7188H15.7163C16.1691 24.7188 16.5366 24.3513 16.5366 23.8985C16.5366 23.4457 16.1691 23.0782 15.7163 23.0782V23.0782Z" fill="black"/></svg>',
15
15
  layers: '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#5f6368"><path d="M480-118 120-398l66-50 294 228 294-228 66 50-360 280Zm0-202L120-600l360-280 360 280-360 280Zm0-280Zm0 178 230-178-230-178-230 178 230 178Z"/></svg>',
16
+ 'level-1': '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 12.9L3 13.8L11 20.7C11.6 21.2 12.4 21.2 13 20.7L21 13.8L20 12.9L12 19.8L4 12.9ZM11 3.40002L4 9.40002C3.4 9.90002 3.4 10.7 4 11.1L11 17.2C11.6 17.7 12.4 17.7 13 17.2L20 11.1C20.5 10.6 20.5 9.80002 20 9.40002L13 3.30002C12.4 2.90002 11.6 2.90002 11 3.40002Z" fill="#003B7C"/></svg>',
17
+ 'level-2': '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20.3 9.90005C20.2 9.70005 20.1 9.60005 20 9.40005L13 3.30005C12.5 2.80005 11.5 2.80005 11 3.30005L4 9.40005C3.5 9.90005 3.5 10.7 4 11.1L11 17.2C11.5 17.7 12.5 17.7 13 17.2L20 11.1C20.3 10.8 20.4 10.5 20.4 10.2C20.4 10.1 20.4 10 20.3 9.90005ZM5 10.3L12 4.20005L19 10.3L12 16.4L5 10.3ZM20 12.9L12 19.8L4 12.9L3 13.8L11 20.7001C11.5 21.2001 12.5 21.2001 13 20.7001L21 13.8L20 12.9Z" fill="#003B7C"/><path opacity="0.3" d="M19 10.3L12 16.3L5 10.3L12 4.19995L19 10.3Z" fill="#003B7C"/></svg>',
18
+ 'level-3': '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20.3 9.90005C20.2 9.70005 20.1 9.60005 20 9.40005L13 3.30005C12.5 2.80005 11.5 2.80005 11 3.30005L4 9.40005C3.5 9.90005 3.5 10.7 4 11.1L11 17.2C11.5 17.7 12.5 17.7 13 17.2L20 11.1C20.3 10.8 20.4 10.5 20.4 10.2C20.4 10.1 20.4 10 20.3 9.90005ZM5 10.3L12 4.20005L19 10.3L12 16.4L5 10.3ZM20 12.9L12 19.8L4 12.9L3 13.8L11 20.7001C11.5 21.2001 12.5 21.2001 13 20.7001L21 13.8L20 12.9Z" fill="#003B7C"/></svg>',
16
19
  };
17
20
  export class SvgIconsService {
18
21
  constructor(matIconRegistry, domSanitizer) {
@@ -38,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
38
41
  type: Injectable,
39
42
  args: [{ providedIn: 'root' }]
40
43
  }], ctorParameters: () => [{ type: i1.MatIconRegistry }, { type: i2.DomSanitizer }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1tZXRhLXdpZGdldHMtbGliL3NyYy9saWIvY29yZS9zdmctaWNvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBSTNDLE1BQU0sS0FBSyxHQUFHO0lBQ1osS0FBSyxFQUNILDYzREFBNjNEO0lBQy8zRCxJQUFJLEVBQUUsbTZFQUFtNkU7SUFDejZFLGFBQWEsRUFDWCxrZUFBa2U7SUFDcGUsZ0JBQWdCLEVBQ2QsMDFDQUEwMUM7SUFDNTFDLGFBQWEsRUFDWCw4MUNBQTgxQztJQUNoMkMsdUJBQXVCLEVBQ3JCLGl2QkFBaXZCO0lBQ252QixhQUFhLEVBQ1gsMm5CQUEybkI7SUFDN25CLGFBQWEsRUFDWCwyK0JBQTIrQjtJQUM3K0IsaUJBQWlCLEVBQ2YsbzNGQUFvM0Y7SUFDdDNGLE1BQU0sRUFDSix5UUFBeVE7Q0FDNVEsQ0FBQztBQUdGLE1BQU0sT0FBTyxlQUFlO0lBRzFCLFlBQW9CLGVBQWdDLEVBQVUsWUFBMEI7UUFBcEUsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFGaEYsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFHMUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1QsQ0FBQztRQUNELEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RDLGdGQUFnRjtZQUNoRixJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUNwQyxJQUFJLEVBQ0osSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBRSxLQUFhLENBQUMsSUFBSSxDQUFXLENBQUMsQ0FDMUUsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDOytHQW5CVSxlQUFlO21IQUFmLGVBQWUsY0FERixNQUFNOzs0RkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5jb25zdCBJQ09OUyA9IHtcbiAgY2hpbGQ6XG4gICAgJzxzdmcgd2lkdGg9XCIzN1wiIGhlaWdodD1cIjM3XCIgdmlld0JveD1cIjAgMCAzNyAzN1wiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTIuNzE4OCAyNC4yODEzSDMuNDY4NzVDMi44Mjk5MSAyNC4yODEzIDIuMzEyNSAyMy43NjM4IDIuMzEyNSAyMy4xMjVWMTMuODc1QzIuMzEyNSAxMy4yMzYyIDIuODI5OTEgMTIuNzE4OCAzLjQ2ODc1IDEyLjcxODhIMTIuNzE4OEMxMy4zNTc2IDEyLjcxODggMTMuODc1IDEzLjIzNjIgMTMuODc1IDEzLjg3NVYyMy4xMjVDMTMuODc1IDIzLjc2MzggMTMuMzU3NiAyNC4yODEzIDEyLjcxODggMjQuMjgxM1pNNC42MjUgMjEuOTY4OEgxMS41NjI1VjE1LjAzMTNINC42MjVWMjEuOTY4OFpcIiBmaWxsPVwiYmxhY2tcIi8+PHBhdGggZD1cIk0zMy41MzEzIDMyLjM3NUgyNC4yODEzQzIzLjY0MjQgMzIuMzc1IDIzLjEyNSAzMS44NTc2IDIzLjEyNSAzMS4yMTg4VjIxLjk2ODhDMjMuMTI1IDIxLjMyOTkgMjMuNjQyNCAyMC44MTI1IDI0LjI4MTMgMjAuODEyNUgzMy41MzEzQzM0LjE3MDEgMjAuODEyNSAzNC42ODc1IDIxLjMyOTkgMzQuNjg3NSAyMS45Njg4VjMxLjIxODhDMzQuNjg3NSAzMS44NTc2IDM0LjE3MDEgMzIuMzc1IDMzLjUzMTMgMzIuMzc1Wk0yNS40Mzc1IDMwLjA2MjVIMzIuMzc1VjIzLjEyNUgyNS40Mzc1VjMwLjA2MjVaXCIgZmlsbD1cImJsYWNrXCIvPjxwYXRoIGQ9XCJNMzMuNTMxMyAxMy44NzVIMjQuMjgxM0MyMy42NDI0IDEzLjg3NSAyMy4xMjUgMTMuMzU3NiAyMy4xMjUgMTIuNzE4OFYzLjQ2ODc1QzIzLjEyNSAyLjgyOTkxIDIzLjY0MjQgMi4zMTI1IDI0LjI4MTMgMi4zMTI1SDMzLjUzMTNDMzQuMTcwMSAyLjMxMjUgMzQuNjg3NSAyLjgyOTkxIDM0LjY4NzUgMy40Njg3NVYxMi43MTg4QzM0LjY4NzUgMTMuMzU3NiAzNC4xNzAxIDEzLjg3NSAzMy41MzEzIDEzLjg3NVpNMjUuNDM3NSAxMS41NjI1SDMyLjM3NVY0LjYyNUgyNS40Mzc1VjExLjU2MjVaXCIgZmlsbD1cImJsYWNrXCIvPjxwYXRoIGQ9XCJNMTguNSAzN0MxNy44NjEyIDM3IDE3LjM0MzggMzYuNDgyNiAxNy4zNDM4IDM1Ljg0MzhWMS4xNTYyNUMxNy4zNDM4IDAuNTE3NDA4IDE3Ljg2MTIgMCAxOC41IDBDMTkuMTM4OCAwIDE5LjY1NjMgMC41MTc0MDggMTkuNjU2MyAxLjE1NjI1VjM1Ljg0MzhDMTkuNjU2MyAzNi40ODI2IDE5LjEzODggMzcgMTguNSAzN1pcIiBmaWxsPVwiYmxhY2tcIi8+PHBhdGggZD1cIk0xOC41IDE5LjY1NjNIMTIuNzE4OEMxMi4wNzk5IDE5LjY1NjMgMTEuNTYyNSAxOS4xMzg4IDExLjU2MjUgMTguNUMxMS41NjI1IDE3Ljg2MTIgMTIuMDc5OSAxNy4zNDM4IDEyLjcxODggMTcuMzQzOEgxOC41QzE5LjEzODggMTcuMzQzOCAxOS42NTYzIDE3Ljg2MTIgMTkuNjU2MyAxOC41QzE5LjY1NjMgMTkuMTM4OCAxOS4xMzg4IDE5LjY1NjMgMTguNSAxOS42NTYzWlwiIGZpbGw9XCJibGFja1wiLz48cGF0aCBkPVwiTTI0LjI4MTMgOS4yNUgxOC41QzE3Ljg2MTIgOS4yNSAxNy4zNDM4IDguNzMyNTkgMTcuMzQzOCA4LjA5Mzc1QzE3LjM0MzggNy40NTQ5MSAxNy44NjEyIDYuOTM3NSAxOC41IDYuOTM3NUgyNC4yODEzQzI0LjkyMDEgNi45Mzc1IDI1LjQzNzUgNy40NTQ5MSAyNS40Mzc1IDguMDkzNzVDMjUuNDM3NSA4LjczMjU5IDI0LjkyMDEgOS4yNSAyNC4yODEzIDkuMjVaXCIgZmlsbD1cImJsYWNrXCIvPjxwYXRoIGQ9XCJNMjQuMjgxMyAyNy43NUgxOC41QzE3Ljg2MTIgMjcuNzUgMTcuMzQzOCAyNy4yMzI2IDE3LjM0MzggMjYuNTkzOEMxNy4zNDM4IDI1Ljk1NDkgMTcuODYxMiAyNS40Mzc1IDE4LjUgMjUuNDM3NUgyNC4yODEzQzI0LjkyMDEgMjUuNDM3NSAyNS40Mzc1IDI1Ljk1NDkgMjUuNDM3NSAyNi41OTM4QzI1LjQzNzUgMjcuMjMyNiAyNC45MjAxIDI3Ljc1IDI0LjI4MTMgMjcuNzVaXCIgZmlsbD1cImJsYWNrXCIvPjwvc3ZnPicsXG4gIHRyZWU6ICc8c3ZnIHdpZHRoPVwiNDNcIiBoZWlnaHQ9XCI0M1wiIHZpZXdCb3g9XCIwIDAgNDMgNDNcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMzYuMzA4MiAyNC41NjA1QzM0LjYxODQgMjQuNTYwNSAzMy4yNDc4IDIzLjE4OTkgMzMuMjQ3OCAyMS41MDAxQzMzLjI0NzggMTkuODA4NiAzNC42MTg0IDE4LjQzOTcgMzYuMzA4MiAxOC40Mzk3QzM3Ljk5OTYgMTguNDM5NyAzOS4zNjg2IDE5LjgwODYgMzkuMzY4NiAyMS41MDAxQzM5LjM2ODYgMjMuMTg5OSAzNy45OTk2IDI0LjU2MDUgMzYuMzA4MiAyNC41NjA1VjI0LjU2MDVaTTYuNjI0ODYgMzcuMDg0MkM0LjkzMzQxIDM3LjA4NDIgMy41NjI3OSAzNS43MTM2IDMuNTYyNzkgMzQuMDIzOEMzLjU2Mjc5IDMyLjMzMjQgNC45MzM0MSAzMC45NjM0IDYuNjI0ODYgMzAuOTYzNEM4LjMxNDYzIDMwLjk2MzQgOS42ODUyNiAzMi4zMzI0IDkuNjg1MjYgMzQuMDIzOEM5LjY4NTI2IDM1LjcxMzYgOC4zMTQ2MyAzNy4wODQyIDYuNjI0ODYgMzcuMDg0MlpNNi42MjQ4NiAxMi4wMzY3QzQuOTMzNDEgMTIuMDM2NyAzLjU2Mjc5IDEwLjY2NjEgMy41NjI3OSA4Ljk3NDY3QzMuNTYyNzkgNy4yODQ4OSA0LjkzMzQxIDUuOTE0MjcgNi42MjQ4NiA1LjkxNDI3QzguMzE0NjMgNS45MTQyNyA5LjY4NTI2IDcuMjg0ODkgOS42ODUyNiA4Ljk3NDY3QzkuNjg1MjYgMTAuNjY2MSA4LjMxNDYzIDEyLjAzNjcgNi42MjQ4NiAxMi4wMzY3Wk0zNi4zMDgyIDE2LjMwMzJDMzQuMzI2MSAxNi4zMDMyIDMyLjYwMjggMTcuNDE1MSAzMS43MjYxIDE5LjA0NzhDMzAuMzM4NyAxOS4wNDYxIDI4LjQ3OTMgMTkuMDUxMSAyNy41OTU3IDE5LjA0NjFDMjUuNTYzMyAxOS4wMzQzIDIzLjg4MzYgMTcuNDAxNyAyMy44NTg0IDE1LjM2OTJDMjMuODMxNiAxMy4zODg5IDIzLjMyNDMgMTEuNTc4MiAyMi4wOTgxIDEwLjAwMjhDMjAuNzAwNiA4LjIwODkyIDE4LjkzMzYgNi45ODExIDE2LjY2MDggNi41ODYzNkMxNi4wODYzIDYuNDg3MjYgMTUuNDk1MSA2LjQ1NTM0IDE0LjkxMDUgNi40NDY5NEMxMy42NjA5IDYuNDMwMTUgMTIuNDA5NSA2LjQzNTE4IDExLjE1OTggNi40NDE5QzEwLjI3MTIgNC44NTI5MiA4LjU3MzA2IDMuNzc5NiA2LjYyNDU2IDMuNzc5NkMzLjc1Mzk3IDMuNzc5NiAxLjQyNzU4IDYuMTA1OTkgMS40Mjc1OCA4Ljk3NDg2QzEuNDI3NTggMTEuODQ1NSAzLjc1Mzk3IDE0LjE3MTggNi42MjQ1NiAxNC4xNzE4QzguNTcxMyAxNC4xNzE4IDEwLjI2OTUgMTMuMDk4NSAxMS4xNTgxIDExLjUxMjlDMTIuNDkwMSAxMS41MTQ2IDEzLjgyMiAxMS41MDc5IDE1LjE1NCAxMS41MjQ3QzE1LjQ5MzMgMTEuNTI4IDE1Ljg0MjcgMTEuNTkzNSAxNi4xNjY5IDExLjY5NzdDMTcuNjkzNyAxMi4xODY0IDE4Ljc0MDIgMTMuNjE5MiAxOC43NTg2IDE1LjI0NjhDMTguNzg1NSAxNy4zMjYzIDE5LjM4MDEgMTkuMTk3NSAyMC43NDA3IDIwLjc5NjRDMjAuOTUyMyAyMS4wNDY3IDIxLjE4MjQgMjEuMjgxOCAyMS40MDI1IDIxLjUyMkMyMS4zNzkgMjEuNTUwNiAyMS4zNjU1IDIxLjU3MDcgMjEuMzQ4NyAyMS41ODc1QzE5LjczNjIgMjMuMTY2NSAxOC44ODggMjUuMDg0NiAxOC43ODM5IDI3LjMzNzFDMTguNzYyIDI3Ljc4NTYgMTguNzY3MSAyOC4yNDQxIDE4LjY3NDcgMjguNjc5MUMxOC4zMTE5IDMwLjM2NzIgMTYuNzgxNyAzMS41OCAxNS4wMzQ4IDMxLjU5QzEzLjc2MTcgMzEuNTk2OCAxMi40OTAxIDMxLjU5MTcgMTEuMjE4NiAzMS41OTUxQzEwLjM0NTIgMjkuOTQ5IDguNjE2NzUgMjguODI2OSA2LjYyMjc1IDI4LjgyNjlDMy43NTM4MyAyOC44MjY5IDEuNDI3NDkgMzEuMTUzMyAxLjQyNzQ5IDM0LjAyMzlDMS40Mjc0OSAzNi44OTI4IDMuNzUzODggMzkuMjE5MiA2LjYyMjc1IDM5LjIxOTJDOC41NTQ0IDM5LjIxOTIgMTAuMjM3NCAzOC4xNjYgMTEuMTM0MyAzNi42MDIyQzEyLjQ1OTYgMzYuNjA5IDEzLjc4NjYgMzYuNjEyMyAxNS4xMTM1IDM2LjU5ODlDMTUuNTc3MSAzNi41OTM5IDE2LjA0NTcgMzYuNTU2OSAxNi41MDQzIDM2LjQ4NDdDMTguNTAzMSAzNi4xNzU2IDIwLjE1NTkgMzUuMjE2NSAyMS41MjUgMzMuNzUwMUMyMi45MjA4IDMyLjI1NjkgMjMuNzA1MiAzMC40OTgzIDIzLjgxOTQgMjguNDQ5MUMyMy44NDQ2IDI4LjAwOSAyMy44NDc5IDI3LjU2MzkgMjMuOTEzNSAyNy4xMjg5QzI0LjE2MiAyNS40ODI4IDI1Ljc5MTQgMjQuMDc1MiAyNy40NTI2IDI0LjA2MzRDMjguMzk0OSAyNC4wNTUgMzAuMzUgMjQuMDU4NCAzMS43ODc4IDI0LjA1ODRDMzIuNjc5NyAyNS42MzIzIDM0LjM2OTUgMjYuNjk1NSAzNi4zMDggMjYuNjk1NUMzOS4xNzg2IDI2LjY5NTUgNDEuNTA1IDI0LjM2OTEgNDEuNTA1IDIxLjUwMDJDNDEuNTA1IDE4LjYyOTYgMzkuMTc4NiAxNi4zMDMzIDM2LjMwOCAxNi4zMDMzXCIgZmlsbD1cImJsYWNrXCIvPjwvc3ZnPicsXG4gICd0eXBlcy9hdWRpbyc6XG4gICAgJzxzdmcgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgdmlld0JveD1cIjAgMCAzNSAzNVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMTcuNSAxLjQ1ODM0QzEwLjI1MjEgMS40NTgzNCA0LjM3NSA3LjMzNTQzIDQuMzc1IDE0LjU4MzNWMjQuNzkxN0M0LjM3NSAyNy4yMTI1IDYuMzI5MTcgMjkuMTY2NyA4Ljc1IDI5LjE2NjdIMTMuMTI1VjE3LjVINy4yOTE2N1YxNC41ODMzQzcuMjkxNjcgOC45Mzk1OSAxMS44NTYzIDQuMzc1MDEgMTcuNSA0LjM3NTAxQzIzLjE0MzggNC4zNzUwMSAyNy43MDgzIDguOTM5NTkgMjcuNzA4MyAxNC41ODMzVjE3LjVIMjEuODc1VjI5LjE2NjdIMjYuMjVDMjguNjcwOCAyOS4xNjY3IDMwLjYyNSAyNy4yMTI1IDMwLjYyNSAyNC43OTE3VjE0LjU4MzNDMzAuNjI1IDcuMzM1NDMgMjQuNzQ3OSAxLjQ1ODM0IDE3LjUgMS40NTgzNFpcIiBmaWxsPVwiYmxhY2tcIi8+PC9zdmc+JyxcbiAgJ3R5cGVzL2V4ZXJjaXNlJzpcbiAgICAnPHN2ZyB3aWR0aD1cIjI3XCIgaGVpZ2h0PVwiMzNcIiB2aWV3Qm94PVwiMCAwIDI3IDMzXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE5Ljk4MzYgMTQuMzI0OEwxMy4zOTU3IDcuNjE1MzlIMi40OTc5NUMxLjEyNDA4IDcuNjE1MzkgMC4wMTI0OTAxIDguNzU3NjkgMC4wMTI0OTAxIDEwLjE1MzhMMCAzMC40NjE1QzAgMzEuODU3NyAxLjExMTU5IDMzIDIuNDg1NDYgMzNIMTcuNDg1N0MxOC44NTk2IDMzIDE5Ljk4MzYgMzEuODU3NyAxOS45ODM2IDMwLjQ2MTVWMTQuMzI0OFpNMS44NzM0NyAzMC40NjJDMS44NzM3MSAzMC44MTg5IDIuMTU4NjIgMzEuMDk2MiAyLjQ4NTQ2IDMxLjA5NjJIMTcuNDg1N0MxNy44MjQ5IDMxLjA5NjIgMTguMTEwMiAzMC44MDYyIDE4LjExMDIgMzAuNDYxNVYxNi4yMjg3SDExLjUyMjJWOS41MTkyM0gyLjQ5Nzk1QzIuMTcwOTcgOS41MTkyMyAxLjg4NTk2IDkuNzk2NzIgMS44ODU5NiAxMC4xNTM4TDEuODczNDcgMzAuNDYyWk0xMy4zOTU3IDE0LjMyNDhIMTcuMzQ2MkwxMy4zOTU3IDEwLjE1MzhWMTQuMzI0OFpcIiBmaWxsPVwiYmxhY2tcIi8+PHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTIwLjE2NDcgMEwyNi43NTI2IDYuNzA5NDVWMjIuODQ2MkMyNi43NTI2IDI0LjI0MjMgMjUuNjI4NSAyNS4zODQ2IDI0LjI1NDYgMjUuMzg0NkgxOS40NjE2VjIzLjQ4MDhIMjQuMjU0NkMyNC41OTM4IDIzLjQ4MDggMjQuODc5MSAyMy4xOTA4IDI0Ljg3OTEgMjIuODQ2MlY4LjYxMzNIMTguMjkxMlYxLjkwMzg1SDkuMjY2OTFDOC45Mzk5MiAxLjkwMzg1IDguNjU0OTEgMi4xODEzMyA4LjY1NDkxIDIuNTM4NDZMOC42NTE3OSA3LjYxNTM4SDYuNzc4MzJMNi43ODE0NCAyLjUzODQ2QzYuNzgxNDQgMS4xNDIzMSA3Ljg5MzAzIDAgOS4yNjY5MSAwSDIwLjE2NDdaTTI0LjExNTEgNi43MDk0NUgyMC4xNjQ3VjIuNTM4NDZMMjQuMTE1MSA2LjcwOTQ1WlwiIGZpbGw9XCJibGFja1wiLz48bGluZSB4MT1cIjRcIiB5MT1cIjE5LjI1XCIgeDI9XCIxNlwiIHkyPVwiMTkuMjVcIiBzdHJva2U9XCJibGFja1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiLz48bGluZSB4MT1cIjRcIiB5MT1cIjIyLjI1XCIgeDI9XCIxNlwiIHkyPVwiMjIuMjVcIiBzdHJva2U9XCJibGFja1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiLz48bGluZSB4MT1cIjRcIiB5MT1cIjI1LjI1XCIgeDI9XCIxNlwiIHkyPVwiMjUuMjVcIiBzdHJva2U9XCJibGFja1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiLz48bGluZSB4MT1cIjRcIiB5MT1cIjI4LjI1XCIgeDI9XCIxNlwiIHkyPVwiMjguMjVcIiBzdHJva2U9XCJibGFja1wiIHN0cm9rZS13aWR0aD1cIjEuNVwiLz48L3N2Zz4nLFxuICAndHlwZXMvaW1hZ2UnOlxuICAgICc8c3ZnIHdpZHRoPVwiMzRcIiBoZWlnaHQ9XCIyNlwiIHZpZXdCb3g9XCIwIDAgMzQgMjZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTMuMDg4ODUgMC40MDAwMjRDMS43MTIxNCAwLjQwMDAyNCAwLjU2ODg0OCAxLjU0MzMxIDAuNTY4ODQ4IDIuOTIwMDJWMjMuMDhDMC41Njg4NDggMjQuNDU2NyAxLjcxMjE0IDI1LjYgMy4wODg4NSAyNS42SDMxLjE2ODhDMzIuNTQ1NiAyNS42IDMzLjY4ODggMjQuNDU2NyAzMy42ODg4IDIzLjA4VjIuOTIwMDJDMzMuNjg4OCAxLjU0MzMxIDMyLjU0NTYgMC40MDAwMjQgMzEuMTY4OCAwLjQwMDAyNEgzLjA4ODg1Wk0zLjA4ODg1IDIuNTYwMDJIMzEuMTY4OEMzMS4zODY4IDIuNTYwMDIgMzEuNTI4OCAyLjcwMjA2IDMxLjUyODggMi45MjAwMlYxNy4yM0wyNi4wODM4IDEyLjg3NjJDMjUuNzI4MSAxMi41ODc5IDI1LjE4MSAxMi41NjQgMjQuODAxMyAxMi44MTk5TDE5LjY5MzcgMTYuMzI5OUwxMi43NjM3IDEwLjcxNjFDMTIuNTQyOSAxMC41MzYxIDEyLjI0OSAxMC40NDg5IDExLjk2NDkgMTAuNDc5OEMxMS43ODc3IDEwLjUwMDkgMTEuNjE2MSAxMC41NjcgMTEuNDY5OSAxMC42NzExTDIuNzI4NzQgMTYuNzAxMVYyLjkxOTkzQzIuNzI4NzQgMi43MDE5NyAyLjg3MDc3IDIuNTU5OTMgMy4wODg3NCAyLjU1OTkzTDMuMDg4ODUgMi41NjAwMlpNMTkuNjQ4OCA1LjQ0MDAyQzE3Ljg3MjggNS40NDAwMiAxNi40MDg4IDYuOTAzOTMgMTYuNDA4OCA4LjY4MDAyQzE2LjQwODggMTAuNDU2MSAxNy44NzI4IDExLjkyIDE5LjY0ODggMTEuOTJDMjEuNDI0OSAxMS45MiAyMi44ODg4IDEwLjQ1NjEgMjIuODg4OCA4LjY4MDAyQzIyLjg4ODggNi45MDM5MyAyMS40MjQ5IDUuNDQwMDIgMTkuNjQ4OCA1LjQ0MDAyWk0xOS42NDg4IDcuNjAwMDJDMjAuMjU3OCA3LjYwMDAyIDIwLjcyODggOC4wNzExMiAyMC43Mjg4IDguNjgwMDJDMjAuNzI4OCA5LjI4ODkzIDIwLjI1NzggOS43NjAwMiAxOS42NDg4IDkuNzYwMDJDMTkuMDM5OSA5Ljc2MDAyIDE4LjU2ODggOS4yODg5MyAxOC41Njg4IDguNjgwMDJDMTguNTY4OCA4LjA3MTEyIDE5LjAzOTkgNy42MDAwMiAxOS42NDg4IDcuNjAwMDJaTTEyLjA0MzggMTIuOTFMMTguOTczOCAxOC41MTIzQzE5LjMyOTYgMTguODAwNiAxOS44NzY3IDE4LjgyNDUgMjAuMjU2MyAxOC41Njg2TDI1LjM1MjUgMTUuMDU4NkwzMS41Mjg3IDE5Ljk5NzRWMjMuMDc5OUMzMS41Mjg3IDIzLjI5NzkgMzEuMzg2NiAyMy40Mzk5IDMxLjE2ODcgMjMuNDM5OUgzLjA4ODY3QzIuODcwNyAyMy40Mzk5IDIuNzI4NjcgMjMuMjk3OSAyLjcyODY3IDIzLjA3OTlWMTkuMzMzOEwxMi4wNDM4IDEyLjkxWlwiIGZpbGw9XCJibGFja1wiLz48L3N2Zz4nLFxuICAndHlwZXMvbGVzc29uX3BsYW5uaW5nJzpcbiAgICAnPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMzBcIiB2aWV3Qm94PVwiMCAwIDI0IDMwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTIzLjYxNyA3LjkyOTM1TDE1LjgzMTMgMEgyLjk1MjEzQzEuMzI4NDYgMCAwLjAxNDc2MSAxLjM1IDAuMDE0NzYxIDNMMCAyN0MwIDI4LjY1IDEuMzEzNyAzMCAyLjkzNzM3IDMwSDIwLjY2NDlDMjIuMjg4NiAzMCAyMy42MTcgMjguNjUgMjMuNjE3IDI3VjcuOTI5MzVaTTIuMjE0MSAyNy4wMDA1QzIuMjE0MzggMjcuNDIyMyAyLjU1MTA5IDI3Ljc1IDIuOTM3MzcgMjcuNzVIMjAuNjY0OUMyMS4wNjU4IDI3Ljc1IDIxLjQwMjkgMjcuNDA3NCAyMS40MDI5IDI3VjEwLjE3OTRIMTMuNjE3MlYyLjI1SDIuOTUyMTNDMi41NjU2OSAyLjI1IDIuMjI4ODYgMi41Nzc5MyAyLjIyODg2IDNMMi4yMTQxIDI3LjAwMDVaTTE1LjgzMTMgNy45MjkzNUgyMC41TDE1LjgzMTMgM1Y3LjkyOTM1WlwiIGZpbGw9XCJibGFja1wiLz48cGF0aCBkPVwiTTQgMTkuOEg1LjY2NjY3VjE4LjJINFYxOS44Wk00IDIzSDUuNjY2NjdWMjEuNEg0VjIzWk00IDE2LjZINS42NjY2N1YxNUg0VjE2LjZaTTcuMzMzMzMgMTkuOEgxOVYxOC4ySDcuMzMzMzNWMTkuOFpNNy4zMzMzMyAyM0gxOVYyMS40SDcuMzMzMzNWMjNaTTcuMzMzMzMgMTVWMTYuNkgxOVYxNUg3LjMzMzMzWlwiIGZpbGw9XCJibGFja1wiLz48L3N2Zz4nLFxuICAndHlwZXMvdG90YWwnOlxuICAgICc8c3ZnIHdpZHRoPVwiMzZcIiBoZWlnaHQ9XCIzNlwiIHZpZXdCb3g9XCIwIDAgMzYgMzZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cmVjdCB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiBmaWxsPVwid2hpdGVcIi8+PHJlY3QgeD1cIjNcIiB5PVwiM1wiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjhcIiBmaWxsPVwiYmxhY2tcIi8+PHJlY3QgeD1cIjNcIiB5PVwiMTRcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgZmlsbD1cImJsYWNrXCIvPjxyZWN0IHg9XCIzXCIgeT1cIjI1XCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIGZpbGw9XCJibGFja1wiLz48cmVjdCB4PVwiMTRcIiB5PVwiM1wiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjhcIiBmaWxsPVwiYmxhY2tcIi8+PHJlY3QgeD1cIjE0XCIgeT1cIjE0XCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIGZpbGw9XCJibGFja1wiLz48cmVjdCB4PVwiMTRcIiB5PVwiMjVcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgZmlsbD1cImJsYWNrXCIvPjxyZWN0IHg9XCIyNVwiIHk9XCIzXCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIGZpbGw9XCJibGFja1wiLz48cmVjdCB4PVwiMjVcIiB5PVwiMTRcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgZmlsbD1cImJsYWNrXCIvPjxyZWN0IHg9XCIyNVwiIHk9XCIyNVwiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjhcIiBmaWxsPVwiYmxhY2tcIi8+PC9zdmc+JyxcbiAgJ3R5cGVzL3ZpZGVvJzpcbiAgICAnPHN2ZyB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMjdcIiB2aWV3Qm94PVwiMCAwIDM2IDI3XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk02LjQ1IDAuMTY5OTIyQzIuODk5MTUgMC4xNjk5MjIgMCAzLjA2OTA3IDAgNi42MTk5MlYyMC4zNzk5QzAgMjMuOTMwOCAyLjg5OTE1IDI2LjgyOTkgNi40NSAyNi44Mjk5SDI4LjgxQzMyLjM2MDkgMjYuODI5OSAzNS4yNiAyMy45MzA4IDM1LjI2IDIwLjM3OTlWNi42MTk5MkMzNS4yNiAzLjA2OTA3IDMyLjM2MDkgMC4xNjk5MjIgMjguODEgMC4xNjk5MjJINi40NVpNNi40NSAyLjc0OTkySDI4LjgxQzMwLjk3NjggMi43NDk5MiAzMi42OCA0LjQ1MzExIDMyLjY4IDYuNjE5OTJWMjAuMzc5OUMzMi42OCAyMi41NDY3IDMwLjk3NjggMjQuMjQ5OSAyOC44MSAyNC4yNDk5SDYuNDVDNC4yODMxOSAyNC4yNDk5IDIuNTggMjIuNTQ2NyAyLjU4IDIwLjM3OTlWNi42MTk5MkMyLjU4IDQuNDUzMTEgNC4yODMxOSAyLjc0OTkyIDYuNDUgMi43NDk5MlpNMTMuODAwNCA2LjYxOTkyQzEzLjQ1MSA2LjYwODE2IDEzLjExMzQgNi43MzkxOCAxMi44NjE1IDYuOTgyNzNDMTIuNjExMiA3LjIyNjI5IDEyLjQ3MDEgNy41NjA1NyAxMi40NzAxIDcuOTA5OVYxOS4wODk5QzEyLjQ2NjcgMTkuNzUxNyAxMi45NjU2IDIwLjMxMSAxMy42MjU3IDIwLjM3OTlDMTMuODg2MSAyMC40MDY4IDE0LjE0ODEgMjAuMzU2NCAxNC4zNzgyIDIwLjIzMjFMMjQuNjk4MiAxNC42NDIxQzI1LjExNjUgMTQuNDE3IDI1LjM3NTEgMTMuOTgwMyAyNS4zNzUxIDEzLjUwNjZDMjUuMzc1MSAxMy4wMzEzIDI1LjExNjUgMTIuNTk2MiAyNC42OTgyIDEyLjM3MTJMMTQuMzc4MiA2Ljc4MTE3QzE0LjIwMDIgNi42ODIwNyAxNC4wMDM3IDYuNjI2NjQgMTMuODAwNCA2LjYxOTkySDEzLjgwMDRaTTE1LjA1MDEgMTAuMDg2OEwyMS4zNjU5IDEzLjQ5OTlMMTUuMDUwMSAxNi45MjY1VjEwLjA4NjhaXCIgZmlsbD1cImJsYWNrXCIvPjwvc3ZnPicsXG4gICd0eXBlcy93b3Jrc2hlZXQnOlxuICAgICc8c3ZnIHdpZHRoPVwiMjlcIiBoZWlnaHQ9XCIyOFwiIHZpZXdCb3g9XCIwIDAgMjkgMjhcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTI3LjQwNzEgOC44MTEzMkMyNi40NDc5IDcuODUyMSAyNC44ODYgNy44NTIxIDIzLjkyNjcgOC44MTEzMkMyMy42MzE0IDkuMTA2NjQgMjEuNzQ2OSAxMC45OTM0IDIxLjQ1OTIgMTEuMjgxTDIxLjQ1ODEgNC43ODA4MUMyMS40NTgxIDQuMTIzNDUgMjEuMjAyMiAzLjUwNTQ5IDIwLjczNzMgMy4wNDA2NkwxOC40MTc1IDAuNzIwODA3QzE3Ljk1MjYgMC4yNTU5NTEgMTcuMzM0NyAzLjA1MTc2ZS0wNSAxNi42NzczIDMuMDUxNzZlLTA1SDIuNTkwODNDMS4yMzM0NyAzLjA1MTc2ZS0wNSAwLjEyOTg4MyAxLjEwMzYyIDAuMTI5ODgzIDIuNDYwOThWMjUuNTM5MUMwLjEyOTg4MyAyNi44OTY1IDEuMjMzNDcgMjguMDAwMSAyLjU5MDgzIDI4LjAwMDFIMTguOTk3MUMyMC4zNTQ1IDI4LjAwMDEgMjEuNDU4MSAyNi44OTY1IDIxLjQ1ODEgMjUuNTM5MVYxOC4yNDZMMjcuNDA3IDEyLjI5MTVDMjguMzY4NCAxMS4zMzAxIDI4LjM2ODQgOS43NzM2OCAyNy40MDcgOC44MTExTDI3LjQwNzEgOC44MTEzMlpNMTYuNTM2NCAxLjY0MDhDMTYuNjkxNyAxLjY0MDggMTYuOTkwMyAxLjYxMzQ2IDE3LjI1NzIgMS44ODE0M0wxOS41NzcgNC4yMDEyOUMxOS44MzczIDQuNDYxNiAxOS44MTc3IDQuNzQ3MDYgMTkuODE3NyA0LjkyMjA2SDE2LjUzNjNMMTYuNTM2NCAxLjY0MDhaTTE5LjgxNzcgMjUuNTM5NEMxOS44MTc3IDI1Ljk5MjIgMTkuNDUwMiAyNi4zNTk3IDE4Ljk5NzQgMjYuMzU5N0gyLjU5MTA4QzIuMTM4MjcgMjYuMzU5NyAxLjc3MDc3IDI1Ljk5MjIgMS43NzA3NyAyNS41Mzk0VjIuNDYxMkMxLjc3MDc3IDIuMDA4MzkgMi4xMzgyNyAxLjY0MDg5IDIuNTkxMDggMS42NDA4OUgxNC44OTU3VjUuNzQyMzNDMTQuODk1NyA2LjE5NTE0IDE1LjI2MzIgNi41NjI2NCAxNS43MTYgNi41NjI2NEgxOS44MTc0VjEyLjkyNEwxNy4zOTcgMTUuMzQ2NkwxNi4yMzc2IDE2LjUwNkMxNi4xNDc5IDE2LjU5NTcgMTYuMDgwMSAxNi43MDYxIDE2LjAzOTYgMTYuODI2NEwxNC44NzkyIDIwLjMwNjhDMTQuNzgwNyAyMC42MDIyIDE0Ljg1NzMgMjAuOTI3IDE1LjA3NzIgMjEuMTQ2OEMxNS4yOTcgMjEuMzY2NyAxNS42MjE4IDIxLjQ0MzIgMTUuOTE3MiAyMS4zNDQ4TDE5LjM5NzUgMjAuMTg0M0MxOS41MTc5IDIwLjE0MzkgMTkuNjI4MyAyMC4wNzYxIDE5LjcxOCAxOS45ODY0TDE5LjgxNzUgMTkuODg2OEwxOS44MTc3IDI1LjUzOTRaTTE3Ljk3OCAxNy4wODU5TDE5LjEzODUgMTguMjQ2M0wxOC42OTU1IDE4LjY4OTNMMTYuOTU1NCAxOS4yNjlMMTcuNTM1MSAxNy41Mjg4TDE3Ljk3OCAxNy4wODU5Wk0yMC4yOTc5IDE3LjA4NTlMMTkuMTM3NCAxNS45MjU0QzE5Ljc1NTQgMTUuMzA3NSAyMi40OTg1IDEyLjU2MDkgMjMuMDgwNCAxMS45NzkxTDI0LjI0MDggMTMuMTM5NkwyMC4yOTc5IDE3LjA4NTlaTTI2LjI0NjggMTEuMTMyNUwyNS40MDEzIDExLjk3OTFMMjQuMjQwOCAxMC44MTg2TDI1LjA4NjMgOS45NzIwNkMyNS40MDY4IDkuNjUyNyAyNS45MjYzIDkuNjUyNyAyNi4yNDY4IDkuOTcyMDZDMjYuNTY2MSAxMC4yOTI1IDI2LjU2ODMgMTAuODExIDI2LjI0NjggMTEuMTMyNVpcIiBmaWxsPVwiYmxhY2tcIi8+PHBhdGggZD1cIk0xNS43MTU5IDguMjAzMTlINC4yMzE0NUMzLjc3ODYzIDguMjAzMTkgMy40MTExMyA4LjU3MDY5IDMuNDExMTMgOS4wMjM1QzMuNDExMTMgOS40NzYzMiAzLjc3ODYzIDkuODQzODIgNC4yMzE0NSA5Ljg0MzgySDE1LjcxNTlDMTYuMTY4NyA5Ljg0MzgyIDE2LjUzNjIgOS40NzYzMiAxNi41MzYyIDkuMDIzNUMxNi41MzYyIDguNTcwNjkgMTYuMTY4NyA4LjIwMzE5IDE1LjcxNTkgOC4yMDMxOVpcIiBmaWxsPVwiYmxhY2tcIi8+PHBhdGggZD1cIk0xMi40MzQ2IDExLjQ4NDVINC4yMzE0NUMzLjc3ODYzIDExLjQ4NDUgMy40MTExMyAxMS44NTIgMy40MTExMyAxMi4zMDQ4QzMuNDExMTMgMTIuNzU3NiAzLjc3ODYzIDEzLjEyNTEgNC4yMzE0NSAxMy4xMjUxSDEyLjQzNDZDMTIuODg3NCAxMy4xMjUxIDEzLjI1NDkgMTIuNzU3NiAxMy4yNTQ5IDEyLjMwNDhDMTMuMjU0OSAxMS44NTIgMTIuODg3NCAxMS40ODQ1IDEyLjQzNDYgMTEuNDg0NVpcIiBmaWxsPVwiYmxhY2tcIi8+PHBhdGggZD1cIk0xMi40MzQ2IDE0Ljc2NTVINC4yMzE0NUMzLjc3ODYzIDE0Ljc2NTUgMy40MTExMyAxNS4xMzMgMy40MTExMyAxNS41ODU5QzMuNDExMTMgMTYuMDM4NyAzLjc3ODYzIDE2LjQwNjIgNC4yMzE0NSAxNi40MDYySDEyLjQzNDZDMTIuODg3NCAxNi40MDYyIDEzLjI1NDkgMTYuMDM4NyAxMy4yNTQ5IDE1LjU4NTlDMTMuMjU0OSAxNS4xMzMgMTIuODg3NCAxNC43NjU1IDEyLjQzNDYgMTQuNzY1NVpcIiBmaWxsPVwiYmxhY2tcIi8+PHBhdGggZD1cIk0xMi40MzQ2IDE4LjA0NjhINC4yMzE0NUMzLjc3ODYzIDE4LjA0NjggMy40MTExMyAxOC40MTQzIDMuNDExMTMgMTguODY3MkMzLjQxMTEzIDE5LjMyIDMuNzc4NjMgMTkuNjg3NSA0LjIzMTQ1IDE5LjY4NzVIMTIuNDM0NkMxMi44ODc0IDE5LjY4NzUgMTMuMjU0OSAxOS4zMiAxMy4yNTQ5IDE4Ljg2NzJDMTMuMjU0OSAxOC40MTQzIDEyLjg4NzQgMTguMDQ2OCAxMi40MzQ2IDE4LjA0NjhaXCIgZmlsbD1cImJsYWNrXCIvPjxwYXRoIGQ9XCJNMTUuNzE2MyAyMy4wNzgySDEwLjc5NDRDMTAuMzQxNiAyMy4wNzgyIDkuOTc0MTIgMjMuNDQ1NyA5Ljk3NDEyIDIzLjg5ODVDOS45NzQxMiAyNC4zNTEzIDEwLjM0MTYgMjQuNzE4OCAxMC43OTQ0IDI0LjcxODhIMTUuNzE2M0MxNi4xNjkxIDI0LjcxODggMTYuNTM2NiAyNC4zNTEzIDE2LjUzNjYgMjMuODk4NUMxNi41MzY2IDIzLjQ0NTcgMTYuMTY5MSAyMy4wNzgyIDE1LjcxNjMgMjMuMDc4MlYyMy4wNzgyWlwiIGZpbGw9XCJibGFja1wiLz48L3N2Zz4nLFxuICBsYXllcnM6XG4gICAgJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjI0cHhcIiB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIiB3aWR0aD1cIjI0cHhcIiBmaWxsPVwiIzVmNjM2OFwiPjxwYXRoIGQ9XCJNNDgwLTExOCAxMjAtMzk4bDY2LTUwIDI5NCAyMjggMjk0LTIyOCA2NiA1MC0zNjAgMjgwWm0wLTIwMkwxMjAtNjAwbDM2MC0yODAgMzYwIDI4MC0zNjAgMjgwWm0wLTI4MFptMCAxNzggMjMwLTE3OC0yMzAtMTc4LTIzMCAxNzggMjMwIDE3OFpcIi8+PC9zdmc+Jyxcbn07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU3ZnSWNvbnNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWF0SWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChjb25zdCBpY29uIG9mIE9iamVjdC5rZXlzKElDT05TKSkge1xuICAgICAgLy9jb25zb2xlLmxvZygnIXN2Zy1pbmxpbmUtbG9hZGVyP2NsYXNzUHJlZml4IXNyYy9hc3NldHMvc3ZnLycgKyBpY29uICsgJy5zdmcnKTtcbiAgICAgIHRoaXMubWF0SWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKFxuICAgICAgICBpY29uLFxuICAgICAgICB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCgoSUNPTlMgYXMgYW55KVtpY29uXSBhcyBzdHJpbmcpXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxufVxuIl19
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLWljb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1tZXRhLXdpZGdldHMtbGliL3NyYy9saWIvY29yZS9zdmctaWNvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBSTNDLE1BQU0sS0FBSyxHQUFHO0lBQ1osS0FBSyxFQUNILDYzREFBNjNEO0lBQy8zRCxJQUFJLEVBQUUsbTZFQUFtNkU7SUFDejZFLGFBQWEsRUFDWCxrZUFBa2U7SUFDcGUsZ0JBQWdCLEVBQ2QsMDFDQUEwMUM7SUFDNTFDLGFBQWEsRUFDWCw4MUNBQTgxQztJQUNoMkMsdUJBQXVCLEVBQ3JCLGl2QkFBaXZCO0lBQ252QixhQUFhLEVBQ1gsMm5CQUEybkI7SUFDN25CLGFBQWEsRUFDWCwyK0JBQTIrQjtJQUM3K0IsaUJBQWlCLEVBQ2YsbzNGQUFvM0Y7SUFDdDNGLE1BQU0sRUFDSix5UUFBeVE7SUFDM1EsU0FBUyxFQUNQLG9ZQUFvWTtJQUN0WSxTQUFTLEVBQ1AsaWxCQUFpbEI7SUFDbmxCLFNBQVMsRUFDUCw2ZkFBNmY7Q0FDaGdCLENBQUM7QUFHRixNQUFNLE9BQU8sZUFBZTtJQUcxQixZQUFvQixlQUFnQyxFQUFVLFlBQTBCO1FBQXBFLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBRmhGLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRzFCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFDRCxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxnRkFBZ0Y7WUFDaEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FDcEMsSUFBSSxFQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUUsS0FBYSxDQUFDLElBQUksQ0FBVyxDQUFDLENBQzFFLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQzsrR0FuQlUsZUFBZTttSEFBZixlQUFlLGNBREYsTUFBTTs7NEZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuY29uc3QgSUNPTlMgPSB7XG4gIGNoaWxkOlxuICAgICc8c3ZnIHdpZHRoPVwiMzdcIiBoZWlnaHQ9XCIzN1wiIHZpZXdCb3g9XCIwIDAgMzcgMzdcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTEyLjcxODggMjQuMjgxM0gzLjQ2ODc1QzIuODI5OTEgMjQuMjgxMyAyLjMxMjUgMjMuNzYzOCAyLjMxMjUgMjMuMTI1VjEzLjg3NUMyLjMxMjUgMTMuMjM2MiAyLjgyOTkxIDEyLjcxODggMy40Njg3NSAxMi43MTg4SDEyLjcxODhDMTMuMzU3NiAxMi43MTg4IDEzLjg3NSAxMy4yMzYyIDEzLjg3NSAxMy44NzVWMjMuMTI1QzEzLjg3NSAyMy43NjM4IDEzLjM1NzYgMjQuMjgxMyAxMi43MTg4IDI0LjI4MTNaTTQuNjI1IDIxLjk2ODhIMTEuNTYyNVYxNS4wMzEzSDQuNjI1VjIxLjk2ODhaXCIgZmlsbD1cImJsYWNrXCIvPjxwYXRoIGQ9XCJNMzMuNTMxMyAzMi4zNzVIMjQuMjgxM0MyMy42NDI0IDMyLjM3NSAyMy4xMjUgMzEuODU3NiAyMy4xMjUgMzEuMjE4OFYyMS45Njg4QzIzLjEyNSAyMS4zMjk5IDIzLjY0MjQgMjAuODEyNSAyNC4yODEzIDIwLjgxMjVIMzMuNTMxM0MzNC4xNzAxIDIwLjgxMjUgMzQuNjg3NSAyMS4zMjk5IDM0LjY4NzUgMjEuOTY4OFYzMS4yMTg4QzM0LjY4NzUgMzEuODU3NiAzNC4xNzAxIDMyLjM3NSAzMy41MzEzIDMyLjM3NVpNMjUuNDM3NSAzMC4wNjI1SDMyLjM3NVYyMy4xMjVIMjUuNDM3NVYzMC4wNjI1WlwiIGZpbGw9XCJibGFja1wiLz48cGF0aCBkPVwiTTMzLjUzMTMgMTMuODc1SDI0LjI4MTNDMjMuNjQyNCAxMy44NzUgMjMuMTI1IDEzLjM1NzYgMjMuMTI1IDEyLjcxODhWMy40Njg3NUMyMy4xMjUgMi44Mjk5MSAyMy42NDI0IDIuMzEyNSAyNC4yODEzIDIuMzEyNUgzMy41MzEzQzM0LjE3MDEgMi4zMTI1IDM0LjY4NzUgMi44Mjk5MSAzNC42ODc1IDMuNDY4NzVWMTIuNzE4OEMzNC42ODc1IDEzLjM1NzYgMzQuMTcwMSAxMy44NzUgMzMuNTMxMyAxMy44NzVaTTI1LjQzNzUgMTEuNTYyNUgzMi4zNzVWNC42MjVIMjUuNDM3NVYxMS41NjI1WlwiIGZpbGw9XCJibGFja1wiLz48cGF0aCBkPVwiTTE4LjUgMzdDMTcuODYxMiAzNyAxNy4zNDM4IDM2LjQ4MjYgMTcuMzQzOCAzNS44NDM4VjEuMTU2MjVDMTcuMzQzOCAwLjUxNzQwOCAxNy44NjEyIDAgMTguNSAwQzE5LjEzODggMCAxOS42NTYzIDAuNTE3NDA4IDE5LjY1NjMgMS4xNTYyNVYzNS44NDM4QzE5LjY1NjMgMzYuNDgyNiAxOS4xMzg4IDM3IDE4LjUgMzdaXCIgZmlsbD1cImJsYWNrXCIvPjxwYXRoIGQ9XCJNMTguNSAxOS42NTYzSDEyLjcxODhDMTIuMDc5OSAxOS42NTYzIDExLjU2MjUgMTkuMTM4OCAxMS41NjI1IDE4LjVDMTEuNTYyNSAxNy44NjEyIDEyLjA3OTkgMTcuMzQzOCAxMi43MTg4IDE3LjM0MzhIMTguNUMxOS4xMzg4IDE3LjM0MzggMTkuNjU2MyAxNy44NjEyIDE5LjY1NjMgMTguNUMxOS42NTYzIDE5LjEzODggMTkuMTM4OCAxOS42NTYzIDE4LjUgMTkuNjU2M1pcIiBmaWxsPVwiYmxhY2tcIi8+PHBhdGggZD1cIk0yNC4yODEzIDkuMjVIMTguNUMxNy44NjEyIDkuMjUgMTcuMzQzOCA4LjczMjU5IDE3LjM0MzggOC4wOTM3NUMxNy4zNDM4IDcuNDU0OTEgMTcuODYxMiA2LjkzNzUgMTguNSA2LjkzNzVIMjQuMjgxM0MyNC45MjAxIDYuOTM3NSAyNS40Mzc1IDcuNDU0OTEgMjUuNDM3NSA4LjA5Mzc1QzI1LjQzNzUgOC43MzI1OSAyNC45MjAxIDkuMjUgMjQuMjgxMyA5LjI1WlwiIGZpbGw9XCJibGFja1wiLz48cGF0aCBkPVwiTTI0LjI4MTMgMjcuNzVIMTguNUMxNy44NjEyIDI3Ljc1IDE3LjM0MzggMjcuMjMyNiAxNy4zNDM4IDI2LjU5MzhDMTcuMzQzOCAyNS45NTQ5IDE3Ljg2MTIgMjUuNDM3NSAxOC41IDI1LjQzNzVIMjQuMjgxM0MyNC45MjAxIDI1LjQzNzUgMjUuNDM3NSAyNS45NTQ5IDI1LjQzNzUgMjYuNTkzOEMyNS40Mzc1IDI3LjIzMjYgMjQuOTIwMSAyNy43NSAyNC4yODEzIDI3Ljc1WlwiIGZpbGw9XCJibGFja1wiLz48L3N2Zz4nLFxuICB0cmVlOiAnPHN2ZyB3aWR0aD1cIjQzXCIgaGVpZ2h0PVwiNDNcIiB2aWV3Qm94PVwiMCAwIDQzIDQzXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTM2LjMwODIgMjQuNTYwNUMzNC42MTg0IDI0LjU2MDUgMzMuMjQ3OCAyMy4xODk5IDMzLjI0NzggMjEuNTAwMUMzMy4yNDc4IDE5LjgwODYgMzQuNjE4NCAxOC40Mzk3IDM2LjMwODIgMTguNDM5N0MzNy45OTk2IDE4LjQzOTcgMzkuMzY4NiAxOS44MDg2IDM5LjM2ODYgMjEuNTAwMUMzOS4zNjg2IDIzLjE4OTkgMzcuOTk5NiAyNC41NjA1IDM2LjMwODIgMjQuNTYwNVYyNC41NjA1Wk02LjYyNDg2IDM3LjA4NDJDNC45MzM0MSAzNy4wODQyIDMuNTYyNzkgMzUuNzEzNiAzLjU2Mjc5IDM0LjAyMzhDMy41NjI3OSAzMi4zMzI0IDQuOTMzNDEgMzAuOTYzNCA2LjYyNDg2IDMwLjk2MzRDOC4zMTQ2MyAzMC45NjM0IDkuNjg1MjYgMzIuMzMyNCA5LjY4NTI2IDM0LjAyMzhDOS42ODUyNiAzNS43MTM2IDguMzE0NjMgMzcuMDg0MiA2LjYyNDg2IDM3LjA4NDJaTTYuNjI0ODYgMTIuMDM2N0M0LjkzMzQxIDEyLjAzNjcgMy41NjI3OSAxMC42NjYxIDMuNTYyNzkgOC45NzQ2N0MzLjU2Mjc5IDcuMjg0ODkgNC45MzM0MSA1LjkxNDI3IDYuNjI0ODYgNS45MTQyN0M4LjMxNDYzIDUuOTE0MjcgOS42ODUyNiA3LjI4NDg5IDkuNjg1MjYgOC45NzQ2N0M5LjY4NTI2IDEwLjY2NjEgOC4zMTQ2MyAxMi4wMzY3IDYuNjI0ODYgMTIuMDM2N1pNMzYuMzA4MiAxNi4zMDMyQzM0LjMyNjEgMTYuMzAzMiAzMi42MDI4IDE3LjQxNTEgMzEuNzI2MSAxOS4wNDc4QzMwLjMzODcgMTkuMDQ2MSAyOC40NzkzIDE5LjA1MTEgMjcuNTk1NyAxOS4wNDYxQzI1LjU2MzMgMTkuMDM0MyAyMy44ODM2IDE3LjQwMTcgMjMuODU4NCAxNS4zNjkyQzIzLjgzMTYgMTMuMzg4OSAyMy4zMjQzIDExLjU3ODIgMjIuMDk4MSAxMC4wMDI4QzIwLjcwMDYgOC4yMDg5MiAxOC45MzM2IDYuOTgxMSAxNi42NjA4IDYuNTg2MzZDMTYuMDg2MyA2LjQ4NzI2IDE1LjQ5NTEgNi40NTUzNCAxNC45MTA1IDYuNDQ2OTRDMTMuNjYwOSA2LjQzMDE1IDEyLjQwOTUgNi40MzUxOCAxMS4xNTk4IDYuNDQxOUMxMC4yNzEyIDQuODUyOTIgOC41NzMwNiAzLjc3OTYgNi42MjQ1NiAzLjc3OTZDMy43NTM5NyAzLjc3OTYgMS40Mjc1OCA2LjEwNTk5IDEuNDI3NTggOC45NzQ4NkMxLjQyNzU4IDExLjg0NTUgMy43NTM5NyAxNC4xNzE4IDYuNjI0NTYgMTQuMTcxOEM4LjU3MTMgMTQuMTcxOCAxMC4yNjk1IDEzLjA5ODUgMTEuMTU4MSAxMS41MTI5QzEyLjQ5MDEgMTEuNTE0NiAxMy44MjIgMTEuNTA3OSAxNS4xNTQgMTEuNTI0N0MxNS40OTMzIDExLjUyOCAxNS44NDI3IDExLjU5MzUgMTYuMTY2OSAxMS42OTc3QzE3LjY5MzcgMTIuMTg2NCAxOC43NDAyIDEzLjYxOTIgMTguNzU4NiAxNS4yNDY4QzE4Ljc4NTUgMTcuMzI2MyAxOS4zODAxIDE5LjE5NzUgMjAuNzQwNyAyMC43OTY0QzIwLjk1MjMgMjEuMDQ2NyAyMS4xODI0IDIxLjI4MTggMjEuNDAyNSAyMS41MjJDMjEuMzc5IDIxLjU1MDYgMjEuMzY1NSAyMS41NzA3IDIxLjM0ODcgMjEuNTg3NUMxOS43MzYyIDIzLjE2NjUgMTguODg4IDI1LjA4NDYgMTguNzgzOSAyNy4zMzcxQzE4Ljc2MiAyNy43ODU2IDE4Ljc2NzEgMjguMjQ0MSAxOC42NzQ3IDI4LjY3OTFDMTguMzExOSAzMC4zNjcyIDE2Ljc4MTcgMzEuNTggMTUuMDM0OCAzMS41OUMxMy43NjE3IDMxLjU5NjggMTIuNDkwMSAzMS41OTE3IDExLjIxODYgMzEuNTk1MUMxMC4zNDUyIDI5Ljk0OSA4LjYxNjc1IDI4LjgyNjkgNi42MjI3NSAyOC44MjY5QzMuNzUzODMgMjguODI2OSAxLjQyNzQ5IDMxLjE1MzMgMS40Mjc0OSAzNC4wMjM5QzEuNDI3NDkgMzYuODkyOCAzLjc1Mzg4IDM5LjIxOTIgNi42MjI3NSAzOS4yMTkyQzguNTU0NCAzOS4yMTkyIDEwLjIzNzQgMzguMTY2IDExLjEzNDMgMzYuNjAyMkMxMi40NTk2IDM2LjYwOSAxMy43ODY2IDM2LjYxMjMgMTUuMTEzNSAzNi41OTg5QzE1LjU3NzEgMzYuNTkzOSAxNi4wNDU3IDM2LjU1NjkgMTYuNTA0MyAzNi40ODQ3QzE4LjUwMzEgMzYuMTc1NiAyMC4xNTU5IDM1LjIxNjUgMjEuNTI1IDMzLjc1MDFDMjIuOTIwOCAzMi4yNTY5IDIzLjcwNTIgMzAuNDk4MyAyMy44MTk0IDI4LjQ0OTFDMjMuODQ0NiAyOC4wMDkgMjMuODQ3OSAyNy41NjM5IDIzLjkxMzUgMjcuMTI4OUMyNC4xNjIgMjUuNDgyOCAyNS43OTE0IDI0LjA3NTIgMjcuNDUyNiAyNC4wNjM0QzI4LjM5NDkgMjQuMDU1IDMwLjM1IDI0LjA1ODQgMzEuNzg3OCAyNC4wNTg0QzMyLjY3OTcgMjUuNjMyMyAzNC4zNjk1IDI2LjY5NTUgMzYuMzA4IDI2LjY5NTVDMzkuMTc4NiAyNi42OTU1IDQxLjUwNSAyNC4zNjkxIDQxLjUwNSAyMS41MDAyQzQxLjUwNSAxOC42Mjk2IDM5LjE3ODYgMTYuMzAzMyAzNi4zMDggMTYuMzAzM1wiIGZpbGw9XCJibGFja1wiLz48L3N2Zz4nLFxuICAndHlwZXMvYXVkaW8nOlxuICAgICc8c3ZnIHdpZHRoPVwiMzVcIiBoZWlnaHQ9XCIzNVwiIHZpZXdCb3g9XCIwIDAgMzUgMzVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTE3LjUgMS40NTgzNEMxMC4yNTIxIDEuNDU4MzQgNC4zNzUgNy4zMzU0MyA0LjM3NSAxNC41ODMzVjI0Ljc5MTdDNC4zNzUgMjcuMjEyNSA2LjMyOTE3IDI5LjE2NjcgOC43NSAyOS4xNjY3SDEzLjEyNVYxNy41SDcuMjkxNjdWMTQuNTgzM0M3LjI5MTY3IDguOTM5NTkgMTEuODU2MyA0LjM3NTAxIDE3LjUgNC4zNzUwMUMyMy4xNDM4IDQuMzc1MDEgMjcuNzA4MyA4LjkzOTU5IDI3LjcwODMgMTQuNTgzM1YxNy41SDIxLjg3NVYyOS4xNjY3SDI2LjI1QzI4LjY3MDggMjkuMTY2NyAzMC42MjUgMjcuMjEyNSAzMC42MjUgMjQuNzkxN1YxNC41ODMzQzMwLjYyNSA3LjMzNTQzIDI0Ljc0NzkgMS40NTgzNCAxNy41IDEuNDU4MzRaXCIgZmlsbD1cImJsYWNrXCIvPjwvc3ZnPicsXG4gICd0eXBlcy9leGVyY2lzZSc6XG4gICAgJzxzdmcgd2lkdGg9XCIyN1wiIGhlaWdodD1cIjMzXCIgdmlld0JveD1cIjAgMCAyNyAzM1wiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xOS45ODM2IDE0LjMyNDhMMTMuMzk1NyA3LjYxNTM5SDIuNDk3OTVDMS4xMjQwOCA3LjYxNTM5IDAuMDEyNDkwMSA4Ljc1NzY5IDAuMDEyNDkwMSAxMC4xNTM4TDAgMzAuNDYxNUMwIDMxLjg1NzcgMS4xMTE1OSAzMyAyLjQ4NTQ2IDMzSDE3LjQ4NTdDMTguODU5NiAzMyAxOS45ODM2IDMxLjg1NzcgMTkuOTgzNiAzMC40NjE1VjE0LjMyNDhaTTEuODczNDcgMzAuNDYyQzEuODczNzEgMzAuODE4OSAyLjE1ODYyIDMxLjA5NjIgMi40ODU0NiAzMS4wOTYySDE3LjQ4NTdDMTcuODI0OSAzMS4wOTYyIDE4LjExMDIgMzAuODA2MiAxOC4xMTAyIDMwLjQ2MTVWMTYuMjI4N0gxMS41MjIyVjkuNTE5MjNIMi40OTc5NUMyLjE3MDk3IDkuNTE5MjMgMS44ODU5NiA5Ljc5NjcyIDEuODg1OTYgMTAuMTUzOEwxLjg3MzQ3IDMwLjQ2MlpNMTMuMzk1NyAxNC4zMjQ4SDE3LjM0NjJMMTMuMzk1NyAxMC4xNTM4VjE0LjMyNDhaXCIgZmlsbD1cImJsYWNrXCIvPjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0yMC4xNjQ3IDBMMjYuNzUyNiA2LjcwOTQ1VjIyLjg0NjJDMjYuNzUyNiAyNC4yNDIzIDI1LjYyODUgMjUuMzg0NiAyNC4yNTQ2IDI1LjM4NDZIMTkuNDYxNlYyMy40ODA4SDI0LjI1NDZDMjQuNTkzOCAyMy40ODA4IDI0Ljg3OTEgMjMuMTkwOCAyNC44NzkxIDIyLjg0NjJWOC42MTMzSDE4LjI5MTJWMS45MDM4NUg5LjI2NjkxQzguOTM5OTIgMS45MDM4NSA4LjY1NDkxIDIuMTgxMzMgOC42NTQ5MSAyLjUzODQ2TDguNjUxNzkgNy42MTUzOEg2Ljc3ODMyTDYuNzgxNDQgMi41Mzg0NkM2Ljc4MTQ0IDEuMTQyMzEgNy44OTMwMyAwIDkuMjY2OTEgMEgyMC4xNjQ3Wk0yNC4xMTUxIDYuNzA5NDVIMjAuMTY0N1YyLjUzODQ2TDI0LjExNTEgNi43MDk0NVpcIiBmaWxsPVwiYmxhY2tcIi8+PGxpbmUgeDE9XCI0XCIgeTE9XCIxOS4yNVwiIHgyPVwiMTZcIiB5Mj1cIjE5LjI1XCIgc3Ryb2tlPVwiYmxhY2tcIiBzdHJva2Utd2lkdGg9XCIxLjVcIi8+PGxpbmUgeDE9XCI0XCIgeTE9XCIyMi4yNVwiIHgyPVwiMTZcIiB5Mj1cIjIyLjI1XCIgc3Ryb2tlPVwiYmxhY2tcIiBzdHJva2Utd2lkdGg9XCIxLjVcIi8+PGxpbmUgeDE9XCI0XCIgeTE9XCIyNS4yNVwiIHgyPVwiMTZcIiB5Mj1cIjI1LjI1XCIgc3Ryb2tlPVwiYmxhY2tcIiBzdHJva2Utd2lkdGg9XCIxLjVcIi8+PGxpbmUgeDE9XCI0XCIgeTE9XCIyOC4yNVwiIHgyPVwiMTZcIiB5Mj1cIjI4LjI1XCIgc3Ryb2tlPVwiYmxhY2tcIiBzdHJva2Utd2lkdGg9XCIxLjVcIi8+PC9zdmc+JyxcbiAgJ3R5cGVzL2ltYWdlJzpcbiAgICAnPHN2ZyB3aWR0aD1cIjM0XCIgaGVpZ2h0PVwiMjZcIiB2aWV3Qm94PVwiMCAwIDM0IDI2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0zLjA4ODg1IDAuNDAwMDI0QzEuNzEyMTQgMC40MDAwMjQgMC41Njg4NDggMS41NDMzMSAwLjU2ODg0OCAyLjkyMDAyVjIzLjA4QzAuNTY4ODQ4IDI0LjQ1NjcgMS43MTIxNCAyNS42IDMuMDg4ODUgMjUuNkgzMS4xNjg4QzMyLjU0NTYgMjUuNiAzMy42ODg4IDI0LjQ1NjcgMzMuNjg4OCAyMy4wOFYyLjkyMDAyQzMzLjY4ODggMS41NDMzMSAzMi41NDU2IDAuNDAwMDI0IDMxLjE2ODggMC40MDAwMjRIMy4wODg4NVpNMy4wODg4NSAyLjU2MDAySDMxLjE2ODhDMzEuMzg2OCAyLjU2MDAyIDMxLjUyODggMi43MDIwNiAzMS41Mjg4IDIuOTIwMDJWMTcuMjNMMjYuMDgzOCAxMi44NzYyQzI1LjcyODEgMTIuNTg3OSAyNS4xODEgMTIuNTY0IDI0LjgwMTMgMTIuODE5OUwxOS42OTM3IDE2LjMyOTlMMTIuNzYzNyAxMC43MTYxQzEyLjU0MjkgMTAuNTM2MSAxMi4yNDkgMTAuNDQ4OSAxMS45NjQ5IDEwLjQ3OThDMTEuNzg3NyAxMC41MDA5IDExLjYxNjEgMTAuNTY3IDExLjQ2OTkgMTAuNjcxMUwyLjcyODc0IDE2LjcwMTFWMi45MTk5M0MyLjcyODc0IDIuNzAxOTcgMi44NzA3NyAyLjU1OTkzIDMuMDg4NzQgMi41NTk5M0wzLjA4ODg1IDIuNTYwMDJaTTE5LjY0ODggNS40NDAwMkMxNy44NzI4IDUuNDQwMDIgMTYuNDA4OCA2LjkwMzkzIDE2LjQwODggOC42ODAwMkMxNi40MDg4IDEwLjQ1NjEgMTcuODcyOCAxMS45MiAxOS42NDg4IDExLjkyQzIxLjQyNDkgMTEuOTIgMjIuODg4OCAxMC40NTYxIDIyLjg4ODggOC42ODAwMkMyMi44ODg4IDYuOTAzOTMgMjEuNDI0OSA1LjQ0MDAyIDE5LjY0ODggNS40NDAwMlpNMTkuNjQ4OCA3LjYwMDAyQzIwLjI1NzggNy42MDAwMiAyMC43Mjg4IDguMDcxMTIgMjAuNzI4OCA4LjY4MDAyQzIwLjcyODggOS4yODg5MyAyMC4yNTc4IDkuNzYwMDIgMTkuNjQ4OCA5Ljc2MDAyQzE5LjAzOTkgOS43NjAwMiAxOC41Njg4IDkuMjg4OTMgMTguNTY4OCA4LjY4MDAyQzE4LjU2ODggOC4wNzExMiAxOS4wMzk5IDcuNjAwMDIgMTkuNjQ4OCA3LjYwMDAyWk0xMi4wNDM4IDEyLjkxTDE4Ljk3MzggMTguNTEyM0MxOS4zMjk2IDE4LjgwMDYgMTkuODc2NyAxOC44MjQ1IDIwLjI1NjMgMTguNTY4NkwyNS4zNTI1IDE1LjA1ODZMMzEuNTI4NyAxOS45OTc0VjIzLjA3OTlDMzEuNTI4NyAyMy4yOTc5IDMxLjM4NjYgMjMuNDM5OSAzMS4xNjg3IDIzLjQzOTlIMy4wODg2N0MyLjg3MDcgMjMuNDM5OSAyLjcyODY3IDIzLjI5NzkgMi43Mjg2NyAyMy4wNzk5VjE5LjMzMzhMMTIuMDQzOCAxMi45MVpcIiBmaWxsPVwiYmxhY2tcIi8+PC9zdmc+JyxcbiAgJ3R5cGVzL2xlc3Nvbl9wbGFubmluZyc6XG4gICAgJzxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjMwXCIgdmlld0JveD1cIjAgMCAyNCAzMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0yMy42MTcgNy45MjkzNUwxNS44MzEzIDBIMi45NTIxM0MxLjMyODQ2IDAgMC4wMTQ3NjEgMS4zNSAwLjAxNDc2MSAzTDAgMjdDMCAyOC42NSAxLjMxMzcgMzAgMi45MzczNyAzMEgyMC42NjQ5QzIyLjI4ODYgMzAgMjMuNjE3IDI4LjY1IDIzLjYxNyAyN1Y3LjkyOTM1Wk0yLjIxNDEgMjcuMDAwNUMyLjIxNDM4IDI3LjQyMjMgMi41NTEwOSAyNy43NSAyLjkzNzM3IDI3Ljc1SDIwLjY2NDlDMjEuMDY1OCAyNy43NSAyMS40MDI5IDI3LjQwNzQgMjEuNDAyOSAyN1YxMC4xNzk0SDEzLjYxNzJWMi4yNUgyLjk1MjEzQzIuNTY1NjkgMi4yNSAyLjIyODg2IDIuNTc3OTMgMi4yMjg4NiAzTDIuMjE0MSAyNy4wMDA1Wk0xNS44MzEzIDcuOTI5MzVIMjAuNUwxNS44MzEzIDNWNy45MjkzNVpcIiBmaWxsPVwiYmxhY2tcIi8+PHBhdGggZD1cIk00IDE5LjhINS42NjY2N1YxOC4ySDRWMTkuOFpNNCAyM0g1LjY2NjY3VjIxLjRINFYyM1pNNCAxNi42SDUuNjY2NjdWMTVINFYxNi42Wk03LjMzMzMzIDE5LjhIMTlWMTguMkg3LjMzMzMzVjE5LjhaTTcuMzMzMzMgMjNIMTlWMjEuNEg3LjMzMzMzVjIzWk03LjMzMzMzIDE1VjE2LjZIMTlWMTVINy4zMzMzM1pcIiBmaWxsPVwiYmxhY2tcIi8+PC9zdmc+JyxcbiAgJ3R5cGVzL3RvdGFsJzpcbiAgICAnPHN2ZyB3aWR0aD1cIjM2XCIgaGVpZ2h0PVwiMzZcIiB2aWV3Qm94PVwiMCAwIDM2IDM2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHJlY3Qgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgZmlsbD1cIndoaXRlXCIvPjxyZWN0IHg9XCIzXCIgeT1cIjNcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgZmlsbD1cImJsYWNrXCIvPjxyZWN0IHg9XCIzXCIgeT1cIjE0XCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIGZpbGw9XCJibGFja1wiLz48cmVjdCB4PVwiM1wiIHk9XCIyNVwiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjhcIiBmaWxsPVwiYmxhY2tcIi8+PHJlY3QgeD1cIjE0XCIgeT1cIjNcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgZmlsbD1cImJsYWNrXCIvPjxyZWN0IHg9XCIxNFwiIHk9XCIxNFwiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjhcIiBmaWxsPVwiYmxhY2tcIi8+PHJlY3QgeD1cIjE0XCIgeT1cIjI1XCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIGZpbGw9XCJibGFja1wiLz48cmVjdCB4PVwiMjVcIiB5PVwiM1wiIHdpZHRoPVwiOFwiIGhlaWdodD1cIjhcIiBmaWxsPVwiYmxhY2tcIi8+PHJlY3QgeD1cIjI1XCIgeT1cIjE0XCIgd2lkdGg9XCI4XCIgaGVpZ2h0PVwiOFwiIGZpbGw9XCJibGFja1wiLz48cmVjdCB4PVwiMjVcIiB5PVwiMjVcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCI4XCIgZmlsbD1cImJsYWNrXCIvPjwvc3ZnPicsXG4gICd0eXBlcy92aWRlbyc6XG4gICAgJzxzdmcgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjI3XCIgdmlld0JveD1cIjAgMCAzNiAyN1wiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNNi40NSAwLjE2OTkyMkMyLjg5OTE1IDAuMTY5OTIyIDAgMy4wNjkwNyAwIDYuNjE5OTJWMjAuMzc5OUMwIDIzLjkzMDggMi44OTkxNSAyNi44Mjk5IDYuNDUgMjYuODI5OUgyOC44MUMzMi4zNjA5IDI2LjgyOTkgMzUuMjYgMjMuOTMwOCAzNS4yNiAyMC4zNzk5VjYuNjE5OTJDMzUuMjYgMy4wNjkwNyAzMi4zNjA5IDAuMTY5OTIyIDI4LjgxIDAuMTY5OTIySDYuNDVaTTYuNDUgMi43NDk5MkgyOC44MUMzMC45NzY4IDIuNzQ5OTIgMzIuNjggNC40NTMxMSAzMi42OCA2LjYxOTkyVjIwLjM3OTlDMzIuNjggMjIuNTQ2NyAzMC45NzY4IDI0LjI0OTkgMjguODEgMjQuMjQ5OUg2LjQ1QzQuMjgzMTkgMjQuMjQ5OSAyLjU4IDIyLjU0NjcgMi41OCAyMC4zNzk5VjYuNjE5OTJDMi41OCA0LjQ1MzExIDQuMjgzMTkgMi43NDk5MiA2LjQ1IDIuNzQ5OTJaTTEzLjgwMDQgNi42MTk5MkMxMy40NTEgNi42MDgxNiAxMy4xMTM0IDYuNzM5MTggMTIuODYxNSA2Ljk4MjczQzEyLjYxMTIgNy4yMjYyOSAxMi40NzAxIDcuNTYwNTcgMTIuNDcwMSA3LjkwOTlWMTkuMDg5OUMxMi40NjY3IDE5Ljc1MTcgMTIuOTY1NiAyMC4zMTEgMTMuNjI1NyAyMC4zNzk5QzEzLjg4NjEgMjAuNDA2OCAxNC4xNDgxIDIwLjM1NjQgMTQuMzc4MiAyMC4yMzIxTDI0LjY5ODIgMTQuNjQyMUMyNS4xMTY1IDE0LjQxNyAyNS4zNzUxIDEzLjk4MDMgMjUuMzc1MSAxMy41MDY2QzI1LjM3NTEgMTMuMDMxMyAyNS4xMTY1IDEyLjU5NjIgMjQuNjk4MiAxMi4zNzEyTDE0LjM3ODIgNi43ODExN0MxNC4yMDAyIDYuNjgyMDcgMTQuMDAzNyA2LjYyNjY0IDEzLjgwMDQgNi42MTk5MkgxMy44MDA0Wk0xNS4wNTAxIDEwLjA4NjhMMjEuMzY1OSAxMy40OTk5TDE1LjA1MDEgMTYuOTI2NVYxMC4wODY4WlwiIGZpbGw9XCJibGFja1wiLz48L3N2Zz4nLFxuICAndHlwZXMvd29ya3NoZWV0JzpcbiAgICAnPHN2ZyB3aWR0aD1cIjI5XCIgaGVpZ2h0PVwiMjhcIiB2aWV3Qm94PVwiMCAwIDI5IDI4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0yNy40MDcxIDguODExMzJDMjYuNDQ3OSA3Ljg1MjEgMjQuODg2IDcuODUyMSAyMy45MjY3IDguODExMzJDMjMuNjMxNCA5LjEwNjY0IDIxLjc0NjkgMTAuOTkzNCAyMS40NTkyIDExLjI4MUwyMS40NTgxIDQuNzgwODFDMjEuNDU4MSA0LjEyMzQ1IDIxLjIwMjIgMy41MDU0OSAyMC43MzczIDMuMDQwNjZMMTguNDE3NSAwLjcyMDgwN0MxNy45NTI2IDAuMjU1OTUxIDE3LjMzNDcgMy4wNTE3NmUtMDUgMTYuNjc3MyAzLjA1MTc2ZS0wNUgyLjU5MDgzQzEuMjMzNDcgMy4wNTE3NmUtMDUgMC4xMjk4ODMgMS4xMDM2MiAwLjEyOTg4MyAyLjQ2MDk4VjI1LjUzOTFDMC4xMjk4ODMgMjYuODk2NSAxLjIzMzQ3IDI4LjAwMDEgMi41OTA4MyAyOC4wMDAxSDE4Ljk5NzFDMjAuMzU0NSAyOC4wMDAxIDIxLjQ1ODEgMjYuODk2NSAyMS40NTgxIDI1LjUzOTFWMTguMjQ2TDI3LjQwNyAxMi4yOTE1QzI4LjM2ODQgMTEuMzMwMSAyOC4zNjg0IDkuNzczNjggMjcuNDA3IDguODExMUwyNy40MDcxIDguODExMzJaTTE2LjUzNjQgMS42NDA4QzE2LjY5MTcgMS42NDA4IDE2Ljk5MDMgMS42MTM0NiAxNy4yNTcyIDEuODgxNDNMMTkuNTc3IDQuMjAxMjlDMTkuODM3MyA0LjQ2MTYgMTkuODE3NyA0Ljc0NzA2IDE5LjgxNzcgNC45MjIwNkgxNi41MzYzTDE2LjUzNjQgMS42NDA4Wk0xOS44MTc3IDI1LjUzOTRDMTkuODE3NyAyNS45OTIyIDE5LjQ1MDIgMjYuMzU5NyAxOC45OTc0IDI2LjM1OTdIMi41OTEwOEMyLjEzODI3IDI2LjM1OTcgMS43NzA3NyAyNS45OTIyIDEuNzcwNzcgMjUuNTM5NFYyLjQ2MTJDMS43NzA3NyAyLjAwODM5IDIuMTM4MjcgMS42NDA4OSAyLjU5MTA4IDEuNjQwODlIMTQuODk1N1Y1Ljc0MjMzQzE0Ljg5NTcgNi4xOTUxNCAxNS4yNjMyIDYuNTYyNjQgMTUuNzE2IDYuNTYyNjRIMTkuODE3NFYxMi45MjRMMTcuMzk3IDE1LjM0NjZMMTYuMjM3NiAxNi41MDZDMTYuMTQ3OSAxNi41OTU3IDE2LjA4MDEgMTYuNzA2MSAxNi4wMzk2IDE2LjgyNjRMMTQuODc5MiAyMC4zMDY4QzE0Ljc4MDcgMjAuNjAyMiAxNC44NTczIDIwLjkyNyAxNS4wNzcyIDIxLjE0NjhDMTUuMjk3IDIxLjM2NjcgMTUuNjIxOCAyMS40NDMyIDE1LjkxNzIgMjEuMzQ0OEwxOS4zOTc1IDIwLjE4NDNDMTkuNTE3OSAyMC4xNDM5IDE5LjYyODMgMjAuMDc2MSAxOS43MTggMTkuOTg2NEwxOS44MTc1IDE5Ljg4NjhMMTkuODE3NyAyNS41Mzk0Wk0xNy45NzggMTcuMDg1OUwxOS4xMzg1IDE4LjI0NjNMMTguNjk1NSAxOC42ODkzTDE2Ljk1NTQgMTkuMjY5TDE3LjUzNTEgMTcuNTI4OEwxNy45NzggMTcuMDg1OVpNMjAuMjk3OSAxNy4wODU5TDE5LjEzNzQgMTUuOTI1NEMxOS43NTU0IDE1LjMwNzUgMjIuNDk4NSAxMi41NjA5IDIzLjA4MDQgMTEuOTc5MUwyNC4yNDA4IDEzLjEzOTZMMjAuMjk3OSAxNy4wODU5Wk0yNi4yNDY4IDExLjEzMjVMMjUuNDAxMyAxMS45NzkxTDI0LjI0MDggMTAuODE4NkwyNS4wODYzIDkuOTcyMDZDMjUuNDA2OCA5LjY1MjcgMjUuOTI2MyA5LjY1MjcgMjYuMjQ2OCA5Ljk3MjA2QzI2LjU2NjEgMTAuMjkyNSAyNi41NjgzIDEwLjgxMSAyNi4yNDY4IDExLjEzMjVaXCIgZmlsbD1cImJsYWNrXCIvPjxwYXRoIGQ9XCJNMTUuNzE1OSA4LjIwMzE5SDQuMjMxNDVDMy43Nzg2MyA4LjIwMzE5IDMuNDExMTMgOC41NzA2OSAzLjQxMTEzIDkuMDIzNUMzLjQxMTEzIDkuNDc2MzIgMy43Nzg2MyA5Ljg0MzgyIDQuMjMxNDUgOS44NDM4MkgxNS43MTU5QzE2LjE2ODcgOS44NDM4MiAxNi41MzYyIDkuNDc2MzIgMTYuNTM2MiA5LjAyMzVDMTYuNTM2MiA4LjU3MDY5IDE2LjE2ODcgOC4yMDMxOSAxNS43MTU5IDguMjAzMTlaXCIgZmlsbD1cImJsYWNrXCIvPjxwYXRoIGQ9XCJNMTIuNDM0NiAxMS40ODQ1SDQuMjMxNDVDMy43Nzg2MyAxMS40ODQ1IDMuNDExMTMgMTEuODUyIDMuNDExMTMgMTIuMzA0OEMzLjQxMTEzIDEyLjc1NzYgMy43Nzg2MyAxMy4xMjUxIDQuMjMxNDUgMTMuMTI1MUgxMi40MzQ2QzEyLjg4NzQgMTMuMTI1MSAxMy4yNTQ5IDEyLjc1NzYgMTMuMjU0OSAxMi4zMDQ4QzEzLjI1NDkgMTEuODUyIDEyLjg4NzQgMTEuNDg0NSAxMi40MzQ2IDExLjQ4NDVaXCIgZmlsbD1cImJsYWNrXCIvPjxwYXRoIGQ9XCJNMTIuNDM0NiAxNC43NjU1SDQuMjMxNDVDMy43Nzg2MyAxNC43NjU1IDMuNDExMTMgMTUuMTMzIDMuNDExMTMgMTUuNTg1OUMzLjQxMTEzIDE2LjAzODcgMy43Nzg2MyAxNi40MDYyIDQuMjMxNDUgMTYuNDA2MkgxMi40MzQ2QzEyLjg4NzQgMTYuNDA2MiAxMy4yNTQ5IDE2LjAzODcgMTMuMjU0OSAxNS41ODU5QzEzLjI1NDkgMTUuMTMzIDEyLjg4NzQgMTQuNzY1NSAxMi40MzQ2IDE0Ljc2NTVaXCIgZmlsbD1cImJsYWNrXCIvPjxwYXRoIGQ9XCJNMTIuNDM0NiAxOC4wNDY4SDQuMjMxNDVDMy43Nzg2MyAxOC4wNDY4IDMuNDExMTMgMTguNDE0MyAzLjQxMTEzIDE4Ljg2NzJDMy40MTExMyAxOS4zMiAzLjc3ODYzIDE5LjY4NzUgNC4yMzE0NSAxOS42ODc1SDEyLjQzNDZDMTIuODg3NCAxOS42ODc1IDEzLjI1NDkgMTkuMzIgMTMuMjU0OSAxOC44NjcyQzEzLjI1NDkgMTguNDE0MyAxMi44ODc0IDE4LjA0NjggMTIuNDM0NiAxOC4wNDY4WlwiIGZpbGw9XCJibGFja1wiLz48cGF0aCBkPVwiTTE1LjcxNjMgMjMuMDc4MkgxMC43OTQ0QzEwLjM0MTYgMjMuMDc4MiA5Ljk3NDEyIDIzLjQ0NTcgOS45NzQxMiAyMy44OTg1QzkuOTc0MTIgMjQuMzUxMyAxMC4zNDE2IDI0LjcxODggMTAuNzk0NCAyNC43MTg4SDE1LjcxNjNDMTYuMTY5MSAyNC43MTg4IDE2LjUzNjYgMjQuMzUxMyAxNi41MzY2IDIzLjg5ODVDMTYuNTM2NiAyMy40NDU3IDE2LjE2OTEgMjMuMDc4MiAxNS43MTYzIDIzLjA3ODJWMjMuMDc4MlpcIiBmaWxsPVwiYmxhY2tcIi8+PC9zdmc+JyxcbiAgbGF5ZXJzOlxuICAgICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyNHB4XCIgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCIgd2lkdGg9XCIyNHB4XCIgZmlsbD1cIiM1ZjYzNjhcIj48cGF0aCBkPVwiTTQ4MC0xMTggMTIwLTM5OGw2Ni01MCAyOTQgMjI4IDI5NC0yMjggNjYgNTAtMzYwIDI4MFptMC0yMDJMMTIwLTYwMGwzNjAtMjgwIDM2MCAyODAtMzYwIDI4MFptMC0yODBabTAgMTc4IDIzMC0xNzgtMjMwLTE3OC0yMzAgMTc4IDIzMCAxNzhaXCIvPjwvc3ZnPicsXG4gICdsZXZlbC0xJzpcbiAgICAnPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk00IDEyLjlMMyAxMy44TDExIDIwLjdDMTEuNiAyMS4yIDEyLjQgMjEuMiAxMyAyMC43TDIxIDEzLjhMMjAgMTIuOUwxMiAxOS44TDQgMTIuOVpNMTEgMy40MDAwMkw0IDkuNDAwMDJDMy40IDkuOTAwMDIgMy40IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNiAxNy43IDEyLjQgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuNSAxMC42IDIwLjUgOS44MDAwMiAyMCA5LjQwMDAyTDEzIDMuMzAwMDJDMTIuNCAyLjkwMDAyIDExLjYgMi45MDAwMiAxMSAzLjQwMDAyWlwiIGZpbGw9XCIjMDAzQjdDXCIvPjwvc3ZnPicsXG4gICdsZXZlbC0yJzpcbiAgICAnPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0yMC4zIDkuOTAwMDVDMjAuMiA5LjcwMDA1IDIwLjEgOS42MDAwNSAyMCA5LjQwMDA1TDEzIDMuMzAwMDVDMTIuNSAyLjgwMDA1IDExLjUgMi44MDAwNSAxMSAzLjMwMDA1TDQgOS40MDAwNUMzLjUgOS45MDAwNSAzLjUgMTAuNyA0IDExLjFMMTEgMTcuMkMxMS41IDE3LjcgMTIuNSAxNy43IDEzIDE3LjJMMjAgMTEuMUMyMC4zIDEwLjggMjAuNCAxMC41IDIwLjQgMTAuMkMyMC40IDEwLjEgMjAuNCAxMCAyMC4zIDkuOTAwMDVaTTUgMTAuM0wxMiA0LjIwMDA1TDE5IDEwLjNMMTIgMTYuNEw1IDEwLjNaTTIwIDEyLjlMMTIgMTkuOEw0IDEyLjlMMyAxMy44TDExIDIwLjcwMDFDMTEuNSAyMS4yMDAxIDEyLjUgMjEuMjAwMSAxMyAyMC43MDAxTDIxIDEzLjhMMjAgMTIuOVpcIiBmaWxsPVwiIzAwM0I3Q1wiLz48cGF0aCBvcGFjaXR5PVwiMC4zXCIgZD1cIk0xOSAxMC4zTDEyIDE2LjNMNSAxMC4zTDEyIDQuMTk5OTVMMTkgMTAuM1pcIiBmaWxsPVwiIzAwM0I3Q1wiLz48L3N2Zz4nLFxuICAnbGV2ZWwtMyc6XG4gICAgJzxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNMjAuMyA5LjkwMDA1QzIwLjIgOS43MDAwNSAyMC4xIDkuNjAwMDUgMjAgOS40MDAwNUwxMyAzLjMwMDA1QzEyLjUgMi44MDAwNSAxMS41IDIuODAwMDUgMTEgMy4zMDAwNUw0IDkuNDAwMDVDMy41IDkuOTAwMDUgMy41IDEwLjcgNCAxMS4xTDExIDE3LjJDMTEuNSAxNy43IDEyLjUgMTcuNyAxMyAxNy4yTDIwIDExLjFDMjAuMyAxMC44IDIwLjQgMTAuNSAyMC40IDEwLjJDMjAuNCAxMC4xIDIwLjQgMTAgMjAuMyA5LjkwMDA1Wk01IDEwLjNMMTIgNC4yMDAwNUwxOSAxMC4zTDEyIDE2LjRMNSAxMC4zWk0yMCAxMi45TDEyIDE5LjhMNCAxMi45TDMgMTMuOEwxMSAyMC43MDAxQzExLjUgMjEuMjAwMSAxMi41IDIxLjIwMDEgMTMgMjAuNzAwMUwyMSAxMy44TDIwIDEyLjlaXCIgZmlsbD1cIiMwMDNCN0NcIi8+PC9zdmc+Jyxcbn07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU3ZnSWNvbnNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWF0SWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChjb25zdCBpY29uIG9mIE9iamVjdC5rZXlzKElDT05TKSkge1xuICAgICAgLy9jb25zb2xlLmxvZygnIXN2Zy1pbmxpbmUtbG9hZGVyP2NsYXNzUHJlZml4IXNyYy9hc3NldHMvc3ZnLycgKyBpY29uICsgJy5zdmcnKTtcbiAgICAgIHRoaXMubWF0SWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25MaXRlcmFsKFxuICAgICAgICBpY29uLFxuICAgICAgICB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCgoSUNPTlMgYXMgYW55KVtpY29uXSBhcyBzdHJpbmcpXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxufVxuIl19
@@ -144,7 +144,7 @@ export class CountsWithHistoryComponent {
144
144
  }));
145
145
  }
146
146
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CountsWithHistoryComponent, deps: [{ token: i1.MetaApiService }, { token: i0.DestroyRef }, { token: i2.EditorialLinkService }], target: i0.ɵɵFactoryTarget.Component }); }
147
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CountsWithHistoryComponent, isStandalone: true, selector: "metaqs2-counts-with-history", inputs: { apiMethod: "apiMethod", columnTranslationkey: "columnTranslationkey", pageTitle: "pageTitle", sourceType: "sourceType" }, ngImport: i0, template: "<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{ pageTitle | translate }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content class=\"toolbar\">\n <metaqs2-datepicker [disabled]=\"isLoading() || !isHistoryEnabled()\" [inputGroup]=\"range\" *ngIf=\"timeFilterLoaded() && isHistoryEnabled()\"></metaqs2-datepicker>\n <div style=\"flex: 1 1 auto\"></div>\n <mat-slide-toggle [ngModel]=\"isHistoryEnabled()\" (ngModelChange)=\"isHistoryEnabled.set($event)\" [disabled]=\"isLoading()\" *ngIf=\"timeFilterLoaded()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table [class.while-loading]=\"isLoading()\" mat-table [dataSource]=\"recentTypeCount$.value.rows\"\n class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th [attr.rowspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef>\n <div>Quelle</div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [matTooltip]=\"row.meta.alt_label\"\n class=\"label-col\"\n >\n {{ row.meta.label }}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef [matTooltip]=\"col.label\">\n {{ columnTranslationkey ? (columnTranslationkey + col.label | translate) : col.label }}\n </th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef\n matTooltip=\"no tooltip\">{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}\n </th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a [attr.href]=\"openInEditor(row.meta.id, col.id) | async\" target=\"editor_frontend\">{{ row.counts[col.id] ?? '\u2013' }}</a>\n </td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\">\n {{ (pastTypeCount$ | async)?.rows?.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\" >\n <ng-container *ngIf=\"(pastTypeCount$ | async)?.rows?.length && pastTypeCount(row, col.id) as trend\">\n <span [class]=\"trend.trend\"> {{ trend.value ?? '\u2013' }}\n <mat-icon *ngIf=\"trend.value\" aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{ trend.trend }}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns()); sticky:true;\"></tr>\n <tr [hidden]=\"!isHistoryEnabled()\" mat-header-row *matHeaderRowDef=\"allColumns(); sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns())\"></tr>\n\n </table>\n</mat-card>\n", styles: [".while-loading{filter:blur(2px)}tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>td.label-col,tr:nth-child(2n) td.recent-data-cell{border-right:1px solid white}tr:nth-child(odd){background-color:#fff}tr:nth-child(odd)>td.label-col,tr:nth-child(odd) td.recent-data-cell{border-right:1px solid #e4e4e4}td.label-col{text-align:left}.mat-mdc-header-cell,.mat-mdc-cell{text-align:center}.mat-mdc-header-cell a[href],.mat-mdc-cell a[href]{color:var(--mat-table-row-item-label-text-color);cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a[href]:hover,.mat-mdc-cell a[href]:hover{text-decoration:underline}.mat-mdc-header-cell mat-icon,.mat-mdc-cell mat-icon{margin-left:5px;vertical-align:middle}.trending_down{color:#4abeff}.trending_up{color:#c20808}.actionbar{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: DatepickerComponent, selector: "metaqs2-datepicker", inputs: ["disabled", "inputGroup"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ProgressSpinnerComponent, selector: "metaqs2-progress-spinner", inputs: ["color", "diameter", "strokeWidth", "backdropEnabled", "positionGloballyCenter", "displayProgressSpinner"] }] }); }
147
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CountsWithHistoryComponent, isStandalone: true, selector: "metaqs2-counts-with-history", inputs: { apiMethod: "apiMethod", columnTranslationkey: "columnTranslationkey", pageTitle: "pageTitle", sourceType: "sourceType" }, ngImport: i0, template: "<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{ pageTitle | translate }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content class=\"toolbar\">\n <metaqs2-datepicker [disabled]=\"isLoading() || !isHistoryEnabled()\" [inputGroup]=\"range\" *ngIf=\"timeFilterLoaded() && isHistoryEnabled()\"></metaqs2-datepicker>\n <div style=\"flex: 1 1 auto\"></div>\n <mat-slide-toggle [ngModel]=\"isHistoryEnabled()\" (ngModelChange)=\"isHistoryEnabled.set($event)\" [disabled]=\"isLoading()\" *ngIf=\"timeFilterLoaded()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table [class.while-loading]=\"isLoading()\" mat-table [dataSource]=\"recentTypeCount$.value.rows\"\n class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th [attr.rowspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef>\n <div>Quelle</div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [matTooltip]=\"row.meta.alt_label\"\n class=\"label-col mat-cell-level-{{row.meta.level + 1}}\"\n >\n {{ row.meta.label }}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef [matTooltip]=\"col.label\">\n {{ columnTranslationkey ? (columnTranslationkey + col.label | translate) : col.label }}\n </th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef\n matTooltip=\"no tooltip\">{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}\n </th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a [attr.href]=\"openInEditor(row.meta.id, col.id) | async\" target=\"editor_frontend\">{{ row.counts[col.id] ?? '\u2013' }}</a>\n </td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\">\n {{ (pastTypeCount$ | async)?.rows?.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\" >\n <ng-container *ngIf=\"(pastTypeCount$ | async)?.rows?.length && pastTypeCount(row, col.id) as trend\">\n <span [class]=\"trend.trend\"> {{ trend.value ?? '\u2013' }}\n <mat-icon *ngIf=\"trend.value\" aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{ trend.trend }}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns()); sticky:true;\"></tr>\n <tr [hidden]=\"!isHistoryEnabled()\" mat-header-row *matHeaderRowDef=\"allColumns(); sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns())\"></tr>\n\n </table>\n</mat-card>\n", styles: [".while-loading{filter:blur(2px)}tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>td.label-col,tr:nth-child(2n) td.recent-data-cell{border-right:1px solid white}tr:nth-child(odd){background-color:#fff}tr:nth-child(odd)>td.label-col,tr:nth-child(odd) td.recent-data-cell{border-right:1px solid #e4e4e4}td.label-col{text-align:left}.mat-mdc-header-cell,.mat-mdc-cell{text-align:center}.mat-mdc-header-cell a[href],.mat-mdc-cell a[href]{color:var(--mat-table-row-item-label-text-color);cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a[href]:hover,.mat-mdc-cell a[href]:hover{text-decoration:underline}.mat-mdc-header-cell mat-icon,.mat-mdc-cell mat-icon{margin-left:5px;vertical-align:middle}.trending_down{color:#4abeff}.trending_up{color:#c20808}.actionbar{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: DatepickerComponent, selector: "metaqs2-datepicker", inputs: ["disabled", "inputGroup"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ProgressSpinnerComponent, selector: "metaqs2-progress-spinner", inputs: ["color", "diameter", "strokeWidth", "backdropEnabled", "positionGloballyCenter", "displayProgressSpinner"] }] }); }
148
148
  }
149
149
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CountsWithHistoryComponent, decorators: [{
150
150
  type: Component,
@@ -170,7 +170,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
170
170
  MatSlideToggle,
171
171
  AsyncPipe,
172
172
  ProgressSpinnerComponent,
173
- ], template: "<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{ pageTitle | translate }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content class=\"toolbar\">\n <metaqs2-datepicker [disabled]=\"isLoading() || !isHistoryEnabled()\" [inputGroup]=\"range\" *ngIf=\"timeFilterLoaded() && isHistoryEnabled()\"></metaqs2-datepicker>\n <div style=\"flex: 1 1 auto\"></div>\n <mat-slide-toggle [ngModel]=\"isHistoryEnabled()\" (ngModelChange)=\"isHistoryEnabled.set($event)\" [disabled]=\"isLoading()\" *ngIf=\"timeFilterLoaded()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table [class.while-loading]=\"isLoading()\" mat-table [dataSource]=\"recentTypeCount$.value.rows\"\n class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th [attr.rowspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef>\n <div>Quelle</div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [matTooltip]=\"row.meta.alt_label\"\n class=\"label-col\"\n >\n {{ row.meta.label }}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef [matTooltip]=\"col.label\">\n {{ columnTranslationkey ? (columnTranslationkey + col.label | translate) : col.label }}\n </th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef\n matTooltip=\"no tooltip\">{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}\n </th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a [attr.href]=\"openInEditor(row.meta.id, col.id) | async\" target=\"editor_frontend\">{{ row.counts[col.id] ?? '\u2013' }}</a>\n </td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\">\n {{ (pastTypeCount$ | async)?.rows?.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\" >\n <ng-container *ngIf=\"(pastTypeCount$ | async)?.rows?.length && pastTypeCount(row, col.id) as trend\">\n <span [class]=\"trend.trend\"> {{ trend.value ?? '\u2013' }}\n <mat-icon *ngIf=\"trend.value\" aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{ trend.trend }}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns()); sticky:true;\"></tr>\n <tr [hidden]=\"!isHistoryEnabled()\" mat-header-row *matHeaderRowDef=\"allColumns(); sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns())\"></tr>\n\n </table>\n</mat-card>\n", styles: [".while-loading{filter:blur(2px)}tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>td.label-col,tr:nth-child(2n) td.recent-data-cell{border-right:1px solid white}tr:nth-child(odd){background-color:#fff}tr:nth-child(odd)>td.label-col,tr:nth-child(odd) td.recent-data-cell{border-right:1px solid #e4e4e4}td.label-col{text-align:left}.mat-mdc-header-cell,.mat-mdc-cell{text-align:center}.mat-mdc-header-cell a[href],.mat-mdc-cell a[href]{color:var(--mat-table-row-item-label-text-color);cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a[href]:hover,.mat-mdc-cell a[href]:hover{text-decoration:underline}.mat-mdc-header-cell mat-icon,.mat-mdc-cell mat-icon{margin-left:5px;vertical-align:middle}.trending_down{color:#4abeff}.trending_up{color:#c20808}.actionbar{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:.5rem}\n"] }]
173
+ ], template: "<mat-card appearance=\"raised\">\n <mat-card-header *ngIf=\"pageTitle\">\n <mat-card-title data-test-id=\"page-title\">\n Qualit\u00E4tsmetrik: {{ pageTitle | translate }}{{ isLoading() ? \": Lade neue Daten.\" : \"\" }}\n </mat-card-title>\n </mat-card-header>\n <!-- consider to put the filter in the table header to avoid that it is scrolled out of view-->\n <!-- show the filter after the values are loaded to avoid loading current data twice -->\n <mat-card-content class=\"toolbar\">\n <metaqs2-datepicker [disabled]=\"isLoading() || !isHistoryEnabled()\" [inputGroup]=\"range\" *ngIf=\"timeFilterLoaded() && isHistoryEnabled()\"></metaqs2-datepicker>\n <div style=\"flex: 1 1 auto\"></div>\n <mat-slide-toggle [ngModel]=\"isHistoryEnabled()\" (ngModelChange)=\"isHistoryEnabled.set($event)\" [disabled]=\"isLoading()\" *ngIf=\"timeFilterLoaded()\">\n <label>Zeige historische Daten</label>\n </mat-slide-toggle>\n </mat-card-content>\n</mat-card>\n<mat-card>\n <metaqs2-progress-spinner [displayProgressSpinner]=\"isLoading()\"></metaqs2-progress-spinner>\n <table [class.while-loading]=\"isLoading()\" mat-table [dataSource]=\"recentTypeCount$.value.rows\"\n class=\"quality-matrix\">\n <!-- Define columns of table -->\n <!-- Row Header Column -->\n <ng-container matColumnDef=\"label-col\" sticky>\n <th [attr.rowspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef>\n <div>Quelle</div>\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [matTooltip]=\"row.meta.alt_label\"\n class=\"label-col mat-cell-level-{{row.meta.level + 1}}\"\n >\n {{ row.meta.label }}\n </td>\n </ng-container>\n <!-- one column for each type -->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_type'\">\n <th [attr.colspan]=\"isHistoryEnabled() ? '2' : '1'\" mat-header-cell *matHeaderCellDef [matTooltip]=\"col.label\">\n {{ columnTranslationkey ? (columnTranslationkey + col.label | translate) : col.label }}\n </th>\n </ng-container>\n <!-- one column for each type for the most current date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_recent'\">\n <th class=\"recent-data-cell\" mat-header-cell *matHeaderCellDef\n matTooltip=\"no tooltip\">{{ range.controls.end.value.toLocaleString(DateTime.DATE_SHORT) }}\n </th>\n <td class=\"recent-data-cell\" mat-cell *matCellDef=\"let row\">\n <a [attr.href]=\"openInEditor(row.meta.id, col.id) | async\" target=\"editor_frontend\">{{ row.counts[col.id] ?? '\u2013' }}</a>\n </td>\n </ng-container>\n <!-- one column for each type for the older date-->\n <ng-container *ngFor=\"let col of (recentTypeCount$ | async)?.columns; trackBy:columnIdent\"\n [matColumnDef]=\"col.id + '_past'\">\n <th class=\"past-data-cell\" mat-header-cell *matHeaderCellDef matTooltip=\"no tooltip\">\n {{ (pastTypeCount$ | async)?.rows?.length ? range.controls.start.value.toLocaleString(DateTime.DATE_SHORT) : 'no past data' }}\n </th>\n <td class=\"past-data-cell\" mat-cell *matCellDef=\"let row;\" >\n <ng-container *ngIf=\"(pastTypeCount$ | async)?.rows?.length && pastTypeCount(row, col.id) as trend\">\n <span [class]=\"trend.trend\"> {{ trend.value ?? '\u2013' }}\n <mat-icon *ngIf=\"trend.value\" aria-hidden=\"false\" [attr.aria-label]=\"trend.trend\" [fontIcon]=\"trend.trend!\" /></span>\n <span class=\"cdk-visually-hidden\">{{ trend.trend }}</span>\n </ng-container>\n </td>\n </ng-container>\n <!-- generate actual table -->\n <tr mat-header-row *matHeaderRowDef=\"['label-col'].concat(typeColumns()); sticky:true;\"></tr>\n <tr [hidden]=\"!isHistoryEnabled()\" mat-header-row *matHeaderRowDef=\"allColumns(); sticky: true;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: ['label-col'].concat(allColumns())\"></tr>\n\n </table>\n</mat-card>\n", styles: [".while-loading{filter:blur(2px)}tr:nth-child(2n){background-color:#e4e4e4}tr:nth-child(2n)>td.label-col,tr:nth-child(2n) td.recent-data-cell{border-right:1px solid white}tr:nth-child(odd){background-color:#fff}tr:nth-child(odd)>td.label-col,tr:nth-child(odd) td.recent-data-cell{border-right:1px solid #e4e4e4}td.label-col{text-align:left}.mat-mdc-header-cell,.mat-mdc-cell{text-align:center}.mat-mdc-header-cell a[href],.mat-mdc-cell a[href]{color:var(--mat-table-row-item-label-text-color);cursor:pointer;text-decoration:underline}.mat-mdc-header-cell a[href]:hover,.mat-mdc-cell a[href]:hover{text-decoration:underline}.mat-mdc-header-cell mat-icon,.mat-mdc-cell mat-icon{margin-left:5px;vertical-align:middle}.trending_down{color:#4abeff}.trending_up{color:#c20808}.actionbar{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:.5rem}\n"] }]
174
174
  }], ctorParameters: () => [{ type: i1.MetaApiService }, { type: i0.DestroyRef }, { type: i2.EditorialLinkService }], propDecorators: { apiMethod: [{
175
175
  type: Input,
176
176
  args: [{ required: true }]
@@ -182,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
182
182
  type: Input,
183
183
  args: [{ required: true }]
184
184
  }] } });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRzLXdpdGgtaGlzdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1tZXRhLXdpZGdldHMtbGliL3NyYy9saWIvY291bnRzLXdpdGgtaGlzdG9yeS9jb3VudHMtd2l0aC1oaXN0b3J5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb3VudHMtd2l0aC1oaXN0b3J5L2NvdW50cy13aXRoLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckgsT0FBTyxFQUFFLGVBQWUsRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcs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c0JBRG5CLEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLFVBQVU7c0JBRFQsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBEZXN0cm95UmVmLCBlZmZlY3QsIElucHV0LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2FyZCwgTWF0Q2FyZENvbnRlbnQsIE1hdENhcmRIZWFkZXIsIE1hdENhcmRNb2R1bGUsIE1hdENhcmRUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTWF0SGVhZGVyUm93LCBNYXRIZWFkZXJSb3dEZWYsIE1hdFJvdywgTWF0Um93RGVmLCBNYXRUYWJsZSwgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWV0YUFwaVNlcnZpY2UgfSBmcm9tICcuLi9tZXRhLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlciwgTWF0cml4Um93V2l0aENvdW50cywgTWF0cml4V2l0aENvdW50cywgUXVhbGl0eU1hdHJpeEhlYWRlciB9IGZyb20gJy4uL2phdmEtYXBpJztcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHsgZmlsdGVyLCBmaW5hbGl6ZSwgbWFwLCBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9maWx0ZXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2xvYWRpbmdfaW5kaWNhdG9yL3Byb2dyZXNzLXNwaW5uZXIvcHJvZ3Jlc3Mtc3Bpbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWRpdG9yaWFsTGlua1NlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2VkaXRvcmlhbC1saW5rLXNlcnZpY2UvZWRpdG9yaWFsLWxpbmsuc2VydmljZSc7XG5cbnR5cGUgUGlja0tleXNCeVByb3BlcnR5VHlwZTxUT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBUUHJvcGVydHlUeXBlPiA9IHtcbiAgW1RLZXkgaW4ga2V5b2YgVE9iamVjdF06IFRPYmplY3RbVEtleV0gZXh0ZW5kcyBUUHJvcGVydHlUeXBlID8gVEtleSA6IG5ldmVyO1xufVtrZXlvZiBUT2JqZWN0XTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWV0YXFzMi1jb3VudHMtd2l0aC1oaXN0b3J5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdENhcmRNb2R1bGUsXG4gICAgTWF0Q2FyZCxcbiAgICBNYXRDYXJkSGVhZGVyLFxuICAgIE1hdENhcmRUaXRsZSxcbiAgICBNYXRDYXJkQ29udGVudCxcbiAgICBNYXRUb29sdGlwLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIE1hdFRhYmxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNYXRIZWFkZXJSb3csXG4gICAgTWF0SGVhZGVyUm93RGVmLFxuICAgIE1hdFJvdyxcbiAgICBNYXRSb3dEZWYsXG4gICAgTmdGb3JPZixcbiAgICBEYXRlcGlja2VyQ29tcG9uZW50LFxuICAgIE1hdEljb24sXG4gICAgTmdJZixcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZSxcbiAgICBBc3luY1BpcGUsXG4gICAgUHJvZ3Jlc3NTcGlubmVyQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vY291bnRzLXdpdGgtaGlzdG9yeS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9jb3VudHMtd2l0aC1oaXN0b3J5LmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQ291bnRzV2l0aEhpc3RvcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGluZ0NvdW50ID0gc2lnbmFsKDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNMb2FkaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2FkaW5nQ291bnQoKSA+IDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGltZUZpbHRlckxvYWRlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSByZWNlbnRUeXBlQ291bnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXRyaXhXaXRoQ291bnRzPih7IGNvbHVtbnM6IFtdLCByb3dzOiBbXSB9KTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhc3RUeXBlQ291bnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXRyaXhXaXRoQ291bnRzPih7IGNvbHVtbnM6IFtdLCByb3dzOiBbXSB9KTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IERhdGVUaW1lID0gRGF0ZVRpbWU7XG4gIHB1YmxpYyBjb2x1bW5zID0gc2lnbmFsKFtdIGFzIEFycmF5PFF1YWxpdHlNYXRyaXhIZWFkZXI+KTtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBhcGlNZXRob2Q6IFBpY2tLZXlzQnlQcm9wZXJ0eVR5cGU8TWV0YUFwaVNlcnZpY2UsIChpdDogQXJyYXk8RmlsdGVyPikgPT4gT2JzZXJ2YWJsZTxNYXRyaXhXaXRoQ291bnRzPj4gPVxuICAgICdnZXRNYXRlcmlhbFR5cGVDb3VudHNCeVJlcGxpY2F0aW9uU291cmNlJztcbiAgQElucHV0KClcbiAgY29sdW1uVHJhbnNsYXRpb25rZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKVxuICBwYWdlVGl0bGU6IHN0cmluZztcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgc291cmNlVHlwZTogJ3JlcGxpY2F0aW9uU291cmNlJyB8ICdjb2xsZWN0aW9uJztcblxuICAvKiBJbiB0aGlzIHdpZGdldCdzIGJhY2tlbmQgd2UgZG8gaGF2ZSBkYXRhIGZvciB0b2RheVxuICAgKiB0aGVyZWZvcmUgd2Ugc2V0IHRoZSBlbmQgZGF0ZSB0byB0b2RheSBhbmQgdXNlIHRoZSB0aW1lcmFuZ2UoKSBlbmRwb2ludCB0byBvbmx5IHNldCB0aGUgc3RhcnQgZGF0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmFuZ2U6IEZvcm1Hcm91cDx7XG4gICAgc3RhcnQ6IEZvcm1Db250cm9sPERhdGVUaW1lPGJvb2xlYW4+PjtcbiAgICBlbmQ6IEZvcm1Db250cm9sPERhdGVUaW1lPGJvb2xlYW4+PjtcbiAgfT4gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBzdGFydDogbmV3IEZvcm1Db250cm9sKCksXG4gICAgZW5kOiBuZXcgRm9ybUNvbnRyb2woRGF0ZVRpbWUudXRjKCkuc3RhcnRPZignZGF5JyksIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gIH0pO1xuICByZWFkb25seSBpc0hpc3RvcnlFbmFibGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBhbGxDb2x1bW5zID0gY29tcHV0ZWQ8QXJyYXk8c3RyaW5nPj4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5pc0hpc3RvcnlFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlY2VudENvbHVtbnMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGFzdENvbHVtbnMoKS5mbGF0TWFwKChlLCBpKSA9PiBbZSwgdGhpcy5yZWNlbnRDb2x1bW5zKClbaV1dKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgdHlwZUNvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucygpLm1hcCgoYykgPT4gYy5pZCArICdfdHlwZScpO1xuICB9KTtcblxuICByZWFkb25seSByZWNlbnRDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMoKS5tYXAoKGMpID0+IGMuaWQgKyAnX3JlY2VudCcpO1xuICB9KTtcblxuICByZWFkb25seSBwYXN0Q29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zKCkubWFwKChjKSA9PiBjLmlkICsgJ19wYXN0Jyk7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSBtZXRhQXBpOiBNZXRhQXBpU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveVJlZjogRGVzdHJveVJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpbmtTZXJ2aWNlOiBFZGl0b3JpYWxMaW5rU2VydmljZVxuICApIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5yYW5nZS5jb250cm9scy5lbmQucmVzZXQoKTtcbiAgICAgIGlmICghdGhpcy5pc0hpc3RvcnlFbmFibGVkKCkpIHtcbiAgICAgICAgdGhpcy5yYW5nZS5jb250cm9scy5zdGFydC5zZXRWYWx1ZSh0aGlzLnJhbmdlLmNvbnRyb2xzLmVuZC52YWx1ZS5zdGFydE9mKCdkYXknKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJhbmdlLmNvbnRyb2xzLnN0YXJ0LnJlc2V0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdldEF2YWlsYWJsZURhdGVSYW5nZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChyYW5nZUZpbHRlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMuZ2V0U3RhcnREYXRlT2ZSYW5nZShyYW5nZUZpbHRlcik7XG4gICAgICAgICAgLy90aGlzIGlzIHRvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgc3RhcnQgZGF0ZSA9PiB0aGUgbWluIGRhdGUgb2YgdGhlIHJhbmdlXG4gICAgICAgICAgdGhpcy5yYW5nZS5zZXRDb250cm9sKCdzdGFydCcsIG5ldyBGb3JtQ29udHJvbDxEYXRlVGltZTx0cnVlPj4oc3RhcnREYXRlLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRpbWVGaWx0ZXJMb2FkZWQuc2V0KHRydWUpO1xuICAgICAgICAgIHRoaXMucmFuZ2UuY29udHJvbHMuc3RhcnQucmVzZXQoKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5nZXRDb3VudEJ5RGF0ZSh0aGlzLnJhbmdlLmNvbnRyb2xzLmVuZC52YWx1ZSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb2x1bW5zLnNldChyZXNwb25zZS5jb2x1bW5zLnNsaWNlKCkpO1xuICAgICAgICAgIHRoaXMucmVjZW50VHlwZUNvdW50JC5uZXh0KHJlc3BvbnNlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5nZXRWYWx1ZXNJbkRhdGVSYW5nZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChbcGFzdCwgcmVjZW50XSkgPT4ge1xuICAgICAgICAgIHRoaXMucGFzdFR5cGVDb3VudCQubmV4dChwYXN0KTtcbiAgICAgICAgICB0aGlzLnJlY2VudFR5cGVDb3VudCQubmV4dChyZWNlbnQpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RhcnREYXRlT2ZSYW5nZShyYW5nZUZpbHRlcjogRmlsdGVyKSB7XG4gICAgcmV0dXJuIERhdGVUaW1lLmZyb21JU08ocmFuZ2VGaWx0ZXIudmFsdWVzLmZpbmQoKHYpID0+IHYuaWQgPT09ICdyYW5nZVN0YXJ0Jyk/LmxhYmVsISwge1xuICAgICAgem9uZTogJ3V0YycsXG4gICAgfSkuc3RhcnRPZignZGF5JykgYXMgRGF0ZVRpbWU8dHJ1ZT47XG4gIH1cblxuICBjb2x1bW5JZGVudChfaW5kZXg6IG51bWJlciwgY29sOiBRdWFsaXR5TWF0cml4SGVhZGVyKSB7XG4gICAgcmV0dXJuIGNvbC5pZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXZhaWxhYmxlRGF0ZVJhbmdlKCkge1xuICAgIHRoaXMubG9hZGluZ0NvdW50LnVwZGF0ZSgoaXQpID0+IGl0ICsgMSk7XG4gICAgcmV0dXJuIHRoaXMubWV0YUFwaS5nZXRUaW1lcmFuZ2VGaWx0ZXIoKS5waXBlKFxuICAgICAgZmlsdGVyKChmaWx0ZXIpOiBmaWx0ZXIgaXMgRmlsdGVyID0+IGZpbHRlciAhPSBudWxsKSxcbiAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMubG9hZGluZ0NvdW50LnVwZGF0ZSgoaXQpID0+IGl0IC0gMSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFsdWVzSW5EYXRlUmFuZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmFuZ2UudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBmaWx0ZXIoXG4gICAgICAgIChyYW5nZSk6IHJhbmdlIGlzIHsgc3RhcnQ6IERhdGVUaW1lPHRydWU+OyBlbmQ6IERhdGVUaW1lPHRydWU+IH0gPT5cbiAgICAgICAgICAhIXJhbmdlLnN0YXJ0Py5pc1ZhbGlkICYmICEhcmFuZ2UuZW5kPy5pc1ZhbGlkXG4gICAgICApLFxuICAgICAgc3dpdGNoTWFwKChyYW5nZSkgPT4ge1xuICAgICAgICByZXR1cm4gemlwKHRoaXMuZ2V0Q291bnRCeURhdGUocmFuZ2Uuc3RhcnQpLCB0aGlzLmdldENvdW50QnlEYXRlKHJhbmdlLmVuZCkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb3VudEJ5RGF0ZShkYXRlOiBEYXRlVGltZSk6IE9ic2VydmFibGU8TWF0cml4V2l0aENvdW50cz4ge1xuICAgIHRoaXMubG9hZGluZ0NvdW50LnVwZGF0ZSgoaXQpID0+IGl0ICsgMSk7XG4gICAgY29uc3QgZmlsdGVyOiBGaWx0ZXIgPSB7XG4gICAgICBmaWVsZDogJ2FzT2YnLFxuICAgICAgdmFsdWVzOiBbeyBpZDogZGF0ZS50b0lTTyh7IGluY2x1ZGVPZmZzZXQ6IGZhbHNlIH0pISwgbGFiZWw6ICcnIH1dLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMubWV0YUFwaVt0aGlzLmFwaU1ldGhvZF0oW2ZpbHRlcl0pLnBpcGUoXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmxvYWRpbmdDb3VudC51cGRhdGUoKGl0KSA9PiBpdCAtIDEpKSxcbiAgICAgIG1hcCgocmVzcG9uc2UpID0+ICh7XG4gICAgICAgIC4uLnJlc3BvbnNlLFxuICAgICAgICByb3dzOiByZXNwb25zZS5yb3dzLnRvU29ydGVkKChhLCBiKSA9PiBhLm1ldGEubGFiZWwubG9jYWxlQ29tcGFyZShiLm1ldGEubGFiZWwpKSxcbiAgICAgIH0pKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFzdFR5cGVDb3VudChcbiAgICByb3c6IE1hdHJpeFJvd1dpdGhDb3VudHMsXG4gICAgY29sdW1uaWQ6IHN0cmluZ1xuICApOiB7IGRlbHRhPzogbnVtYmVyOyB0cmVuZD86IHN0cmluZzsgdmFsdWU/OiBudW1iZXIgfSB7XG4gICAgaWYgKCF0aGlzLnBhc3RUeXBlQ291bnQkLnZhbHVlLnJvd3MubGVuZ3RoKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHBhc3Rfcm93ID0gdGhpcy5wYXN0VHlwZUNvdW50JC52YWx1ZS5yb3dzLmZpbmQoKHByKSA9PiBwci5tZXRhLmlkID09IHJvdy5tZXRhLmlkKTtcbiAgICBjb25zdCBwYXN0X2NvbHVtbiA9IHRoaXMucGFzdFR5cGVDb3VudCQudmFsdWUuY29sdW1ucy5maW5kKChjKSA9PiBjLmlkID09IGNvbHVtbmlkKTtcbiAgICBpZiAoIXBhc3Rfcm93IHx8ICFwYXN0X2NvbHVtbikge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHJvdy5jb3VudHNbY29sdW1uaWRdO1xuICAgIGNvbnN0IHBhc3RWYWx1ZSA9IHBhc3Rfcm93LmNvdW50c1tjb2x1bW5pZF07XG5cbiAgICBjb25zdCBkZWx0YSA9IChjdXJyZW50VmFsdWUgfHwgMCkgLSAocGFzdFZhbHVlIHx8IDApO1xuICAgIGNvbnN0IHRyZW5kID0gZGVsdGEgPT09IDAgPyAndHJlbmRpbmdfZmxhdCcgOiBkZWx0YSA8IDAgPyAndHJlbmRpbmdfZG93bicgOiAndHJlbmRpbmdfdXAnO1xuICAgIHJldHVybiB7IGRlbHRhLCB0cmVuZCwgdmFsdWU6IHBhc3RWYWx1ZSB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIG9wZW5JbkVkaXRvcihzb3VyY2VJZDogc3RyaW5nLCBpc3N1ZUlkOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zb3VyY2VUeXBlID09PSAncmVwbGljYXRpb25Tb3VyY2UnKSB7XG4gICAgICAvLyBmaW5kIHRoZSBsb25nIG5hbWUgZm9yIHRoZSBzb3VyY2VcbiAgICAgIHNvdXJjZUlkID0gdGhpcy5yZWNlbnRUeXBlQ291bnQkLnZhbHVlLnJvd3MuZmluZCgocikgPT4gci5tZXRhLmlkID09PSBzb3VyY2VJZCk/Lm1ldGEubGFiZWwgfHwgc291cmNlSWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmxpbmtTZXJ2aWNlLnR5cGVzTG9hZGVkJC5waXBlKFxuICAgICAgc2tpcFdoaWxlKChsb2FkZWQpID0+ICFsb2FkZWQpLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpbmtTZXJ2aWNlLmNyZWF0ZUxpbmtGb3JDb3VudHNXaXRoSGlzdG9yeSh0aGlzLnNvdXJjZVR5cGUsIHNvdXJjZUlkLCBpc3N1ZUlkKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPG1hdC1jYXJkIGFwcGVhcmFuY2U9XCJyYWlzZWRcIj5cbiAgPG1hdC1jYXJkLWhlYWRlciAqbmdJZj1cInBhZ2VUaXRsZVwiPlxuICAgIDxtYXQtY2FyZC10aXRsZSBkYXRhLXRlc3QtaWQ9XCJwYWdlLXRpdGxlXCI+XG4gICAgICBRdWFsaXTDpHRzbWV0cmlrOiB7eyBwYWdlVGl0bGUgfCB0cmFuc2xhdGUgfX17eyBpc0xvYWRpbmcoKSA/IFwiOiBMYWRlIG5ldWUgRGF0ZW4uXCIgOiBcIlwiIH19XG4gICAgPC9tYXQtY2FyZC10aXRsZT5cbiAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gIDwhLS0gY29uc2lkZXIgdG8gcHV0IHRoZSBmaWx0ZXIgaW4gdGhlIHRhYmxlIGhlYWRlciB0byBhdm9pZCB0aGF0IGl0IGlzIHNjcm9sbGVkIG91dCBvZiB2aWV3LS0+XG4gIDwhLS0gc2hvdyB0aGUgZmlsdGVyIGFmdGVyIHRoZSB2YWx1ZXMgYXJlIGxvYWRlZCB0byBhdm9pZCBsb2FkaW5nIGN1cnJlbnQgZGF0YSB0d2ljZSAtLT5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJ0b29sYmFyXCI+XG4gICAgPG1ldGFxczItZGF0ZXBpY2tlciBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nKCkgfHwgIWlzSGlzdG9yeUVuYWJsZWQoKVwiIFtpbnB1dEdyb3VwXT1cInJhbmdlXCIgKm5nSWY9XCJ0aW1lRmlsdGVyTG9hZGVkKCkgJiYgaXNIaXN0b3J5RW5hYmxlZCgpXCI+PC9tZXRhcXMyLWRhdGVwaWNrZXI+XG4gICAgPGRpdiBzdHlsZT1cImZsZXg6IDEgMSBhdXRvXCI+PC9kaXY+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgW25nTW9kZWxdPVwiaXNIaXN0b3J5RW5hYmxlZCgpXCIgKG5nTW9kZWxDaGFuZ2UpPVwiaXNIaXN0b3J5RW5hYmxlZC5zZXQoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcoKVwiICpuZ0lmPVwidGltZUZpbHRlckxvYWRlZCgpXCI+XG4gICAgICA8bGFiZWw+WmVpZ2UgaGlzdG9yaXNjaGUgRGF0ZW48L2xhYmVsPlxuICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuPC9tYXQtY2FyZD5cbjxtYXQtY2FyZD5cbiAgPG1ldGFxczItcHJvZ3Jlc3Mtc3Bpbm5lciBbZGlzcGxheVByb2dyZXNzU3Bpbm5lcl09XCJpc0xvYWRpbmcoKVwiPjwvbWV0YXFzMi1wcm9ncmVzcy1zcGlubmVyPlxuICA8dGFibGUgW2NsYXNzLndoaWxlLWxvYWRpbmddPVwiaXNMb2FkaW5nKClcIiBtYXQtdGFibGUgW2RhdGFTb3VyY2VdPVwicmVjZW50VHlwZUNvdW50JC52YWx1ZS5yb3dzXCJcbiAgICAgICAgIGNsYXNzPVwicXVhbGl0eS1tYXRyaXhcIj5cbiAgICA8IS0tIERlZmluZSBjb2x1bW5zIG9mIHRhYmxlIC0tPlxuICAgIDwhLS0gUm93IEhlYWRlciBDb2x1bW4gLS0+XG4gICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsYWJlbC1jb2xcIiBzdGlja3k+XG4gICAgICA8dGggW2F0dHIucm93c3Bhbl09XCJpc0hpc3RvcnlFbmFibGVkKCkgPyAnMicgOiAnMSdcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgIDxkaXY+UXVlbGxlPC9kaXY+XG4gICAgICA8L3RoPlxuICAgICAgPHRkXG4gICAgICAgIG1hdC1jZWxsXG4gICAgICAgICptYXRDZWxsRGVmPVwibGV0IHJvd1wiXG4gICAgICAgIFttYXRUb29sdGlwXT1cInJvdy5tZXRhLmFsdF9sYWJlbFwiXG4gICAgICAgIGNsYXNzPVwibGFiZWwtY29sXCJcbiAgICAgID5cbiAgICAgICAge3sgcm93Lm1ldGEubGFiZWwgfX1cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBvbmUgY29sdW1uIGZvciBlYWNoIHR5cGUgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIChyZWNlbnRUeXBlQ291bnQkIHwgYXN5bmMpPy5jb2x1bW5zOyB0cmFja0J5OmNvbHVtbklkZW50XCJcbiAgICAgICAgICAgICAgICAgIFttYXRDb2x1bW5EZWZdPVwiY29sLmlkICsgJ190eXBlJ1wiPlxuICAgICAgPHRoIFthdHRyLmNvbHNwYW5dPVwiaXNIaXN0b3J5RW5hYmxlZCgpID8gJzInIDogJzEnXCIgbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFttYXRUb29sdGlwXT1cImNvbC5sYWJlbFwiPlxuICAgICAgICB7eyBjb2x1bW5UcmFuc2xhdGlvbmtleSA/IChjb2x1bW5UcmFuc2xhdGlvbmtleSArIGNvbC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiBjb2wubGFiZWwgfX1cbiAgICAgIDwvdGg+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBvbmUgY29sdW1uIGZvciBlYWNoIHR5cGUgZm9yIHRoZSBtb3N0IGN1cnJlbnQgZGF0ZS0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiAocmVjZW50VHlwZUNvdW50JCB8IGFzeW5jKT8uY29sdW1uczsgdHJhY2tCeTpjb2x1bW5JZGVudFwiXG4gICAgICAgICAgICAgICAgICBbbWF0Q29sdW1uRGVmXT1cImNvbC5pZCArICdfcmVjZW50J1wiPlxuICAgICAgPHRoIGNsYXNzPVwicmVjZW50LWRhdGEtY2VsbFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZlxuICAgICAgICAgIG1hdFRvb2x0aXA9XCJubyB0b29sdGlwXCI+e3sgcmFuZ2UuY29udHJvbHMuZW5kLnZhbHVlLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfU0hPUlQpIH19XG4gICAgICA8L3RoPlxuICAgICAgPHRkIGNsYXNzPVwicmVjZW50LWRhdGEtY2VsbFwiIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICA8YSBbYXR0ci5ocmVmXT1cIm9wZW5JbkVkaXRvcihyb3cubWV0YS5pZCwgY29sLmlkKSB8IGFzeW5jXCIgdGFyZ2V0PVwiZWRpdG9yX2Zyb250ZW5kXCI+e3sgcm93LmNvdW50c1tjb2wuaWRdID8/ICfigJMnIH19PC9hPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIG9uZSBjb2x1bW4gZm9yIGVhY2ggdHlwZSBmb3IgdGhlIG9sZGVyIGRhdGUtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgKHJlY2VudFR5cGVDb3VudCQgfCBhc3luYyk/LmNvbHVtbnM7IHRyYWNrQnk6Y29sdW1uSWRlbnRcIlxuICAgICAgICAgICAgICAgICAgW21hdENvbHVtbkRlZl09XCJjb2wuaWQgKyAnX3Bhc3QnXCI+XG4gICAgICA8dGggY2xhc3M9XCJwYXN0LWRhdGEtY2VsbFwiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXRUb29sdGlwPVwibm8gdG9vbHRpcFwiPlxuICAgICAgICB7eyAocGFzdFR5cGVDb3VudCQgfCBhc3luYyk/LnJvd3M/Lmxlbmd0aCA/IHJhbmdlLmNvbnRyb2xzLnN0YXJ0LnZhbHVlLnRvTG9jYWxlU3RyaW5nKERhdGVUaW1lLkRBVEVfU0hPUlQpIDogJ25vIHBhc3QgZGF0YScgfX1cbiAgICAgIDwvdGg+XG4gICAgICA8dGQgY2xhc3M9XCJwYXN0LWRhdGEtY2VsbFwiIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdztcIiA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIocGFzdFR5cGVDb3VudCQgfCBhc3luYyk/LnJvd3M/Lmxlbmd0aCAmJiBwYXN0VHlwZUNvdW50KHJvdywgY29sLmlkKSBhcyB0cmVuZFwiPlxuICAgICAgICAgIDxzcGFuIFtjbGFzc109XCJ0cmVuZC50cmVuZFwiPiB7eyB0cmVuZC52YWx1ZSA/PyAn4oCTJyB9fVxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwidHJlbmQudmFsdWVcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ0cmVuZC50cmVuZFwiIFtmb250SWNvbl09XCJ0cmVuZC50cmVuZCFcIiAvPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNkay12aXN1YWxseS1oaWRkZW5cIj57eyB0cmVuZC50cmVuZCB9fTwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gZ2VuZXJhdGUgYWN0dWFsIHRhYmxlIC0tPlxuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiWydsYWJlbC1jb2wnXS5jb25jYXQodHlwZUNvbHVtbnMoKSk7IHN0aWNreTp0cnVlO1wiPjwvdHI+XG4gICAgPHRyIFtoaWRkZW5dPVwiIWlzSGlzdG9yeUVuYWJsZWQoKVwiIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJhbGxDb2x1bW5zKCk7IHN0aWNreTogdHJ1ZTtcIj48L3RyPlxuICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2xhYmVsLWNvbCddLmNvbmNhdChhbGxDb2x1bW5zKCkpXCI+PC90cj5cblxuICA8L3RhYmxlPlxuPC9tYXQtY2FyZD5cbiJdfQ==
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRzLXdpdGgtaGlzdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1tZXRhLXdpZGdldHMtbGliL3NyYy9saWIvY291bnRzLXdpdGgtaGlzdG9yeS9jb3VudHMtd2l0aC1oaXN0b3J5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1ldGEtd2lkZ2V0cy1saWIvc3JjL2xpYi9jb3VudHMtd2l0aC1oaXN0b3J5L2NvdW50cy13aXRoLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckgsT0FBTyxFQUFFLGVBQWUsRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcs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QjtzQkFEbkIsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR04sVUFBVTtzQkFEVCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIERlc3Ryb3lSZWYsIGVmZmVjdCwgSW5wdXQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRDYXJkLCBNYXRDYXJkQ29udGVudCwgTWF0Q2FyZEhlYWRlciwgTWF0Q2FyZE1vZHVsZSwgTWF0Q2FyZFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXRIZWFkZXJSb3csIE1hdEhlYWRlclJvd0RlZiwgTWF0Um93LCBNYXRSb3dEZWYsIE1hdFRhYmxlLCBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgemlwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNZXRhQXBpU2VydmljZSB9IGZyb20gJy4uL21ldGEtYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsdGVyLCBNYXRyaXhSb3dXaXRoQ291bnRzLCBNYXRyaXhXaXRoQ291bnRzLCBRdWFsaXR5TWF0cml4SGVhZGVyIH0gZnJvbSAnLi4vamF2YS1hcGknO1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpbmFsaXplLCBtYXAsIHNraXBXaGlsZSwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2ZpbHRlci9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvbG9hZGluZ19pbmRpY2F0b3IvcHJvZ3Jlc3Mtc3Bpbm5lci9wcm9ncmVzcy1zcGlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0b3JpYWxMaW5rU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvZWRpdG9yaWFsLWxpbmstc2VydmljZS9lZGl0b3JpYWwtbGluay5zZXJ2aWNlJztcblxuZXhwb3J0IHR5cGUgTWV0aG9kVHlwZSA9XG4gIHwgKChpdDogRmlsdGVyW10pID0+IE9ic2VydmFibGU8TWF0cml4V2l0aENvdW50cz4pXG4gIHwgKCh4OiBzdHJpbmcsIGl0OiBGaWx0ZXJbXSkgPT4gT2JzZXJ2YWJsZTxNYXRyaXhXaXRoQ291bnRzPik7XG5cbmV4cG9ydCB0eXBlIFBpY2tLZXlzQnlQcm9wZXJ0eVR5cGU8VE9iamVjdCBleHRlbmRzIG9iamVjdCwgVFByb3BlcnR5VHlwZT4gPSB7XG4gIFtUS2V5IGluIGtleW9mIFRPYmplY3RdOiBUT2JqZWN0W1RLZXldIGV4dGVuZHMgVFByb3BlcnR5VHlwZSA/IFRLZXkgOiBuZXZlcjtcbn1ba2V5b2YgVE9iamVjdF07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21ldGFxczItY291bnRzLXdpdGgtaGlzdG9yeScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRDYXJkTW9kdWxlLFxuICAgIE1hdENhcmQsXG4gICAgTWF0Q2FyZEhlYWRlcixcbiAgICBNYXRDYXJkVGl0bGUsXG4gICAgTWF0Q2FyZENvbnRlbnQsXG4gICAgTWF0VG9vbHRpcCxcbiAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICBNYXRUYWJsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTWF0SGVhZGVyUm93LFxuICAgIE1hdEhlYWRlclJvd0RlZixcbiAgICBNYXRSb3csXG4gICAgTWF0Um93RGVmLFxuICAgIE5nRm9yT2YsXG4gICAgRGF0ZXBpY2tlckNvbXBvbmVudCxcbiAgICBNYXRJY29uLFxuICAgIE5nSWYsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIFByb2dyZXNzU3Bpbm5lckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvdW50cy13aXRoLWhpc3RvcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY291bnRzLXdpdGgtaGlzdG9yeS5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIENvdW50c1dpdGhIaXN0b3J5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRpbmdDb3VudCA9IHNpZ25hbCgwKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTG9hZGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMubG9hZGluZ0NvdW50KCkgPiAwKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpbWVGaWx0ZXJMb2FkZWQgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVjZW50VHlwZUNvdW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF0cml4V2l0aENvdW50cz4oeyBjb2x1bW5zOiBbXSwgcm93czogW10gfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBwYXN0VHlwZUNvdW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF0cml4V2l0aENvdW50cz4oeyBjb2x1bW5zOiBbXSwgcm93czogW10gfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBEYXRlVGltZSA9IERhdGVUaW1lO1xuICBwdWJsaWMgY29sdW1ucyA9IHNpZ25hbChbXSBhcyBBcnJheTxRdWFsaXR5TWF0cml4SGVhZGVyPik7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgYXBpTWV0aG9kOiBQaWNrS2V5c0J5UHJvcGVydHlUeXBlPE1ldGFBcGlTZXJ2aWNlLCBNZXRob2RUeXBlPiA9ICdnZXRNYXRlcmlhbFR5cGVDb3VudHNCeVJlcGxpY2F0aW9uU291cmNlJztcblxuICBASW5wdXQoKVxuICBjb2x1bW5UcmFuc2xhdGlvbmtleTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpXG4gIHBhZ2VUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBzb3VyY2VUeXBlOiAncmVwbGljYXRpb25Tb3VyY2UnIHwgJ2NvbGxlY3Rpb24nO1xuXG4gIC8qIEluIHRoaXMgd2lkZ2V0J3MgYmFja2VuZCB3ZSBkbyBoYXZlIGRhdGEgZm9yIHRvZGF5XG4gICAqIHRoZXJlZm9yZSB3ZSBzZXQgdGhlIGVuZCBkYXRlIHRvIHRvZGF5IGFuZCB1c2UgdGhlIHRpbWVyYW5nZSgpIGVuZHBvaW50IHRvIG9ubHkgc2V0IHRoZSBzdGFydCBkYXRlXG4gICAqL1xuICByZWFkb25seSByYW5nZTogRm9ybUdyb3VwPHtcbiAgICBzdGFydDogRm9ybUNvbnRyb2w8RGF0ZVRpbWU8Ym9vbGVhbj4+O1xuICAgIGVuZDogRm9ybUNvbnRyb2w8RGF0ZVRpbWU8Ym9vbGVhbj4+O1xuICB9PiA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHN0YXJ0OiBuZXcgRm9ybUNvbnRyb2woKSxcbiAgICBlbmQ6IG5ldyBGb3JtQ29udHJvbChEYXRlVGltZS51dGMoKS5zdGFydE9mKCdkYXknKSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgfSk7XG4gIHJlYWRvbmx5IGlzSGlzdG9yeUVuYWJsZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IGFsbENvbHVtbnMgPSBjb21wdXRlZDxBcnJheTxzdHJpbmc+PigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmlzSGlzdG9yeUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVjZW50Q29sdW1ucygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wYXN0Q29sdW1ucygpLmZsYXRNYXAoKGUsIGkpID0+IFtlLCB0aGlzLnJlY2VudENvbHVtbnMoKVtpXV0pO1xuICB9KTtcblxuICByZWFkb25seSB0eXBlQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zKCkubWFwKChjKSA9PiBjLmlkICsgJ190eXBlJyk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHJlY2VudENvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucygpLm1hcCgoYykgPT4gYy5pZCArICdfcmVjZW50Jyk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHBhc3RDb2x1bW5zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMoKS5tYXAoKGMpID0+IGMuaWQgKyAnX3Bhc3QnKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1ldGFBcGk6IE1ldGFBcGlTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlua1NlcnZpY2U6IEVkaXRvcmlhbExpbmtTZXJ2aWNlXG4gICkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnJhbmdlLmNvbnRyb2xzLmVuZC5yZXNldCgpO1xuICAgICAgaWYgKCF0aGlzLmlzSGlzdG9yeUVuYWJsZWQoKSkge1xuICAgICAgICB0aGlzLnJhbmdlLmNvbnRyb2xzLnN0YXJ0LnNldFZhbHVlKHRoaXMucmFuZ2UuY29udHJvbHMuZW5kLnZhbHVlLnN0YXJ0T2YoJ2RheScpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmFuZ2UuY29udHJvbHMuc3RhcnQucmVzZXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0QXZhaWxhYmxlRGF0ZVJhbmdlKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHJhbmdlRmlsdGVyKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5nZXRTdGFydERhdGVPZlJhbmdlKHJhbmdlRmlsdGVyKTtcbiAgICAgICAgICAvL3RoaXMgaXMgdG8gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBzdGFydCBkYXRlID0+IHRoZSBtaW4gZGF0ZSBvZiB0aGUgcmFuZ2VcbiAgICAgICAgICB0aGlzLnJhbmdlLnNldENvbnRyb2woJ3N0YXJ0JywgbmV3IEZvcm1Db250cm9sPERhdGVUaW1lPHRydWU+PihzdGFydERhdGUsIHsgbm9uTnVsbGFibGU6IHRydWUgfSkpO1xuICAgICAgICB9KSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudGltZUZpbHRlckxvYWRlZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5yYW5nZS5jb250cm9scy5zdGFydC5yZXNldCgpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmdldENvdW50QnlEYXRlKHRoaXMucmFuZ2UuY29udHJvbHMuZW5kLnZhbHVlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmNvbHVtbnMuc2V0KHJlc3BvbnNlLmNvbHVtbnMuc2xpY2UoKSk7XG4gICAgICAgICAgdGhpcy5yZWNlbnRUeXBlQ291bnQkLm5leHQocmVzcG9uc2UpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmdldFZhbHVlc0luRGF0ZVJhbmdlKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKFtwYXN0LCByZWNlbnRdKSA9PiB7XG4gICAgICAgICAgdGhpcy5wYXN0VHlwZUNvdW50JC5uZXh0KHBhc3QpO1xuICAgICAgICAgIHRoaXMucmVjZW50VHlwZUNvdW50JC5uZXh0KHJlY2VudCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdGFydERhdGVPZlJhbmdlKHJhbmdlRmlsdGVyOiBGaWx0ZXIpIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUlTTyhyYW5nZUZpbHRlci52YWx1ZXMuZmluZCgodikgPT4gdi5pZCA9PT0gJ3JhbmdlU3RhcnQnKT8ubGFiZWwhLCB7XG4gICAgICB6b25lOiAndXRjJyxcbiAgICB9KS5zdGFydE9mKCdkYXknKSBhcyBEYXRlVGltZTx0cnVlPjtcbiAgfVxuXG4gIGNvbHVtbklkZW50KF9pbmRleDogbnVtYmVyLCBjb2w6IFF1YWxpdHlNYXRyaXhIZWFkZXIpIHtcbiAgICByZXR1cm4gY29sLmlkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBdmFpbGFibGVEYXRlUmFuZ2UoKSB7XG4gICAgdGhpcy5sb2FkaW5nQ291bnQudXBkYXRlKChpdCkgPT4gaXQgKyAxKTtcbiAgICByZXR1cm4gdGhpcy5tZXRhQXBpLmdldFRpbWVyYW5nZUZpbHRlcigpLnBpcGUoXG4gICAgICBmaWx0ZXIoKGZpbHRlcik6IGZpbHRlciBpcyBGaWx0ZXIgPT4gZmlsdGVyICE9IG51bGwpLFxuICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5sb2FkaW5nQ291bnQudXBkYXRlKChpdCkgPT4gaXQgLSAxKSlcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFZhbHVlc0luRGF0ZVJhbmdlKCkge1xuICAgIHJldHVybiB0aGlzLnJhbmdlLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZmlsdGVyKFxuICAgICAgICAocmFuZ2UpOiByYW5nZSBpcyB7IHN0YXJ0OiBEYXRlVGltZTx0cnVlPjsgZW5kOiBEYXRlVGltZTx0cnVlPiB9ID0+XG4gICAgICAgICAgISFyYW5nZS5zdGFydD8uaXNWYWxpZCAmJiAhIXJhbmdlLmVuZD8uaXNWYWxpZFxuICAgICAgKSxcbiAgICAgIHN3aXRjaE1hcCgocmFuZ2UpID0+IHtcbiAgICAgICAgcmV0dXJuIHppcCh0aGlzLmdldENvdW50QnlEYXRlKHJhbmdlLnN0YXJ0KSwgdGhpcy5nZXRDb3VudEJ5RGF0ZShyYW5nZS5lbmQpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb3VudEJ5RGF0ZShkYXRlOiBEYXRlVGltZSk6IE9ic2VydmFibGU8TWF0cml4V2l0aENvdW50cz4ge1xuICAgIHRoaXMubG9hZGluZ0NvdW50LnVwZGF0ZSgoaXQpID0+IGl0ICsgMSk7XG4gICAgY29uc3QgZmlsdGVyOiBGaWx0ZXIgPSB7XG4gICAgICBmaWVsZDogJ2FzT2YnLFxuICAgICAgdmFsdWVzOiBbeyBpZDogZGF0ZS50b0lTTyh7IGluY2x1ZGVPZmZzZXQ6IGZhbHNlIH0pISwgbGFiZWw6ICcnIH1dLFxuICAgIH07XG5cbiAgICByZXR1cm4gKHRoaXMubWV0YUFwaVt0aGlzLmFwaU1ldGhvZF0gYXMgKGZpbHRlcnM6IEZpbHRlcltdKSA9PiBPYnNlcnZhYmxlPE1hdHJpeFdpdGhDb3VudHM+KShbZmlsdGVyXSkucGlwZShcbiAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMubG9hZGluZ0NvdW50LnVwZGF0ZSgoaXQpID0+IGl0IC0gMSkpLFxuICAgICAgbWFwKChyZXNwb25zZSkgPT4gKHtcbiAgICAgICAgLi4ucmVzcG9uc2UsXG4gICAgICAgIHJvd3M6IHJlc3BvbnNlLnJvd3MudG9Tb3J0ZWQoKGEsIGIpID0+IGEubWV0YS5sYWJlbC5sb2NhbGVDb21wYXJlKGIubWV0YS5sYWJlbCkpLFxuICAgICAgfSkpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXN0VHlwZUNvdW50KFxuICAgIHJvdzogTWF0cml4Um93V2l0aENvdW50cyxcbiAgICBjb2x1bW5pZDogc3RyaW5nXG4gICk6IHsgZGVsdGE/OiBudW1iZXI7IHRyZW5kPzogc3RyaW5nOyB2YWx1ZT86IG51bWJlciB9IHtcbiAgICBpZiAoIXRoaXMucGFzdFR5cGVDb3VudCQudmFsdWUucm93cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgcGFzdF9yb3cgPSB0aGlzLnBhc3RUeXBlQ291bnQkLnZhbHVlLnJvd3MuZmluZCgocHIpID0+IHByLm1ldGEuaWQgPT0gcm93Lm1ldGEuaWQpO1xuICAgIGNvbnN0IHBhc3RfY29sdW1uID0gdGhpcy5wYXN0VHlwZUNvdW50JC52YWx1ZS5jb2x1bW5zLmZpbmQoKGMpID0+IGMuaWQgPT0gY29sdW1uaWQpO1xuICAgIGlmICghcGFzdF9yb3cgfHwgIXBhc3RfY29sdW1uKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gcm93LmNvdW50c1tjb2x1bW5pZF07XG4gICAgY29uc3QgcGFzdFZhbHVlID0gcGFzdF9yb3cuY291bnRzW2NvbHVtbmlkXTtcblxuICAgIGNvbnN0IGRlbHRhID0gKGN1cnJlbnRWYWx1ZSB8fCAwKSAtIChwYXN0VmFsdWUgfHwgMCk7XG4gICAgY29uc3QgdHJlbmQgPSBkZWx0YSA9PT0gMCA/ICd0cmVuZGluZ19mbGF0JyA6IGRlbHRhIDwgMCA/ICd0cmVuZGluZ19kb3duJyA6ICd0cmVuZGluZ191cCc7XG4gICAgcmV0dXJuIHsgZGVsdGEsIHRyZW5kLCB2YWx1ZTogcGFzdFZhbHVlIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlbkluRWRpdG9yKHNvdXJjZUlkOiBzdHJpbmcsIGlzc3VlSWQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNvdXJjZVR5cGUgPT09ICdyZXBsaWNhdGlvblNvdXJjZScpIHtcbiAgICAgIC8vIGZpbmQgdGhlIGxvbmcgbmFtZSBmb3IgdGhlIHNvdXJjZVxuICAgICAgc291cmNlSWQgPSB0aGlzLnJlY2VudFR5cGVDb3VudCQudmFsdWUucm93cy5maW5kKChyKSA9PiByLm1ldGEuaWQgPT09IHNvdXJjZUlkKT8ubWV0YS5sYWJlbCB8fCBzb3VyY2VJZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubGlua1NlcnZpY2UudHlwZXNMb2FkZWQkLnBpcGUoXG4gICAgICBza2lwV2hpbGUoKGxvYWRlZCkgPT4gIWxvYWRlZCksXG4gICAgICB0YWtlKDEpLFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlua1NlcnZpY2UuY3JlYXRlTGlua0ZvckNvdW50c1dpdGhIaXN0b3J5KHRoaXMuc291cmNlVHlwZSwgc291cmNlSWQsIGlzc3VlSWQpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iLCI8bWF0LWNhcmQgYXBwZWFyYW5jZT1cInJhaXNlZFwiPlxuICA8bWF0LWNhcmQtaGVhZGVyICpuZ0lmPVwicGFnZVRpdGxlXCI+XG4gICAgPG1hdC1jYXJkLXRpdGxlIGRhdGEtdGVzdC1pZD1cInBhZ2UtdGl0bGVcIj5cbiAgICAgIFF1YWxpdMOkdHNtZXRyaWs6IHt7IHBhZ2VUaXRsZSB8IHRyYW5zbGF0ZSB9fXt7IGlzTG9hZGluZygpID8gXCI6IExhZGUgbmV1ZSBEYXRlbi5cIiA6IFwiXCIgfX1cbiAgICA8L21hdC1jYXJkLXRpdGxlPlxuICA8L21hdC1jYXJkLWhlYWRlcj5cbiAgPCEtLSBjb25zaWRlciB0byBwdXQgdGhlIGZpbHRlciBpbiB0aGUgdGFibGUgaGVhZGVyIHRvIGF2b2lkIHRoYXQgaXQgaXMgc2Nyb2xsZWQgb3V0IG9mIHZpZXctLT5cbiAgPCEtLSBzaG93IHRoZSBmaWx0ZXIgYWZ0ZXIgdGhlIHZhbHVlcyBhcmUgbG9hZGVkIHRvIGF2b2lkIGxvYWRpbmcgY3VycmVudCBkYXRhIHR3aWNlIC0tPlxuICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cInRvb2xiYXJcIj5cbiAgICA8bWV0YXFzMi1kYXRlcGlja2VyIFtkaXNhYmxlZF09XCJpc0xvYWRpbmcoKSB8fCAhaXNIaXN0b3J5RW5hYmxlZCgpXCIgW2lucHV0R3JvdXBdPVwicmFuZ2VcIiAqbmdJZj1cInRpbWVGaWx0ZXJMb2FkZWQoKSAmJiBpc0hpc3RvcnlFbmFibGVkKClcIj48L21ldGFxczItZGF0ZXBpY2tlcj5cbiAgICA8ZGl2IHN0eWxlPVwiZmxleDogMSAxIGF1dG9cIj48L2Rpdj5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbbmdNb2RlbF09XCJpc0hpc3RvcnlFbmFibGVkKClcIiAobmdNb2RlbENoYW5nZSk9XCJpc0hpc3RvcnlFbmFibGVkLnNldCgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImlzTG9hZGluZygpXCIgKm5nSWY9XCJ0aW1lRmlsdGVyTG9hZGVkKClcIj5cbiAgICAgIDxsYWJlbD5aZWlnZSBoaXN0b3Jpc2NoZSBEYXRlbjwvbGFiZWw+XG4gICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XG48L21hdC1jYXJkPlxuPG1hdC1jYXJkPlxuICA8bWV0YXFzMi1wcm9ncmVzcy1zcGlubmVyIFtkaXNwbGF5UHJvZ3Jlc3NTcGlubmVyXT1cImlzTG9hZGluZygpXCI+PC9tZXRhcXMyLXByb2dyZXNzLXNwaW5uZXI+XG4gIDx0YWJsZSBbY2xhc3Mud2hpbGUtbG9hZGluZ109XCJpc0xvYWRpbmcoKVwiIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJyZWNlbnRUeXBlQ291bnQkLnZhbHVlLnJvd3NcIlxuICAgICAgICAgY2xhc3M9XCJxdWFsaXR5LW1hdHJpeFwiPlxuICAgIDwhLS0gRGVmaW5lIGNvbHVtbnMgb2YgdGFibGUgLS0+XG4gICAgPCEtLSBSb3cgSGVhZGVyIENvbHVtbiAtLT5cbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImxhYmVsLWNvbFwiIHN0aWNreT5cbiAgICAgIDx0aCBbYXR0ci5yb3dzcGFuXT1cImlzSGlzdG9yeUVuYWJsZWQoKSA/ICcyJyA6ICcxJ1wiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgPGRpdj5RdWVsbGU8L2Rpdj5cbiAgICAgIDwvdGg+XG4gICAgICA8dGRcbiAgICAgICAgbWF0LWNlbGxcbiAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93XCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwicm93Lm1ldGEuYWx0X2xhYmVsXCJcbiAgICAgICAgY2xhc3M9XCJsYWJlbC1jb2wgbWF0LWNlbGwtbGV2ZWwte3tyb3cubWV0YS5sZXZlbCArIDF9fVwiXG4gICAgICA+XG4gICAgICAgIHt7IHJvdy5tZXRhLmxhYmVsIH19XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gb25lIGNvbHVtbiBmb3IgZWFjaCB0eXBlIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiAocmVjZW50VHlwZUNvdW50JCB8IGFzeW5jKT8uY29sdW1uczsgdHJhY2tCeTpjb2x1bW5JZGVudFwiXG4gICAgICAgICAgICAgICAgICBbbWF0Q29sdW1uRGVmXT1cImNvbC5pZCArICdfdHlwZSdcIj5cbiAgICAgIDx0aCBbYXR0ci5jb2xzcGFuXT1cImlzSGlzdG9yeUVuYWJsZWQoKSA/ICcyJyA6ICcxJ1wiIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbbWF0VG9vbHRpcF09XCJjb2wubGFiZWxcIj5cbiAgICAgICAge3sgY29sdW1uVHJhbnNsYXRpb25rZXkgPyAoY29sdW1uVHJhbnNsYXRpb25rZXkgKyBjb2wubGFiZWwgfCB0cmFuc2xhdGUpIDogY29sLmxhYmVsIH19XG4gICAgICA8L3RoPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwhLS0gb25lIGNvbHVtbiBmb3IgZWFjaCB0eXBlIGZvciB0aGUgbW9zdCBjdXJyZW50IGRhdGUtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgKHJlY2VudFR5cGVDb3VudCQgfCBhc3luYyk/LmNvbHVtbnM7IHRyYWNrQnk6Y29sdW1uSWRlbnRcIlxuICAgICAgICAgICAgICAgICAgW21hdENvbHVtbkRlZl09XCJjb2wuaWQgKyAnX3JlY2VudCdcIj5cbiAgICAgIDx0aCBjbGFzcz1cInJlY2VudC1kYXRhLWNlbGxcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWZcbiAgICAgICAgICBtYXRUb29sdGlwPVwibm8gdG9vbHRpcFwiPnt7IHJhbmdlLmNvbnRyb2xzLmVuZC52YWx1ZS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX1NIT1JUKSB9fVxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBjbGFzcz1cInJlY2VudC1kYXRhLWNlbGxcIiBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgPGEgW2F0dHIuaHJlZl09XCJvcGVuSW5FZGl0b3Iocm93Lm1ldGEuaWQsIGNvbC5pZCkgfCBhc3luY1wiIHRhcmdldD1cImVkaXRvcl9mcm9udGVuZFwiPnt7IHJvdy5jb3VudHNbY29sLmlkXSA/PyAn4oCTJyB9fTwvYT5cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPCEtLSBvbmUgY29sdW1uIGZvciBlYWNoIHR5cGUgZm9yIHRoZSBvbGRlciBkYXRlLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIChyZWNlbnRUeXBlQ291bnQkIHwgYXN5bmMpPy5jb2x1bW5zOyB0cmFja0J5OmNvbHVtbklkZW50XCJcbiAgICAgICAgICAgICAgICAgIFttYXRDb2x1bW5EZWZdPVwiY29sLmlkICsgJ19wYXN0J1wiPlxuICAgICAgPHRoIGNsYXNzPVwicGFzdC1kYXRhLWNlbGxcIiBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0VG9vbHRpcD1cIm5vIHRvb2x0aXBcIj5cbiAgICAgICAge3sgKHBhc3RUeXBlQ291bnQkIHwgYXN5bmMpPy5yb3dzPy5sZW5ndGggPyByYW5nZS5jb250cm9scy5zdGFydC52YWx1ZS50b0xvY2FsZVN0cmluZyhEYXRlVGltZS5EQVRFX1NIT1JUKSA6ICdubyBwYXN0IGRhdGEnIH19XG4gICAgICA8L3RoPlxuICAgICAgPHRkIGNsYXNzPVwicGFzdC1kYXRhLWNlbGxcIiBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3c7XCIgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHBhc3RUeXBlQ291bnQkIHwgYXN5bmMpPy5yb3dzPy5sZW5ndGggJiYgcGFzdFR5cGVDb3VudChyb3csIGNvbC5pZCkgYXMgdHJlbmRcIj5cbiAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwidHJlbmQudHJlbmRcIj4ge3sgdHJlbmQudmFsdWUgPz8gJ+KAkycgfX1cbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cInRyZW5kLnZhbHVlXCIgYXJpYS1oaWRkZW49XCJmYWxzZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwidHJlbmQudHJlbmRcIiBbZm9udEljb25dPVwidHJlbmQudHJlbmQhXCIgLz48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjZGstdmlzdWFsbHktaGlkZGVuXCI+e3sgdHJlbmQudHJlbmQgfX08L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8IS0tIGdlbmVyYXRlIGFjdHVhbCB0YWJsZSAtLT5cbiAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cIlsnbGFiZWwtY29sJ10uY29uY2F0KHR5cGVDb2x1bW5zKCkpOyBzdGlja3k6dHJ1ZTtcIj48L3RyPlxuICAgIDx0ciBbaGlkZGVuXT1cIiFpc0hpc3RvcnlFbmFibGVkKClcIiBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiYWxsQ29sdW1ucygpOyBzdGlja3k6IHRydWU7XCI+PC90cj5cbiAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydsYWJlbC1jb2wnXS5jb25jYXQoYWxsQ29sdW1ucygpKVwiPjwvdHI+XG5cbiAgPC90YWJsZT5cbjwvbWF0LWNhcmQ+XG4iXX0=