@senior-agronegocio/angular-components 0.0.9867 → 0.0.9870
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/bundles/senior-agronegocio-angular-components.umd.js +5644 -4540
- package/bundles/senior-agronegocio-angular-components.umd.js.map +1 -1
- package/bundles/senior-agronegocio-angular-components.umd.min.js +2 -2
- package/bundles/senior-agronegocio-angular-components.umd.min.js.map +1 -1
- package/common/agro-array-utils.class.d.ts +13 -0
- package/common/agro-logics.class.d.ts +5 -0
- package/common/agro-number-utils.class.d.ts +6 -0
- package/common/agro-object-stringifier.class.d.ts +1 -1
- package/common/agro-object-utils.class.d.ts +3 -1
- package/common/agro-string-utils.class.d.ts +0 -5
- package/common/agro-unit-converter.class.d.ts +23 -0
- package/common/index.d.ts +1 -0
- package/components/event-control-board/common/event-operation.d.ts +1 -0
- package/components/event-control-board/common/event-origin.d.ts +1 -0
- package/components/event-control-board/event-control-board.component.d.ts +7 -3
- package/components/event-control-board/index.d.ts +1 -3
- package/components/event-control-board/service/e012fam/e012fam.d.ts +14 -0
- package/components/event-control-board/service/e075der/e075der.d.ts +18 -0
- package/components/event-control-board/service/e113saf/e113saf.d.ts +14 -0
- package/components/event-control-board/service/e205dep/e205dep-dto.d.ts +15 -0
- package/components/event-control-board/service/e205dep/e205dep.d.ts +16 -0
- package/components/event-control-board/service/entity-service.d.ts +3 -3
- package/components/event-control-board/service/external-invoice/external-invoice.d.ts +13 -0
- package/components/event-control-board/service/invoice/invoice.d.ts +21 -0
- package/components/event-control-board/service/origination/operationType.d.ts +5 -0
- package/components/event-control-board/service/origination/origination-dto.d.ts +1 -1
- package/components/event-control-board/service/origination/origination.d.ts +51 -0
- package/components/event-control-board/service/rural-estate/rural-estate.d.ts +34 -0
- package/components/event-control-board/service/ticket/ticket.d.ts +18 -0
- package/components/index.d.ts +1 -0
- package/components/modal-invoice-pj/for-fixation/modal-fixation-options.interface.d.ts +5 -0
- package/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.d.ts +35 -0
- package/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.module.d.ts +2 -0
- package/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.d.ts +26 -0
- package/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.module.d.ts +2 -0
- package/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.d.ts +26 -0
- package/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.module.d.ts +2 -0
- package/components/modal-invoice-pj/index.d.ts +9 -0
- package/components/modal-invoice-pj/modal-invoice-pj-base.class.d.ts +53 -0
- package/components/modal-invoice-pj/modal-invoice-pj-options.interface.d.ts +10 -0
- package/components/modal-invoice-pj/modal-shared-imports.d.ts +8 -0
- package/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.d.ts +2 -0
- package/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.d.ts +16 -0
- package/components/modal-invoice-pj/services/agro-invoice/index.d.ts +2 -0
- package/components/modal-invoice-pj/services/agro-invoice/interfaces.d.ts +75 -0
- package/enums/index.d.ts +1 -0
- package/enums/invoice-status.enum.d.ts +12 -0
- package/enums/unit-measurement.enum.d.ts +49 -0
- package/esm2015/common/agro-array-utils.class.js +19 -1
- package/esm2015/common/agro-logics.class.js +11 -6
- package/esm2015/common/agro-number-utils.class.js +18 -1
- package/esm2015/common/agro-object-stringifier.class.js +4 -1
- package/esm2015/common/agro-object-utils.class.js +28 -2
- package/esm2015/common/agro-string-utils.class.js +2 -64
- package/esm2015/common/agro-unit-converter.class.js +256 -0
- package/esm2015/common/index.js +2 -1
- package/esm2015/components/cancel-event-dialog/cancel-event-dialog-config.js +1 -1
- package/esm2015/components/event-control-board/common/event-control-constants.js +6 -1
- package/esm2015/components/event-control-board/common/event-operation.js +2 -1
- package/esm2015/components/event-control-board/common/event-origin.js +2 -1
- package/esm2015/components/event-control-board/event-control-board.component.js +14 -8
- package/esm2015/components/event-control-board/event-control-board.module.js +2 -5
- package/esm2015/components/event-control-board/index.js +2 -4
- package/esm2015/components/event-control-board/service/e012fam/e012fam.js +20 -0
- package/esm2015/components/event-control-board/service/e075der/e075der.js +31 -0
- package/esm2015/components/event-control-board/service/e113saf/e113saf.js +20 -0
- package/esm2015/components/event-control-board/service/e205dep/e205dep-dto.js +1 -0
- package/esm2015/components/event-control-board/service/e205dep/e205dep.js +20 -0
- package/esm2015/components/event-control-board/service/entity-service.js +25 -27
- package/esm2015/components/event-control-board/service/external-invoice/external-invoice.js +20 -0
- package/esm2015/components/event-control-board/service/invoice/invoice.js +43 -0
- package/esm2015/components/event-control-board/service/origination/operationType.js +7 -0
- package/esm2015/components/event-control-board/service/origination/origination-dto.js +1 -1
- package/esm2015/components/event-control-board/service/origination/origination.js +59 -0
- package/esm2015/components/event-control-board/service/rural-estate/rural-estate.js +78 -0
- package/esm2015/components/event-control-board/service/ticket/ticket.js +39 -0
- package/esm2015/components/financial-title-table/financial-title-table.module.js +7 -5
- package/esm2015/components/index.js +2 -1
- package/esm2015/components/modal-invoice-pj/for-fixation/modal-fixation-options.interface.js +1 -0
- package/esm2015/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.js +189 -0
- package/esm2015/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.module.js +16 -0
- package/esm2015/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.js +60 -0
- package/esm2015/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.module.js +16 -0
- package/esm2015/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.js +60 -0
- package/esm2015/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.module.js +16 -0
- package/esm2015/components/modal-invoice-pj/index.js +8 -0
- package/esm2015/components/modal-invoice-pj/modal-invoice-pj-base.class.js +193 -0
- package/esm2015/components/modal-invoice-pj/modal-invoice-pj-options.interface.js +1 -0
- package/esm2015/components/modal-invoice-pj/modal-shared-imports.js +32 -0
- package/esm2015/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.js +28 -0
- package/esm2015/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.js +49 -0
- package/esm2015/components/modal-invoice-pj/services/agro-invoice/index.js +3 -0
- package/esm2015/components/modal-invoice-pj/services/agro-invoice/interfaces.js +13 -0
- package/esm2015/enums/index.js +2 -1
- package/esm2015/enums/invoice-status.enum.js +14 -0
- package/esm2015/enums/unit-measurement.enum.js +60 -0
- package/esm2015/lib-translation.module.js +3 -1
- package/esm2015/pipe/index.js +2 -1
- package/esm2015/pipe/kilogram/index.js +3 -0
- package/esm2015/pipe/kilogram/kilogram.module.js +17 -0
- package/esm2015/pipe/kilogram/kilogram.pipe.js +38 -0
- package/esm2015/public-api.js +5 -5
- package/esm2015/services/entity-service.js +14 -12
- package/esm2015/services/i18n/en-US.js +10 -1
- package/esm2015/services/i18n/es-CO.js +12 -3
- package/esm2015/services/i18n/pt-BR.js +272 -261
- package/esm2015/services/index.js +1 -1
- package/esm2015/services/lib-translation.service.js +2 -2
- package/esm2015/services/producer-invoice/index.js +3 -0
- package/esm2015/services/producer-invoice/producer-invoice-dto.js +1 -0
- package/esm2015/services/producer-invoice/producer-invoice.js +32 -0
- package/esm2015/services/producer-invoice/producer-invoice.service.js +64 -0
- package/esm5/common/agro-array-utils.class.js +19 -1
- package/esm5/common/agro-logics.class.js +10 -4
- package/esm5/common/agro-number-utils.class.js +19 -1
- package/esm5/common/agro-object-stringifier.class.js +4 -1
- package/esm5/common/agro-object-utils.class.js +28 -2
- package/esm5/common/agro-string-utils.class.js +8 -81
- package/esm5/common/agro-unit-converter.class.js +259 -0
- package/esm5/common/index.js +2 -1
- package/esm5/components/cancel-event-dialog/cancel-event-dialog-config.js +1 -1
- package/esm5/components/event-control-board/common/event-control-constants.js +6 -1
- package/esm5/components/event-control-board/common/event-operation.js +2 -1
- package/esm5/components/event-control-board/common/event-origin.js +2 -1
- package/esm5/components/event-control-board/event-control-board.component.js +14 -8
- package/esm5/components/event-control-board/event-control-board.module.js +2 -5
- package/esm5/components/event-control-board/index.js +2 -4
- package/esm5/components/event-control-board/service/e012fam/e012fam.js +25 -0
- package/esm5/components/event-control-board/service/e075der/e075der.js +36 -0
- package/esm5/components/event-control-board/service/e113saf/e113saf.js +25 -0
- package/esm5/components/event-control-board/service/e205dep/e205dep-dto.js +1 -0
- package/esm5/components/event-control-board/service/e205dep/e205dep.js +25 -0
- package/esm5/components/event-control-board/service/entity-service.js +24 -26
- package/esm5/components/event-control-board/service/external-invoice/external-invoice.js +25 -0
- package/esm5/components/event-control-board/service/invoice/invoice.js +48 -0
- package/esm5/components/event-control-board/service/origination/operationType.js +7 -0
- package/esm5/components/event-control-board/service/origination/origination-dto.js +1 -1
- package/esm5/components/event-control-board/service/origination/origination.js +62 -0
- package/esm5/components/event-control-board/service/rural-estate/rural-estate.js +83 -0
- package/esm5/components/event-control-board/service/ticket/ticket.js +44 -0
- package/esm5/components/financial-title-table/financial-title-table.module.js +7 -5
- package/esm5/components/index.js +2 -1
- package/esm5/components/modal-invoice-pj/for-fixation/modal-fixation-options.interface.js +1 -0
- package/esm5/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.js +221 -0
- package/esm5/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.module.js +19 -0
- package/esm5/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.js +63 -0
- package/esm5/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.module.js +19 -0
- package/esm5/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.js +63 -0
- package/esm5/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.module.js +19 -0
- package/esm5/components/modal-invoice-pj/index.js +8 -0
- package/esm5/components/modal-invoice-pj/modal-invoice-pj-base.class.js +210 -0
- package/esm5/components/modal-invoice-pj/modal-invoice-pj-options.interface.js +1 -0
- package/esm5/components/modal-invoice-pj/modal-shared-imports.js +32 -0
- package/esm5/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.js +31 -0
- package/esm5/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.js +56 -0
- package/esm5/components/modal-invoice-pj/services/agro-invoice/index.js +3 -0
- package/esm5/components/modal-invoice-pj/services/agro-invoice/interfaces.js +13 -0
- package/esm5/enums/index.js +2 -1
- package/esm5/enums/invoice-status.enum.js +14 -0
- package/esm5/enums/unit-measurement.enum.js +60 -0
- package/esm5/lib-translation.module.js +3 -1
- package/esm5/pipe/index.js +2 -1
- package/esm5/pipe/kilogram/index.js +3 -0
- package/esm5/pipe/kilogram/kilogram.module.js +20 -0
- package/esm5/pipe/kilogram/kilogram.pipe.js +41 -0
- package/esm5/public-api.js +5 -5
- package/esm5/services/entity-service.js +13 -11
- package/esm5/services/i18n/en-US.js +10 -1
- package/esm5/services/i18n/es-CO.js +12 -3
- package/esm5/services/i18n/pt-BR.js +272 -261
- package/esm5/services/index.js +1 -1
- package/esm5/services/lib-translation.service.js +2 -2
- package/esm5/services/producer-invoice/index.js +3 -0
- package/esm5/services/producer-invoice/producer-invoice-dto.js +1 -0
- package/esm5/services/producer-invoice/producer-invoice.js +37 -0
- package/esm5/services/producer-invoice/producer-invoice.service.js +72 -0
- package/fesm2015/senior-agronegocio-angular-components.js +5095 -4077
- package/fesm2015/senior-agronegocio-angular-components.js.map +1 -1
- package/fesm5/senior-agronegocio-angular-components.js +5642 -4548
- package/fesm5/senior-agronegocio-angular-components.js.map +1 -1
- package/package.json +1 -1
- package/pipe/index.d.ts +1 -0
- package/pipe/kilogram/index.d.ts +2 -0
- package/pipe/kilogram/kilogram.module.d.ts +2 -0
- package/pipe/kilogram/kilogram.pipe.d.ts +8 -0
- package/public-api.d.ts +4 -4
- package/senior-agronegocio-angular-components.metadata.json +1 -1
- package/services/entity-service.d.ts +2 -1
- package/services/i18n/en-US.d.ts +9 -0
- package/services/i18n/es-CO.d.ts +10 -1
- package/services/i18n/pt-BR.d.ts +270 -259
- package/services/producer-invoice/index.d.ts +3 -0
- package/{components/event-control-board/service → services}/producer-invoice/producer-invoice-dto.d.ts +4 -4
- package/services/producer-invoice/producer-invoice.d.ts +27 -0
- package/services/producer-invoice/producer-invoice.service.d.ts +18 -0
- package/components/event-control-board/service/event-control-board.service.d.ts +0 -13
- package/components/event-control-board/service/producer-invoice/producer-invoice.module.d.ts +0 -2
- package/components/event-control-board/service/producer-invoice/producer-invoice.service.d.ts +0 -11
- package/esm2015/components/event-control-board/service/event-control-board.service.js +0 -37
- package/esm2015/components/event-control-board/service/producer-invoice/producer-invoice-dto.js +0 -1
- package/esm2015/components/event-control-board/service/producer-invoice/producer-invoice.module.js +0 -26
- package/esm2015/components/event-control-board/service/producer-invoice/producer-invoice.service.js +0 -24
- package/esm5/components/event-control-board/service/event-control-board.service.js +0 -38
- package/esm5/components/event-control-board/service/producer-invoice/producer-invoice-dto.js +0 -1
- package/esm5/components/event-control-board/service/producer-invoice/producer-invoice.module.js +0 -29
- package/esm5/components/event-control-board/service/producer-invoice/producer-invoice.service.js +0 -27
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LibTranslationModule } from '../../lib-translation.module';
|
|
2
|
+
import { CurrencyPipe, DatePipe, DecimalPipe } from '@angular/common';
|
|
3
|
+
import { LocaleModule, LocalizedDatePipe } from '@seniorsistemas/angular-components';
|
|
4
|
+
import { KilogramPipe } from '../../pipe/kilogram';
|
|
5
|
+
export declare const imports: (typeof LibTranslationModule | (import("@angular/compiler/src/core").ModuleWithProviders & {
|
|
6
|
+
ngModule: LocaleModule;
|
|
7
|
+
}))[];
|
|
8
|
+
export declare const providers: (typeof KilogramPipe | typeof DecimalPipe | typeof CurrencyPipe | typeof DatePipe | typeof LocalizedDatePipe)[];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { HttpClient } from "@angular/common/http";
|
|
2
|
+
import { MessageService } from "primeng/api";
|
|
3
|
+
import { AgroEntityService } from "../../../../services/entity-service";
|
|
4
|
+
import { LibTranslationService as TranslateService } from "../../../../services/lib-translation.service";
|
|
5
|
+
import { IInvoiceLookupFilter, IInvoiceLookupResponse } from "./interfaces";
|
|
6
|
+
import { Observable } from "rxjs";
|
|
7
|
+
export declare class AgroInvoiceService extends AgroEntityService<any> {
|
|
8
|
+
protected http: HttpClient;
|
|
9
|
+
protected messageService: MessageService;
|
|
10
|
+
protected translate: TranslateService;
|
|
11
|
+
private readonly pooling;
|
|
12
|
+
constructor(http: HttpClient, messageService: MessageService, translate: TranslateService);
|
|
13
|
+
invoiceLookupFilter(data: IInvoiceLookupFilter): Observable<IInvoiceLookupResponse>;
|
|
14
|
+
cancelActivePooling(): void;
|
|
15
|
+
private pollInvoiceResult;
|
|
16
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
export declare enum statusLookup {
|
|
2
|
+
PENDING = "PENDING",
|
|
3
|
+
FINISHED = "FINISHED",
|
|
4
|
+
ERROR = "ERROR"
|
|
5
|
+
}
|
|
6
|
+
export declare enum statusIntegration {
|
|
7
|
+
SUCCESS = "SUCCESS",
|
|
8
|
+
IN_PROGRESS = "IN_PROGRESS",
|
|
9
|
+
ERROR = "ERROR"
|
|
10
|
+
}
|
|
11
|
+
export interface IInvoiceLookupFilter {
|
|
12
|
+
filter: IRecInvoiceLookupFilter;
|
|
13
|
+
pageRequest: IRecPageRequest;
|
|
14
|
+
}
|
|
15
|
+
export interface IRecInvoiceLookupFilter {
|
|
16
|
+
companyId: string;
|
|
17
|
+
branchId: string;
|
|
18
|
+
ruralEstateIds: string[];
|
|
19
|
+
producerIds: string[];
|
|
20
|
+
productId: string;
|
|
21
|
+
multiProducts: boolean;
|
|
22
|
+
number?: number;
|
|
23
|
+
series?: string;
|
|
24
|
+
key?: string;
|
|
25
|
+
issuanceDateStart?: string;
|
|
26
|
+
issuanceDateEnd?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface IRecPageRequest {
|
|
29
|
+
offset: number;
|
|
30
|
+
size: number;
|
|
31
|
+
orderBy: IOrderBy[];
|
|
32
|
+
}
|
|
33
|
+
export interface IOrderBy {
|
|
34
|
+
field: string;
|
|
35
|
+
order: "asc" | "desc";
|
|
36
|
+
}
|
|
37
|
+
export interface IInvoiceLookupResponse {
|
|
38
|
+
status: statusLookup;
|
|
39
|
+
message: string;
|
|
40
|
+
result: IInvoiceLookupDataResponse;
|
|
41
|
+
}
|
|
42
|
+
export interface IInvoiceLookupRecord {
|
|
43
|
+
externalInvoiceId?: string;
|
|
44
|
+
companyId: string;
|
|
45
|
+
branchId: string;
|
|
46
|
+
producerId: string;
|
|
47
|
+
issuanceDate: string;
|
|
48
|
+
items: IInvoiceLookupItemRecord[];
|
|
49
|
+
invoiceId?: string;
|
|
50
|
+
ruralEstateId?: string;
|
|
51
|
+
number?: number;
|
|
52
|
+
series?: string;
|
|
53
|
+
seriesId?: string;
|
|
54
|
+
seriesLegal?: string;
|
|
55
|
+
key?: string;
|
|
56
|
+
netTotalValue?: number;
|
|
57
|
+
totalItems?: number;
|
|
58
|
+
totalItemsQuantity?: number;
|
|
59
|
+
}
|
|
60
|
+
interface IInvoiceLookupItemRecord {
|
|
61
|
+
itemSequence: number;
|
|
62
|
+
productId: string;
|
|
63
|
+
productCode: string;
|
|
64
|
+
serviceId: string;
|
|
65
|
+
unitPrice: number;
|
|
66
|
+
quantity: number;
|
|
67
|
+
}
|
|
68
|
+
export interface IInvoiceLookupDataResponse {
|
|
69
|
+
totalElements: number;
|
|
70
|
+
status: statusIntegration;
|
|
71
|
+
invoices?: IInvoiceLookupRecord[];
|
|
72
|
+
message?: string;
|
|
73
|
+
lookupId?: string;
|
|
74
|
+
}
|
|
75
|
+
export {};
|
package/enums/index.d.ts
CHANGED
|
@@ -4,3 +4,4 @@ export { AgroStringMasks } from "./agro-string-masks.enum";
|
|
|
4
4
|
export { DateComparisonType } from "./date-comparison-type.enum";
|
|
5
5
|
export { HttpCodes } from "./http-codes.enum";
|
|
6
6
|
export { NumberComparisonType } from "./number-comparison-type.enum";
|
|
7
|
+
export { UnitOfMeasurement } from "./unit-measurement.enum";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare enum InvoiceStatus {
|
|
2
|
+
SENT = "SENT",
|
|
3
|
+
CLOSED = "CLOSED",
|
|
4
|
+
REJECTED = "REJECTED",
|
|
5
|
+
GENERATED = "GENERATED",
|
|
6
|
+
IN_TYPING = "IN_TYPING",
|
|
7
|
+
AUTHORIZED = "AUTHORIZED",
|
|
8
|
+
INCONSISTENT = "INCONSISTENT",
|
|
9
|
+
NOT_PROCESSED = "NOT_PROCESSED",
|
|
10
|
+
ERROR_CLOSING_INVOICE = "ERROR_CLOSING_INVOICE",
|
|
11
|
+
WAITING_FOR_NFE_ISSUER = "WAITING_FOR_NFE_ISSUER"
|
|
12
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export declare enum UnitOfMeasurement {
|
|
2
|
+
METRO = "m",
|
|
3
|
+
CENTIMETRO = "cm",
|
|
4
|
+
MILIMETRO = "mm",
|
|
5
|
+
QUILOMETRO = "km",
|
|
6
|
+
POLEGADA = "in",
|
|
7
|
+
PE = "ft",
|
|
8
|
+
GRAMA = "g",
|
|
9
|
+
QUILOGRAMA = "kg",
|
|
10
|
+
TONELADA = "t",
|
|
11
|
+
LIBRA = "lb",
|
|
12
|
+
SACA = "saca",
|
|
13
|
+
METRO_QUADRADO = "m\u00B2",
|
|
14
|
+
CENTIMETRO_QUADRADO = "cm\u00B2",
|
|
15
|
+
HECTARE = "ha",
|
|
16
|
+
ALQUEIRE_50x50 = "alq50x50",
|
|
17
|
+
ALQUEIRE_50x75 = "alq50x75",
|
|
18
|
+
ALQUEIRE_DO_NORTE = "alqDoNorte",
|
|
19
|
+
ALQUEIRE_75x80 = "alq75x80",
|
|
20
|
+
ALQUEIRE_79x79 = "alq79x79",
|
|
21
|
+
ALQUEIRE_80x80 = "alq80x80",
|
|
22
|
+
ALQUEIRE_75x100 = "alq75x100",
|
|
23
|
+
ALQUEIRE_100x150 = "alq100x150",
|
|
24
|
+
ALQUEIRE_BAIANO = "alqBaiano",
|
|
25
|
+
ALQUEIRAO = "alqueirao",
|
|
26
|
+
ALQUEIRE_PAULISTA = "alqPaulista",
|
|
27
|
+
ALQUEIRE_MINEIRO = "alqMineiro",
|
|
28
|
+
LITRO = "L",
|
|
29
|
+
MILILITRO = "mL",
|
|
30
|
+
METRO_CUBICO = "m\u00B3",
|
|
31
|
+
SEGUNDO = "s",
|
|
32
|
+
MINUTO = "min",
|
|
33
|
+
HORA = "h",
|
|
34
|
+
DIA = "dia",
|
|
35
|
+
CELSIUS = "\u00B0C",
|
|
36
|
+
FAHRENHEIT = "\u00B0F",
|
|
37
|
+
KELVIN = "K",
|
|
38
|
+
JOULE = "J",
|
|
39
|
+
CALORIA = "cal",
|
|
40
|
+
QUILOWATT_HORA = "kWh",
|
|
41
|
+
VOLT = "V",
|
|
42
|
+
AMPERE = "A",
|
|
43
|
+
WATT = "W",
|
|
44
|
+
BYTE = "B",
|
|
45
|
+
KILOBYTE = "KB",
|
|
46
|
+
MEGABYTE = "MB",
|
|
47
|
+
GIGABYTE = "GB",
|
|
48
|
+
TERABYTE = "TB"
|
|
49
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AgroObjectUtils } from "./agro-object-utils.class";
|
|
1
2
|
/**
|
|
2
3
|
* Classe com funções úteis para Arrays.
|
|
3
4
|
*/
|
|
@@ -41,6 +42,13 @@ export class AgroArrayUtils {
|
|
|
41
42
|
static isEmpty(array) {
|
|
42
43
|
return AgroArrayUtils.isArray(array) && array.length === 0;
|
|
43
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Verifica se um array é vazio.
|
|
47
|
+
* @param array Array a ser verificado.
|
|
48
|
+
*/
|
|
49
|
+
static isNotEmpty(array) {
|
|
50
|
+
return !AgroArrayUtils.isEmpty(array);
|
|
51
|
+
}
|
|
44
52
|
/**
|
|
45
53
|
* Localiza um item em um array de objetos de acordo com a propriedade e valor informados.
|
|
46
54
|
*/
|
|
@@ -52,5 +60,15 @@ export class AgroArrayUtils {
|
|
|
52
60
|
}
|
|
53
61
|
return null;
|
|
54
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Valida se dois arrays são iguais.
|
|
65
|
+
* Considera se os arrays possuem os mesmos elementos na mesma ordem.
|
|
66
|
+
* @param arr1
|
|
67
|
+
* @param arr2
|
|
68
|
+
* @returns
|
|
69
|
+
*/
|
|
70
|
+
static arraysAreEqual(arr1, arr2) {
|
|
71
|
+
return AgroObjectUtils.isEqual(arr1, arr2);
|
|
72
|
+
}
|
|
55
73
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1hcnJheS11dGlscy5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tbW9uL2Fncm8tYXJyYXktdXRpbHMuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFDdkI7O09BRUc7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQVU7UUFDNUIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFZLEVBQUUsSUFBUztRQUM1QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFZLEVBQUUsS0FBYTtRQUN2RCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFZO1FBQ3JDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFZO1FBQzlCLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFZO1FBQ2pDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFZLEVBQUUsUUFBZ0IsRUFBRSxLQUFVO1FBQ3ZFLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUssRUFBRTtnQkFDMUIsT0FBTyxJQUFJLENBQUM7YUFDZjtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBVyxFQUFFLElBQVc7UUFDbEQsT0FBTyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZ3JvT2JqZWN0VXRpbHMgfSBmcm9tIFwiLi9hZ3JvLW9iamVjdC11dGlscy5jbGFzc1wiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBjb20gZnVuw6fDtWVzIMO6dGVpcyBwYXJhIEFycmF5cy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBBZ3JvQXJyYXlVdGlscyB7XHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIG8gdmFsb3IgaW5mb3JtYWRvIMOpIHVtIGFycmF5LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzQXJyYXkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB1bSBpdGVtIGRlIHVtIGFycmF5LlxyXG4gICAgICogQHBhcmFtIGFycmF5IEFycmF5IGRlIG9uZGUgbyBpdGVtIHNlcsOhIHJlbW92aWRvLlxyXG4gICAgICogQHBhcmFtIGl0ZW0gSXRlbSBhIHNlciByZW1vdmlkby5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyByZW1vdmVJdGVtKGFycmF5OiBhbnlbXSwgaXRlbTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBhcnJheS5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgdW0gaXRlbSBkZSB1bSBhcnJheSBwb3Igw61uZGljZS5cclxuICAgICAqIEBwYXJhbSBhcnJheSBBcnJheSBkZSBvbmRlIG8gaXRlbSBzZXLDoSByZW1vdmlkby5cclxuICAgICAqIEBwYXJhbSBpbmRleCDDjW5kaWNlIGRvIGl0ZW0gYSBzZXIgcmVtb3ZpZG8uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlSXRlbUJ5SW5kZXgoYXJyYXk6IGFueVtdLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB0b2RvcyBvcyBpdGVucyBkZSB1bSBhcnJheS5cclxuICAgICAqIEBwYXJhbSBhcnJheSBBcnJheSBkZSBvbmRlIG9zIGl0ZW5zIHNlcsOjbyByZW1vdmlkb3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlQWxsSXRlbXMoYXJyYXk6IGFueVtdKTogdm9pZCB7XHJcbiAgICAgICAgYXJyYXkuc3BsaWNlKDAsIGFycmF5Lmxlbmd0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBhcnJheSDDqSB2YXppby5cclxuICAgICAqIEBwYXJhbSBhcnJheSBBcnJheSBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzRW1wdHkoYXJyYXk6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIEFncm9BcnJheVV0aWxzLmlzQXJyYXkoYXJyYXkpICYmIGFycmF5Lmxlbmd0aCA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIGFycmF5IMOpIHZhemlvLlxyXG4gICAgICogQHBhcmFtIGFycmF5IEFycmF5IGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNOb3RFbXB0eShhcnJheTogYW55W10pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIUFncm9BcnJheVV0aWxzLmlzRW1wdHkoYXJyYXkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9jYWxpemEgdW0gaXRlbSBlbSB1bSBhcnJheSBkZSBvYmpldG9zIGRlIGFjb3JkbyBjb20gYSBwcm9wcmllZGFkZSBlIHZhbG9yIGluZm9ybWFkb3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZmluZEl0ZW1CeVByb3BlcnR5KGFycmF5OiBhbnlbXSwgcHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSk6IGFueSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGFycmF5KSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtW3Byb3BlcnR5XSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhIHNlIGRvaXMgYXJyYXlzIHPDo28gaWd1YWlzLlxyXG4gICAgICogQ29uc2lkZXJhIHNlIG9zIGFycmF5cyBwb3NzdWVtIG9zIG1lc21vcyBlbGVtZW50b3MgbmEgbWVzbWEgb3JkZW0uXHJcbiAgICAgKiBAcGFyYW0gYXJyMVxyXG4gICAgICogQHBhcmFtIGFycjJcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgYXJyYXlzQXJlRXF1YWwoYXJyMTogYW55W10sIGFycjI6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICByZXR1cm4gQWdyb09iamVjdFV0aWxzLmlzRXF1YWwoYXJyMSwgYXJyMik7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -15,15 +15,14 @@ export class AgroLogics {
|
|
|
15
15
|
const parts = path.split(".");
|
|
16
16
|
let value = source;
|
|
17
17
|
for (const p of parts) {
|
|
18
|
-
if (value == null)
|
|
18
|
+
if (value == null)
|
|
19
19
|
return undefined;
|
|
20
|
-
}
|
|
21
20
|
value = value[p];
|
|
22
21
|
}
|
|
23
22
|
return value;
|
|
24
23
|
};
|
|
25
24
|
for (const item of data) {
|
|
26
|
-
const keyValues = keys.map(k => resolvePath(item, k));
|
|
25
|
+
const keyValues = keys.map((k) => resolvePath(item, k));
|
|
27
26
|
const uniqueKey = JSON.stringify(keyValues);
|
|
28
27
|
if (!map.has(uniqueKey)) {
|
|
29
28
|
const groupedData = {};
|
|
@@ -36,13 +35,19 @@ export class AgroLogics {
|
|
|
36
35
|
const entry = map.get(uniqueKey);
|
|
37
36
|
entry.count += AGRO_NUMBERS.ONE;
|
|
38
37
|
}
|
|
39
|
-
const result = Array.from(map.values()).map(entry => ({
|
|
38
|
+
const result = Array.from(map.values()).map((entry) => ({
|
|
40
39
|
data: entry.data,
|
|
41
40
|
samplingQuantity: entry.count,
|
|
42
|
-
samplingSuccess: Math.round((entry.count / total) *
|
|
41
|
+
samplingSuccess: Math.round((entry.count / total) * this.PERCENT),
|
|
43
42
|
}));
|
|
44
43
|
result.sort((a, b) => b.samplingSuccess - a.samplingSuccess);
|
|
45
44
|
return result;
|
|
46
45
|
}
|
|
47
46
|
}
|
|
48
|
-
|
|
47
|
+
// 🔹 Constantes locais
|
|
48
|
+
AgroLogics.FAHRENHEIT_OFFSET = 32;
|
|
49
|
+
AgroLogics.FAHRENHEIT_NUMERATOR = 9;
|
|
50
|
+
AgroLogics.FAHRENHEIT_DENOMINATOR = 5;
|
|
51
|
+
AgroLogics.KELVIN_OFFSET = 273.15;
|
|
52
|
+
AgroLogics.PERCENT = 100;
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1sb2dpY3MuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLWxvZ2ljcy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBU3hDLE1BQU0sT0FBTyxVQUFVO0lBUW5COzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsdUJBQXVCLENBQXNCLElBQVMsRUFBRSxJQUEwQjtRQUNyRixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUErQyxDQUFDO1FBRW5FLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBVyxFQUFFLElBQVksRUFBTyxFQUFFO1lBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUIsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDO1lBQ25CLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFO2dCQUNuQixJQUFJLEtBQUssSUFBSSxJQUFJO29CQUFFLE9BQU8sU0FBUyxDQUFDO2dCQUNwQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3BCO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDO1FBRUYsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDckIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFNUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3JCLE1BQU0sV0FBVyxHQUFlLEVBQUUsQ0FBQztnQkFDbkMsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUU7b0JBQ2xCLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzNDLFdBQW1CLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFXLENBQUMsQ0FBQztpQkFDbkU7Z0JBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZEO1lBQ0QsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUUsQ0FBQztZQUNsQyxLQUFLLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUM7U0FDbkM7UUFFRCxNQUFNLE1BQU0sR0FBNEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0UsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQzdCLGVBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQ3BFLENBQUMsQ0FBQyxDQUFDO1FBRUosTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTdELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7O0FBdERELHVCQUF1QjtBQUNDLDRCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUN2QiwrQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFDekIsaUNBQXNCLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLHdCQUFhLEdBQUcsTUFBTSxDQUFDO0FBQ3ZCLGtCQUFPLEdBQUcsR0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQUdST19OVU1CRVJTIH0gZnJvbSBcIi4uL2VudW1zXCI7XHJcbnR5cGUgQW55UmVjb3JkID0gUmVjb3JkPHN0cmluZywgYW55PjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlzdHJpYnV0aW9uUmVzdWx0PFQ+IHtcclxuICAgIGRhdGE6IFBhcnRpYWw8VD47XHJcbiAgICBzYW1wbGluZ1N1Y2Nlc3M6IG51bWJlcjsgLy8gcGVyY2VudGFnZSBvZiB0b3RhbFxyXG4gICAgc2FtcGxpbmdRdWFudGl0eTogbnVtYmVyOyAvLyBhYnNvbHV0ZSBjb3VudFxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQWdyb0xvZ2ljcyB7XHJcbiAgICAvLyDwn5S5IENvbnN0YW50ZXMgbG9jYWlzXHJcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBGQUhSRU5IRUlUX09GRlNFVCA9IDMyO1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRkFIUkVOSEVJVF9OVU1FUkFUT1IgPSA5O1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRkFIUkVOSEVJVF9ERU5PTUlOQVRPUiA9IDU7XHJcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBLRUxWSU5fT0ZGU0VUID0gMjczLjE1O1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUEVSQ0VOVCA9IDEwMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFncnVwYSBvIGNvbmp1bnRvIGRlIGRhZG9zIHBlbG9zIGNhbXBvcyBkZSBlbnRpZGFkZSBmb3JuZWNpZG9zIGUgY2FsY3VsYVxyXG4gICAgICogYSBkaXN0cmlidWnDp8OjbyBkZSBwcm9iYWJpbGlkYWRlIChmcmVxdcOqbmNpYSBlIHBvcmNlbnRhZ2VtKS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZGF0YSAtIEFycmF5IGRlIG9iamV0b3MgYSBzZXJlbSBhbmFsaXNhZG9zXHJcbiAgICAgKiBAcGFyYW0ga2V5cyAtIENoYXZlcyBvdSBjYW1pbmhvcyBhbmluaGFkb3MgcGFyYSBhZ3J1cGFyIChleDogW1wiZW50aXR5MVwiLCBcImVudGl0eTJcIl0pXHJcbiAgICAgKiBAcmV0dXJucyBBcnJheSBkZSBlc3RhdMOtc3RpY2FzIGFncnVwYWRhcyBvcmRlbmFkYXMgcG9yIHNhbXBsaW5nU3VjY2VzcyAoZGVjcmVzY2VudGUpXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBlbnRpdHlEaXN0cmlidXRpb25TdGF0czxUIGV4dGVuZHMgQW55UmVjb3JkPihkYXRhOiBUW10sIGtleXM6IChrZXlvZiBUIHwgc3RyaW5nKVtdKTogRGlzdHJpYnV0aW9uUmVzdWx0PFQ+W10ge1xyXG4gICAgICAgIGNvbnN0IHRvdGFsID0gZGF0YS5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIHsgZGF0YTogUGFydGlhbDxUPjsgY291bnQ6IG51bWJlciB9PigpO1xyXG5cclxuICAgICAgICBjb25zdCByZXNvbHZlUGF0aCA9IChzb3VyY2U6IGFueSwgcGF0aDogc3RyaW5nKTogYW55ID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KFwiLlwiKTtcclxuICAgICAgICAgICAgbGV0IHZhbHVlID0gc291cmNlO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHAgb2YgcGFydHMpIHtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVtwXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGEpIHtcclxuICAgICAgICAgICAgY29uc3Qga2V5VmFsdWVzID0ga2V5cy5tYXAoKGspID0+IHJlc29sdmVQYXRoKGl0ZW0sIGsgYXMgc3RyaW5nKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHVuaXF1ZUtleSA9IEpTT04uc3RyaW5naWZ5KGtleVZhbHVlcyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIW1hcC5oYXModW5pcXVlS2V5KSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBlZERhdGE6IFBhcnRpYWw8VD4gPSB7fTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm9vdE5hbWUgPSBrLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIChncm91cGVkRGF0YSBhcyBhbnkpW3Jvb3ROYW1lXSA9IHJlc29sdmVQYXRoKGl0ZW0sIGsgYXMgc3RyaW5nKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1hcC5zZXQodW5pcXVlS2V5LCB7IGRhdGE6IGdyb3VwZWREYXRhLCBjb3VudDogMCB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IG1hcC5nZXQodW5pcXVlS2V5KSE7XHJcbiAgICAgICAgICAgIGVudHJ5LmNvdW50ICs9IEFHUk9fTlVNQkVSUy5PTkU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCByZXN1bHQ6IERpc3RyaWJ1dGlvblJlc3VsdDxUPltdID0gQXJyYXkuZnJvbShtYXAudmFsdWVzKCkpLm1hcCgoZW50cnkpID0+ICh7XHJcbiAgICAgICAgICAgIGRhdGE6IGVudHJ5LmRhdGEsXHJcbiAgICAgICAgICAgIHNhbXBsaW5nUXVhbnRpdHk6IGVudHJ5LmNvdW50LFxyXG4gICAgICAgICAgICBzYW1wbGluZ1N1Y2Nlc3M6IE1hdGgucm91bmQoKGVudHJ5LmNvdW50IC8gdG90YWwpICogdGhpcy5QRVJDRU5UKSxcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIHJlc3VsdC5zb3J0KChhLCBiKSA9PiBiLnNhbXBsaW5nU3VjY2VzcyAtIGEuc2FtcGxpbmdTdWNjZXNzKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -108,5 +108,22 @@ export class AgroNumberUtils {
|
|
|
108
108
|
const factor = Math.pow(AGRO_NUMBERS.TEN, decimals);
|
|
109
109
|
return Math.round(value * factor) / factor;
|
|
110
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Pega apenas números, convertendo strings para números e retornarndo apenas o maior inteiro encontrado.
|
|
113
|
+
* @param value - O valor a ser processado.
|
|
114
|
+
* @returns O maior número inteiro encontrado ou 0 se nenhum número for encontrado.
|
|
115
|
+
*/
|
|
116
|
+
static getNearInteger(value) {
|
|
117
|
+
if (typeof value === "number") {
|
|
118
|
+
return Math.floor(value);
|
|
119
|
+
}
|
|
120
|
+
if (typeof value === "string") {
|
|
121
|
+
const numbers = value.match(/\d+/g);
|
|
122
|
+
if (numbers && numbers.length > 0) {
|
|
123
|
+
return Math.max(...numbers.map(Number));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
111
128
|
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1udW1iZXItdXRpbHMuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLW51bWJlci11dGlscy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEMsTUFBTSxPQUFPLGVBQWU7SUFDeEI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFRO1FBQzdCLE9BQU8sR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEdBQVE7UUFDaEMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWE7UUFDM0IsT0FBTyxLQUFLLEdBQUcsWUFBWSxDQUFDLEdBQUcsS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBYTtRQUMxQixPQUFPLEtBQUssR0FBRyxZQUFZLENBQUMsR0FBRyxLQUFLLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBZSxFQUFFLEtBQWE7UUFDNUMsSUFBSSxLQUFLLEtBQUssWUFBWSxDQUFDLElBQUksRUFBRTtZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDakQ7UUFDTCxPQUFPLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWEsRUFBRSxXQUFtQixLQUFLLEVBQUUsU0FBaUIsT0FBTztRQUMvRSxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDakMsS0FBSyxFQUFFLFVBQVU7WUFDakIsUUFBUSxFQUFFLFFBQVE7U0FDckIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFXLEVBQUUsR0FBVztRQUN6QyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7U0FDbEU7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFhO1FBQ3hCLElBQUksS0FBSyxJQUFJLFlBQVksQ0FBQyxHQUFHLEVBQUU7WUFDM0IsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxLQUFLLFlBQVksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2pDLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFhLEVBQUUsV0FBbUIsWUFBWSxDQUFDLEdBQUc7UUFDN0QsSUFBSSxRQUFRLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRTtZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7U0FDeEU7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDL0MsQ0FBQztJQUdEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQVU7UUFDNUIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDM0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO1FBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDM0IsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDL0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQzNDO1NBQ0o7UUFFRCxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBDbGFzc2UgZGUgdXRpbGl0w6FyaW9zIHBhcmEgb3BlcmHDp8O1ZXMgY29tIG7Dum1lcm9zLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEFHUk9fTlVNQkVSUyB9IGZyb20gXCIuLi9lbnVtc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFncm9OdW1iZXJVdGlscyB7XHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG7Dum1lcm8gw6kgbnVsbyBvdSBpbmRlZmluaWRvLlxyXG4gICAgICogQHBhcmFtIG51bSAtIE8gbsO6bWVybyBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG7Dum1lcm8gZm9yIG51bG8gb3UgaW5kZWZpbmlkbywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNOdWxsT3JVbmRlZmluZWQobnVtOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gbnVtID09PSBudWxsIHx8IG51bSA9PT0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gbsO6bWVybyBuw6NvIMOpIG51bG8gZSBuw6NvIMOpIGluZGVmaW5pZG8uXHJcbiAgICAgKiBAcGFyYW0gbnVtIC0gTyBuw7ptZXJvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gbsO6bWVybyBuw6NvIGZvciBudWxvIGUgbsOjbyBmb3IgaW5kZWZpbmlkbywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNOb3ROdWxsT3JVbmRlZmluZWQobnVtOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIUFncm9OdW1iZXJVdGlscy5pc051bGxPclVuZGVmaW5lZChudW0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gbsO6bWVybyDDqSBwYXIuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHZhbHVlIE8gbsO6bWVybyBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBmb3IgcGFyLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0V2ZW4odmFsdWU6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlICUgQUdST19OVU1CRVJTLlRXTyA9PT0gQUdST19OVU1CRVJTLlpFUk87XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBuw7ptZXJvIMOpIMOtbXBhci5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgTyBuw7ptZXJvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIGZvciDDrW1wYXIsIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzT2RkKHZhbHVlOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB2YWx1ZSAlIEFHUk9fTlVNQkVSUy5UV08gIT09IEFHUk9fTlVNQkVSUy5aRVJPO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYSBhIHBvcmNlbnRhZ2VtIGRlIHVtIHZhbG9yIGVtIHJlbGHDp8OjbyBhIHVtIHRvdGFsLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwYXJ0aWFsIE8gdmFsb3IgcGFyY2lhbC5cclxuICAgICAqIEBwYXJhbSB0b3RhbCBPIHZhbG9yIHRvdGFsLlxyXG4gICAgICogQHJldHVybnMgQSBwb3JjZW50YWdlbSBjYWxjdWxhZGEuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBwZXJjZW50YWdlKHBhcnRpYWw6IG51bWJlciwgdG90YWw6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKHRvdGFsID09PSBBR1JPX05VTUJFUlMuWkVSTykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJPIHRvdGFsIG7Do28gcG9kZSBzZXIgemVyby5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIChwYXJ0aWFsIC8gdG90YWwpICogQUdST19OVU1CRVJTLk9ORV9IVU5EUkVEO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9ybWF0YSB1bSBuw7ptZXJvIHBhcmEgbyBmb3JtYXRvIG1vbmV0w6FyaW8uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHZhbHVlIE8gbsO6bWVybyBhIHNlciBmb3JtYXRhZG8uXHJcbiAgICAgKiBAcGFyYW0gY3VycmVuY3kgTyBzw61tYm9sbyBkYSBtb2VkYSAocGFkcsOjbzogXCJCUkxcIikuXHJcbiAgICAgKiBAcGFyYW0gbG9jYWxlIE8gY8OzZGlnbyBkYSBsb2NhbGlkYWRlIChwYWRyw6NvOiBcInB0LUJSXCIpLlxyXG4gICAgICogQHJldHVybnMgVW1hIHN0cmluZyBubyBmb3JtYXRvIG1vbmV0w6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyB0b0N1cnJlbmN5KHZhbHVlOiBudW1iZXIsIGN1cnJlbmN5OiBzdHJpbmcgPSBcIkJSTFwiLCBsb2NhbGU6IHN0cmluZyA9IFwicHQtQlJcIik6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcclxuICAgICAgICAgICAgc3R5bGU6IFwiY3VycmVuY3lcIixcclxuICAgICAgICAgICAgY3VycmVuY3k6IGN1cnJlbmN5LFxyXG4gICAgICAgIH0pLmZvcm1hdCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXJhIHVtIG7Dum1lcm8gYWxlYXTDs3JpbyBubyBpbnRlcnZhbG8gZXNwZWNpZmljYWRvLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBtaW4gTyB2YWxvciBtw61uaW1vIChpbmNsdXNpdm8pLlxyXG4gICAgICogQHBhcmFtIG1heCBPIHZhbG9yIG3DoXhpbW8gKGV4Y2x1c2l2bykuXHJcbiAgICAgKiBAcmV0dXJucyBVbSBuw7ptZXJvIGFsZWF0w7NyaW8gbm8gaW50ZXJ2YWxvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcmFuZG9tSW5SYW5nZShtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgIGlmIChtYXggPD0gbWluKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk8gdmFsb3IgbcOheGltbyBkZXZlIHNlciBtYWlvciBxdWUgbyBtw61uaW1vLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSArIG1pbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG7Dum1lcm8gw6kgcHJpbW8uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHZhbHVlIE8gbsO6bWVybyBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBmb3IgcHJpbW8sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzUHJpbWUodmFsdWU6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSA8PSBBR1JPX05VTUJFUlMuT05FKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IEFHUk9fTlVNQkVSUy5UV087IGkgPD0gTWF0aC5zcXJ0KHZhbHVlKTsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSAlIGkgPT09IEFHUk9fTlVNQkVSUy5aRVJPKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBcnJlZG9uZGEgdW0gbsO6bWVybyBwYXJhIGBuYCBjYXNhcyBkZWNpbWFpcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgTyBuw7ptZXJvIGEgc2VyIGFycmVkb25kYWRvLlxyXG4gICAgICogQHBhcmFtIGRlY2ltYWxzIE8gbsO6bWVybyBkZSBjYXNhcyBkZWNpbWFpcyAocGFkcsOjbzogMikuXHJcbiAgICAgKiBAcmV0dXJucyBPIG7Dum1lcm8gYXJyZWRvbmRhZG8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyByb3VuZFRvKHZhbHVlOiBudW1iZXIsIGRlY2ltYWxzOiBudW1iZXIgPSBBR1JPX05VTUJFUlMuVFdPKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoZGVjaW1hbHMgPCBBR1JPX05VTUJFUlMuWkVSTykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJPIG7Dum1lcm8gZGUgY2FzYXMgZGVjaW1haXMgbsOjbyBwb2RlIHNlciBuZWdhdGl2by5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGZhY3RvciA9IE1hdGgucG93KEFHUk9fTlVNQkVSUy5URU4sIGRlY2ltYWxzKTtcclxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIGZhY3RvcikgLyBmYWN0b3I7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGVnYSBhcGVuYXMgbsO6bWVyb3MsIGNvbnZlcnRlbmRvIHN0cmluZ3MgcGFyYSBuw7ptZXJvcyBlIHJldG9ybmFybmRvIGFwZW5hcyBvIG1haW9yIGludGVpcm8gZW5jb250cmFkby5cclxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIE8gdmFsb3IgYSBzZXIgcHJvY2Vzc2Fkby5cclxuICAgICAqIEByZXR1cm5zIE8gbWFpb3IgbsO6bWVybyBpbnRlaXJvIGVuY29udHJhZG8gb3UgMCBzZSBuZW5odW0gbsO6bWVybyBmb3IgZW5jb250cmFkby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGdldE5lYXJJbnRlZ2VyKHZhbHVlOiBhbnkpOiBudW1iZXIge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodmFsdWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICBjb25zdCBudW1iZXJzID0gdmFsdWUubWF0Y2goL1xcZCsvZyk7XHJcbiAgICAgICAgICAgIGlmIChudW1iZXJzICYmIG51bWJlcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KC4uLm51bWJlcnMubWFwKE51bWJlcikpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -11,6 +11,9 @@ export class AgroObjectStringifier {
|
|
|
11
11
|
function mapField(field) {
|
|
12
12
|
const value = AgroObjectStringifier.resolvePath(obj, field);
|
|
13
13
|
if (usePipes === null || usePipes === void 0 ? void 0 : usePipes.hasOwnProperty(field)) {
|
|
14
|
+
if (AgroStringUtils.isString(usePipes[field])) {
|
|
15
|
+
return usePipes[field].toString();
|
|
16
|
+
}
|
|
14
17
|
return usePipes[field].transform(value);
|
|
15
18
|
}
|
|
16
19
|
return value !== null && value !== void 0 ? value : "";
|
|
@@ -28,4 +31,4 @@ export class AgroObjectStringifier {
|
|
|
28
31
|
return path.split(".").reduce(reducer, obj);
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1vYmplY3Qtc3RyaW5naWZpZXIuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLW9iamVjdC1zdHJpbmdpZmllci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFNNUQsTUFBTSxPQUFPLHFCQUFxQjtJQUM5Qjs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQWlCLEVBQUUsTUFBZ0IsRUFBRSxHQUFRLEVBQUUsUUFBbUI7UUFDbEYsU0FBUyxRQUFRLENBQUMsS0FBYTtZQUMzQixNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVELElBQUksUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLGNBQWMsQ0FBQyxLQUFLLEdBQUc7Z0JBRWpDLElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtvQkFDM0MsT0FBUSxRQUFRLENBQUMsS0FBSyxDQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ2pEO2dCQUNELE9BQVEsUUFBUSxDQUFDLEtBQUssQ0FBbUIsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7YUFFOUQ7WUFDRCxPQUFPLEtBQUssYUFBTCxLQUFLLGNBQUwsS0FBSyxHQUFJLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBRUQsU0FBUyxXQUFXLENBQUMsQ0FBa0I7WUFDbkMsT0FBTyxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxrRUFBa0U7SUFDMUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFRLEVBQUUsSUFBWTtRQUM3QyxTQUFTLE9BQU8sQ0FBQyxHQUFRLEVBQUUsR0FBVztZQUNsQyxPQUFPLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRyxHQUFHLEVBQUU7UUFDdEIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGVUcmFuc2Zvcm0gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBZ3JvU3RyaW5nVXRpbHMgfSBmcm9tIFwiLi9hZ3JvLXN0cmluZy11dGlscy5jbGFzc1wiO1xyXG5cclxuZXhwb3J0IHR5cGUgVXNlUGlwZXMgPSB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBQaXBlVHJhbnNmb3JtIHwgc3RyaW5nO1xyXG59O1xyXG5cclxuZXhwb3J0IGNsYXNzIEFncm9PYmplY3RTdHJpbmdpZmllciB7XHJcbiAgICAvKipcclxuICAgICAqIEZvcm1hdGEgdW0gb2JqZXRvIGNvbmNhdGVuYW5kbyB2YWxvcmVzIHNlZ3VuZG8gYXMgY2hhdmVzIGUgcGlwZXMgaW5mb3JtYWRvcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gc2VwYXJhdG9yIFNlcGFyYWRvciBlbnRyZSBvcyB2YWxvcmVzIChleDogXCItXCIpXHJcbiAgICAgKiBAcGFyYW0gZmllbGRzIENhbXBvcyBhIGV4dHJhaXIuIFBvZGVtIGNvbnRlciBzdWJwcm9wcmllZGFkZXMgKFwicHJvcHJpZWRhZGUuc3ViUHJvcHJpZWRhZGVcIikgZSBwaXBlcyAoXCJwcm9wcmllZGFkZXxub21lRGFQaXBlOmFyZzE6YXJnMlwiKVxyXG4gICAgICogQHBhcmFtIG9iaiBPYmpldG8gb3JpZ2VtXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBmb3JtYXRPYmplY3Qoc2VwYXJhdG9yOiBzdHJpbmcsIGZpZWxkczogc3RyaW5nW10sIG9iajogYW55LCB1c2VQaXBlcz86IFVzZVBpcGVzKTogc3RyaW5nIHtcclxuICAgICAgICBmdW5jdGlvbiBtYXBGaWVsZChmaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBBZ3JvT2JqZWN0U3RyaW5naWZpZXIucmVzb2x2ZVBhdGgob2JqLCBmaWVsZCk7XHJcbiAgICAgICAgICAgIGlmICh1c2VQaXBlcz8uaGFzT3duUHJvcGVydHkoZmllbGQpKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKEFncm9TdHJpbmdVdGlscy5pc1N0cmluZyh1c2VQaXBlc1tmaWVsZF0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh1c2VQaXBlc1tmaWVsZF0gYXMgc3RyaW5nKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICh1c2VQaXBlc1tmaWVsZF0gYXMgUGlwZVRyYW5zZm9ybSkudHJhbnNmb3JtKHZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID8/IFwiXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmdW5jdGlvbiBmaWx0ZXJWYWxpZCh2OiBzdHJpbmcgfCBudW1iZXIpOiBib29sZWFuIHtcclxuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiB2ID09PSBcIm51bWJlclwiIHx8IEFncm9TdHJpbmdVdGlscy5pc1ZhbGlkKHYpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZpZWxkcy5tYXAobWFwRmllbGQpLmZpbHRlcihmaWx0ZXJWYWxpZCkuam9pbihgICR7c2VwYXJhdG9yfSBgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUmVzb2x2ZSB1bSBjYW1pbmhvIHRpcG8gXCJlbXByZXNhLmNhcmdvXCIgZGVudHJvIGRlIHVtIG9iamV0byAqL1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVzb2x2ZVBhdGgob2JqOiBhbnksIHBhdGg6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgZnVuY3Rpb24gcmVkdWNlcihhY2M6IGFueSwga2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgICAgICAgICByZXR1cm4gYWNjPy5ba2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBhdGguc3BsaXQoXCIuXCIpLnJlZHVjZShyZWR1Y2VyLCBvYmopO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -117,6 +117,20 @@ export class AgroObjectUtils {
|
|
|
117
117
|
}
|
|
118
118
|
return true;
|
|
119
119
|
}
|
|
120
|
+
static compareArrays(arr1, arr2) {
|
|
121
|
+
if (arr1.length !== arr2.length) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
return arr1.every((v, i) => AgroObjectUtils.isEqual(v, arr2[i]));
|
|
125
|
+
}
|
|
126
|
+
static compareObjects(obj1, obj2) {
|
|
127
|
+
const keys1 = Object.keys(obj1);
|
|
128
|
+
const keys2 = Object.keys(obj2);
|
|
129
|
+
if (keys1.length !== keys2.length) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
return keys1.every((key) => obj2.hasOwnProperty(key) && AgroObjectUtils.isEqual(obj1[key], obj2[key]));
|
|
133
|
+
}
|
|
120
134
|
/**
|
|
121
135
|
* Compara dois objetos para verificar se são iguais.
|
|
122
136
|
* @param obj1 - O primeiro objeto a ser comparado.
|
|
@@ -124,7 +138,19 @@ export class AgroObjectUtils {
|
|
|
124
138
|
* @returns True se os objetos forem iguais, false caso contrário.
|
|
125
139
|
*/
|
|
126
140
|
static isEqual(obj1, obj2) {
|
|
127
|
-
|
|
141
|
+
if (obj1 === obj2) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
if (obj1 === null || obj2 === null || typeof obj1 !== "object" || typeof obj2 !== "object") {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
if (Array.isArray(obj1) && Array.isArray(obj2)) {
|
|
148
|
+
return this.compareArrays(obj1, obj2);
|
|
149
|
+
}
|
|
150
|
+
if (Array.isArray(obj1) || Array.isArray(obj2)) {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
return this.compareObjects(obj1, obj2);
|
|
128
154
|
}
|
|
129
155
|
/**
|
|
130
156
|
* Verifica se um objeto é nulo.
|
|
@@ -272,4 +298,4 @@ export class AgroObjectUtils {
|
|
|
272
298
|
}
|
|
273
299
|
}
|
|
274
300
|
}
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1vYmplY3QtdXRpbHMuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLW9iamVjdC11dGlscy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV4QyxPQUFPLEVBQUUsZUFBZSxJQUFJLEdBQUcsRUFBRSxlQUFlLElBQUksV0FBVyxFQUFFLENBQUM7QUFHbEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUN4Qjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQVE7UUFDN0IsT0FBTyxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsb0JBQW9CLENBQUMsR0FBUTtRQUNoQyxPQUFPLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFRO1FBQ3BCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFRO1FBQ3BCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFRO1FBQ3JCLE9BQU8sT0FBTyxHQUFHLEtBQUssU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFRO1FBQ3RCLE9BQU8sT0FBTyxHQUFHLEtBQUssVUFBVSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFRO1FBQ25CLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBUTtRQUNwQixPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBUTtRQUNsQixPQUFPLEdBQUcsWUFBWSxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQVE7UUFDbkIsT0FBTyxHQUFHLFlBQVksS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFRO1FBQ3BCLE9BQU8sR0FBRyxZQUFZLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBUTtRQUN2QixPQUFPLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFRO1FBQ25CLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDbkIsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUN6RSxPQUFPLEtBQUssQ0FBQzthQUNoQjtTQUNKO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFTLEVBQUUsSUFBUztRQUNuQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBUTtRQUNsQixPQUFPLEdBQUcsS0FBSyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQVE7UUFDckIsT0FBTyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQVE7UUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFRO1FBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0wsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFRO1FBQ25CLE9BQU8sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFRLEVBQUUsUUFBZ0I7UUFDOUMsT0FBTyxlQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFRO1FBQ2pCLE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFRO1FBQ3ZCLE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFRO1FBQ3ZCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLElBQUksSUFBSSxlQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBUTtRQUNyQixPQUFPLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQXdCLEVBQUUsR0FBVyxFQUFFLGFBQXNCLElBQUk7UUFDakYsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztTQUMvRDtRQUVELElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRTtZQUNaLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25CO1FBRUQsSUFBSSxVQUFVLEVBQUU7WUFDWixLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRTtnQkFDcEIsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsRUFBRTtvQkFDM0QsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO29CQUN4RSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUU7d0JBQ3RCLE9BQU8sTUFBTSxDQUFDO3FCQUNqQjtpQkFDSjthQUNKO1NBQ0o7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFhO1FBQzNCLElBQUk7WUFDQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUdEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMscUJBQXFCLENBQUMsR0FBUSxFQUFFLElBQVMsRUFBRSxJQUFlO1FBQzdELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBVyxFQUFFLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BILElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDSixPQUFPLEVBQUUsQ0FBQztTQUNiO1FBQ0QsSUFBSSxJQUFJLEtBQUssU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUMzQixPQUFPLENBQUMsQ0FBQztTQUNaO2FBQU0sSUFBSSxJQUFJLEtBQUssU0FBUyxDQUFDLElBQUksRUFBRTtZQUNoQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2hDO2FBQU0sSUFBSSxJQUFJLEtBQUssU0FBUyxDQUFDLEtBQUssRUFBRTtZQUNqQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNwRjthQUFNO1lBQ0gsT0FBTyxDQUFDLENBQUM7U0FDWjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XHJcbmltcG9ydCB7IEFHUk9fTlVNQkVSUyB9IGZyb20gXCIuLi9lbnVtc1wiO1xyXG5cclxuZXhwb3J0IHsgQWdyb09iamVjdFV0aWxzIGFzIEFPVSwgQWdyb09iamVjdFV0aWxzIGFzIE9iamVjdFV0aWxzIH07XHJcblxyXG5cclxuLyoqXHJcbiAqIENsYXNzZSB1dGlsaXTDoXJpYSBwYXJhIG9wZXJhw6fDtWVzIGRlIG9iamV0by5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBBZ3JvT2JqZWN0VXRpbHMge1xyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgbnVsbyBvdSBpbmRlZmluaWRvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciBudWxvIG91IGluZGVmaW5pZG8sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzTnVsbE9yVW5kZWZpbmVkKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byBuw6NvIMOpIG51bG8gZSBuw6NvIMOpIGluZGVmaW5pZG8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gbsOjbyBmb3IgbnVsbyBlIG7Do28gZm9yIGluZGVmaW5pZG8sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzTm90TnVsbE9yVW5kZWZpbmVkKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICFBZ3JvT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB1bWEgc3RyaW5nLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB1bWEgc3RyaW5nLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc1N0cmluZyhvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHVtIG7Dum1lcm8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIHVtIG7Dum1lcm8sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzTnVtYmVyKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwibnVtYmVyXCI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgdW0gYm9vbGVhbm8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIHVtIGJvb2xlYW5vLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0Jvb2xlYW4ob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJib29sZWFuXCI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgdW1hIGZ1bsOnw6NvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB1bWEgZnVuw6fDo28sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzRnVuY3Rpb24ob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJmdW5jdGlvblwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHVtIGFycmF5LlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB1bSBhcnJheSwgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNBcnJheShvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSBvIHZhbG9yIGluZm9ybWFkbyDDqSB1bSBvYmpldG8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIHVtIG9iamV0bywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNPYmplY3Qob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB1bWEgZGF0YS5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgdW1hIGRhdGEsIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzRGF0ZShvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBEYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHVtIGVycm8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIHVtIGVycm8sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzRXJyb3Iob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRXJyb3I7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgdW1hIGV4cHJlc3PDo28gcmVndWxhci5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgdW1hIGV4cHJlc3PDo28gcmVndWxhciwgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNSZWdFeHAob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgUmVnRXhwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHVtIHZhbG9yIHByaW1pdGl2by5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgdW0gdmFsb3IgcHJpbWl0aXZvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc1ByaW1pdGl2ZShvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBZ3JvT2JqZWN0VXRpbHMuaXNTdHJpbmcob2JqKSB8fCBBZ3JvT2JqZWN0VXRpbHMuaXNOdW1iZXIob2JqKSB8fCBBZ3JvT2JqZWN0VXRpbHMuaXNCb29sZWFuKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB0b2RvcyBvcyB2YWxvcmVzIGRlIHVtIG9iamV0byBzw6NvIG51bG9zIG91IGluZGVmaW5pZG9zLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIHRvZG9zIG9zIHZhbG9yZXMgZG8gb2JqZXRvIGZvcmVtIG51bG9zIG91IGluZGVmaW5pZG9zLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBhbGxOdWxsKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFBZ3JvT2JqZWN0VXRpbHMuaXNPYmplY3Qob2JqKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcclxuICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpICYmICFBZ3JvT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQob2JqW2tleV0pKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29tcGFyYSBkb2lzIG9iamV0b3MgcGFyYSB2ZXJpZmljYXIgc2Ugc8OjbyBpZ3VhaXMuXHJcbiAgICAgKiBAcGFyYW0gb2JqMSAtIE8gcHJpbWVpcm8gb2JqZXRvIGEgc2VyIGNvbXBhcmFkby5cclxuICAgICAqIEBwYXJhbSBvYmoyIC0gTyBzZWd1bmRvIG9iamV0byBhIHNlciBjb21wYXJhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG9zIG9iamV0b3MgZm9yZW0gaWd1YWlzLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0VxdWFsKG9iajE6IGFueSwgb2JqMjogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqMSkgPT09IEpTT04uc3RyaW5naWZ5KG9iajIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIG51bG8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIG51bG8gb3UgdW0gb2JqZXRvIHZhemlvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc051bGwob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gb2JqID09PSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIG7Do28gw6kgbnVsby5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBuw6NvIGZvciBudWxvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc05vdE51bGwob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIUFncm9PYmplY3RVdGlscy5pc051bGwob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnZlcnRlIHVtIG9iamV0byBwYXJhIHVtYSBzdHJpbmcgSlNPTi5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciBjb252ZXJ0aWRvLlxyXG4gICAgICogQHJldHVybnMgQSBzdHJpbmcgSlNPTiByZXByZXNlbnRhbmRvIG8gb2JqZXRvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgdG9KU09OKG9iajogYW55KTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byBuw6NvIMOpIHZhemlvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIG7Do28gZm9yIHZhemlvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc05vdEVtcHR5KG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFBZ3JvT2JqZWN0VXRpbHMuaXNPYmplY3Qob2JqKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoICE9PSBBR1JPX05VTUJFUlMuWkVSTztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB2YXppby5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgdmF6aW8sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzRW1wdHkob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIUFncm9PYmplY3RVdGlscy5pc05vdEVtcHR5KG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gbsOjbyBlc3TDoSB2YXppbyBlIGNvbnTDqW0gdW1hIGRldGVybWluYWRhIHByb3ByaWVkYWRlLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgLSBBIHByb3ByaWVkYWRlIGEgc2VyIHZlcmlmaWNhZGEuXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIG7Do28gZXN0aXZlciB2YXppbyBlIGNvbnRpdmVyIGEgcHJvcHJpZWRhZGUsIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNvbnRhaW5zUHJvcGVydHkob2JqOiBhbnksIHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gQWdyb09iamVjdFV0aWxzLmlzTm90RW1wdHkob2JqKSAmJiBvYmouaGFzT3duUHJvcGVydHkocHJvcGVydHkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgbyBwYXLDom1ldHJvIHJlY2ViaWRvIMOpIHVtIG9iamV0byBlIHNlIGVsZSBjb250w6ltIGEgcHJvcHJpZWRhZGUgSUQuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBoYXNJZChvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBZ3JvT2JqZWN0VXRpbHMuaXNOb3RFbXB0eShvYmopICYmIG9iai5oYXNPd25Qcm9wZXJ0eShcImlkXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgbyB2YWxvciBpbmZvcm1hZG8gbm8gcGFyw6JtZXRybyBwb3NzdWkgYXMgcHJvcHJpZWRhZGVzIGRlIHVtYSBlbnRpZGFkZSBTREwgKGlkIGUgY3JlYXRlZEF0KS5cclxuICAgICAqIEBwYXJhbSBvYmpcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc1NETEVudGl0eShvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBZ3JvT2JqZWN0VXRpbHMuaXNOb3RFbXB0eShvYmopICYmIG9iai5oYXNPd25Qcm9wZXJ0eShcImlkXCIpICYmIG9iai5oYXNPd25Qcm9wZXJ0eShcImNyZWF0ZWRBdFwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB2YWxpZG8sIGNvbnNpZGVyYW5kbyBxdWUgaGFqYSBubyBtw61uaW1vIDEgcHJvcHJpZWRhZGVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzVmFsaWQob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA+IEFHUk9fTlVNQkVSUy5aRVJPICYmIEFncm9PYmplY3RVdGlscy5pc05vdEVtcHR5KG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgaW52w6FsaWRvLCBjb25zaWRlcmFuZG8gcXVlIG7Do28gaGFqYSBuZW5odW1hIHByb3ByaWVkYWRlXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0ludmFsaWQob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIUFncm9PYmplY3RVdGlscy5pc1ZhbGlkKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmNvbnRyYSB1bWEgcHJvcHJpZWRhZGUgZW0gdW0gb2JqZXRvIHBlbG8gbm9tZSBlIHJldG9ybmEgc2V1IHZhbG9yLlxyXG4gICAgICogU2UgbyB2YWxvciBmb3IgdW0gb2JqZXRvLCByZXRvcm5hIG8gcHLDs3ByaW8gb2JqZXRvLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvYmogTyBvYmpldG8gb25kZSBidXNjYXIuXHJcbiAgICAgKiBAcGFyYW0ga2V5IE8gbm9tZSBkYSBwcm9wcmllZGFkZSBhIHNlciBlbmNvbnRyYWRhLlxyXG4gICAgICogQHBhcmFtIGRlZXBTZWFyY2ggSW5kaWNhIHNlIGEgYnVzY2EgZGV2ZSBzZXIgZW0gcHJvZnVuZGlkYWRlIChwYWRyw6NvOiB0cnVlKS5cclxuICAgICAqIEByZXR1cm5zIE8gdmFsb3IgZGEgcHJvcHJpZWRhZGUsIG91IHVuZGVmaW5lZCBzZSBuw6NvIGZvciBlbmNvbnRyYWRhLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZmluZFByb3BlcnR5KG9iajogUmVjb3JkPHN0cmluZywgYW55Piwga2V5OiBzdHJpbmcsIGRlZXBTZWFyY2g6IGJvb2xlYW4gPSB0cnVlKTogYW55IHtcclxuICAgICAgICBpZiAoQWdyb09iamVjdFV0aWxzLmlzSW52YWxpZChvYmopKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk8gcHJpbWVpcm8gYXJndW1lbnRvIGRldmUgc2VyIHVtIG9iamV0by5cIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoa2V5IGluIG9iaikge1xyXG4gICAgICAgICAgICByZXR1cm4gb2JqW2tleV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGVlcFNlYXJjaCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3AgaW4gb2JqKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHByb3ApICYmIHR5cGVvZiBvYmpbcHJvcF0gPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBBZ3JvT2JqZWN0VXRpbHMuZmluZFByb3BlcnR5KG9ialtwcm9wXSwga2V5LCBkZWVwU2VhcmNoKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWNlYmUgdW1hIHN0cmluZyAoSlNPTikgZSB0ZW50YSBjb252ZXJ0ZXIgcGFyYSB1bSBvYmpldG8uXHJcbiAgICAgKiBAcGFyYW0gdmFsdWVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0b3JuYSBvIHZhbG9yIGRlIHVtYSBwcm9wcmllZGFkZSBkZSB1bSBvYmpldG8sIGZvcm1hdGFkbyBjb25mb3JtZSBvIHRpcG8gZXNwZWNpZmljYWRvLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gZG8gcXVhbCBhIHByb3ByaWVkYWRlIHNlcsOhIGV4dHJhw61kYS5cclxuICAgICAqIEBwYXJhbSBwYXRoIC0gTyBjYW1pbmhvIGRhIHByb3ByaWVkYWRlIG5vIG9iamV0byAocG9kZSBzZXIgdW0gY2FtaW5obyBhbmluaGFkbykuXHJcbiAgICAgKiBAcGFyYW0gdHlwZSAtIE8gdGlwbyBkZSBmb3JtYXRhw6fDo28gYSBzZXIgYXBsaWNhZGEgKFN0cmluZywgRGF0ZSwgTW9uZXkpLlxyXG4gICAgICogQHJldHVybnMgTyB2YWxvciBmb3JtYXRhZG8gZGEgcHJvcHJpZWRhZGUuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRQcm9wQW5kRm9ybWF0VmFsdWUob2JqOiBhbnksIHBhdGg6IGFueSwgdHlwZTogRmllbGRUeXBlKSB7XHJcbiAgICAgICAgY29uc3QgciA9IHBhdGguc3BsaXQoXCIuXCIpLnJlZHVjZSgocmVzdWx0OiBhbnksIHByb3A6IGFueSkgPT4gKHJlc3VsdFtwcm9wXSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IHJlc3VsdFtwcm9wXSksIG9iaik7XHJcbiAgICAgICAgaWYgKCFyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZSA9PT0gRmllbGRUeXBlLlN0cmluZykge1xyXG4gICAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5EYXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vbWVudCA9IHJlcXVpcmUoXCJtb21lbnRcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBtb21lbnQocikuZm9ybWF0KFwiTFwiKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5Nb25leSkge1xyXG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHIpLnRvTG9jYWxlU3RyaW5nKFwicHQtQlJcIiwgeyBzdHlsZTogXCJjdXJyZW5jeVwiLCBjdXJyZW5jeTogXCJCUkxcIiB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
301
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1vYmplY3QtdXRpbHMuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLW9iamVjdC11dGlscy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV4QyxPQUFPLEVBQUUsZUFBZSxJQUFJLEdBQUcsRUFBRSxlQUFlLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUN4Qjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQVE7UUFDN0IsT0FBTyxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsb0JBQW9CLENBQUMsR0FBUTtRQUNoQyxPQUFPLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFRO1FBQ3BCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFRO1FBQ3BCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFRO1FBQ3JCLE9BQU8sT0FBTyxHQUFHLEtBQUssU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFRO1FBQ3RCLE9BQU8sT0FB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QUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEgsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNKLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxJQUFJLElBQUksS0FBSyxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7YUFBTSxJQUFJLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFO1lBQ2hDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEM7YUFBTSxJQUFJLElBQUksS0FBSyxTQUFTLENBQUMsS0FBSyxFQUFFO1lBQ2pDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3BGO2FBQU07WUFDSCxPQUFPLENBQUMsQ0FBQztTQUNaO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHNcIjtcclxuaW1wb3J0IHsgQUdST19OVU1CRVJTIH0gZnJvbSBcIi4uL2VudW1zXCI7XHJcblxyXG5leHBvcnQgeyBBZ3JvT2JqZWN0VXRpbHMgYXMgQU9VLCBBZ3JvT2JqZWN0VXRpbHMgYXMgT2JqZWN0VXRpbHMgfTtcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgdXRpbGl0w6FyaWEgcGFyYSBvcGVyYcOnw7VlcyBkZSBvYmpldG8uXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQWdyb09iamVjdFV0aWxzIHtcclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIG51bG8gb3UgaW5kZWZpbmlkby5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgbnVsbyBvdSBpbmRlZmluaWRvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc051bGxPclVuZGVmaW5lZChvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBvYmogPT09IG51bGwgfHwgb2JqID09PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gbsOjbyDDqSBudWxvIGUgbsOjbyDDqSBpbmRlZmluaWRvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIG7Do28gZm9yIG51bG8gZSBuw6NvIGZvciBpbmRlZmluaWRvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc05vdE51bGxPclVuZGVmaW5lZChvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhQWdyb09iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgdW1hIHN0cmluZy5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgdW1hIHN0cmluZywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNTdHJpbmcob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB1bSBuw7ptZXJvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB1bSBuw7ptZXJvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc051bWJlcihvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSBcIm51bWJlclwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHVtIGJvb2xlYW5vLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB1bSBib29sZWFubywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNCb29sZWFuKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwiYm9vbGVhblwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHVtYSBmdW7Dp8Ojby5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgdW1hIGZ1bsOnw6NvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0Z1bmN0aW9uKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwiZnVuY3Rpb25cIjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB1bSBhcnJheS5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgdW0gYXJyYXksIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzQXJyYXkob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgbyB2YWxvciBpbmZvcm1hZG8gw6kgdW0gb2JqZXRvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB1bSBvYmpldG8sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzT2JqZWN0KG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgdW1hIGRhdGEuXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIHVtYSBkYXRhLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0RhdGUob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB1bSBlcnJvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB1bSBlcnJvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0Vycm9yKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIEVycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHVtYSBleHByZXNzw6NvIHJlZ3VsYXIuXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIHVtYSBleHByZXNzw6NvIHJlZ3VsYXIsIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzUmVnRXhwKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIFJlZ0V4cDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB1bSB2YWxvciBwcmltaXRpdm8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIHVtIHZhbG9yIHByaW1pdGl2bywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNQcmltaXRpdmUob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gQWdyb09iamVjdFV0aWxzLmlzU3RyaW5nKG9iaikgfHwgQWdyb09iamVjdFV0aWxzLmlzTnVtYmVyKG9iaikgfHwgQWdyb09iamVjdFV0aWxzLmlzQm9vbGVhbihvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdG9kb3Mgb3MgdmFsb3JlcyBkZSB1bSBvYmpldG8gc8OjbyBudWxvcyBvdSBpbmRlZmluaWRvcy5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSB0b2RvcyBvcyB2YWxvcmVzIGRvIG9iamV0byBmb3JlbSBudWxvcyBvdSBpbmRlZmluaWRvcywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgYWxsTnVsbChvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghQWdyb09iamVjdFV0aWxzLmlzT2JqZWN0KG9iaikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XHJcbiAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhQWdyb09iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKG9ialtrZXldKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBjb21wYXJlQXJyYXlzKGFycjE6IHVua25vd25bXSwgYXJyMjogdW5rbm93bltdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKGFycjEubGVuZ3RoICE9PSBhcnIyLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnIxLmV2ZXJ5KCh2LCBpKSA9PiBBZ3JvT2JqZWN0VXRpbHMuaXNFcXVhbCh2LCBhcnIyW2ldKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgY29tcGFyZU9iamVjdHMob2JqMTogb2JqZWN0LCBvYmoyOiBvYmplY3QpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBrZXlzMSA9IE9iamVjdC5rZXlzKG9iajEpO1xyXG4gICAgICAgIGNvbnN0IGtleXMyID0gT2JqZWN0LmtleXMob2JqMik7XHJcbiAgICAgICAgaWYgKGtleXMxLmxlbmd0aCAhPT0ga2V5czIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGtleXMxLmV2ZXJ5KChrZXkpID0+IChvYmoyIGFzIGFueSkuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBBZ3JvT2JqZWN0VXRpbHMuaXNFcXVhbCgob2JqMSBhcyBhbnkpW2tleV0sIChvYmoyIGFzIGFueSlba2V5XSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29tcGFyYSBkb2lzIG9iamV0b3MgcGFyYSB2ZXJpZmljYXIgc2Ugc8OjbyBpZ3VhaXMuXHJcbiAgICAgKiBAcGFyYW0gb2JqMSAtIE8gcHJpbWVpcm8gb2JqZXRvIGEgc2VyIGNvbXBhcmFkby5cclxuICAgICAqIEBwYXJhbSBvYmoyIC0gTyBzZWd1bmRvIG9iamV0byBhIHNlciBjb21wYXJhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG9zIG9iamV0b3MgZm9yZW0gaWd1YWlzLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0VxdWFsKG9iajE6IHVua25vd24sIG9iajI6IHVua25vd24pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAob2JqMSA9PT0gb2JqMikge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvYmoxID09PSBudWxsIHx8IG9iajIgPT09IG51bGwgfHwgdHlwZW9mIG9iajEgIT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIG9iajIgIT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqMSkgJiYgQXJyYXkuaXNBcnJheShvYmoyKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlQXJyYXlzKG9iajEsIG9iajIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqMSkgfHwgQXJyYXkuaXNBcnJheShvYmoyKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlT2JqZWN0cyhvYmoxLCBvYmoyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSBudWxvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciBudWxvIG91IHVtIG9iamV0byB2YXppbywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNOdWxsKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG9iaiA9PT0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byBuw6NvIMOpIG51bG8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gbsOjbyBmb3IgbnVsbywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNOb3ROdWxsKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICFBZ3JvT2JqZWN0VXRpbHMuaXNOdWxsKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb252ZXJ0ZSB1bSBvYmpldG8gcGFyYSB1bWEgc3RyaW5nIEpTT04uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgY29udmVydGlkby5cclxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIEpTT04gcmVwcmVzZW50YW5kbyBvIG9iamV0by5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIHRvSlNPTihvYmo6IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gbsOjbyDDqSB2YXppby5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBuw6NvIGZvciB2YXppbywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNOb3RFbXB0eShvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghQWdyb09iamVjdFV0aWxzLmlzT2JqZWN0KG9iaikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5sZW5ndGggIT09IEFHUk9fTlVNQkVSUy5aRVJPO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHZhemlvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB2YXppbywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNFbXB0eShvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhQWdyb09iamVjdFV0aWxzLmlzTm90RW1wdHkob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byBuw6NvIGVzdMOhIHZhemlvIGUgY29udMOpbSB1bWEgZGV0ZXJtaW5hZGEgcHJvcHJpZWRhZGUuXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSAtIEEgcHJvcHJpZWRhZGUgYSBzZXIgdmVyaWZpY2FkYS5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gbsOjbyBlc3RpdmVyIHZhemlvIGUgY29udGl2ZXIgYSBwcm9wcmllZGFkZSwgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY29udGFpbnNQcm9wZXJ0eShvYmo6IGFueSwgcHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBZ3JvT2JqZWN0VXRpbHMuaXNOb3RFbXB0eShvYmopICYmIG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSBvIHBhcsOibWV0cm8gcmVjZWJpZG8gw6kgdW0gb2JqZXRvIGUgc2UgZWxlIGNvbnTDqW0gYSBwcm9wcmllZGFkZSBJRC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGhhc0lkKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIEFncm9PYmplY3RVdGlscy5pc05vdEVtcHR5KG9iaikgJiYgb2JqLmhhc093blByb3BlcnR5KFwiaWRcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSBvIHZhbG9yIGluZm9ybWFkbyBubyBwYXLDom1ldHJvIHBvc3N1aSBhcyBwcm9wcmllZGFkZXMgZGUgdW1hIGVudGlkYWRlIFNETCAoaWQgZSBjcmVhdGVkQXQpLlxyXG4gICAgICogQHBhcmFtIG9ialxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzU0RMRW50aXR5KG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIEFncm9PYmplY3RVdGlscy5pc05vdEVtcHR5KG9iaikgJiYgb2JqLmhhc093blByb3BlcnR5KFwiaWRcIikgJiYgb2JqLmhhc093blByb3BlcnR5KFwiY3JlYXRlZEF0XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHZhbGlkbywgY29uc2lkZXJhbmRvIHF1ZSBoYWphIG5vIG3DrW5pbW8gMSBwcm9wcmllZGFkZVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNWYWxpZChvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA+IEFHUk9fTlVNQkVSUy5aRVJPICYmIEFncm9PYmplY3RVdGlscy5pc05vdEVtcHR5KG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgaW52w6FsaWRvLCBjb25zaWRlcmFuZG8gcXVlIG7Do28gaGFqYSBuZW5odW1hIHByb3ByaWVkYWRlXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0ludmFsaWQob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIUFncm9PYmplY3RVdGlscy5pc1ZhbGlkKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmNvbnRyYSB1bWEgcHJvcHJpZWRhZGUgZW0gdW0gb2JqZXRvIHBlbG8gbm9tZSBlIHJldG9ybmEgc2V1IHZhbG9yLlxyXG4gICAgICogU2UgbyB2YWxvciBmb3IgdW0gb2JqZXRvLCByZXRvcm5hIG8gcHLDs3ByaW8gb2JqZXRvLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvYmogTyBvYmpldG8gb25kZSBidXNjYXIuXHJcbiAgICAgKiBAcGFyYW0ga2V5IE8gbm9tZSBkYSBwcm9wcmllZGFkZSBhIHNlciBlbmNvbnRyYWRhLlxyXG4gICAgICogQHBhcmFtIGRlZXBTZWFyY2ggSW5kaWNhIHNlIGEgYnVzY2EgZGV2ZSBzZXIgZW0gcHJvZnVuZGlkYWRlIChwYWRyw6NvOiB0cnVlKS5cclxuICAgICAqIEByZXR1cm5zIE8gdmFsb3IgZGEgcHJvcHJpZWRhZGUsIG91IHVuZGVmaW5lZCBzZSBuw6NvIGZvciBlbmNvbnRyYWRhLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZmluZFByb3BlcnR5KG9iajogUmVjb3JkPHN0cmluZywgYW55Piwga2V5OiBzdHJpbmcsIGRlZXBTZWFyY2g6IGJvb2xlYW4gPSB0cnVlKTogYW55IHtcclxuICAgICAgICBpZiAoQWdyb09iamVjdFV0aWxzLmlzSW52YWxpZChvYmopKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk8gcHJpbWVpcm8gYXJndW1lbnRvIGRldmUgc2VyIHVtIG9iamV0by5cIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoa2V5IGluIG9iaikge1xyXG4gICAgICAgICAgICByZXR1cm4gb2JqW2tleV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGVlcFNlYXJjaCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3AgaW4gb2JqKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHByb3ApICYmIHR5cGVvZiBvYmpbcHJvcF0gPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBBZ3JvT2JqZWN0VXRpbHMuZmluZFByb3BlcnR5KG9ialtwcm9wXSwga2V5LCBkZWVwU2VhcmNoKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWNlYmUgdW1hIHN0cmluZyAoSlNPTikgZSB0ZW50YSBjb252ZXJ0ZXIgcGFyYSB1bSBvYmpldG8uXHJcbiAgICAgKiBAcGFyYW0gdmFsdWVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIG8gdmFsb3IgZGUgdW1hIHByb3ByaWVkYWRlIGRlIHVtIG9iamV0bywgZm9ybWF0YWRvIGNvbmZvcm1lIG8gdGlwbyBlc3BlY2lmaWNhZG8uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGRvIHF1YWwgYSBwcm9wcmllZGFkZSBzZXLDoSBleHRyYcOtZGEuXHJcbiAgICAgKiBAcGFyYW0gcGF0aCAtIE8gY2FtaW5obyBkYSBwcm9wcmllZGFkZSBubyBvYmpldG8gKHBvZGUgc2VyIHVtIGNhbWluaG8gYW5pbmhhZG8pLlxyXG4gICAgICogQHBhcmFtIHR5cGUgLSBPIHRpcG8gZGUgZm9ybWF0YcOnw6NvIGEgc2VyIGFwbGljYWRhIChTdHJpbmcsIERhdGUsIE1vbmV5KS5cclxuICAgICAqIEByZXR1cm5zIE8gdmFsb3IgZm9ybWF0YWRvIGRhIHByb3ByaWVkYWRlLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0UHJvcEFuZEZvcm1hdFZhbHVlKG9iajogYW55LCBwYXRoOiBhbnksIHR5cGU6IEZpZWxkVHlwZSkge1xyXG4gICAgICAgIGNvbnN0IHIgPSBwYXRoLnNwbGl0KFwiLlwiKS5yZWR1Y2UoKHJlc3VsdDogYW55LCBwcm9wOiBhbnkpID0+IChyZXN1bHRbcHJvcF0gPT09IHVuZGVmaW5lZCA/IFwiXCIgOiByZXN1bHRbcHJvcF0pLCBvYmopO1xyXG4gICAgICAgIGlmICghcikge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5TdHJpbmcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBGaWVsZFR5cGUuRGF0ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBtb21lbnQgPSByZXF1aXJlKFwibW9tZW50XCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gbW9tZW50KHIpLmZvcm1hdChcIkxcIik7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBGaWVsZFR5cGUuTW9uZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihyKS50b0xvY2FsZVN0cmluZyhcInB0LUJSXCIsIHsgc3R5bGU6IFwiY3VycmVuY3lcIiwgY3VycmVuY3k6IFwiQlJMXCIgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|