@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.
Files changed (206) hide show
  1. package/bundles/senior-agronegocio-angular-components.umd.js +5644 -4540
  2. package/bundles/senior-agronegocio-angular-components.umd.js.map +1 -1
  3. package/bundles/senior-agronegocio-angular-components.umd.min.js +2 -2
  4. package/bundles/senior-agronegocio-angular-components.umd.min.js.map +1 -1
  5. package/common/agro-array-utils.class.d.ts +13 -0
  6. package/common/agro-logics.class.d.ts +5 -0
  7. package/common/agro-number-utils.class.d.ts +6 -0
  8. package/common/agro-object-stringifier.class.d.ts +1 -1
  9. package/common/agro-object-utils.class.d.ts +3 -1
  10. package/common/agro-string-utils.class.d.ts +0 -5
  11. package/common/agro-unit-converter.class.d.ts +23 -0
  12. package/common/index.d.ts +1 -0
  13. package/components/event-control-board/common/event-operation.d.ts +1 -0
  14. package/components/event-control-board/common/event-origin.d.ts +1 -0
  15. package/components/event-control-board/event-control-board.component.d.ts +7 -3
  16. package/components/event-control-board/index.d.ts +1 -3
  17. package/components/event-control-board/service/e012fam/e012fam.d.ts +14 -0
  18. package/components/event-control-board/service/e075der/e075der.d.ts +18 -0
  19. package/components/event-control-board/service/e113saf/e113saf.d.ts +14 -0
  20. package/components/event-control-board/service/e205dep/e205dep-dto.d.ts +15 -0
  21. package/components/event-control-board/service/e205dep/e205dep.d.ts +16 -0
  22. package/components/event-control-board/service/entity-service.d.ts +3 -3
  23. package/components/event-control-board/service/external-invoice/external-invoice.d.ts +13 -0
  24. package/components/event-control-board/service/invoice/invoice.d.ts +21 -0
  25. package/components/event-control-board/service/origination/operationType.d.ts +5 -0
  26. package/components/event-control-board/service/origination/origination-dto.d.ts +1 -1
  27. package/components/event-control-board/service/origination/origination.d.ts +51 -0
  28. package/components/event-control-board/service/rural-estate/rural-estate.d.ts +34 -0
  29. package/components/event-control-board/service/ticket/ticket.d.ts +18 -0
  30. package/components/index.d.ts +1 -0
  31. package/components/modal-invoice-pj/for-fixation/modal-fixation-options.interface.d.ts +5 -0
  32. package/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.d.ts +35 -0
  33. package/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.module.d.ts +2 -0
  34. package/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.d.ts +26 -0
  35. package/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.module.d.ts +2 -0
  36. package/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.d.ts +26 -0
  37. package/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.module.d.ts +2 -0
  38. package/components/modal-invoice-pj/index.d.ts +9 -0
  39. package/components/modal-invoice-pj/modal-invoice-pj-base.class.d.ts +53 -0
  40. package/components/modal-invoice-pj/modal-invoice-pj-options.interface.d.ts +10 -0
  41. package/components/modal-invoice-pj/modal-shared-imports.d.ts +8 -0
  42. package/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.d.ts +2 -0
  43. package/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.d.ts +16 -0
  44. package/components/modal-invoice-pj/services/agro-invoice/index.d.ts +2 -0
  45. package/components/modal-invoice-pj/services/agro-invoice/interfaces.d.ts +75 -0
  46. package/enums/index.d.ts +1 -0
  47. package/enums/invoice-status.enum.d.ts +12 -0
  48. package/enums/unit-measurement.enum.d.ts +49 -0
  49. package/esm2015/common/agro-array-utils.class.js +19 -1
  50. package/esm2015/common/agro-logics.class.js +11 -6
  51. package/esm2015/common/agro-number-utils.class.js +18 -1
  52. package/esm2015/common/agro-object-stringifier.class.js +4 -1
  53. package/esm2015/common/agro-object-utils.class.js +28 -2
  54. package/esm2015/common/agro-string-utils.class.js +2 -64
  55. package/esm2015/common/agro-unit-converter.class.js +256 -0
  56. package/esm2015/common/index.js +2 -1
  57. package/esm2015/components/cancel-event-dialog/cancel-event-dialog-config.js +1 -1
  58. package/esm2015/components/event-control-board/common/event-control-constants.js +6 -1
  59. package/esm2015/components/event-control-board/common/event-operation.js +2 -1
  60. package/esm2015/components/event-control-board/common/event-origin.js +2 -1
  61. package/esm2015/components/event-control-board/event-control-board.component.js +14 -8
  62. package/esm2015/components/event-control-board/event-control-board.module.js +2 -5
  63. package/esm2015/components/event-control-board/index.js +2 -4
  64. package/esm2015/components/event-control-board/service/e012fam/e012fam.js +20 -0
  65. package/esm2015/components/event-control-board/service/e075der/e075der.js +31 -0
  66. package/esm2015/components/event-control-board/service/e113saf/e113saf.js +20 -0
  67. package/esm2015/components/event-control-board/service/e205dep/e205dep-dto.js +1 -0
  68. package/esm2015/components/event-control-board/service/e205dep/e205dep.js +20 -0
  69. package/esm2015/components/event-control-board/service/entity-service.js +25 -27
  70. package/esm2015/components/event-control-board/service/external-invoice/external-invoice.js +20 -0
  71. package/esm2015/components/event-control-board/service/invoice/invoice.js +43 -0
  72. package/esm2015/components/event-control-board/service/origination/operationType.js +7 -0
  73. package/esm2015/components/event-control-board/service/origination/origination-dto.js +1 -1
  74. package/esm2015/components/event-control-board/service/origination/origination.js +59 -0
  75. package/esm2015/components/event-control-board/service/rural-estate/rural-estate.js +78 -0
  76. package/esm2015/components/event-control-board/service/ticket/ticket.js +39 -0
  77. package/esm2015/components/financial-title-table/financial-title-table.module.js +7 -5
  78. package/esm2015/components/index.js +2 -1
  79. package/esm2015/components/modal-invoice-pj/for-fixation/modal-fixation-options.interface.js +1 -0
  80. package/esm2015/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.js +189 -0
  81. package/esm2015/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.module.js +16 -0
  82. package/esm2015/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.js +60 -0
  83. package/esm2015/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.module.js +16 -0
  84. package/esm2015/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.js +60 -0
  85. package/esm2015/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.module.js +16 -0
  86. package/esm2015/components/modal-invoice-pj/index.js +8 -0
  87. package/esm2015/components/modal-invoice-pj/modal-invoice-pj-base.class.js +193 -0
  88. package/esm2015/components/modal-invoice-pj/modal-invoice-pj-options.interface.js +1 -0
  89. package/esm2015/components/modal-invoice-pj/modal-shared-imports.js +32 -0
  90. package/esm2015/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.js +28 -0
  91. package/esm2015/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.js +49 -0
  92. package/esm2015/components/modal-invoice-pj/services/agro-invoice/index.js +3 -0
  93. package/esm2015/components/modal-invoice-pj/services/agro-invoice/interfaces.js +13 -0
  94. package/esm2015/enums/index.js +2 -1
  95. package/esm2015/enums/invoice-status.enum.js +14 -0
  96. package/esm2015/enums/unit-measurement.enum.js +60 -0
  97. package/esm2015/lib-translation.module.js +3 -1
  98. package/esm2015/pipe/index.js +2 -1
  99. package/esm2015/pipe/kilogram/index.js +3 -0
  100. package/esm2015/pipe/kilogram/kilogram.module.js +17 -0
  101. package/esm2015/pipe/kilogram/kilogram.pipe.js +38 -0
  102. package/esm2015/public-api.js +5 -5
  103. package/esm2015/services/entity-service.js +14 -12
  104. package/esm2015/services/i18n/en-US.js +10 -1
  105. package/esm2015/services/i18n/es-CO.js +12 -3
  106. package/esm2015/services/i18n/pt-BR.js +272 -261
  107. package/esm2015/services/index.js +1 -1
  108. package/esm2015/services/lib-translation.service.js +2 -2
  109. package/esm2015/services/producer-invoice/index.js +3 -0
  110. package/esm2015/services/producer-invoice/producer-invoice-dto.js +1 -0
  111. package/esm2015/services/producer-invoice/producer-invoice.js +32 -0
  112. package/esm2015/services/producer-invoice/producer-invoice.service.js +64 -0
  113. package/esm5/common/agro-array-utils.class.js +19 -1
  114. package/esm5/common/agro-logics.class.js +10 -4
  115. package/esm5/common/agro-number-utils.class.js +19 -1
  116. package/esm5/common/agro-object-stringifier.class.js +4 -1
  117. package/esm5/common/agro-object-utils.class.js +28 -2
  118. package/esm5/common/agro-string-utils.class.js +8 -81
  119. package/esm5/common/agro-unit-converter.class.js +259 -0
  120. package/esm5/common/index.js +2 -1
  121. package/esm5/components/cancel-event-dialog/cancel-event-dialog-config.js +1 -1
  122. package/esm5/components/event-control-board/common/event-control-constants.js +6 -1
  123. package/esm5/components/event-control-board/common/event-operation.js +2 -1
  124. package/esm5/components/event-control-board/common/event-origin.js +2 -1
  125. package/esm5/components/event-control-board/event-control-board.component.js +14 -8
  126. package/esm5/components/event-control-board/event-control-board.module.js +2 -5
  127. package/esm5/components/event-control-board/index.js +2 -4
  128. package/esm5/components/event-control-board/service/e012fam/e012fam.js +25 -0
  129. package/esm5/components/event-control-board/service/e075der/e075der.js +36 -0
  130. package/esm5/components/event-control-board/service/e113saf/e113saf.js +25 -0
  131. package/esm5/components/event-control-board/service/e205dep/e205dep-dto.js +1 -0
  132. package/esm5/components/event-control-board/service/e205dep/e205dep.js +25 -0
  133. package/esm5/components/event-control-board/service/entity-service.js +24 -26
  134. package/esm5/components/event-control-board/service/external-invoice/external-invoice.js +25 -0
  135. package/esm5/components/event-control-board/service/invoice/invoice.js +48 -0
  136. package/esm5/components/event-control-board/service/origination/operationType.js +7 -0
  137. package/esm5/components/event-control-board/service/origination/origination-dto.js +1 -1
  138. package/esm5/components/event-control-board/service/origination/origination.js +62 -0
  139. package/esm5/components/event-control-board/service/rural-estate/rural-estate.js +83 -0
  140. package/esm5/components/event-control-board/service/ticket/ticket.js +44 -0
  141. package/esm5/components/financial-title-table/financial-title-table.module.js +7 -5
  142. package/esm5/components/index.js +2 -1
  143. package/esm5/components/modal-invoice-pj/for-fixation/modal-fixation-options.interface.js +1 -0
  144. package/esm5/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.js +221 -0
  145. package/esm5/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.module.js +19 -0
  146. package/esm5/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.js +63 -0
  147. package/esm5/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.module.js +19 -0
  148. package/esm5/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.js +63 -0
  149. package/esm5/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.module.js +19 -0
  150. package/esm5/components/modal-invoice-pj/index.js +8 -0
  151. package/esm5/components/modal-invoice-pj/modal-invoice-pj-base.class.js +210 -0
  152. package/esm5/components/modal-invoice-pj/modal-invoice-pj-options.interface.js +1 -0
  153. package/esm5/components/modal-invoice-pj/modal-shared-imports.js +32 -0
  154. package/esm5/components/modal-invoice-pj/services/agro-invoice/agro-invoice.module.js +31 -0
  155. package/esm5/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.js +56 -0
  156. package/esm5/components/modal-invoice-pj/services/agro-invoice/index.js +3 -0
  157. package/esm5/components/modal-invoice-pj/services/agro-invoice/interfaces.js +13 -0
  158. package/esm5/enums/index.js +2 -1
  159. package/esm5/enums/invoice-status.enum.js +14 -0
  160. package/esm5/enums/unit-measurement.enum.js +60 -0
  161. package/esm5/lib-translation.module.js +3 -1
  162. package/esm5/pipe/index.js +2 -1
  163. package/esm5/pipe/kilogram/index.js +3 -0
  164. package/esm5/pipe/kilogram/kilogram.module.js +20 -0
  165. package/esm5/pipe/kilogram/kilogram.pipe.js +41 -0
  166. package/esm5/public-api.js +5 -5
  167. package/esm5/services/entity-service.js +13 -11
  168. package/esm5/services/i18n/en-US.js +10 -1
  169. package/esm5/services/i18n/es-CO.js +12 -3
  170. package/esm5/services/i18n/pt-BR.js +272 -261
  171. package/esm5/services/index.js +1 -1
  172. package/esm5/services/lib-translation.service.js +2 -2
  173. package/esm5/services/producer-invoice/index.js +3 -0
  174. package/esm5/services/producer-invoice/producer-invoice-dto.js +1 -0
  175. package/esm5/services/producer-invoice/producer-invoice.js +37 -0
  176. package/esm5/services/producer-invoice/producer-invoice.service.js +72 -0
  177. package/fesm2015/senior-agronegocio-angular-components.js +5095 -4077
  178. package/fesm2015/senior-agronegocio-angular-components.js.map +1 -1
  179. package/fesm5/senior-agronegocio-angular-components.js +5642 -4548
  180. package/fesm5/senior-agronegocio-angular-components.js.map +1 -1
  181. package/package.json +1 -1
  182. package/pipe/index.d.ts +1 -0
  183. package/pipe/kilogram/index.d.ts +2 -0
  184. package/pipe/kilogram/kilogram.module.d.ts +2 -0
  185. package/pipe/kilogram/kilogram.pipe.d.ts +8 -0
  186. package/public-api.d.ts +4 -4
  187. package/senior-agronegocio-angular-components.metadata.json +1 -1
  188. package/services/entity-service.d.ts +2 -1
  189. package/services/i18n/en-US.d.ts +9 -0
  190. package/services/i18n/es-CO.d.ts +10 -1
  191. package/services/i18n/pt-BR.d.ts +270 -259
  192. package/services/producer-invoice/index.d.ts +3 -0
  193. package/{components/event-control-board/service → services}/producer-invoice/producer-invoice-dto.d.ts +4 -4
  194. package/services/producer-invoice/producer-invoice.d.ts +27 -0
  195. package/services/producer-invoice/producer-invoice.service.d.ts +18 -0
  196. package/components/event-control-board/service/event-control-board.service.d.ts +0 -13
  197. package/components/event-control-board/service/producer-invoice/producer-invoice.module.d.ts +0 -2
  198. package/components/event-control-board/service/producer-invoice/producer-invoice.service.d.ts +0 -11
  199. package/esm2015/components/event-control-board/service/event-control-board.service.js +0 -37
  200. package/esm2015/components/event-control-board/service/producer-invoice/producer-invoice-dto.js +0 -1
  201. package/esm2015/components/event-control-board/service/producer-invoice/producer-invoice.module.js +0 -26
  202. package/esm2015/components/event-control-board/service/producer-invoice/producer-invoice.service.js +0 -24
  203. package/esm5/components/event-control-board/service/event-control-board.service.js +0 -38
  204. package/esm5/components/event-control-board/service/producer-invoice/producer-invoice-dto.js +0 -1
  205. package/esm5/components/event-control-board/service/producer-invoice/producer-invoice.module.js +0 -29
  206. 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,2 @@
1
+ export declare class AgroInvoiceModule {
2
+ }
@@ -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,2 @@
1
+ export { AgroInvoiceService } from './agro-invoice.service';
2
+ export { AgroInvoiceModule } from './agro-invoice.module';
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1hcnJheS11dGlscy5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsiY29tbW9uL2Fncm8tYXJyYXktdXRpbHMuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQUN2Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBVTtRQUM1QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQVksRUFBRSxJQUFTO1FBQzVDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDZCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQVksRUFBRSxLQUFhO1FBQ3ZELEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQVk7UUFDckMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQVk7UUFDOUIsT0FBTyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFZLEVBQUUsUUFBZ0IsRUFBRSxLQUFVO1FBQ3ZFLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUssRUFBRTtnQkFDMUIsT0FBTyxJQUFJLENBQUM7YUFDZjtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENsYXNzZSBjb20gZnVuw6fDtWVzIMO6dGVpcyBwYXJhIEFycmF5cy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBBZ3JvQXJyYXlVdGlscyB7XHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIG8gdmFsb3IgaW5mb3JtYWRvIMOpIHVtIGFycmF5LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzQXJyYXkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB1bSBpdGVtIGRlIHVtIGFycmF5LlxyXG4gICAgICogQHBhcmFtIGFycmF5IEFycmF5IGRlIG9uZGUgbyBpdGVtIHNlcsOhIHJlbW92aWRvLlxyXG4gICAgICogQHBhcmFtIGl0ZW0gSXRlbSBhIHNlciByZW1vdmlkby5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyByZW1vdmVJdGVtKGFycmF5OiBhbnlbXSwgaXRlbTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBhcnJheS5pbmRleE9mKGl0ZW0pO1xyXG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgdW0gaXRlbSBkZSB1bSBhcnJheSBwb3Igw61uZGljZS5cclxuICAgICAqIEBwYXJhbSBhcnJheSBBcnJheSBkZSBvbmRlIG8gaXRlbSBzZXLDoSByZW1vdmlkby5cclxuICAgICAqIEBwYXJhbSBpbmRleCDDjW5kaWNlIGRvIGl0ZW0gYSBzZXIgcmVtb3ZpZG8uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlSXRlbUJ5SW5kZXgoYXJyYXk6IGFueVtdLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB0b2RvcyBvcyBpdGVucyBkZSB1bSBhcnJheS5cclxuICAgICAqIEBwYXJhbSBhcnJheSBBcnJheSBkZSBvbmRlIG9zIGl0ZW5zIHNlcsOjbyByZW1vdmlkb3MuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlQWxsSXRlbXMoYXJyYXk6IGFueVtdKTogdm9pZCB7XHJcbiAgICAgICAgYXJyYXkuc3BsaWNlKDAsIGFycmF5Lmxlbmd0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBhcnJheSDDqSB2YXppby5cclxuICAgICAqIEBwYXJhbSBhcnJheSBBcnJheSBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzRW1wdHkoYXJyYXk6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIEFncm9BcnJheVV0aWxzLmlzQXJyYXkoYXJyYXkpICYmIGFycmF5Lmxlbmd0aCA9PT0gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExvY2FsaXphIHVtIGl0ZW0gZW0gdW0gYXJyYXkgZGUgb2JqZXRvcyBkZSBhY29yZG8gY29tIGEgcHJvcHJpZWRhZGUgZSB2YWxvciBpbmZvcm1hZG9zLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGZpbmRJdGVtQnlQcm9wZXJ0eShhcnJheTogYW55W10sIHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnJheSkge1xyXG4gICAgICAgICAgICBpZiAoaXRlbVtwcm9wZXJ0eV0gPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG4iXX0=
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) * AGRO_NUMBERS.ONE_HUNDRED),
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1sb2dpY3MuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLWxvZ2ljcy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBU3hDLE1BQU0sT0FBTyxVQUFVO0lBQ3ZCOzs7Ozs7O09BT0c7SUFDRCxNQUFNLENBQUMsdUJBQXVCLENBQzVCLElBQVMsRUFDVCxJQUEwQjtRQUU1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3hCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUErQyxDQUFDO1FBRW5FLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBVyxFQUFFLElBQVksRUFBTyxFQUFFO1lBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUIsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDO1lBQ25CLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFO2dCQUNyQixJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7b0JBQ2pCLE9BQU8sU0FBUyxDQUFDO2lCQUNsQjtnQkFDRCxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xCO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUM7UUFFRixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRTtZQUN2QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFNUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3ZCLE1BQU0sV0FBVyxHQUFlLEVBQUUsQ0FBQztnQkFDbkMsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUU7b0JBQ3BCLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzNDLFdBQW1CLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFXLENBQUMsQ0FBQztpQkFDakU7Z0JBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3JEO1lBQ0QsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqQyxLQUFLLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUM7U0FDakM7UUFFRCxNQUFNLE1BQU0sR0FBNEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsS0FBSztZQUM3QixlQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQztTQUM5RSxDQUFDLENBQUMsQ0FBQztRQUVKLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUU3RCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBR1JPX05VTUJFUlMgfSBmcm9tIFwiLi4vZW51bXNcIjtcclxudHlwZSBBbnlSZWNvcmQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaXN0cmlidXRpb25SZXN1bHQ8VD4ge1xyXG4gIGRhdGE6IFBhcnRpYWw8VD47XHJcbiAgc2FtcGxpbmdTdWNjZXNzOiBudW1iZXI7ICAgLy8gcGVyY2VudGFnZSBvZiB0b3RhbFxyXG4gIHNhbXBsaW5nUXVhbnRpdHk6IG51bWJlcjsgIC8vIGFic29sdXRlIGNvdW50XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBZ3JvTG9naWNzIHtcclxuLyoqXHJcbiAqIEFncnVwYSBvIGNvbmp1bnRvIGRlIGRhZG9zIHBlbG9zIGNhbXBvcyBkZSBlbnRpZGFkZSBmb3JuZWNpZG9zIGUgY2FsY3VsYVxyXG4gKiBhIGRpc3RyaWJ1acOnw6NvIGRlIHByb2JhYmlsaWRhZGUgKGZyZXF1w6puY2lhIGUgcG9yY2VudGFnZW0pLlxyXG4gKlxyXG4gKiBAcGFyYW0gZGF0YSAtIEFycmF5IGRlIG9iamV0b3MgYSBzZXJlbSBhbmFsaXNhZG9zXHJcbiAqIEBwYXJhbSBrZXlzIC0gQ2hhdmVzIG91IGNhbWluaG9zIGFuaW5oYWRvcyBwYXJhIGFncnVwYXIgKGV4OiBbXCJlbnRpdHkxXCIsIFwiZW50aXR5MlwiXSlcclxuICogQHJldHVybnMgQXJyYXkgZGUgZXN0YXTDrXN0aWNhcyBhZ3J1cGFkYXMgb3JkZW5hZGFzIHBvciBzYW1wbGluZ1N1Y2Nlc3MgKGRlY3Jlc2NlbnRlKVxyXG4gKi9cclxuICBzdGF0aWMgZW50aXR5RGlzdHJpYnV0aW9uU3RhdHM8VCBleHRlbmRzIEFueVJlY29yZD4oXHJcbiAgICBkYXRhOiBUW10sXHJcbiAgICBrZXlzOiAoa2V5b2YgVCB8IHN0cmluZylbXVxyXG4gICk6IERpc3RyaWJ1dGlvblJlc3VsdDxUPltdIHtcclxuICBjb25zdCB0b3RhbCA9IGRhdGEubGVuZ3RoO1xyXG4gICAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIHsgZGF0YTogUGFydGlhbDxUPjsgY291bnQ6IG51bWJlciB9PigpO1xyXG5cclxuICAgIGNvbnN0IHJlc29sdmVQYXRoID0gKHNvdXJjZTogYW55LCBwYXRoOiBzdHJpbmcpOiBhbnkgPT4ge1xyXG4gICAgICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoXCIuXCIpO1xyXG4gICAgICBsZXQgdmFsdWUgPSBzb3VyY2U7XHJcbiAgICAgIGZvciAoY29uc3QgcCBvZiBwYXJ0cykge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YWx1ZSA9IHZhbHVlW3BdO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH07XHJcblxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGEpIHtcclxuICAgICAgY29uc3Qga2V5VmFsdWVzID0ga2V5cy5tYXAoayA9PiByZXNvbHZlUGF0aChpdGVtLCBrIGFzIHN0cmluZykpO1xyXG4gICAgICBjb25zdCB1bmlxdWVLZXkgPSBKU09OLnN0cmluZ2lmeShrZXlWYWx1ZXMpO1xyXG5cclxuICAgICAgaWYgKCFtYXAuaGFzKHVuaXF1ZUtleSkpIHtcclxuICAgICAgICBjb25zdCBncm91cGVkRGF0YTogUGFydGlhbDxUPiA9IHt9O1xyXG4gICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XHJcbiAgICAgICAgICBjb25zdCByb290TmFtZSA9IGsudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMF07XHJcbiAgICAgICAgICAoZ3JvdXBlZERhdGEgYXMgYW55KVtyb290TmFtZV0gPSByZXNvbHZlUGF0aChpdGVtLCBrIGFzIHN0cmluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1hcC5zZXQodW5pcXVlS2V5LCB7IGRhdGE6IGdyb3VwZWREYXRhLCBjb3VudDogMCB9KTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBlbnRyeSA9IG1hcC5nZXQodW5pcXVlS2V5KTtcclxuICAgICAgZW50cnkuY291bnQgKz0gQUdST19OVU1CRVJTLk9ORTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXN1bHQ6IERpc3RyaWJ1dGlvblJlc3VsdDxUPltdID0gQXJyYXkuZnJvbShtYXAudmFsdWVzKCkpLm1hcChlbnRyeSA9PiAoe1xyXG4gICAgICBkYXRhOiBlbnRyeS5kYXRhLFxyXG4gICAgICBzYW1wbGluZ1F1YW50aXR5OiBlbnRyeS5jb3VudCxcclxuICAgICAgc2FtcGxpbmdTdWNjZXNzOiBNYXRoLnJvdW5kKChlbnRyeS5jb3VudCAvIHRvdGFsKSAqIEFHUk9fTlVNQkVSUy5PTkVfSFVORFJFRCksXHJcbiAgICB9KSk7XHJcblxyXG4gICAgcmVzdWx0LnNvcnQoKGEsIGIpID0+IGIuc2FtcGxpbmdTdWNjZXNzIC0gYS5zYW1wbGluZ1N1Y2Nlc3MpO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG59Il19
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1udW1iZXItdXRpbHMuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLW51bWJlci11dGlscy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEMsTUFBTSxPQUFPLGVBQWU7SUFDeEI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFRO1FBQzdCLE9BQU8sR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEdBQVE7UUFDaEMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWE7UUFDM0IsT0FBTyxLQUFLLEdBQUcsWUFBWSxDQUFDLEdBQUcsS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBYTtRQUMxQixPQUFPLEtBQUssR0FBRyxZQUFZLENBQUMsR0FBRyxLQUFLLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBZSxFQUFFLEtBQWE7UUFDNUMsSUFBSSxLQUFLLEtBQUssWUFBWSxDQUFDLElBQUksRUFBRTtZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDakQ7UUFDTCxPQUFPLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWEsRUFBRSxXQUFtQixLQUFLLEVBQUUsU0FBaUIsT0FBTztRQUMvRSxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDakMsS0FBSyxFQUFFLFVBQVU7WUFDakIsUUFBUSxFQUFFLFFBQVE7U0FDckIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFXLEVBQUUsR0FBVztRQUN6QyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7U0FDbEU7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFhO1FBQ3hCLElBQUksS0FBSyxJQUFJLFlBQVksQ0FBQyxHQUFHLEVBQUU7WUFDM0IsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxLQUFLLFlBQVksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2pDLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFhLEVBQUUsV0FBbUIsWUFBWSxDQUFDLEdBQUc7UUFDN0QsSUFBSSxRQUFRLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRTtZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7U0FDeEU7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDL0MsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENsYXNzZSBkZSB1dGlsaXTDoXJpb3MgcGFyYSBvcGVyYcOnw7VlcyBjb20gbsO6bWVyb3MuXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQUdST19OVU1CRVJTIH0gZnJvbSBcIi4uL2VudW1zXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQWdyb051bWJlclV0aWxzIHtcclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gbsO6bWVybyDDqSBudWxvIG91IGluZGVmaW5pZG8uXHJcbiAgICAgKiBAcGFyYW0gbnVtIC0gTyBuw7ptZXJvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gbsO6bWVybyBmb3IgbnVsbyBvdSBpbmRlZmluaWRvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc051bGxPclVuZGVmaW5lZChudW06IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBudW0gPT09IG51bGwgfHwgbnVtID09PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBuw7ptZXJvIG7Do28gw6kgbnVsbyBlIG7Do28gw6kgaW5kZWZpbmlkby5cclxuICAgICAqIEBwYXJhbSBudW0gLSBPIG7Dum1lcm8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBuw7ptZXJvIG7Do28gZm9yIG51bG8gZSBuw6NvIGZvciBpbmRlZmluaWRvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc05vdE51bGxPclVuZGVmaW5lZChudW06IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhQWdyb051bWJlclV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKG51bSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBuw7ptZXJvIMOpIHBhci5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgTyBuw7ptZXJvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIGZvciBwYXIsIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzRXZlbih2YWx1ZTogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgJSBBR1JPX05VTUJFUlMuVFdPID09PSBBR1JPX05VTUJFUlMuWkVSTztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG7Dum1lcm8gw6kgw61tcGFyLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBPIG7Dum1lcm8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgZm9yIMOtbXBhciwgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNPZGQodmFsdWU6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHZhbHVlICUgQUdST19OVU1CRVJTLlRXTyAhPT0gQUdST19OVU1CRVJTLlpFUk87XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxjdWxhIGEgcG9yY2VudGFnZW0gZGUgdW0gdmFsb3IgZW0gcmVsYcOnw6NvIGEgdW0gdG90YWwuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHBhcnRpYWwgTyB2YWxvciBwYXJjaWFsLlxyXG4gICAgICogQHBhcmFtIHRvdGFsIE8gdmFsb3IgdG90YWwuXHJcbiAgICAgKiBAcmV0dXJucyBBIHBvcmNlbnRhZ2VtIGNhbGN1bGFkYS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIHBlcmNlbnRhZ2UocGFydGlhbDogbnVtYmVyLCB0b3RhbDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAodG90YWwgPT09IEFHUk9fTlVNQkVSUy5aRVJPKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk8gdG90YWwgbsOjbyBwb2RlIHNlciB6ZXJvLlwiKTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gKHBhcnRpYWwgLyB0b3RhbCkgKiBBR1JPX05VTUJFUlMuT05FX0hVTkRSRUQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtYXRhIHVtIG7Dum1lcm8gcGFyYSBvIGZvcm1hdG8gbW9uZXTDoXJpby5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgTyBuw7ptZXJvIGEgc2VyIGZvcm1hdGFkby5cclxuICAgICAqIEBwYXJhbSBjdXJyZW5jeSBPIHPDrW1ib2xvIGRhIG1vZWRhIChwYWRyw6NvOiBcIkJSTFwiKS5cclxuICAgICAqIEBwYXJhbSBsb2NhbGUgTyBjw7NkaWdvIGRhIGxvY2FsaWRhZGUgKHBhZHLDo286IFwicHQtQlJcIikuXHJcbiAgICAgKiBAcmV0dXJucyBVbWEgc3RyaW5nIG5vIGZvcm1hdG8gbW9uZXTDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIHRvQ3VycmVuY3kodmFsdWU6IG51bWJlciwgY3VycmVuY3k6IHN0cmluZyA9IFwiQlJMXCIsIGxvY2FsZTogc3RyaW5nID0gXCJwdC1CUlwiKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xyXG4gICAgICAgICAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogY3VycmVuY3ksXHJcbiAgICAgICAgfSkuZm9ybWF0KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlcmEgdW0gbsO6bWVybyBhbGVhdMOzcmlvIG5vIGludGVydmFsbyBlc3BlY2lmaWNhZG8uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG1pbiBPIHZhbG9yIG3DrW5pbW8gKGluY2x1c2l2bykuXHJcbiAgICAgKiBAcGFyYW0gbWF4IE8gdmFsb3IgbcOheGltbyAoZXhjbHVzaXZvKS5cclxuICAgICAqIEByZXR1cm5zIFVtIG7Dum1lcm8gYWxlYXTDs3JpbyBubyBpbnRlcnZhbG8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyByYW5kb21JblJhbmdlKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKG1heCA8PSBtaW4pIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTyB2YWxvciBtw6F4aW1vIGRldmUgc2VyIG1haW9yIHF1ZSBvIG3DrW5pbW8uXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pICsgbWluO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gbsO6bWVybyDDqSBwcmltby5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgTyBuw7ptZXJvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIGZvciBwcmltbywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNQcmltZSh2YWx1ZTogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHZhbHVlIDw9IEFHUk9fTlVNQkVSUy5PTkUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gQUdST19OVU1CRVJTLlRXTzsgaSA8PSBNYXRoLnNxcnQodmFsdWUpOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHZhbHVlICUgaSA9PT0gQUdST19OVU1CRVJTLlpFUk8pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFycmVkb25kYSB1bSBuw7ptZXJvIHBhcmEgYG5gIGNhc2FzIGRlY2ltYWlzLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBPIG7Dum1lcm8gYSBzZXIgYXJyZWRvbmRhZG8uXHJcbiAgICAgKiBAcGFyYW0gZGVjaW1hbHMgTyBuw7ptZXJvIGRlIGNhc2FzIGRlY2ltYWlzIChwYWRyw6NvOiAyKS5cclxuICAgICAqIEByZXR1cm5zIE8gbsO6bWVybyBhcnJlZG9uZGFkby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIHJvdW5kVG8odmFsdWU6IG51bWJlciwgZGVjaW1hbHM6IG51bWJlciA9IEFHUk9fTlVNQkVSUy5UV08pOiBudW1iZXIge1xyXG4gICAgICAgIGlmIChkZWNpbWFscyA8IEFHUk9fTlVNQkVSUy5aRVJPKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk8gbsO6bWVybyBkZSBjYXNhcyBkZWNpbWFpcyBuw6NvIHBvZGUgc2VyIG5lZ2F0aXZvLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZmFjdG9yID0gTWF0aC5wb3coQUdST19OVU1CRVJTLlRFTiwgZGVjaW1hbHMpO1xyXG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogZmFjdG9yKSAvIGZhY3RvcjtcclxuICAgIH1cclxufVxyXG4iXX0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1vYmplY3Qtc3RyaW5naWZpZXIuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLW9iamVjdC1zdHJpbmdpZmllci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFNNUQsTUFBTSxPQUFPLHFCQUFxQjtJQUM5Qjs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQWlCLEVBQUUsTUFBZ0IsRUFBRSxHQUFRLEVBQUUsUUFBbUI7UUFDbEYsU0FBUyxRQUFRLENBQUMsS0FBYTtZQUMzQixNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVELElBQUksUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLGNBQWMsQ0FBQyxLQUFLLEdBQUc7Z0JBQ2pDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMzQztZQUNELE9BQU8sS0FBSyxhQUFMLEtBQUssY0FBTCxLQUFLLEdBQUksRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxTQUFTLFdBQVcsQ0FBQyxDQUFrQjtZQUNuQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELGtFQUFrRTtJQUMxRCxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQVEsRUFBRSxJQUFZO1FBQzdDLFNBQVMsT0FBTyxDQUFDLEdBQVEsRUFBRSxHQUFXO1lBQ2xDLE9BQU8sR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFHLEdBQUcsRUFBRTtRQUN0QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFncm9TdHJpbmdVdGlscyB9IGZyb20gXCIuL2Fncm8tc3RyaW5nLXV0aWxzLmNsYXNzXCI7XHJcblxyXG5leHBvcnQgdHlwZSBVc2VQaXBlcyA9IHtcclxuICAgIFtrZXk6IHN0cmluZ106IFBpcGVUcmFuc2Zvcm07XHJcbn07XHJcblxyXG5leHBvcnQgY2xhc3MgQWdyb09iamVjdFN0cmluZ2lmaWVyIHtcclxuICAgIC8qKlxyXG4gICAgICogRm9ybWF0YSB1bSBvYmpldG8gY29uY2F0ZW5hbmRvIHZhbG9yZXMgc2VndW5kbyBhcyBjaGF2ZXMgZSBwaXBlcyBpbmZvcm1hZG9zLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBzZXBhcmF0b3IgU2VwYXJhZG9yIGVudHJlIG9zIHZhbG9yZXMgKGV4OiBcIi1cIilcclxuICAgICAqIEBwYXJhbSBmaWVsZHMgQ2FtcG9zIGEgZXh0cmFpci4gUG9kZW0gY29udGVyIHN1YnByb3ByaWVkYWRlcyAoXCJwcm9wcmllZGFkZS5zdWJQcm9wcmllZGFkZVwiKSBlIHBpcGVzIChcInByb3ByaWVkYWRlfG5vbWVEYVBpcGU6YXJnMTphcmcyXCIpXHJcbiAgICAgKiBAcGFyYW0gb2JqIE9iamV0byBvcmlnZW1cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGZvcm1hdE9iamVjdChzZXBhcmF0b3I6IHN0cmluZywgZmllbGRzOiBzdHJpbmdbXSwgb2JqOiBhbnksIHVzZVBpcGVzPzogVXNlUGlwZXMpOiBzdHJpbmcge1xyXG4gICAgICAgIGZ1bmN0aW9uIG1hcEZpZWxkKGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IEFncm9PYmplY3RTdHJpbmdpZmllci5yZXNvbHZlUGF0aChvYmosIGZpZWxkKTtcclxuICAgICAgICAgICAgaWYgKHVzZVBpcGVzPy5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB1c2VQaXBlc1tmaWVsZF0udHJhbnNmb3JtKHZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgPz8gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGZpbHRlclZhbGlkKHY6IHN0cmluZyB8IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIHYgPT09IFwibnVtYmVyXCIgfHwgQWdyb1N0cmluZ1V0aWxzLmlzVmFsaWQodik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmllbGRzLm1hcChtYXBGaWVsZCkuZmlsdGVyKGZpbHRlclZhbGlkKS5qb2luKGAgJHtzZXBhcmF0b3J9IGApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBSZXNvbHZlIHVtIGNhbWluaG8gdGlwbyBcImVtcHJlc2EuY2FyZ29cIiBkZW50cm8gZGUgdW0gb2JqZXRvICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyByZXNvbHZlUGF0aChvYmo6IGFueSwgcGF0aDogc3RyaW5nKTogYW55IHtcclxuICAgICAgICBmdW5jdGlvbiByZWR1Y2VyKGFjYzogYW55LCBrZXk6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhY2M/LltrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcGF0aC5zcGxpdChcIi5cIikucmVkdWNlKHJlZHVjZXIsIG9iaik7XHJcbiAgICB9XHJcbn1cclxuIl19
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
- return JSON.stringify(obj1) === JSON.stringify(obj2);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1vYmplY3QtdXRpbHMuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLW9iamVjdC11dGlscy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV4QyxPQUFPLEVBQUUsZUFBZSxJQUFJLEdBQUcsRUFBRSxlQUFlLElBQUksV0FBVyxFQUFFLENBQUM7QUFHbEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUN4Qjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQVE7UUFDN0IsT0FBTyxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsb0JBQW9CLENBQUMsR0FBUTtRQUNoQyxPQUFPLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFRO1FBQ3BCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFRO1FBQ3BCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFRO1FBQ3JCLE9BQU8sT0FBTyxHQUFHLEtBQUssU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFRO1FBQ3RCLE9BQU8sT0FB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U0FBUyxDQUFDLElBQUksRUFBRTtZQUNoQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2hDO2FBQU0sSUFBSSxJQUFJLEtBQUssU0FBUyxDQUFDLEtBQUssRUFBRTtZQUNqQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNwRjthQUFNO1lBQ0gsT0FBTyxDQUFDLENBQUM7U0FDWjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XHJcbmltcG9ydCB7IEFHUk9fTlVNQkVSUyB9IGZyb20gXCIuLi9lbnVtc1wiO1xyXG5cclxuZXhwb3J0IHsgQWdyb09iamVjdFV0aWxzIGFzIEFPVSwgQWdyb09iamVjdFV0aWxzIGFzIE9iamVjdFV0aWxzIH07XHJcblxyXG5cclxuLyoqXHJcbiAqIENsYXNzZSB1dGlsaXTDoXJpYSBwYXJhIG9wZXJhw6fDtWVzIGRlIG9iamV0by5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBBZ3JvT2JqZWN0VXRpbHMge1xyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgbnVsbyBvdSBpbmRlZmluaWRvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciBudWxvIG91IGluZGVmaW5pZG8sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzTnVsbE9yVW5kZWZpbmVkKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byBuw6NvIMOpIG51bG8gZSBuw6NvIMOpIGluZGVmaW5pZG8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gbsOjbyBmb3IgbnVsbyBlIG7Do28gZm9yIGluZGVmaW5pZG8sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzTm90TnVsbE9yVW5kZWZpbmVkKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICFBZ3JvT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB1bWEgc3RyaW5nLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB1bWEgc3RyaW5nLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc1N0cmluZyhvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHVtIG7Dum1lcm8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIHVtIG7Dum1lcm8sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzTnVtYmVyKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwibnVtYmVyXCI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgdW0gYm9vbGVhbm8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIHVtIGJvb2xlYW5vLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0Jvb2xlYW4ob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJib29sZWFuXCI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgdW1hIGZ1bsOnw6NvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB1bWEgZnVuw6fDo28sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzRnVuY3Rpb24ob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJmdW5jdGlvblwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHVtIGFycmF5LlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB1bSBhcnJheSwgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNBcnJheShvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSBvIHZhbG9yIGluZm9ybWFkbyDDqSB1bSBvYmpldG8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIHVtIG9iamV0bywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNPYmplY3Qob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB1bWEgZGF0YS5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgdW1hIGRhdGEsIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzRGF0ZShvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBEYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHVtIGVycm8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIHVtIGVycm8sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzRXJyb3Iob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRXJyb3I7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgdW1hIGV4cHJlc3PDo28gcmVndWxhci5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgdW1hIGV4cHJlc3PDo28gcmVndWxhciwgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNSZWdFeHAob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgUmVnRXhwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHVtIHZhbG9yIHByaW1pdGl2by5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgdW0gdmFsb3IgcHJpbWl0aXZvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc1ByaW1pdGl2ZShvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBZ3JvT2JqZWN0VXRpbHMuaXNTdHJpbmcob2JqKSB8fCBBZ3JvT2JqZWN0VXRpbHMuaXNOdW1iZXIob2JqKSB8fCBBZ3JvT2JqZWN0VXRpbHMuaXNCb29sZWFuKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB0b2RvcyBvcyB2YWxvcmVzIGRlIHVtIG9iamV0byBzw6NvIG51bG9zIG91IGluZGVmaW5pZG9zLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIHRvZG9zIG9zIHZhbG9yZXMgZG8gb2JqZXRvIGZvcmVtIG51bG9zIG91IGluZGVmaW5pZG9zLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBhbGxOdWxsKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFBZ3JvT2JqZWN0VXRpbHMuaXNPYmplY3Qob2JqKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcclxuICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpICYmICFBZ3JvT2JqZWN0VXRpbHMuaXNOdWxsT3JVbmRlZmluZWQob2JqW2tleV0pKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29tcGFyYSBkb2lzIG9iamV0b3MgcGFyYSB2ZXJpZmljYXIgc2Ugc8OjbyBpZ3VhaXMuXHJcbiAgICAgKiBAcGFyYW0gb2JqMSAtIE8gcHJpbWVpcm8gb2JqZXRvIGEgc2VyIGNvbXBhcmFkby5cclxuICAgICAqIEBwYXJhbSBvYmoyIC0gTyBzZWd1bmRvIG9iamV0byBhIHNlciBjb21wYXJhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG9zIG9iamV0b3MgZm9yZW0gaWd1YWlzLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0VxdWFsKG9iajE6IGFueSwgb2JqMjogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqMSkgPT09IEpTT04uc3RyaW5naWZ5KG9iajIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIG51bG8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIG51bG8gb3UgdW0gb2JqZXRvIHZhemlvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc051bGwob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gb2JqID09PSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIG7Do28gw6kgbnVsby5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBuw6NvIGZvciBudWxvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc05vdE51bGwob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIUFncm9PYmplY3RVdGlscy5pc051bGwob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnZlcnRlIHVtIG9iamV0byBwYXJhIHVtYSBzdHJpbmcgSlNPTi5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciBjb252ZXJ0aWRvLlxyXG4gICAgICogQHJldHVybnMgQSBzdHJpbmcgSlNPTiByZXByZXNlbnRhbmRvIG8gb2JqZXRvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgdG9KU09OKG9iajogYW55KTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byBuw6NvIMOpIHZhemlvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIG7Do28gZm9yIHZhemlvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc05vdEVtcHR5KG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFBZ3JvT2JqZWN0VXRpbHMuaXNPYmplY3Qob2JqKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoICE9PSBBR1JPX05VTUJFUlMuWkVSTztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB2YXppby5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgdmF6aW8sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzRW1wdHkob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIUFncm9PYmplY3RVdGlscy5pc05vdEVtcHR5KG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gbsOjbyBlc3TDoSB2YXppbyBlIGNvbnTDqW0gdW1hIGRldGVybWluYWRhIHByb3ByaWVkYWRlLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgLSBBIHByb3ByaWVkYWRlIGEgc2VyIHZlcmlmaWNhZGEuXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIG7Do28gZXN0aXZlciB2YXppbyBlIGNvbnRpdmVyIGEgcHJvcHJpZWRhZGUsIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGNvbnRhaW5zUHJvcGVydHkob2JqOiBhbnksIHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gQWdyb09iamVjdFV0aWxzLmlzTm90RW1wdHkob2JqKSAmJiBvYmouaGFzT3duUHJvcGVydHkocHJvcGVydHkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgbyBwYXLDom1ldHJvIHJlY2ViaWRvIMOpIHVtIG9iamV0byBlIHNlIGVsZSBjb250w6ltIGEgcHJvcHJpZWRhZGUgSUQuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBoYXNJZChvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBZ3JvT2JqZWN0VXRpbHMuaXNOb3RFbXB0eShvYmopICYmIG9iai5oYXNPd25Qcm9wZXJ0eShcImlkXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgbyB2YWxvciBpbmZvcm1hZG8gbm8gcGFyw6JtZXRybyBwb3NzdWkgYXMgcHJvcHJpZWRhZGVzIGRlIHVtYSBlbnRpZGFkZSBTREwgKGlkIGUgY3JlYXRlZEF0KS5cclxuICAgICAqIEBwYXJhbSBvYmpcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc1NETEVudGl0eShvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBZ3JvT2JqZWN0VXRpbHMuaXNOb3RFbXB0eShvYmopICYmIG9iai5oYXNPd25Qcm9wZXJ0eShcImlkXCIpICYmIG9iai5oYXNPd25Qcm9wZXJ0eShcImNyZWF0ZWRBdFwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB2YWxpZG8sIGNvbnNpZGVyYW5kbyBxdWUgaGFqYSBubyBtw61uaW1vIDEgcHJvcHJpZWRhZGVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzVmFsaWQob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA+IEFHUk9fTlVNQkVSUy5aRVJPICYmIEFncm9PYmplY3RVdGlscy5pc05vdEVtcHR5KG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgaW52w6FsaWRvLCBjb25zaWRlcmFuZG8gcXVlIG7Do28gaGFqYSBuZW5odW1hIHByb3ByaWVkYWRlXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0ludmFsaWQob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIUFncm9PYmplY3RVdGlscy5pc1ZhbGlkKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmNvbnRyYSB1bWEgcHJvcHJpZWRhZGUgZW0gdW0gb2JqZXRvIHBlbG8gbm9tZSBlIHJldG9ybmEgc2V1IHZhbG9yLlxyXG4gICAgICogU2UgbyB2YWxvciBmb3IgdW0gb2JqZXRvLCByZXRvcm5hIG8gcHLDs3ByaW8gb2JqZXRvLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvYmogTyBvYmpldG8gb25kZSBidXNjYXIuXHJcbiAgICAgKiBAcGFyYW0ga2V5IE8gbm9tZSBkYSBwcm9wcmllZGFkZSBhIHNlciBlbmNvbnRyYWRhLlxyXG4gICAgICogQHBhcmFtIGRlZXBTZWFyY2ggSW5kaWNhIHNlIGEgYnVzY2EgZGV2ZSBzZXIgZW0gcHJvZnVuZGlkYWRlIChwYWRyw6NvOiB0cnVlKS5cclxuICAgICAqIEByZXR1cm5zIE8gdmFsb3IgZGEgcHJvcHJpZWRhZGUsIG91IHVuZGVmaW5lZCBzZSBuw6NvIGZvciBlbmNvbnRyYWRhLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZmluZFByb3BlcnR5KG9iajogUmVjb3JkPHN0cmluZywgYW55Piwga2V5OiBzdHJpbmcsIGRlZXBTZWFyY2g6IGJvb2xlYW4gPSB0cnVlKTogYW55IHtcclxuICAgICAgICBpZiAoQWdyb09iamVjdFV0aWxzLmlzSW52YWxpZChvYmopKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk8gcHJpbWVpcm8gYXJndW1lbnRvIGRldmUgc2VyIHVtIG9iamV0by5cIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoa2V5IGluIG9iaikge1xyXG4gICAgICAgICAgICByZXR1cm4gb2JqW2tleV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGVlcFNlYXJjaCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3AgaW4gb2JqKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHByb3ApICYmIHR5cGVvZiBvYmpbcHJvcF0gPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBBZ3JvT2JqZWN0VXRpbHMuZmluZFByb3BlcnR5KG9ialtwcm9wXSwga2V5LCBkZWVwU2VhcmNoKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWNlYmUgdW1hIHN0cmluZyAoSlNPTikgZSB0ZW50YSBjb252ZXJ0ZXIgcGFyYSB1bSBvYmpldG8uXHJcbiAgICAgKiBAcGFyYW0gdmFsdWVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0b3JuYSBvIHZhbG9yIGRlIHVtYSBwcm9wcmllZGFkZSBkZSB1bSBvYmpldG8sIGZvcm1hdGFkbyBjb25mb3JtZSBvIHRpcG8gZXNwZWNpZmljYWRvLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gZG8gcXVhbCBhIHByb3ByaWVkYWRlIHNlcsOhIGV4dHJhw61kYS5cclxuICAgICAqIEBwYXJhbSBwYXRoIC0gTyBjYW1pbmhvIGRhIHByb3ByaWVkYWRlIG5vIG9iamV0byAocG9kZSBzZXIgdW0gY2FtaW5obyBhbmluaGFkbykuXHJcbiAgICAgKiBAcGFyYW0gdHlwZSAtIE8gdGlwbyBkZSBmb3JtYXRhw6fDo28gYSBzZXIgYXBsaWNhZGEgKFN0cmluZywgRGF0ZSwgTW9uZXkpLlxyXG4gICAgICogQHJldHVybnMgTyB2YWxvciBmb3JtYXRhZG8gZGEgcHJvcHJpZWRhZGUuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRQcm9wQW5kRm9ybWF0VmFsdWUob2JqOiBhbnksIHBhdGg6IGFueSwgdHlwZTogRmllbGRUeXBlKSB7XHJcbiAgICAgICAgY29uc3QgciA9IHBhdGguc3BsaXQoXCIuXCIpLnJlZHVjZSgocmVzdWx0OiBhbnksIHByb3A6IGFueSkgPT4gKHJlc3VsdFtwcm9wXSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IHJlc3VsdFtwcm9wXSksIG9iaik7XHJcbiAgICAgICAgaWYgKCFyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZSA9PT0gRmllbGRUeXBlLlN0cmluZykge1xyXG4gICAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5EYXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vbWVudCA9IHJlcXVpcmUoXCJtb21lbnRcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBtb21lbnQocikuZm9ybWF0KFwiTFwiKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5Nb25leSkge1xyXG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHIpLnRvTG9jYWxlU3RyaW5nKFwicHQtQlJcIiwgeyBzdHlsZTogXCJjdXJyZW5jeVwiLCBjdXJyZW5jeTogXCJCUkxcIiB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1vYmplY3QtdXRpbHMuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yLWFncm9uZWdvY2lvL2FuZ3VsYXItY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImNvbW1vbi9hZ3JvLW9iamVjdC11dGlscy5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV4QyxPQUFPLEVBQUUsZUFBZSxJQUFJLEdBQUcsRUFBRSxlQUFlLElBQUksV0FBVyxFQUFFLENBQUM7QUFFbEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUN4Qjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQVE7UUFDN0IsT0FBTyxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsb0JBQW9CLENBQUMsR0FBUTtRQUNoQyxPQUFPLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFRO1FBQ3BCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFRO1FBQ3BCLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFRO1FBQ3JCLE9BQU8sT0FBTyxHQUFHLEtBQUssU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFRO1FBQ3RCLE9BQU8sT0FB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QUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEgsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNKLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxJQUFJLElBQUksS0FBSyxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7YUFBTSxJQUFJLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFO1lBQ2hDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEM7YUFBTSxJQUFJLElBQUksS0FBSyxTQUFTLENBQUMsS0FBSyxFQUFFO1lBQ2pDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3BGO2FBQU07WUFDSCxPQUFPLENBQUMsQ0FBQztTQUNaO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHNcIjtcclxuaW1wb3J0IHsgQUdST19OVU1CRVJTIH0gZnJvbSBcIi4uL2VudW1zXCI7XHJcblxyXG5leHBvcnQgeyBBZ3JvT2JqZWN0VXRpbHMgYXMgQU9VLCBBZ3JvT2JqZWN0VXRpbHMgYXMgT2JqZWN0VXRpbHMgfTtcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgdXRpbGl0w6FyaWEgcGFyYSBvcGVyYcOnw7VlcyBkZSBvYmpldG8uXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQWdyb09iamVjdFV0aWxzIHtcclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIG51bG8gb3UgaW5kZWZpbmlkby5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgbnVsbyBvdSBpbmRlZmluaWRvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc051bGxPclVuZGVmaW5lZChvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBvYmogPT09IG51bGwgfHwgb2JqID09PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gbsOjbyDDqSBudWxvIGUgbsOjbyDDqSBpbmRlZmluaWRvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIG7Do28gZm9yIG51bG8gZSBuw6NvIGZvciBpbmRlZmluaWRvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc05vdE51bGxPclVuZGVmaW5lZChvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhQWdyb09iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgdW1hIHN0cmluZy5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgdW1hIHN0cmluZywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNTdHJpbmcob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB1bSBuw7ptZXJvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB1bSBuw7ptZXJvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc051bWJlcihvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSBcIm51bWJlclwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHVtIGJvb2xlYW5vLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB1bSBib29sZWFubywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNCb29sZWFuKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwiYm9vbGVhblwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHVtYSBmdW7Dp8Ojby5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgdW1hIGZ1bsOnw6NvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0Z1bmN0aW9uKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwiZnVuY3Rpb25cIjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB1bSBhcnJheS5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBmb3IgdW0gYXJyYXksIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzQXJyYXkob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgbyB2YWxvciBpbmZvcm1hZG8gw6kgdW0gb2JqZXRvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB1bSBvYmpldG8sIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzT2JqZWN0KG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCI7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgdW1hIGRhdGEuXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIHVtYSBkYXRhLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0RhdGUob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gb2JqIGluc3RhbmNlb2YgRGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB1bSBlcnJvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB1bSBlcnJvLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0Vycm9yKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIEVycm9yO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHVtYSBleHByZXNzw6NvIHJlZ3VsYXIuXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIHVtYSBleHByZXNzw6NvIHJlZ3VsYXIsIGZhbHNlIGNhc28gY29udHLDoXJpby5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzUmVnRXhwKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIFJlZ0V4cDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSB1bSB2YWxvciBwcmltaXRpdm8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gZm9yIHVtIHZhbG9yIHByaW1pdGl2bywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNQcmltaXRpdmUob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gQWdyb09iamVjdFV0aWxzLmlzU3RyaW5nKG9iaikgfHwgQWdyb09iamVjdFV0aWxzLmlzTnVtYmVyKG9iaikgfHwgQWdyb09iamVjdFV0aWxzLmlzQm9vbGVhbihvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdG9kb3Mgb3MgdmFsb3JlcyBkZSB1bSBvYmpldG8gc8OjbyBudWxvcyBvdSBpbmRlZmluaWRvcy5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSB0b2RvcyBvcyB2YWxvcmVzIGRvIG9iamV0byBmb3JlbSBudWxvcyBvdSBpbmRlZmluaWRvcywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgYWxsTnVsbChvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghQWdyb09iamVjdFV0aWxzLmlzT2JqZWN0KG9iaikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XHJcbiAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhQWdyb09iamVjdFV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkKG9ialtrZXldKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBjb21wYXJlQXJyYXlzKGFycjE6IHVua25vd25bXSwgYXJyMjogdW5rbm93bltdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKGFycjEubGVuZ3RoICE9PSBhcnIyLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnIxLmV2ZXJ5KCh2LCBpKSA9PiBBZ3JvT2JqZWN0VXRpbHMuaXNFcXVhbCh2LCBhcnIyW2ldKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgY29tcGFyZU9iamVjdHMob2JqMTogb2JqZWN0LCBvYmoyOiBvYmplY3QpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBrZXlzMSA9IE9iamVjdC5rZXlzKG9iajEpO1xyXG4gICAgICAgIGNvbnN0IGtleXMyID0gT2JqZWN0LmtleXMob2JqMik7XHJcbiAgICAgICAgaWYgKGtleXMxLmxlbmd0aCAhPT0ga2V5czIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGtleXMxLmV2ZXJ5KChrZXkpID0+IChvYmoyIGFzIGFueSkuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBBZ3JvT2JqZWN0VXRpbHMuaXNFcXVhbCgob2JqMSBhcyBhbnkpW2tleV0sIChvYmoyIGFzIGFueSlba2V5XSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29tcGFyYSBkb2lzIG9iamV0b3MgcGFyYSB2ZXJpZmljYXIgc2Ugc8OjbyBpZ3VhaXMuXHJcbiAgICAgKiBAcGFyYW0gb2JqMSAtIE8gcHJpbWVpcm8gb2JqZXRvIGEgc2VyIGNvbXBhcmFkby5cclxuICAgICAqIEBwYXJhbSBvYmoyIC0gTyBzZWd1bmRvIG9iamV0byBhIHNlciBjb21wYXJhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG9zIG9iamV0b3MgZm9yZW0gaWd1YWlzLCBmYWxzZSBjYXNvIGNvbnRyw6FyaW8uXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0VxdWFsKG9iajE6IHVua25vd24sIG9iajI6IHVua25vd24pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAob2JqMSA9PT0gb2JqMikge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChvYmoxID09PSBudWxsIHx8IG9iajIgPT09IG51bGwgfHwgdHlwZW9mIG9iajEgIT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIG9iajIgIT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqMSkgJiYgQXJyYXkuaXNBcnJheShvYmoyKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlQXJyYXlzKG9iajEsIG9iajIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqMSkgfHwgQXJyYXkuaXNBcnJheShvYmoyKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlT2JqZWN0cyhvYmoxLCBvYmoyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byDDqSBudWxvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciBudWxvIG91IHVtIG9iamV0byB2YXppbywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNOdWxsKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG9iaiA9PT0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byBuw6NvIMOpIG51bG8uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gbsOjbyBmb3IgbnVsbywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNOb3ROdWxsKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICFBZ3JvT2JqZWN0VXRpbHMuaXNOdWxsKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb252ZXJ0ZSB1bSBvYmpldG8gcGFyYSB1bWEgc3RyaW5nIEpTT04uXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgY29udmVydGlkby5cclxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIEpTT04gcmVwcmVzZW50YW5kbyBvIG9iamV0by5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIHRvSlNPTihvYmo6IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gbsOjbyDDqSB2YXppby5cclxuICAgICAqIEBwYXJhbSBvYmogLSBPIG9iamV0byBhIHNlciB2ZXJpZmljYWRvLlxyXG4gICAgICogQHJldHVybnMgVHJ1ZSBzZSBvIG9iamV0byBuw6NvIGZvciB2YXppbywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNOb3RFbXB0eShvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghQWdyb09iamVjdFV0aWxzLmlzT2JqZWN0KG9iaikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5sZW5ndGggIT09IEFHUk9fTlVNQkVSUy5aRVJPO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHZhemlvLlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGEgc2VyIHZlcmlmaWNhZG8uXHJcbiAgICAgKiBAcmV0dXJucyBUcnVlIHNlIG8gb2JqZXRvIGZvciB2YXppbywgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNFbXB0eShvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhQWdyb09iamVjdFV0aWxzLmlzTm90RW1wdHkob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFZlcmlmaWNhIHNlIHVtIG9iamV0byBuw6NvIGVzdMOhIHZhemlvIGUgY29udMOpbSB1bWEgZGV0ZXJtaW5hZGEgcHJvcHJpZWRhZGUuXHJcbiAgICAgKiBAcGFyYW0gb2JqIC0gTyBvYmpldG8gYSBzZXIgdmVyaWZpY2Fkby5cclxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSAtIEEgcHJvcHJpZWRhZGUgYSBzZXIgdmVyaWZpY2FkYS5cclxuICAgICAqIEByZXR1cm5zIFRydWUgc2UgbyBvYmpldG8gbsOjbyBlc3RpdmVyIHZhemlvIGUgY29udGl2ZXIgYSBwcm9wcmllZGFkZSwgZmFsc2UgY2FzbyBjb250csOhcmlvLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY29udGFpbnNQcm9wZXJ0eShvYmo6IGFueSwgcHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBZ3JvT2JqZWN0VXRpbHMuaXNOb3RFbXB0eShvYmopICYmIG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSBvIHBhcsOibWV0cm8gcmVjZWJpZG8gw6kgdW0gb2JqZXRvIGUgc2UgZWxlIGNvbnTDqW0gYSBwcm9wcmllZGFkZSBJRC5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGhhc0lkKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIEFncm9PYmplY3RVdGlscy5pc05vdEVtcHR5KG9iaikgJiYgb2JqLmhhc093blByb3BlcnR5KFwiaWRcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSBvIHZhbG9yIGluZm9ybWFkbyBubyBwYXLDom1ldHJvIHBvc3N1aSBhcyBwcm9wcmllZGFkZXMgZGUgdW1hIGVudGlkYWRlIFNETCAoaWQgZSBjcmVhdGVkQXQpLlxyXG4gICAgICogQHBhcmFtIG9ialxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzU0RMRW50aXR5KG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIEFncm9PYmplY3RVdGlscy5pc05vdEVtcHR5KG9iaikgJiYgb2JqLmhhc093blByb3BlcnR5KFwiaWRcIikgJiYgb2JqLmhhc093blByb3BlcnR5KFwiY3JlYXRlZEF0XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmVyaWZpY2Egc2UgdW0gb2JqZXRvIMOpIHZhbGlkbywgY29uc2lkZXJhbmRvIHF1ZSBoYWphIG5vIG3DrW5pbW8gMSBwcm9wcmllZGFkZVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgaXNWYWxpZChvYmo6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA+IEFHUk9fTlVNQkVSUy5aRVJPICYmIEFncm9PYmplY3RVdGlscy5pc05vdEVtcHR5KG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWZXJpZmljYSBzZSB1bSBvYmpldG8gw6kgaW52w6FsaWRvLCBjb25zaWRlcmFuZG8gcXVlIG7Do28gaGFqYSBuZW5odW1hIHByb3ByaWVkYWRlXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBpc0ludmFsaWQob2JqOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIUFncm9PYmplY3RVdGlscy5pc1ZhbGlkKG9iaik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmNvbnRyYSB1bWEgcHJvcHJpZWRhZGUgZW0gdW0gb2JqZXRvIHBlbG8gbm9tZSBlIHJldG9ybmEgc2V1IHZhbG9yLlxyXG4gICAgICogU2UgbyB2YWxvciBmb3IgdW0gb2JqZXRvLCByZXRvcm5hIG8gcHLDs3ByaW8gb2JqZXRvLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvYmogTyBvYmpldG8gb25kZSBidXNjYXIuXHJcbiAgICAgKiBAcGFyYW0ga2V5IE8gbm9tZSBkYSBwcm9wcmllZGFkZSBhIHNlciBlbmNvbnRyYWRhLlxyXG4gICAgICogQHBhcmFtIGRlZXBTZWFyY2ggSW5kaWNhIHNlIGEgYnVzY2EgZGV2ZSBzZXIgZW0gcHJvZnVuZGlkYWRlIChwYWRyw6NvOiB0cnVlKS5cclxuICAgICAqIEByZXR1cm5zIE8gdmFsb3IgZGEgcHJvcHJpZWRhZGUsIG91IHVuZGVmaW5lZCBzZSBuw6NvIGZvciBlbmNvbnRyYWRhLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZmluZFByb3BlcnR5KG9iajogUmVjb3JkPHN0cmluZywgYW55Piwga2V5OiBzdHJpbmcsIGRlZXBTZWFyY2g6IGJvb2xlYW4gPSB0cnVlKTogYW55IHtcclxuICAgICAgICBpZiAoQWdyb09iamVjdFV0aWxzLmlzSW52YWxpZChvYmopKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk8gcHJpbWVpcm8gYXJndW1lbnRvIGRldmUgc2VyIHVtIG9iamV0by5cIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoa2V5IGluIG9iaikge1xyXG4gICAgICAgICAgICByZXR1cm4gb2JqW2tleV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGVlcFNlYXJjaCkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3AgaW4gb2JqKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHByb3ApICYmIHR5cGVvZiBvYmpbcHJvcF0gPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBBZ3JvT2JqZWN0VXRpbHMuZmluZFByb3BlcnR5KG9ialtwcm9wXSwga2V5LCBkZWVwU2VhcmNoKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZWNlYmUgdW1hIHN0cmluZyAoSlNPTikgZSB0ZW50YSBjb252ZXJ0ZXIgcGFyYSB1bSBvYmpldG8uXHJcbiAgICAgKiBAcGFyYW0gdmFsdWVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXRvcm5hIG8gdmFsb3IgZGUgdW1hIHByb3ByaWVkYWRlIGRlIHVtIG9iamV0bywgZm9ybWF0YWRvIGNvbmZvcm1lIG8gdGlwbyBlc3BlY2lmaWNhZG8uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG9iaiAtIE8gb2JqZXRvIGRvIHF1YWwgYSBwcm9wcmllZGFkZSBzZXLDoSBleHRyYcOtZGEuXHJcbiAgICAgKiBAcGFyYW0gcGF0aCAtIE8gY2FtaW5obyBkYSBwcm9wcmllZGFkZSBubyBvYmpldG8gKHBvZGUgc2VyIHVtIGNhbWluaG8gYW5pbmhhZG8pLlxyXG4gICAgICogQHBhcmFtIHR5cGUgLSBPIHRpcG8gZGUgZm9ybWF0YcOnw6NvIGEgc2VyIGFwbGljYWRhIChTdHJpbmcsIERhdGUsIE1vbmV5KS5cclxuICAgICAqIEByZXR1cm5zIE8gdmFsb3IgZm9ybWF0YWRvIGRhIHByb3ByaWVkYWRlLlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgZ2V0UHJvcEFuZEZvcm1hdFZhbHVlKG9iajogYW55LCBwYXRoOiBhbnksIHR5cGU6IEZpZWxkVHlwZSkge1xyXG4gICAgICAgIGNvbnN0IHIgPSBwYXRoLnNwbGl0KFwiLlwiKS5yZWR1Y2UoKHJlc3VsdDogYW55LCBwcm9wOiBhbnkpID0+IChyZXN1bHRbcHJvcF0gPT09IHVuZGVmaW5lZCA/IFwiXCIgOiByZXN1bHRbcHJvcF0pLCBvYmopO1xyXG4gICAgICAgIGlmICghcikge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGUgPT09IEZpZWxkVHlwZS5TdHJpbmcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBGaWVsZFR5cGUuRGF0ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBtb21lbnQgPSByZXF1aXJlKFwibW9tZW50XCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gbW9tZW50KHIpLmZvcm1hdChcIkxcIik7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBGaWVsZFR5cGUuTW9uZXkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihyKS50b0xvY2FsZVN0cmluZyhcInB0LUJSXCIsIHsgc3R5bGU6IFwiY3VycmVuY3lcIiwgY3VycmVuY3k6IFwiQlJMXCIgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==