ng-jhipster
Version:
A Jhipster util library for Angular
121 lines (117 loc) • 16.1 kB
JavaScript
/*
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