UNPKG

ng-jhipster

Version:

A Jhipster util library for Angular

121 lines (117 loc) 16.1 kB
/* Copyright 2013-2020 the original author or authors from the JHipster project. This file is part of the JHipster project, see https://www.jhipster.tech/ for more information. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import { Component, Input } from '@angular/core'; export class JhiMetricsGarbageCollectorComponent { } JhiMetricsGarbageCollectorComponent.decorators = [ { type: Component, args: [{ selector: 'jhi-metrics-garbagecollector', template: ` <div class="row"> <div class="col-md-4"> <div *ngIf="garbageCollectorMetrics"> <span> GC Live Data Size/GC Max Data Size ({{ garbageCollectorMetrics['jvm.gc.live.data.size'] / 1048576 | number: '1.0-0' }}M / {{ garbageCollectorMetrics['jvm.gc.max.data.size'] / 1048576 | number: '1.0-0' }}M)</span > <ngb-progressbar [max]="garbageCollectorMetrics['jvm.gc.max.data.size']" [value]="garbageCollectorMetrics['jvm.gc.live.data.size']" [striped]="true" [animated]="false" type="success" > <span >{{ (100 * garbageCollectorMetrics['jvm.gc.live.data.size']) / garbageCollectorMetrics['jvm.gc.max.data.size'] | number: '1.0-2' }}%</span > </ngb-progressbar> </div> </div> <div class="col-md-4"> <div *ngIf="garbageCollectorMetrics"> <span> GC Memory Promoted/GC Memory Allocated ({{ garbageCollectorMetrics['jvm.gc.memory.promoted'] / 1048576 | number: '1.0-0' }}M / {{ garbageCollectorMetrics['jvm.gc.memory.allocated'] / 1048576 | number: '1.0-0' }}M)</span > <ngb-progressbar [max]="garbageCollectorMetrics['jvm.gc.memory.allocated']" [value]="garbageCollectorMetrics['jvm.gc.memory.promoted']" [striped]="true" [animated]="false" type="success" > <span >{{ (100 * garbageCollectorMetrics['jvm.gc.memory.promoted']) / garbageCollectorMetrics['jvm.gc.memory.allocated'] | number: '1.0-2' }}%</span > </ngb-progressbar> </div> </div> <div class="col-md-4"> <div class="row" *ngIf="garbageCollectorMetrics"> <div class="col-md-9">Classes loaded</div> <div class="col-md-3 text-right">{{ garbageCollectorMetrics.classesLoaded }}</div> </div> <div class="row" *ngIf="garbageCollectorMetrics"> <div class="col-md-9">Classes unloaded</div> <div class="col-md-3 text-right">{{ garbageCollectorMetrics.classesUnloaded }}</div> </div> </div> <div class="table-responsive" *ngIf="!updating && garbageCollectorMetrics"> <table class="table table-striped"> <thead> <tr> <th></th> <th class="text-right" jhiTranslate="metrics.servicesstats.table.count">Count</th> <th class="text-right" jhiTranslate="metrics.servicesstats.table.mean">Mean</th> <th class="text-right" jhiTranslate="metrics.servicesstats.table.min">Min</th> <th class="text-right" jhiTranslate="metrics.servicesstats.table.p50">p50</th> <th class="text-right" jhiTranslate="metrics.servicesstats.table.p75">p75</th> <th class="text-right" jhiTranslate="metrics.servicesstats.table.p95">p95</th> <th class="text-right" jhiTranslate="metrics.servicesstats.table.p99">p99</th> <th class="text-right" jhiTranslate="metrics.servicesstats.table.max">Max</th> </tr> </thead> <tbody> <tr> <td>jvm.gc.pause</td> <td class="text-right">{{ garbageCollectorMetrics['jvm.gc.pause'].count }}</td> <td class="text-right">{{ garbageCollectorMetrics['jvm.gc.pause'].mean | number: '1.0-3' }}</td> <td class="text-right">{{ garbageCollectorMetrics['jvm.gc.pause']['0.0'] | number: '1.0-3' }}</td> <td class="text-right">{{ garbageCollectorMetrics['jvm.gc.pause']['0.5'] | number: '1.0-3' }}</td> <td class="text-right">{{ garbageCollectorMetrics['jvm.gc.pause']['0.75'] | number: '1.0-3' }}</td> <td class="text-right">{{ garbageCollectorMetrics['jvm.gc.pause']['0.95'] | number: '1.0-3' }}</td> <td class="text-right">{{ garbageCollectorMetrics['jvm.gc.pause']['0.99'] | number: '1.0-3' }}</td> <td class="text-right">{{ garbageCollectorMetrics['jvm.gc.pause'].max | number: '1.0-3' }}</td> </tr> </tbody> </table> </div> </div> ` },] } ]; JhiMetricsGarbageCollectorComponent.propDecorators = { garbageCollectorMetrics: [{ type: Input }], updating: [{ type: Input }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamhpLW1ldHJpY3MtZ2FyYmFnZWNvbGxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L21ldHJpY3MvamhpLW1ldHJpY3MtZ2FyYmFnZWNvbGxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUErRmpELE1BQU0sT0FBTyxtQ0FBbUM7OztZQTdGL0MsU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSw4QkFBOEI7Z0JBQ3hDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0F5RlQ7YUFDSjs7O3NDQUtJLEtBQUs7dUJBS0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gQ29weXJpZ2h0IDIwMTMtMjAyMCB0aGUgb3JpZ2luYWwgYXV0aG9yIG9yIGF1dGhvcnMgZnJvbSB0aGUgSkhpcHN0ZXIgcHJvamVjdC5cblxuIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBKSGlwc3RlciBwcm9qZWN0LCBzZWUgaHR0cHM6Ly93d3cuamhpcHN0ZXIudGVjaC9cbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxuIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2poaS1tZXRyaWNzLWdhcmJhZ2Vjb2xsZWN0b3InLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnYXJiYWdlQ29sbGVjdG9yTWV0cmljc1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEdDIExpdmUgRGF0YSBTaXplL0dDIE1heCBEYXRhIFNpemUgKHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FyYmFnZUNvbGxlY3Rvck1ldHJpY3NbJ2p2bS5nYy5saXZlLmRhdGEuc2l6ZSddIC8gMTA0ODU3NiB8IG51bWJlcjogJzEuMC0wJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1NIC8ge3sgZ2FyYmFnZUNvbGxlY3Rvck1ldHJpY3NbJ2p2bS5nYy5tYXguZGF0YS5zaXplJ10gLyAxMDQ4NTc2IHwgbnVtYmVyOiAnMS4wLTAnIH19TSk8L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmdiLXByb2dyZXNzYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cImdhcmJhZ2VDb2xsZWN0b3JNZXRyaWNzWydqdm0uZ2MubWF4LmRhdGEuc2l6ZSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnYXJiYWdlQ29sbGVjdG9yTWV0cmljc1snanZtLmdjLmxpdmUuZGF0YS5zaXplJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmlwZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYW5pbWF0ZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTAwICogZ2FyYmFnZUNvbGxlY3Rvck1ldHJpY3NbJ2p2bS5nYy5saXZlLmRhdGEuc2l6ZSddKSAvIGdhcmJhZ2VDb2xsZWN0b3JNZXRyaWNzWydqdm0uZ2MubWF4LmRhdGEuc2l6ZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG51bWJlcjogJzEuMC0yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19JTwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L25nYi1wcm9ncmVzc2Jhcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdhcmJhZ2VDb2xsZWN0b3JNZXRyaWNzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgR0MgTWVtb3J5IFByb21vdGVkL0dDIE1lbW9yeSBBbGxvY2F0ZWQgKHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FyYmFnZUNvbGxlY3Rvck1ldHJpY3NbJ2p2bS5nYy5tZW1vcnkucHJvbW90ZWQnXSAvIDEwNDg1NzYgfCBudW1iZXI6ICcxLjAtMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19TSAvIHt7IGdhcmJhZ2VDb2xsZWN0b3JNZXRyaWNzWydqdm0uZ2MubWVtb3J5LmFsbG9jYXRlZCddIC8gMTA0ODU3NiB8IG51bWJlcjogJzEuMC0wJyB9fU0pPC9zcGFuXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nYi1wcm9ncmVzc2JhclxuICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJnYXJiYWdlQ29sbGVjdG9yTWV0cmljc1snanZtLmdjLm1lbW9yeS5hbGxvY2F0ZWQnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2FyYmFnZUNvbGxlY3Rvck1ldHJpY3NbJ2p2bS5nYy5tZW1vcnkucHJvbW90ZWQnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RyaXBlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthbmltYXRlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMDAgKiBnYXJiYWdlQ29sbGVjdG9yTWV0cmljc1snanZtLmdjLm1lbW9yeS5wcm9tb3RlZCddKSAvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYXJiYWdlQ29sbGVjdG9yTWV0cmljc1snanZtLmdjLm1lbW9yeS5hbGxvY2F0ZWQnXSB8IG51bWJlcjogJzEuMC0yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19JTwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L25nYi1wcm9ncmVzc2Jhcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiZ2FyYmFnZUNvbGxlY3Rvck1ldHJpY3NcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+Q2xhc3NlcyBsb2FkZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zIHRleHQtcmlnaHRcIj57eyBnYXJiYWdlQ29sbGVjdG9yTWV0cmljcy5jbGFzc2VzTG9hZGVkIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiZ2FyYmFnZUNvbGxlY3Rvck1ldHJpY3NcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+Q2xhc3NlcyB1bmxvYWRlZDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgdGV4dC1yaWdodFwiPnt7IGdhcmJhZ2VDb2xsZWN0b3JNZXRyaWNzLmNsYXNzZXNVbmxvYWRlZCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiICpuZ0lmPVwiIXVwZGF0aW5nICYmIGdhcmJhZ2VDb2xsZWN0b3JNZXRyaWNzXCI+XG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc3RyaXBlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1yaWdodFwiIGpoaVRyYW5zbGF0ZT1cIm1ldHJpY3Muc2VydmljZXNzdGF0cy50YWJsZS5jb3VudFwiPkNvdW50PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgamhpVHJhbnNsYXRlPVwibWV0cmljcy5zZXJ2aWNlc3N0YXRzLnRhYmxlLm1lYW5cIj5NZWFuPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgamhpVHJhbnNsYXRlPVwibWV0cmljcy5zZXJ2aWNlc3N0YXRzLnRhYmxlLm1pblwiPk1pbjwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1yaWdodFwiIGpoaVRyYW5zbGF0ZT1cIm1ldHJpY3Muc2VydmljZXNzdGF0cy50YWJsZS5wNTBcIj5wNTA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtcmlnaHRcIiBqaGlUcmFuc2xhdGU9XCJtZXRyaWNzLnNlcnZpY2Vzc3RhdHMudGFibGUucDc1XCI+cDc1PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LXJpZ2h0XCIgamhpVHJhbnNsYXRlPVwibWV0cmljcy5zZXJ2aWNlc3N0YXRzLnRhYmxlLnA5NVwiPnA5NTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1yaWdodFwiIGpoaVRyYW5zbGF0ZT1cIm1ldHJpY3Muc2VydmljZXNzdGF0cy50YWJsZS5wOTlcIj5wOTk8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtcmlnaHRcIiBqaGlUcmFuc2xhdGU9XCJtZXRyaWNzLnNlcnZpY2Vzc3RhdHMudGFibGUubWF4XCI+TWF4PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+anZtLmdjLnBhdXNlPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+e3sgZ2FyYmFnZUNvbGxlY3Rvck1ldHJpY3NbJ2p2bS5nYy5wYXVzZSddLmNvdW50IH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+e3sgZ2FyYmFnZUNvbGxlY3Rvck1ldHJpY3NbJ2p2bS5nYy5wYXVzZSddLm1lYW4gfCBudW1iZXI6ICcxLjAtMycgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtcmlnaHRcIj57eyBnYXJiYWdlQ29sbGVjdG9yTWV0cmljc1snanZtLmdjLnBhdXNlJ11bJzAuMCddIHwgbnVtYmVyOiAnMS4wLTMnIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+e3sgZ2FyYmFnZUNvbGxlY3Rvck1ldHJpY3NbJ2p2bS5nYy5wYXVzZSddWycwLjUnXSB8IG51bWJlcjogJzEuMC0zJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1yaWdodFwiPnt7IGdhcmJhZ2VDb2xsZWN0b3JNZXRyaWNzWydqdm0uZ2MucGF1c2UnXVsnMC43NSddIHwgbnVtYmVyOiAnMS4wLTMnIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+e3sgZ2FyYmFnZUNvbGxlY3Rvck1ldHJpY3NbJ2p2bS5nYy5wYXVzZSddWycwLjk1J10gfCBudW1iZXI6ICcxLjAtMycgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtcmlnaHRcIj57eyBnYXJiYWdlQ29sbGVjdG9yTWV0cmljc1snanZtLmdjLnBhdXNlJ11bJzAuOTknXSB8IG51bWJlcjogJzEuMC0zJyB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1yaWdodFwiPnt7IGdhcmJhZ2VDb2xsZWN0b3JNZXRyaWNzWydqdm0uZ2MucGF1c2UnXS5tYXggfCBudW1iZXI6ICcxLjAtMycgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGBcbn0pXG5leHBvcnQgY2xhc3MgSmhpTWV0cmljc0dhcmJhZ2VDb2xsZWN0b3JDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIG9iamVjdCBjb250YWluaW5nIGdhcmJhZ2UgY29sbGVjdG9yIHJlbGF0ZWQgbWV0cmljc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdhcmJhZ2VDb2xsZWN0b3JNZXRyaWNzOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBib29sZWFuIGZpZWxkIHNheWluZyBpZiB0aGUgbWV0cmljcyBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgdXBkYXRlZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHVwZGF0aW5nOiBib29sZWFuO1xufVxuIl19