@esfaenza/extensions 11.2.33 → 11.2.35

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.
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"ExtensionsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1}}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"ExtensionsModule"},"providers":[{"provide":{"__symbolic":"reference","name":"EXT_LOCALE"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"locale"},"right":"it-IT"}},{"provide":{"__symbolic":"reference","name":"EXT_FANCY_ALERTS"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"fancy_alerts"},"right":true}},{"provide":{"__symbolic":"reference","name":"APPSEARCH_PREFIX"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"appsearch_prefix"},"right":"Hot"}},{"provide":{"__symbolic":"reference","name":"EXT_ALLOW_UTC"},"useValue":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"==","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"},"right":null},"thenExpression":false,"elseExpression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"}}}]}}}},"FullExtensionsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":28,"character":1}}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"FullExtensionsModule"},"providers":[{"__symbolic":"reference","name":"ClipboardService"},{"__symbolic":"reference","name":"DateService"},{"__symbolic":"reference","name":"ExportService"},{"__symbolic":"reference","name":"HashingService"},{"__symbolic":"reference","name":"MessageService"},{"__symbolic":"reference","name":"UtilityService"},{"__symbolic":"reference","name":"InterComService"},{"provide":{"__symbolic":"reference","name":"EXT_LOCALE"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"locale"},"right":"it-IT"}},{"provide":{"__symbolic":"reference","name":"EXT_FANCY_ALERTS"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"fancy_alerts"},"right":true}},{"provide":{"__symbolic":"reference","name":"APPSEARCH_PREFIX"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"appsearch_prefix"},"right":"Hot"}},{"provide":{"__symbolic":"reference","name":"EXT_ALLOW_UTC"},"useValue":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"==","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"},"right":null},"thenExpression":false,"elseExpression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"}}}]}}}},"DateService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":50,"character":24}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":50,"character":36},"arguments":[{"__symbolic":"reference","name":"EXT_LOCALE"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":50,"character":80}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":50,"character":92},"arguments":[{"__symbolic":"reference","name":"EXT_ALLOW_UTC"}]}]],"parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"boolean"}]}],"adjustDateToFinalInstant":[{"__symbolic":"method"}],"dateSort":[{"__symbolic":"method"}],"trimSeconds":[{"__symbolic":"method"}],"getMinMaxDatesRange":[{"__symbolic":"method"}],"getDateConvertion":[{"__symbolic":"method"}],"isJsDate":[{"__symbolic":"method"}],"isDayJs":[{"__symbolic":"method"}],"getFormatted":[{"__symbolic":"method"}]}},"Export":{"__symbolic":"error","message":"Lambda not supported","line":40,"character":22,"module":"./lib/services/extensions.exports.service"},"ExportAs":{"__symbolic":"error","message":"Lambda not supported","line":79,"character":24,"module":"./lib/services/extensions.exports.service"},"ExportList":{"__symbolic":"error","message":"Lambda not supported","line":119,"character":26,"module":"./lib/services/extensions.exports.service"},"ExportDictionary":{"__symbolic":"error","message":"Lambda not supported","line":142,"character":32,"module":"./lib/services/extensions.exports.service"},"ExportService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":152,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DateService"}]}],"setupForExport":[{"__symbolic":"method"}],"setupForGenericExport":[{"__symbolic":"method"}],"parseAndGetGenericHeaders":[{"__symbolic":"method"}],"parseAndGetHeaders":[{"__symbolic":"method"}],"parseProperty":[{"__symbolic":"method"}],"parseObject":[{"__symbolic":"method"}],"parseList":[{"__symbolic":"method"}],"parseDictionary":[{"__symbolic":"method"}],"deserializeForExport":[{"__symbolic":"method"}]}},"ClipboardService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":40,"character":60}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":40,"character":72},"arguments":[{"__symbolic":"reference","name":"EXT_LOCALE"}]}]],"parameters":[{"__symbolic":"reference","name":"MessageService"},{"__symbolic":"reference","name":"string"}]}],"getClipboard":[{"__symbolic":"method"}],"getClipboardLines":[{"__symbolic":"method"}],"getClipboardMatrix":[{"__symbolic":"method"}],"copyTextToClipboard":[{"__symbolic":"method"}]}},"HashingService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"getGUID":[{"__symbolic":"method"}],"hashObject":[{"__symbolic":"method"}],"simpleHash":[{"__symbolic":"method"}],"stringify":[{"__symbolic":"method"}],"md5":[{"__symbolic":"method"}],"md5cycle":[{"__symbolic":"method"}],"cmn":[{"__symbolic":"method"}],"ff":[{"__symbolic":"method"}],"gg":[{"__symbolic":"method"}],"hh":[{"__symbolic":"method"}],"ii":[{"__symbolic":"method"}],"md51":[{"__symbolic":"method"}],"md5blk":[{"__symbolic":"method"}],"rhex":[{"__symbolic":"method"}],"hex":[{"__symbolic":"method"}],"add32":[{"__symbolic":"method"}]}},"MessageService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":69,"character":55}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":69,"character":67},"arguments":[{"__symbolic":"reference","name":"EXT_FANCY_ALERTS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":69,"character":124}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":69,"character":136},"arguments":[{"__symbolic":"reference","name":"EXT_LOCALE"}]}]],"parameters":[{"__symbolic":"reference","module":"ngx-toastr","name":"ToastrService","line":69,"character":39},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"string"}]}],"simpleSuccess":[{"__symbolic":"method"}],"simpleInfo":[{"__symbolic":"method"}],"simpleError":[{"__symbolic":"method"}],"simpleWarning":[{"__symbolic":"method"}],"clearMessages":[{"__symbolic":"method"}],"promiseWarningWithChoice":[{"__symbolic":"method"}],"toastrOrSwal":[{"__symbolic":"method"}],"simpleWarningWithChoice":[{"__symbolic":"method"}],"observableSimpleWarningWithChoice":[{"__symbolic":"method"}],"expiredSessionMessage":[{"__symbolic":"method"}],"manageCallResultResponse":[{"__symbolic":"method"}],"manageStringResponse":[{"__symbolic":"method"}],"manageStringResponseBool":[{"__symbolic":"method"}]}},"UtilityService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"clearTextSelection":[{"__symbolic":"method"}],"getSelectedItem":[{"__symbolic":"method"}],"cleanForm":[{"__symbolic":"method"}],"fileDownload":[{"__symbolic":"method"}],"msToTime":[{"__symbolic":"method"}],"saveFile":[{"__symbolic":"method"}],"base64ToArrayBuffer":[{"__symbolic":"method"}],"saveByteArray":[{"__symbolic":"method"}],"swap":[{"__symbolic":"method"}],"getJsTypeFromTypeCode":[{"__symbolic":"method"}],"deepClone":[{"__symbolic":"method"}],"recursiveStep":[{"__symbolic":"method"}]}},"EXT_LOCALE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":5,"character":54},"arguments":["EXT_LOCALE"]},"EXT_FANCY_ALERTS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":10,"character":61},"arguments":["EXT_FANCY_ALERTS"]},"APPSEARCH_PREFIX":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":60},"arguments":["APPSEARCH_PREFIX"]},"EXT_ALLOW_UTC":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":20,"character":58},"arguments":["EXT_ALLOW_UTC"]},"CallResult":{"__symbolic":"class","members":{}},"CsvHeaders":{"__symbolic":"class","members":{}},"GenericItem":{"__symbolic":"class","members":{}},"InboundMessageTypes":{"Navigation":0},"InterComMessage":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"any"}]}]}},"InterComService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"send":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}]}}},"origins":{"ExtensionsModule":"./lib/modules/extensions.module","FullExtensionsModule":"./lib/modules/extensions.full.module","DateService":"./lib/services/extensions.dates.service","Export":"./lib/services/extensions.exports.service","ExportAs":"./lib/services/extensions.exports.service","ExportList":"./lib/services/extensions.exports.service","ExportDictionary":"./lib/services/extensions.exports.service","ExportService":"./lib/services/extensions.exports.service","ClipboardService":"./lib/services/extensions.clipboard.service","HashingService":"./lib/services/extensions.hashing.service","MessageService":"./lib/services/extensions.messages.service","UtilityService":"./lib/services/extensions.utilities.service","EXT_LOCALE":"./lib/tokens","EXT_FANCY_ALERTS":"./lib/tokens","APPSEARCH_PREFIX":"./lib/tokens","EXT_ALLOW_UTC":"./lib/tokens","CallResult":"./lib/models/CallResult","CsvHeaders":"./lib/models/CsvHeaders","GenericItem":"./lib/models/GenericItem","InboundMessageTypes":"./lib/models/InboundMessageTypes","InterComMessage":"./lib/models/InterComMessage","InterComService":"./lib/services/extensions.intercom.service"},"importAs":"@esfaenza/extensions"}
1
+ {"__symbolic":"module","version":4,"metadata":{"ExtensionsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1}}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"ExtensionsModule"},"providers":[{"provide":{"__symbolic":"reference","name":"EXT_LOCALE"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"locale"},"right":"it-IT"}},{"provide":{"__symbolic":"reference","name":"EXT_FANCY_ALERTS"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"fancy_alerts"},"right":true}},{"provide":{"__symbolic":"reference","name":"APPSEARCH_PREFIX"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"appsearch_prefix"},"right":"Hot"}},{"provide":{"__symbolic":"reference","name":"EXT_ALLOW_UTC"},"useValue":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"==","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"},"right":null},"thenExpression":false,"elseExpression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"}}}]}}}},"FullExtensionsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":28,"character":1}}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["config"],"value":{"ngModule":{"__symbolic":"reference","name":"FullExtensionsModule"},"providers":[{"__symbolic":"reference","name":"ClipboardService"},{"__symbolic":"reference","name":"DateService"},{"__symbolic":"reference","name":"ExportService"},{"__symbolic":"reference","name":"HashingService"},{"__symbolic":"reference","name":"MessageService"},{"__symbolic":"reference","name":"UtilityService"},{"__symbolic":"reference","name":"InterComService"},{"provide":{"__symbolic":"reference","name":"EXT_LOCALE"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"locale"},"right":"it-IT"}},{"provide":{"__symbolic":"reference","name":"EXT_FANCY_ALERTS"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"fancy_alerts"},"right":true}},{"provide":{"__symbolic":"reference","name":"APPSEARCH_PREFIX"},"useValue":{"__symbolic":"binop","operator":"||","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"appsearch_prefix"},"right":"Hot"}},{"provide":{"__symbolic":"reference","name":"EXT_ALLOW_UTC"},"useValue":{"__symbolic":"if","condition":{"__symbolic":"binop","operator":"==","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"},"right":null},"thenExpression":false,"elseExpression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"config"},"member":"allow_utc"}}}]}}}},"DateService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":15,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":50,"character":24}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":50,"character":36},"arguments":[{"__symbolic":"reference","name":"EXT_LOCALE"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":50,"character":80}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":50,"character":92},"arguments":[{"__symbolic":"reference","name":"EXT_ALLOW_UTC"}]}]],"parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"boolean"}]}],"adjustDateToFinalInstant":[{"__symbolic":"method"}],"dateSort":[{"__symbolic":"method"}],"trimSeconds":[{"__symbolic":"method"}],"getMinMaxDatesRange":[{"__symbolic":"method"}],"getDateConvertion":[{"__symbolic":"method"}],"isJsDate":[{"__symbolic":"method"}],"isDayJs":[{"__symbolic":"method"}],"getFormatted":[{"__symbolic":"method"}]}},"Export":{"__symbolic":"error","message":"Lambda not supported","line":40,"character":22,"module":"./lib/services/extensions.exports.service"},"ExportAs":{"__symbolic":"error","message":"Lambda not supported","line":79,"character":24,"module":"./lib/services/extensions.exports.service"},"ExportList":{"__symbolic":"error","message":"Lambda not supported","line":119,"character":26,"module":"./lib/services/extensions.exports.service"},"ExportDictionary":{"__symbolic":"error","message":"Lambda not supported","line":142,"character":32,"module":"./lib/services/extensions.exports.service"},"ExportService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":152,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DateService"}]}],"setupForExport":[{"__symbolic":"method"}],"setupForGenericExport":[{"__symbolic":"method"}],"parseAndGetGenericHeaders":[{"__symbolic":"method"}],"parseAndGetHeaders":[{"__symbolic":"method"}],"parseProperty":[{"__symbolic":"method"}],"parseObject":[{"__symbolic":"method"}],"parseList":[{"__symbolic":"method"}],"parseDictionary":[{"__symbolic":"method"}],"deserializeForExport":[{"__symbolic":"method"}]}},"ClipboardService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":40,"character":60}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":40,"character":72},"arguments":[{"__symbolic":"reference","name":"EXT_LOCALE"}]}]],"parameters":[{"__symbolic":"reference","name":"MessageService"},{"__symbolic":"reference","name":"string"}]}],"getClipboard":[{"__symbolic":"method"}],"getClipboardLines":[{"__symbolic":"method"}],"getClipboardMatrix":[{"__symbolic":"method"}],"copyTextToClipboard":[{"__symbolic":"method"}]}},"HashingService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"getGUID":[{"__symbolic":"method"}],"hashObject":[{"__symbolic":"method"}],"simpleHash":[{"__symbolic":"method"}],"stringify":[{"__symbolic":"method"}],"md5":[{"__symbolic":"method"}],"md5cycle":[{"__symbolic":"method"}],"cmn":[{"__symbolic":"method"}],"ff":[{"__symbolic":"method"}],"gg":[{"__symbolic":"method"}],"hh":[{"__symbolic":"method"}],"ii":[{"__symbolic":"method"}],"md51":[{"__symbolic":"method"}],"md5blk":[{"__symbolic":"method"}],"rhex":[{"__symbolic":"method"}],"hex":[{"__symbolic":"method"}],"add32":[{"__symbolic":"method"}]}},"MessageService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":18,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":69,"character":55}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":69,"character":67},"arguments":[{"__symbolic":"reference","name":"EXT_FANCY_ALERTS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":69,"character":124}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":69,"character":136},"arguments":[{"__symbolic":"reference","name":"EXT_LOCALE"}]}]],"parameters":[{"__symbolic":"reference","module":"ngx-toastr","name":"ToastrService","line":69,"character":39},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"string"}]}],"simpleSuccess":[{"__symbolic":"method"}],"simpleInfo":[{"__symbolic":"method"}],"simpleError":[{"__symbolic":"method"}],"simpleWarning":[{"__symbolic":"method"}],"clearMessages":[{"__symbolic":"method"}],"promiseWarningWithChoice":[{"__symbolic":"method"}],"toastrOrSwal":[{"__symbolic":"method"}],"simpleWarningWithChoice":[{"__symbolic":"method"}],"observableSimpleWarningWithChoice":[{"__symbolic":"method"}],"expiredSessionMessage":[{"__symbolic":"method"}],"manageCallResultResponse":[{"__symbolic":"method"}],"manageStringResponse":[{"__symbolic":"method"}],"manageStringResponseBool":[{"__symbolic":"method"}]}},"UtilityService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"clearTextSelection":[{"__symbolic":"method"}],"getSelectedItem":[{"__symbolic":"method"}],"cleanForm":[{"__symbolic":"method"}],"fileDownload":[{"__symbolic":"method"}],"msToTime":[{"__symbolic":"method"}],"saveFile":[{"__symbolic":"method"}],"base64ToArrayBuffer":[{"__symbolic":"method"}],"saveByteArray":[{"__symbolic":"method"}],"swap":[{"__symbolic":"method"}],"getJsTypeFromTypeCode":[{"__symbolic":"method"}],"deepClone":[{"__symbolic":"method"}],"recursiveStep":[{"__symbolic":"method"}]}},"EXT_LOCALE":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":5,"character":54},"arguments":["EXT_LOCALE"]},"EXT_FANCY_ALERTS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":10,"character":61},"arguments":["EXT_FANCY_ALERTS"]},"APPSEARCH_PREFIX":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":60},"arguments":["APPSEARCH_PREFIX"]},"EXT_ALLOW_UTC":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":20,"character":58},"arguments":["EXT_ALLOW_UTC"]},"CallResult":{"__symbolic":"class","arity":1,"members":{}},"CsvHeaders":{"__symbolic":"class","members":{}},"GenericItem":{"__symbolic":"class","members":{}},"InboundMessageTypes":{"Navigation":0},"InterComMessage":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"any"}]}]}},"InterComService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"send":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}]}}},"origins":{"ExtensionsModule":"./lib/modules/extensions.module","FullExtensionsModule":"./lib/modules/extensions.full.module","DateService":"./lib/services/extensions.dates.service","Export":"./lib/services/extensions.exports.service","ExportAs":"./lib/services/extensions.exports.service","ExportList":"./lib/services/extensions.exports.service","ExportDictionary":"./lib/services/extensions.exports.service","ExportService":"./lib/services/extensions.exports.service","ClipboardService":"./lib/services/extensions.clipboard.service","HashingService":"./lib/services/extensions.hashing.service","MessageService":"./lib/services/extensions.messages.service","UtilityService":"./lib/services/extensions.utilities.service","EXT_LOCALE":"./lib/tokens","EXT_FANCY_ALERTS":"./lib/tokens","APPSEARCH_PREFIX":"./lib/tokens","EXT_ALLOW_UTC":"./lib/tokens","CallResult":"./lib/models/CallResult","CsvHeaders":"./lib/models/CsvHeaders","GenericItem":"./lib/models/GenericItem","InboundMessageTypes":"./lib/models/InboundMessageTypes","InterComMessage":"./lib/models/InterComMessage","InterComService":"./lib/services/extensions.intercom.service"},"importAs":"@esfaenza/extensions"}
@@ -3,4 +3,4 @@
3
3
  */
4
4
  export class CallResult {
5
5
  }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsbFJlc3VsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9tb2RlbHMvQ2FsbFJlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFVO0NBeUN0QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBDbGFzc2UgY2hlIHJhcHByZXNlbnRhIHVuYSByaXNwb3N0YSByaWNldnV0YSBkYSB1biBCYWNrZW5kXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ2FsbFJlc3VsdHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBvIGltcGllZ2F0byBwZXJjaMOpIGxhIGNoaWFtYXRhIHRlcm1pbmFzc2VcclxuICAgICAqL1xyXG4gICAgZWxhcHNlZHRpbWU6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqICoqdHJ1ZSoqIHNlIHR1dHRvIMOoIGFuZGF0byBiZW5lLCAqKmZhbHNlKiogYWx0cmltZW50aVxyXG4gICAgICovXHJcbiAgICBzdWNjZXNzOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHNlIGNpIHNvbm8gZXJyb3JpXHJcbiAgICAgKi9cclxuICAgIGhhc2Vycm9yOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29kaWNlIGRlbGwnZXZlbnR1YWxlIGVycm9yZSByZXN0aXR1aXRvXHJcbiAgICAgKi9cclxuICAgIGVycm9yY29kZTogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTG9nIGRlbGwnZXZlbnR1YWxlIGVycm9yZSByZXN0aXR1aXRvXHJcbiAgICAgKi9cclxuICAgIGVycm9yOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJRCBkZWxsJ2V2ZW50dWFsZSBlbnRpdMOgIHJlbGF0aXZhIGEgcXVlc3RhIHJpc3Bvc3RhXHJcbiAgICAgKi9cclxuICAgIGVudGl0eWlkOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2UgY2kgc29ubyB3YXJuaW5nXHJcbiAgICAgKi9cclxuICAgIGhhc3dhcm5pbmc6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2cgZGVsbCdldmVudHVhbGUgd2FybmluZyByZXN0aXR1aXRvXHJcbiAgICAgKi9cclxuICAgIHdhcm5pbmc6IHN0cmluZztcclxufSJdfQ==
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsbFJlc3VsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvc3JjL2xpYi9tb2RlbHMvQ2FsbFJlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFVO0NBb0J0QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBDbGFzc2UgY2hlIHJhcHByZXNlbnRhIHVuYSByaXNwb3N0YSByaWNldnV0YSBkYSB1biBCYWNrZW5kXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ2FsbFJlc3VsdDxUID0gbmV2ZXI+e1xyXG5cclxuICAgIC8qKiBUZW1wbyBpbXBpZWdhdG8gcGVyY2jDqSBsYSBjaGlhbWF0YSB0ZXJtaW5hc3NlICovXHJcbiAgICBlbGFwc2VkdGltZTogc3RyaW5nO1xyXG4gICAgLyoqICoqdHJ1ZSoqIHNlIHR1dHRvIMOoIGFuZGF0byBiZW5lLCAqKmZhbHNlKiogYWx0cmltZW50aSAqL1xyXG4gICAgc3VjY2VzczogYm9vbGVhbjtcclxuICAgIC8qKiBJbmRpY2Egc2UgY2kgc29ubyBlcnJvcmkgKi9cclxuICAgIGhhc2Vycm9yOiBib29sZWFuO1xyXG4gICAgLyoqIENvZGljZSBkZWxsJ2V2ZW50dWFsZSBlcnJvcmUgcmVzdGl0dWl0byAqL1xyXG4gICAgZXJyb3Jjb2RlOiBzdHJpbmc7XHJcbiAgICAvKiogTG9nIGRlbGwnZXZlbnR1YWxlIGVycm9yZSByZXN0aXR1aXRvICovXHJcbiAgICBlcnJvcjogc3RyaW5nO1xyXG4gICAgLyoqIElEIGRlbGwnZXZlbnR1YWxlIGVudGl0w6AgcmVsYXRpdmEgYSBxdWVzdGEgcmlzcG9zdGEgKi9cclxuICAgIGVudGl0eWlkOiBhbnk7XHJcbiAgICAvKiogSW5kaWNhIHNlIGNpIHNvbm8gd2FybmluZyAqL1xyXG4gICAgaGFzd2FybmluZzogYm9vbGVhbjtcclxuICAgIC8qKiBMb2cgZGVsbCdldmVudHVhbGUgd2FybmluZyByZXN0aXR1aXRvICovXHJcbiAgICB3YXJuaW5nOiBzdHJpbmc7XHJcbiAgICAvKiogRW50aXTDoCBjb2xsZWdhdGEgYSBxdWVzdG8gQ2FsbFJlc3VsdCAqL1xyXG4gICAgZW50aXR5OiBUO1xyXG59Il19
@@ -63,8 +63,13 @@ export class DateService {
63
63
  if (mydt == null)
64
64
  return "FE: Not a Date";
65
65
  let isZeroTime = mydt.startOf(timepart).valueOf() === mydt.valueOf();
66
- if (!isZeroTime)
66
+ if (!isZeroTime) {
67
+ if (timepart == "day" && mydt.subtract(1, "hour").hour() == mydt.hour()) {
68
+ // Se l'ora precedente è lo stesso orario dell'ora attuale l'istante finale dev'essere mandato avanti di 1
69
+ mydt = mydt.add(1, "hour");
70
+ }
67
71
  return printSeconds ? mydt.format(this.cfg.fulldateDisplay) : mydt.format(this.cfg.fulldateDisplayNoSS);
72
+ }
68
73
  let tmpValue = mydt.subtract(1, timepart);
69
74
  let value = "";
70
75
  // Istante finale delle ore: 05/10/1992 --> 04/10/1992 24:00(:00)
@@ -221,4 +226,4 @@ DateService.ctorParameters = () => [
221
226
  { type: String, decorators: [{ type: Optional }, { type: Inject, args: [EXT_LOCALE,] }] },
222
227
  { type: Boolean, decorators: [{ type: Optional }, { type: Inject, args: [EXT_ALLOW_UTC,] }] }
223
228
  ];
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5kYXRlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9zcmMvbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuZGF0ZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELFVBQVU7QUFDVixPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQVFyRDs7RUFFRTtBQUVILE1BQU0sT0FBTyxXQUFXO0lBNkJwQjs7OztPQUlHO0lBQ0gsWUFBMkQsTUFBYyxFQUE2QyxRQUFpQjs7UUFBNUUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUE2QyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBaEN2STs7V0FFRztRQUNLLFFBQUcsR0FBRztZQUNWLG1CQUFtQixFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO1lBQ3JFLGtCQUFrQixFQUFFLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRTtZQUN0Rix3QkFBd0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUU7WUFDdEYsMkJBQTJCLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7WUFDN0UscUNBQXFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUU7WUFDN0YsdUNBQXVDLEVBQUUsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFO1lBQ3JHLDBCQUEwQixFQUFFLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixF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QUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdkgsQ0FBQzs7O1lBMU9KLFVBQVU7Ozt5Q0FtQ2EsUUFBUSxZQUFJLE1BQU0sU0FBQyxVQUFVOzBDQUEyQixRQUFRLFlBQUksTUFBTSxTQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBFWFRfQUxMT1dfVVRDLCBFWFRfTE9DQUxFIH0gZnJvbSBcIi4uL3Rva2Vuc1wiO1xyXG5cclxuLyoqXHJcbiAqIERpY2hpYXJhemlvbmUgZGVsbGEgdmFyaWFiaWxlIGdsb2JhbGUgZGF5anMuIEwnb25lcmUgZGkgXCJjcmVhcmxhXCIgw6ggYWZmaWRhdG8gYWxsJ2FwcGxpY2F6aW9uZSBjaGUgdXRpbGl6emEgcXVlc3RhIGxpYnJlcmlhLCBcclxuICogY2hlIGRvdnLDoCBpbXBvcnRhcmUgbG8gc2NyaXB0IGdsb2JhbGUgZGkgZGF5anMgbmVsbGEgQ0xJXHJcbiAqL1xyXG4gZGVjbGFyZSB2YXIgZGF5anM6IGFueTtcclxuXHJcbiAvKipcclxuICogU2VydmljZSBjaGUgZm9ybmlzY2UgZGVpIG1ldG9kaSBkaSBlc3RlbnNpb25lIHBlciBsYSBnZXN0aW9uZS9tYW5pcG9sYXppb25lIGRlbGxlIGRhdGVcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERhdGVTZXJ2aWNlIHtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBPZ2dldHRvIHN0YXRpY28gZGkgbG9jYWxpenphemlvbmUgcGVyIGkgbWVzc2FnZ2kgZGkgcXVlc3RhIFNlcnZpY2VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBsb2MgPSB7XHJcbiAgICAgICAgXCJTTUFMTF9EQVRFX0ZPUk1BVFwiOiB7ICdlbi1VUyc6IFwiTU0vREQvWVlZWVwiLCAnaXQtSVQnOiBcIkREL01NL1lZWVlcIiB9LFxyXG4gICAgICAgIFwiRlVMTF9EQVRFX0ZPUk1BVFwiOiB7ICdlbi1VUyc6IFwiTU0vREQvWVlZWSBISDptbTpzc1wiLCAnaXQtSVQnOiBcIkREL01NL1lZWVkgSEg6bW06c3NcIiB9LFxyXG4gICAgICAgIFwiRlVMTF9EQVRFX0ZPUk1BVF9OT19TU1wiOiB7ICdlbi1VUyc6IFwiTU0vREQvWVlZWSBISDptbVwiLCAnaXQtSVQnOiBcIkREL01NL1lZWVkgSEg6bW1cIiB9LFxyXG4gICAgICAgIFwiU01BTExfREFURV9ESVNQTEFZX0ZPUk1BVFwiOiB7ICdlbi1VUyc6IFwiREQvTU0vWVlZWVwiLCAnaXQtSVQnOiBcIkREL01NL1lZWVlcIiB9LFxyXG4gICAgICAgIFwiU01BTExfREFURV9ESVNQTEFZX0ZPUk1BVF9XSVRIX0hPVVJcIjogeyAnZW4tVVMnOiBcIkREL01NL1lZWVkgSEhcIiwgJ2l0LUlUJzogXCJERC9NTS9ZWVlZIEhIXCIgfSxcclxuICAgICAgICBcIlNNQUxMX0RBVEVfRElTUExBWV9GT1JNQVRfV0lUSF9NSU5VVEVcIjogeyAnZW4tVVMnOiBcIkREL01NL1lZWVkgSEg6bW1cIiwgJ2l0LUlUJzogXCJERC9NTS9ZWVlZIEhIOm1tXCIgfSxcclxuICAgICAgICBcIkZVTExfREFURV9ESVNQTEFZX0ZPUk1BVFwiOiB7ICdlbi1VUyc6IFwiREQvTU0vWVlZWSBISDptbTpzc1wiLCAnaXQtSVQnOiBcIkREL01NL1lZWVkgSEg6bW06c3NcIiB9LFxyXG4gICAgICAgIFwiRlVMTF9EQVRFX0RJU1BMQVlfRk9STUFUX05PX1NTXCI6IHsgJ2VuLVVTJzogXCJERC9NTS9ZWVlZIEhIOm1tXCIsICdpdC1JVCc6IFwiREQvTU0vWVlZWSBISDptbVwiIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPZ2dldHRvIGRpIGNvbmZpZ3VyYXppb25lIHBlciB0ZW5lcmUgZGEgY29udG8gbGUgaW5mb3JtYXppb25pIHN1aSBmb3JtYXRpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY2ZnID0ge1xyXG4gICAgICAgIGZ1bGxkYXRlOiBcIlwiLFxyXG4gICAgICAgIGZ1bGxkYXRlRGlzcGxheTogXCJcIixcclxuICAgICAgICBzbWFsbERhdGU6IFwiXCIsXHJcbiAgICAgICAgZnVsbGRhdGVOb1NTOiBcIlwiLFxyXG4gICAgICAgIHNtYWxsRGF0ZVdpdGhIOiBcIlwiLFxyXG4gICAgICAgIHNtYWxsRGF0ZVdpdGhNOiBcIlwiLFxyXG4gICAgICAgIGZ1bGxkYXRlRGlzcGxheU5vU1M6IFwiXCJcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlXHJcbiAgICAgKiBcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoRVhUX0xPQ0FMRSkgcHJpdmF0ZSBMT0NBTEU6IHN0cmluZywgQE9wdGlvbmFsKCkgQEluamVjdChFWFRfQUxMT1dfVVRDKSBwcml2YXRlIGFsbG93VXRjOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5jZmcuc21hbGxEYXRlID0gdGhpcy5sb2NbXCJTTUFMTF9EQVRFX0ZPUk1BVFwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXTtcclxuICAgICAgICB0aGlzLmNmZy5mdWxsZGF0ZSA9IHRoaXMubG9jW1wiRlVMTF9EQVRFX0ZPUk1BVFwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXTtcclxuICAgICAgICB0aGlzLmNmZy5mdWxsZGF0ZU5vU1MgPSB0aGlzLmxvY1tcIkZVTExfREFURV9GT1JNQVRfTk9fU1NcIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ107XHJcbiAgICAgICAgdGhpcy5jZmcuZnVsbGRhdGVEaXNwbGF5ID0gdGhpcy5sb2NbXCJGVUxMX0RBVEVfRElTUExBWV9GT1JNQVRcIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ107XHJcbiAgICAgICAgdGhpcy5jZmcuZnVsbGRhdGVEaXNwbGF5Tm9TUyAgPXRoaXMubG9jW1wiRlVMTF9EQVRFX0RJU1BMQVlfRk9STUFUX05PX1NTXCJdW3RoaXMuTE9DQUxFID8/ICdpdC1JVCddO1xyXG4gICAgICAgIHRoaXMuY2ZnLnNtYWxsRGF0ZSA9IHRoaXMubG9jW1wiU01BTExfREFURV9ESVNQTEFZX0ZPUk1BVFwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXTtcclxuICAgICAgICB0aGlzLmNmZy5zbWFsbERhdGVXaXRoSCA9IHRoaXMubG9jW1wiU01BTExfREFURV9ESVNQTEFZX0ZPUk1BVF9XSVRIX0hPVVJcIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ107XHJcbiAgICAgICAgdGhpcy5jZmcuc21hbGxEYXRlV2l0aE0gPSB0aGlzLmxvY1tcIlNNQUxMX0RBVEVfRElTUExBWV9GT1JNQVRfV0lUSF9NSU5VVEVcIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ107XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZ2dpdXN0YSB1bmEgZGF0YSBpbiBcImlzdGFudGUgZmluYWxlXCIgaW4gYmFzZSBhIHF1YWwgw6ggbGEgcGFydGUgZGkgZGF0YSBzaWduaWZpY2F0aXZhLlxyXG4gICAgICogXHJcbiAgICAgKiBFcy4gSXN0YW50ZSBmaW5hbGUgZGVsbGUgb3JlOiAwNS8xMC8xOTkyIC0tPiAwNC8xMC8xOTkyIDI0OjAwKDowMClcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHthbnl9IGRhdGUgRGF0YSBxdWFsc2lhc2kgKERhdGUsIHN0cmluZ2EsIGRheWpzLi4uKSwgdmVycsOgIHJpY29uZG90dGEgYWQgdW4gb2dnZXR0byBkYXlKc1xyXG4gICAgICogQHBhcmFtIHsnZGF5JyB8ICdob3VyJyB8ICdtaW51dGUnfSB0aW1lcGFydCBQYXJ0ZSBzaWduaWZpY2F0aXZhIGRlbGxhIGRhdGFcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJpbnRTZWNvbmRzIEluZGljYSBzZSBlZmZldHR1YXJlIGxhIHN0YW1wYSBkZWkgc2Vjb25kaSBvIG5vXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGp1c3REYXRlVG9GaW5hbEluc3RhbnQoZGF0ZTogYW55LCB0aW1lcGFydDogJ2RheScgfCAnaG91cicgfCAnbWludXRlJywgcHJpbnRTZWNvbmRzOiBib29sZWFuID0gdHJ1ZSk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IG15ZHQgPSB0aGlzLmdldERhdGVDb252ZXJ0aW9uKGRhdGUpO1xyXG4gICAgICAgIGlmIChteWR0ID09IG51bGwpIHJldHVybiBcIkZFOiBOb3QgYSBEYXRlXCI7XHJcblxyXG4gICAgICAgIGxldCBpc1plcm9UaW1lID0gbXlkdC5zdGFydE9mKHRpbWVwYXJ0KS52YWx1ZU9mKCkgPT09IG15ZHQudmFsdWVPZigpO1xyXG4gICAgICAgIGlmICghaXNaZXJvVGltZSkgcmV0dXJuIHByaW50U2Vjb25kcyA/IG15ZHQuZm9ybWF0KHRoaXMuY2ZnLmZ1bGxkYXRlRGlzcGxheSkgOiBteWR0LmZvcm1hdCh0aGlzLmNmZy5mdWxsZGF0ZURpc3BsYXlOb1NTKTtcclxuXHJcbiAgICAgICAgbGV0IHRtcFZhbHVlID0gbXlkdC5zdWJ0cmFjdCgxLCB0aW1lcGFydCk7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gXCJcIjtcclxuXHJcbiAgICAgICAgLy8gSXN0YW50ZSBmaW5hbGUgZGVsbGUgb3JlOiAwNS8xMC8xOTkyIC0tPiAwNC8xMC8xOTkyIDI0OjAwKDowMClcclxuICAgICAgICBpZiAodGltZXBhcnQgPT0gJ2RheScpXHJcbiAgICAgICAgICAgIHZhbHVlID0gdG1wVmFsdWUuZm9ybWF0KHRoaXMuY2ZnLnNtYWxsRGF0ZSkgKyBcIiAyNDowMFwiICsgKHByaW50U2Vjb25kcyA/ICc6MDAnIDogJycpO1xyXG5cclxuICAgICAgICAvLyBJc3RhbnRlIGZpbmFsZSBkZWkgbWludXRpOiBnaW9ybm8gMDUvMTAvMTk5MiAwNDowMDowMCAtLT4gMDUvMTAvMTk5MiAwMzo2MCg6MDApXHJcbiAgICAgICAgZWxzZSBpZiAodGltZXBhcnQgPT0gJ2hvdXInKVxyXG4gICAgICAgICAgICB2YWx1ZSA9IHRtcFZhbHVlLmZvcm1hdCh0aGlzLmNmZy5zbWFsbERhdGVXaXRoSCkgKyBcIjo2MFwiICsgKHByaW50U2Vjb25kcyA/ICc6MDAnIDogJycpO1xyXG5cclxuICAgICAgICAvLyBJc3RhbnRlIGZpbmFsZSBkZWkgc2Vjb25kaTogZ2lvcm5vIDA1LzEwLzE5OTIgMDQ6MTA6MDAgLS0+IDA1LzEwLzE5OTIgMDQ6MDk6NjBcclxuICAgICAgICBlbHNlIGlmICh0aW1lcGFydCA9PSAnbWludXRlJylcclxuICAgICAgICAgICAgdmFsdWUgPSB0bXBWYWx1ZS5mb3JtYXQodGhpcy5jZmcuc21hbGxEYXRlV2l0aE0pICsgXCI6NjBcIjtcclxuXHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuemlvbmUgY2hlIGVmZmV0dHVhIGwnb3JkaW5hbWVudG8gZnJhIDIgZGF0ZSBpbiBiYXNlIGFsbGEgZGlyZXppb25lIHNwZWNpZmljYXRhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55fSBhIFByaW1hIGRhdGEgcGVyIGlsIGNvbmZyb250b1xyXG4gICAgICogQHBhcmFtIHthbnl9IGIgU2Vjb25kYSBkYXRhIHBlciBpbCBjb25mcm9udG9cclxuICAgICAqIEBwYXJhbSB7J2FzYycgfCAnZGVzYyd9IGRpcmVjdGlvbiBEaXJlemlvbmUgcmlzcGV0dG8gYSBjdWkgb3JkaW5hcmUgbGUgZHVlIGRhdGVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge251bWJlcn0gMCBzZSBsZSBkYXRlIHNvbm8gdWd1YWxpLCAxIHNlIGxhIGRhdGEgQSBkZXZlIHZlbmlyZSBsb2dpY2FtZW50ZSBwcmltYSBkZWxsYSBkYXRhIEIsIC0xIGFsdHJpbWVudGlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRhdGVTb3J0KGE6IGFueSwgYjogYW55LCBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiBkaXJlY3Rpb24gPT0gJ2FzYycgPyAxIDogLTE7XHJcbiAgICAgICAgZWxzZSBpZiAoYSA+IGIpIHJldHVybiBkaXJlY3Rpb24gPT0gJ2FzYycgPyAtMSA6IDE7XHJcblxyXG4gICAgICAgIC8vIGNvbiBhIHVndWFsZSBhIGJcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVmZmV0dHVhIGlsIHRyaW0gZGVpIHNlY29uZGkgZGEgdW5hIGRhdGEgZXNwcmVzc2EgY29tZSBzdHJpbmdhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSBEYXRhIGVzcHJlc3NhIGNvbWUgc3RyaW5nYVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBEYXRhIHNlbnphIGkgc2Vjb25kaVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdHJpbVNlY29uZHModmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgLy9JIG51bWVyaSBtYW5naWF0aSBkYSBkYXlqcyBzcGVzc28gdmVuZ29ubyByaWNvbmRvdHRpIGEgZGF0ZSB2ZXJlLiBNaSBhc3NpY3VybyBjaGUgc2UgY2kgc29ubyBzb2xvIG51bWVyaSBwcm9zZWd1b1xyXG4gICAgICAgIGlmICghaXNOYU4oPGFueT52YWx1ZSkpXHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuXHJcbiAgICAgICAgLy9TZSBub24gaG8gcXVhbGNvc2EgZGVsIHRpcG8gWFgvWVkvWlpaWiBhYTpiYjpjYyBkaSBzaWN1cm8gbm9uIMOoIHVuYSBkYXRhIGNoZSBtaSBpbnRlcmVzc2FcclxuICAgICAgICBpZiAoIS9eXFxkXFxkXFwvXFxkXFxkXFwvXFxkXFxkXFxkXFxkIFxcZFxcZDpcXGRcXGQ6XFxkXFxkJC9nLnRlc3QodmFsdWUpKVxyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcblxyXG4gICAgICAgIC8vSW4gcXVlc3RvIGNhc28gbWkgYXJyaXZhbm8gdmFsb3JpIGNoZSBkZXZvbm8gZXNzZXJlIHN0YW1wYXRpIGFzLWlzLCBzb2xvIHRhZ2xpYW5kbyBpIHNlY29uZGlcclxuICAgICAgICByZXR1cm4gXCInXCIgKyB2YWx1ZS5zdWJzdHIoMCwgdmFsdWUubGVuZ3RoIC0gMyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEYXRhIHVuYSBsaXN0YSBkaSBkYXRlIERhIGUgdW5hIGxpc3RhIGRpIGRhdGUgQSByZXN0aXR1aXNjZSB1biBvZ2dldHRvIHJhcHByZXNlbnRhbnRlIGlsIHJhbmdlIGNoZSBpbmNsdWRlIHR1dHRlIGxlIGRhdGUgcGFzc2F0ZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueVtdfSBmcm9tRGF0ZXMgTGlzdGEgZGVpIERhXHJcbiAgICAgKiBAcGFyYW0ge2FueVtdfSB0b0RhdGVzIExpc3RhIGRlaSBBXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHt7IGZyb206IGFueSwgdG86IGFueSB9fSBSYW5nZSBkaSBkYXRlIERhIC0gQSBjaGUgaW5jbHVkZSB0dXR0aSBpIHZhbG9yaSBkaSAqKmZyb21EYXRlcyoqIGUgKip0b0RhdGVzKipcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldE1pbk1heERhdGVzUmFuZ2UoZnJvbURhdGVzOiBhbnlbXSwgdG9EYXRlczogYW55W10pOiB7IGZyb206IGFueSwgdG86IGFueSB9IHtcclxuICAgICAgICBsZXQgZGF0ZXNGcm9tczogYW55W10gPSBbXTtcclxuICAgICAgICBsZXQgZGF0ZXNUbzogYW55W10gPSBbXTtcclxuXHJcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGZyb21EYXRlcy5sZW5ndGg7IGkrKylcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGxldCBkID0gZnJvbURhdGVzW2ldO1xyXG4gICAgICAgICAgICB2YXIgY29udmVydGlvbiA9IHRoaXMuZ2V0RGF0ZUNvbnZlcnRpb24oZCk7XHJcbiAgICAgICAgICAgIGlmIChjb252ZXJ0aW9uKVxyXG4gICAgICAgICAgICAgICAgZGF0ZXNGcm9tcy5wdXNoKGNvbnZlcnRpb24pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRvRGF0ZXMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBsZXQgZCA9IHRvRGF0ZXNbaV07XHJcbiAgICAgICAgICAgIHZhciBjb252ZXJ0aW9uID0gdGhpcy5nZXREYXRlQ29udmVydGlvbihkKTtcclxuICAgICAgICAgICAgaWYgKGNvbnZlcnRpb24pXHJcbiAgICAgICAgICAgICAgICBkYXRlc1RvLnB1c2goY29udmVydGlvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geyBmcm9tOiBkYXlqcy5taW4oZGF0ZXNGcm9tcyksIHRvOiBkYXlqcy5tYXgoZGF0ZXNUbykgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE90dGllbmUgbGEgY29udmVyc2lvbmUgZGkgdW5hIGRhdGEgaW4gcXVhbHNpYXNpIGZvcm1hdG8gYWwgZm9ybWF0byBzdGFuZGFyZCBEYXlKc1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gZGF0ZSBPZ2dldHRvIHJhcHByZXNlbnRhbnRlIHVuYSBkYXRhLiBQb3RyZWJiZSBlc3NlcmUgdW5hIHN0cmluZ2EsIHVuIERhdGUgbyBnacOgIHVuIERheUpzXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHVzZVV0YyBJbmRpY2Egc2UgdXNhcmUgbCdlc3RlbnNpb25lIHV0YyBkaSBEYXlqcyBwZXIgcGFyc2FyZSBsYSBkYXRhIG8gbm9cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge2FueX0gRGF0YSBpbiBtb2RhbGl0w6AgRGF5SnNcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldERhdGVDb252ZXJ0aW9uKGRhdGU6IGFueSwgdXNlVXRjOiBib29sZWFuID0gZmFsc2UpOiBhbnkge1xyXG4gICAgICAgIGlmICghZGF0ZSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzRGF5SnMoZGF0ZSkpXHJcbiAgICAgICAgICAgIHJldHVybiBkYXRlO1xyXG5cclxuICAgICAgICBpZih0aGlzLmlzSnNEYXRlKGRhdGUpKVxyXG4gICAgICAgICAgICByZXR1cm4gdXNlVXRjID8gZGF5anMudXRjKGRhdGUpOiBkYXlqcyhkYXRlKTtcclxuXHJcbiAgICAgICAgLy8gU2Ugbm9uIGMnw6ggbGEgcHJvcHJpZXTDoCBsZW5ndGggdnVvbCBkaXJlIGNoZSBub24gw6ggdW5hIHN0cmluZ2EgZSBhIHF1ZXN0byBwdW50byBub24gaG8gaWRlYSBkaSBjaGUgbWluY2hpYSBzaWFcclxuICAgICAgICBsZXQgbGVuZ3RoID0gZGF0ZS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKCFsZW5ndGgpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICBpZiAodXNlVXRjICYmICF0aGlzLmFsbG93VXRjKVxyXG4gICAgICAgICAgICB0aHJvdyBcIkBlc2ZhZW56YS9leHRlbnNpb25zOiBSaWNoaWVzdGEgZGF0YSBVVEMgbWEgZGEgY29uZmlndXJhemlvbmUgbGEgbGlicmVyaWEgbm9uIGxvIHN1cHBvcnRhXCI7XHJcblxyXG4gICAgICAgIC8vIFBlciByaXNwYXJtaWFyZSBjaGlhbWF0ZSBhIHRlbnRvbmksIGluIGJhc2UgYWxsYSBsdW5naGV6emEgZGVsbGEgc3RyaW5nYSBjaGlhbW8gZGlyZXR0YW1lbnRlIGlsIG1ldG9kbyBnaXVzdG8sIFxyXG4gICAgICAgIC8vIGNvbnRyb2xsYW5kbyBwb2kgY2hlIG1pIGdlbmVyaSB1bmEgZGF0YSBjb21lIG1lIGxhIGFzcGV0dG8gaW9cclxuICAgICAgICBsZXQgdHJ5VGhpcyA9IG51bGw7XHJcbiAgICAgICAgbGV0IHRvQ2FsbCA9IHVzZVV0YyA/IGRheWpzLnV0YyA6IGRheWpzO1xyXG5cclxuICAgICAgICAvLyBTZSBsYSBkYXRhIGNvbnRpZW5lIGxhIGxldHRlcmEgXCJUXCIgdnVvbCBkaXJlIGNoZSDDqCB1bmEgZGF0YSBkZWwgdGlwbyAyMDIwLTEwLTE1VDAwOjAwOjAwLCBkaXJldHRhbWVudGUgcGFyc2FiaWxlIGRhbCBkYXlqcyBjb2wgbG9jYWxlIGNvcnJldHRvLlxyXG4gICAgICAgIC8vIFBlciBpbCByZXN0byBtaSBiYXNvIHN1bGxhIGx1bmdoZXp6YSBkZWxsYSBzdHJpbmdhXHJcbiAgICAgICAgaWYgKCg8c3RyaW5nPmRhdGUpLmluY2x1ZGVzKFwiVFwiKSlcclxuICAgICAgICAgICAgdHJ5VGhpcyA9IHRvQ2FsbChkYXRlKTtcclxuICAgICAgICBlbHNlIGlmIChsZW5ndGggPT0gdGhpcy5jZmcuZnVsbGRhdGUubGVuZ3RoKVxyXG4gICAgICAgICAgICB0cnlUaGlzID0gdG9DYWxsKGRhdGUsIHRoaXMuY2ZnLmZ1bGxkYXRlKTtcclxuICAgICAgICBlbHNlIGlmIChsZW5ndGggPT0gdGhpcy5jZmcuc21hbGxEYXRlLmxlbmd0aClcclxuICAgICAgICAgICAgdHJ5VGhpcyA9IHRvQ2FsbChkYXRlLCB0aGlzLmNmZy5zbWFsbERhdGUpO1xyXG4gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA9PSB0aGlzLmNmZy5mdWxsZGF0ZU5vU1MubGVuZ3RoKVxyXG4gICAgICAgICAgICB0cnlUaGlzID0gdG9DYWxsKGRhdGUsIHRoaXMuY2ZnLmZ1bGxkYXRlTm9TUylcclxuXHJcbiAgICAgICAgaWYgKHRyeVRoaXMgJiYgdHJ5VGhpcy5pc1ZhbGlkICYmIHRyeVRoaXMuaXNWYWxpZCgpKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ5VGhpcztcclxuXHJcbiAgICAgICAgLy8gU2UgbmllbnRlIGZ1bnppb25hLCBudWxsLiBcclxuICAgICAgICAvLyBSaWNvbmR1cnJlIGwnSW5wdXQgYWQgdW5hIGRhdGEgbm9uIMOoIHBvc3NpYmlsZS5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBjaGUgcmVzdGl0dWlzY2UgKip0cnVlKiogcXVhbG9yYSBsJ29nZ2V0dG8gcGFzc2F0byBmb3NzZSB1bmEgZGF0YSB2ZXJhIGUgcHJvcHJpYSwgKipmYWxzZSoqIGFsdHJpbWVudGlcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHthbnl9IGNoZWNrIE9nZ2V0dG8gZGEgY29udHJvbGxhcmVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IEluZGljYXppb25lIHNlIGwnb2dnZXR0byDDqCB1biB2ZXJvIERhdGUgZGkgSmF2YXNjcmlwdCBvIG5vXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaXNKc0RhdGUoY2hlY2s6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBjaGVjayAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoY2hlY2spID09PSBcIltvYmplY3QgRGF0ZV1cIiAmJiAhaXNOYU4oY2hlY2spO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGNoZSByZXN0aXR1aXNjZSAqKnRydWUqKiBxdWFsb3JhIGwnb2dnZXR0byBwYXNzYXRvIGZvc3NlIHVuIERheUpzIHZlcm8gZSBwcm9wcmlvLCAqKmZhbHNlKiogYWx0cmltZW50aVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gY2hlY2sgT2dnZXR0byBkYSBjb250cm9sbGFyZVxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IEluZGljYXppb25lIHNlIGwnb2dnZXR0byDDqCB1biB2ZXJvIERheUpzIG8gbm9cclxuICAgICAqL1xyXG4gICAgIHByaXZhdGUgaXNEYXlKcyhjaGVjazogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgLy8gTm9uIHVzbyBpbnN0YW5jZW9mIHBlcmNow6kgc2FyZWJiZSBlc3RyZW1hbWVudGUgcGnDuSBsZW50b1xyXG4gICAgICAgIC8vIE5vbiB1c28gbmVtbWVubyBpc0RheWpzKCkgZGVsbGEgbGlicmVyaWEgRGF5anMgZGF0byBjaGUgaGEgbG8gc3Rlc3NvIHByb2JsZW1hOiBodHRwczovL2dpdGh1Yi5jb20vaWFta3VuL2RheWpzL2Jsb2IvMDZmODhmNDI1ODI4YjFjZTk2YjczNzMzMmQyNTE0NWE5NWE0ZWU5ZC9zcmMvaW5kZXguanMjTDlcclxuICAgICAgICByZXR1cm4gY2hlY2suJEQgIT09IHVuZGVmaW5lZCAmJiBjaGVjay4kTSAhPT0gdW5kZWZpbmVkICYmIGNoZWNrLiR5ICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPdHRpZW5lIGxhIGZvcm1hdHRhemlvbmUgZGkgdW5hIGRhdGEgaW4gYmFzZSBhbGxhIHZlcnNpb25lIHJpY2hpZXN0YSBcInNtYWxsXCIgbyBcImxvbmdcIiBlIGEgc2Ugc3RhbXBhcmUgbyBtZW5vIGkgc2Vjb25kaVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gZGF0ZSBPZ2dldHRvIHJhcHByZXNlbnRhbnRlIHVuYSBkYXRhLiBQb3RyZWJiZSBlc3NlcmUgdW5hIHN0cmluZ2EsIHVuIERhdGUgbyBnacOgIHVuIERheUpzXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNtYWxsIEluZGljYSBzZSBmb3JtYXR0YXJsYSBjb24gdW4gZm9ybWF0byBicmV2ZSAoc2UgKip0cnVlKiopIG8gdW4gZm9ybWF0byBwacO5IGx1bmdvIChzZSAqKmZhbHNlKiopXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IERhdGEgZm9ybWF0dGF0YSBuZWwgZm9ybWF0byByaWNoaWVzdG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEZvcm1hdHRlZChkYXRlOiBhbnksIHNtYWxsOiBib29sZWFuLCBzZWNvbmRzOiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgICAgICB2YXIgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUNvbnZlcnRpb24oZGF0ZSk7XHJcbiAgICAgICAgaWYgKCFkYXRlKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KHNtYWxsID8gdGhpcy5jZmcuc21hbGxEYXRlIDogc2Vjb25kcyA/IHRoaXMuY2ZnLmZ1bGxkYXRlRGlzcGxheSA6IHRoaXMuY2ZnLmZ1bGxkYXRlRGlzcGxheU5vU1MpO1xyXG4gICAgfVxyXG59Il19
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5zaW9ucy5kYXRlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9zcmMvbGliL3NlcnZpY2VzL2V4dGVuc2lvbnMuZGF0ZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELFVBQVU7QUFDVixPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQVFyRDs7RUFFRTtBQUVILE1BQU0sT0FBTyxXQUFXO0lBNkJwQjs7OztPQUlHO0lBQ0gsWUFBMkQsTUFBYyxFQUE2QyxRQUFpQjs7UUFBNUUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUE2QyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBaEN2STs7V0FFRztRQUNLLFFBQUcsR0FBRztZQUNWLG1CQUFtQixFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFO1lBQ3JFLGtCQUFrQixFQUFFLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRTtZQUN0Rix3QkFBd0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUU7WUFDdEYsMkJBQTJCLEVBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUU7WUFDN0UscUNBQXFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUU7WUFDN0YsdUNBQXVDLEVBQUUsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFO1lBQ3JHLDBCQUEwQixFQUFFLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixF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QyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdkgsQ0FBQzs7O1lBalBKLFVBQVU7Ozt5Q0FtQ2EsUUFBUSxZQUFJLE1BQU0sU0FBQyxVQUFVOzBDQUEyQixRQUFRLFlBQUksTUFBTSxTQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBFWFRfQUxMT1dfVVRDLCBFWFRfTE9DQUxFIH0gZnJvbSBcIi4uL3Rva2Vuc1wiO1xyXG5cclxuLyoqXHJcbiAqIERpY2hpYXJhemlvbmUgZGVsbGEgdmFyaWFiaWxlIGdsb2JhbGUgZGF5anMuIEwnb25lcmUgZGkgXCJjcmVhcmxhXCIgw6ggYWZmaWRhdG8gYWxsJ2FwcGxpY2F6aW9uZSBjaGUgdXRpbGl6emEgcXVlc3RhIGxpYnJlcmlhLCBcclxuICogY2hlIGRvdnLDoCBpbXBvcnRhcmUgbG8gc2NyaXB0IGdsb2JhbGUgZGkgZGF5anMgbmVsbGEgQ0xJXHJcbiAqL1xyXG4gZGVjbGFyZSB2YXIgZGF5anM6IGFueTtcclxuXHJcbiAvKipcclxuICogU2VydmljZSBjaGUgZm9ybmlzY2UgZGVpIG1ldG9kaSBkaSBlc3RlbnNpb25lIHBlciBsYSBnZXN0aW9uZS9tYW5pcG9sYXppb25lIGRlbGxlIGRhdGVcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERhdGVTZXJ2aWNlIHtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBPZ2dldHRvIHN0YXRpY28gZGkgbG9jYWxpenphemlvbmUgcGVyIGkgbWVzc2FnZ2kgZGkgcXVlc3RhIFNlcnZpY2VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBsb2MgPSB7XHJcbiAgICAgICAgXCJTTUFMTF9EQVRFX0ZPUk1BVFwiOiB7ICdlbi1VUyc6IFwiTU0vREQvWVlZWVwiLCAnaXQtSVQnOiBcIkREL01NL1lZWVlcIiB9LFxyXG4gICAgICAgIFwiRlVMTF9EQVRFX0ZPUk1BVFwiOiB7ICdlbi1VUyc6IFwiTU0vREQvWVlZWSBISDptbTpzc1wiLCAnaXQtSVQnOiBcIkREL01NL1lZWVkgSEg6bW06c3NcIiB9LFxyXG4gICAgICAgIFwiRlVMTF9EQVRFX0ZPUk1BVF9OT19TU1wiOiB7ICdlbi1VUyc6IFwiTU0vREQvWVlZWSBISDptbVwiLCAnaXQtSVQnOiBcIkREL01NL1lZWVkgSEg6bW1cIiB9LFxyXG4gICAgICAgIFwiU01BTExfREFURV9ESVNQTEFZX0ZPUk1BVFwiOiB7ICdlbi1VUyc6IFwiREQvTU0vWVlZWVwiLCAnaXQtSVQnOiBcIkREL01NL1lZWVlcIiB9LFxyXG4gICAgICAgIFwiU01BTExfREFURV9ESVNQTEFZX0ZPUk1BVF9XSVRIX0hPVVJcIjogeyAnZW4tVVMnOiBcIkREL01NL1lZWVkgSEhcIiwgJ2l0LUlUJzogXCJERC9NTS9ZWVlZIEhIXCIgfSxcclxuICAgICAgICBcIlNNQUxMX0RBVEVfRElTUExBWV9GT1JNQVRfV0lUSF9NSU5VVEVcIjogeyAnZW4tVVMnOiBcIkREL01NL1lZWVkgSEg6bW1cIiwgJ2l0LUlUJzogXCJERC9NTS9ZWVlZIEhIOm1tXCIgfSxcclxuICAgICAgICBcIkZVTExfREFURV9ESVNQTEFZX0ZPUk1BVFwiOiB7ICdlbi1VUyc6IFwiREQvTU0vWVlZWSBISDptbTpzc1wiLCAnaXQtSVQnOiBcIkREL01NL1lZWVkgSEg6bW06c3NcIiB9LFxyXG4gICAgICAgIFwiRlVMTF9EQVRFX0RJU1BMQVlfRk9STUFUX05PX1NTXCI6IHsgJ2VuLVVTJzogXCJERC9NTS9ZWVlZIEhIOm1tXCIsICdpdC1JVCc6IFwiREQvTU0vWVlZWSBISDptbVwiIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPZ2dldHRvIGRpIGNvbmZpZ3VyYXppb25lIHBlciB0ZW5lcmUgZGEgY29udG8gbGUgaW5mb3JtYXppb25pIHN1aSBmb3JtYXRpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY2ZnID0ge1xyXG4gICAgICAgIGZ1bGxkYXRlOiBcIlwiLFxyXG4gICAgICAgIGZ1bGxkYXRlRGlzcGxheTogXCJcIixcclxuICAgICAgICBzbWFsbERhdGU6IFwiXCIsXHJcbiAgICAgICAgZnVsbGRhdGVOb1NTOiBcIlwiLFxyXG4gICAgICAgIHNtYWxsRGF0ZVdpdGhIOiBcIlwiLFxyXG4gICAgICAgIHNtYWxsRGF0ZVdpdGhNOiBcIlwiLFxyXG4gICAgICAgIGZ1bGxkYXRlRGlzcGxheU5vU1M6IFwiXCJcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlXHJcbiAgICAgKiBcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoRVhUX0xPQ0FMRSkgcHJpdmF0ZSBMT0NBTEU6IHN0cmluZywgQE9wdGlvbmFsKCkgQEluamVjdChFWFRfQUxMT1dfVVRDKSBwcml2YXRlIGFsbG93VXRjOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5jZmcuc21hbGxEYXRlID0gdGhpcy5sb2NbXCJTTUFMTF9EQVRFX0ZPUk1BVFwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXTtcclxuICAgICAgICB0aGlzLmNmZy5mdWxsZGF0ZSA9IHRoaXMubG9jW1wiRlVMTF9EQVRFX0ZPUk1BVFwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXTtcclxuICAgICAgICB0aGlzLmNmZy5mdWxsZGF0ZU5vU1MgPSB0aGlzLmxvY1tcIkZVTExfREFURV9GT1JNQVRfTk9fU1NcIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ107XHJcbiAgICAgICAgdGhpcy5jZmcuZnVsbGRhdGVEaXNwbGF5ID0gdGhpcy5sb2NbXCJGVUxMX0RBVEVfRElTUExBWV9GT1JNQVRcIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ107XHJcbiAgICAgICAgdGhpcy5jZmcuZnVsbGRhdGVEaXNwbGF5Tm9TUyAgPXRoaXMubG9jW1wiRlVMTF9EQVRFX0RJU1BMQVlfRk9STUFUX05PX1NTXCJdW3RoaXMuTE9DQUxFID8/ICdpdC1JVCddO1xyXG4gICAgICAgIHRoaXMuY2ZnLnNtYWxsRGF0ZSA9IHRoaXMubG9jW1wiU01BTExfREFURV9ESVNQTEFZX0ZPUk1BVFwiXVt0aGlzLkxPQ0FMRSA/PyAnaXQtSVQnXTtcclxuICAgICAgICB0aGlzLmNmZy5zbWFsbERhdGVXaXRoSCA9IHRoaXMubG9jW1wiU01BTExfREFURV9ESVNQTEFZX0ZPUk1BVF9XSVRIX0hPVVJcIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ107XHJcbiAgICAgICAgdGhpcy5jZmcuc21hbGxEYXRlV2l0aE0gPSB0aGlzLmxvY1tcIlNNQUxMX0RBVEVfRElTUExBWV9GT1JNQVRfV0lUSF9NSU5VVEVcIl1bdGhpcy5MT0NBTEUgPz8gJ2l0LUlUJ107XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZ2dpdXN0YSB1bmEgZGF0YSBpbiBcImlzdGFudGUgZmluYWxlXCIgaW4gYmFzZSBhIHF1YWwgw6ggbGEgcGFydGUgZGkgZGF0YSBzaWduaWZpY2F0aXZhLlxyXG4gICAgICogXHJcbiAgICAgKiBFcy4gSXN0YW50ZSBmaW5hbGUgZGVsbGUgb3JlOiAwNS8xMC8xOTkyIC0tPiAwNC8xMC8xOTkyIDI0OjAwKDowMClcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHthbnl9IGRhdGUgRGF0YSBxdWFsc2lhc2kgKERhdGUsIHN0cmluZ2EsIGRheWpzLi4uKSwgdmVycsOgIHJpY29uZG90dGEgYWQgdW4gb2dnZXR0byBkYXlKc1xyXG4gICAgICogQHBhcmFtIHsnZGF5JyB8ICdob3VyJyB8ICdtaW51dGUnfSB0aW1lcGFydCBQYXJ0ZSBzaWduaWZpY2F0aXZhIGRlbGxhIGRhdGFcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJpbnRTZWNvbmRzIEluZGljYSBzZSBlZmZldHR1YXJlIGxhIHN0YW1wYSBkZWkgc2Vjb25kaSBvIG5vXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGp1c3REYXRlVG9GaW5hbEluc3RhbnQoZGF0ZTogYW55LCB0aW1lcGFydDogJ2RheScgfCAnaG91cicgfCAnbWludXRlJywgcHJpbnRTZWNvbmRzOiBib29sZWFuID0gdHJ1ZSk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IG15ZHQgPSB0aGlzLmdldERhdGVDb252ZXJ0aW9uKGRhdGUpO1xyXG4gICAgICAgIGlmIChteWR0ID09IG51bGwpIHJldHVybiBcIkZFOiBOb3QgYSBEYXRlXCI7XHJcblxyXG4gICAgICAgIGxldCBpc1plcm9UaW1lID0gbXlkdC5zdGFydE9mKHRpbWVwYXJ0KS52YWx1ZU9mKCkgPT09IG15ZHQudmFsdWVPZigpO1xyXG4gICAgICAgIGlmICghaXNaZXJvVGltZSkge1xyXG4gICAgICAgICAgICBpZiAodGltZXBhcnQgPT0gXCJkYXlcIiAmJiBteWR0LnN1YnRyYWN0KDEsIFwiaG91clwiKS5ob3VyKCkgPT0gbXlkdC5ob3VyKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIFNlIGwnb3JhIHByZWNlZGVudGUgw6ggbG8gc3Rlc3NvIG9yYXJpbyBkZWxsJ29yYSBhdHR1YWxlIGwnaXN0YW50ZSBmaW5hbGUgZGV2J2Vzc2VyZSBtYW5kYXRvIGF2YW50aSBkaSAxXHJcbiAgICAgICAgICAgICAgICBteWR0ID0gbXlkdC5hZGQoMSwgXCJob3VyXCIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gcHJpbnRTZWNvbmRzID8gbXlkdC5mb3JtYXQodGhpcy5jZmcuZnVsbGRhdGVEaXNwbGF5KSA6IG15ZHQuZm9ybWF0KHRoaXMuY2ZnLmZ1bGxkYXRlRGlzcGxheU5vU1MpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHRtcFZhbHVlID0gbXlkdC5zdWJ0cmFjdCgxLCB0aW1lcGFydCk7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gXCJcIjtcclxuXHJcbiAgICAgICAgLy8gSXN0YW50ZSBmaW5hbGUgZGVsbGUgb3JlOiAwNS8xMC8xOTkyIC0tPiAwNC8xMC8xOTkyIDI0OjAwKDowMClcclxuICAgICAgICBpZiAodGltZXBhcnQgPT0gJ2RheScpXHJcbiAgICAgICAgICAgIHZhbHVlID0gdG1wVmFsdWUuZm9ybWF0KHRoaXMuY2ZnLnNtYWxsRGF0ZSkgKyBcIiAyNDowMFwiICsgKHByaW50U2Vjb25kcyA/ICc6MDAnIDogJycpO1xyXG5cclxuICAgICAgICAvLyBJc3RhbnRlIGZpbmFsZSBkZWkgbWludXRpOiBnaW9ybm8gMDUvMTAvMTk5MiAwNDowMDowMCAtLT4gMDUvMTAvMTk5MiAwMzo2MCg6MDApXHJcbiAgICAgICAgZWxzZSBpZiAodGltZXBhcnQgPT0gJ2hvdXInKVxyXG4gICAgICAgICAgICB2YWx1ZSA9IHRtcFZhbHVlLmZvcm1hdCh0aGlzLmNmZy5zbWFsbERhdGVXaXRoSCkgKyBcIjo2MFwiICsgKHByaW50U2Vjb25kcyA/ICc6MDAnIDogJycpO1xyXG5cclxuICAgICAgICAvLyBJc3RhbnRlIGZpbmFsZSBkZWkgc2Vjb25kaTogZ2lvcm5vIDA1LzEwLzE5OTIgMDQ6MTA6MDAgLS0+IDA1LzEwLzE5OTIgMDQ6MDk6NjBcclxuICAgICAgICBlbHNlIGlmICh0aW1lcGFydCA9PSAnbWludXRlJylcclxuICAgICAgICAgICAgdmFsdWUgPSB0bXBWYWx1ZS5mb3JtYXQodGhpcy5jZmcuc21hbGxEYXRlV2l0aE0pICsgXCI6NjBcIjtcclxuXHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuemlvbmUgY2hlIGVmZmV0dHVhIGwnb3JkaW5hbWVudG8gZnJhIDIgZGF0ZSBpbiBiYXNlIGFsbGEgZGlyZXppb25lIHNwZWNpZmljYXRhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55fSBhIFByaW1hIGRhdGEgcGVyIGlsIGNvbmZyb250b1xyXG4gICAgICogQHBhcmFtIHthbnl9IGIgU2Vjb25kYSBkYXRhIHBlciBpbCBjb25mcm9udG9cclxuICAgICAqIEBwYXJhbSB7J2FzYycgfCAnZGVzYyd9IGRpcmVjdGlvbiBEaXJlemlvbmUgcmlzcGV0dG8gYSBjdWkgb3JkaW5hcmUgbGUgZHVlIGRhdGVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge251bWJlcn0gMCBzZSBsZSBkYXRlIHNvbm8gdWd1YWxpLCAxIHNlIGxhIGRhdGEgQSBkZXZlIHZlbmlyZSBsb2dpY2FtZW50ZSBwcmltYSBkZWxsYSBkYXRhIEIsIC0xIGFsdHJpbWVudGlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRhdGVTb3J0KGE6IGFueSwgYjogYW55LCBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiBkaXJlY3Rpb24gPT0gJ2FzYycgPyAxIDogLTE7XHJcbiAgICAgICAgZWxzZSBpZiAoYSA+IGIpIHJldHVybiBkaXJlY3Rpb24gPT0gJ2FzYycgPyAtMSA6IDE7XHJcblxyXG4gICAgICAgIC8vIGNvbiBhIHVndWFsZSBhIGJcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEVmZmV0dHVhIGlsIHRyaW0gZGVpIHNlY29uZGkgZGEgdW5hIGRhdGEgZXNwcmVzc2EgY29tZSBzdHJpbmdhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSBEYXRhIGVzcHJlc3NhIGNvbWUgc3RyaW5nYVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBEYXRhIHNlbnphIGkgc2Vjb25kaVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdHJpbVNlY29uZHModmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgLy9JIG51bWVyaSBtYW5naWF0aSBkYSBkYXlqcyBzcGVzc28gdmVuZ29ubyByaWNvbmRvdHRpIGEgZGF0ZSB2ZXJlLiBNaSBhc3NpY3VybyBjaGUgc2UgY2kgc29ubyBzb2xvIG51bWVyaSBwcm9zZWd1b1xyXG4gICAgICAgIGlmICghaXNOYU4oPGFueT52YWx1ZSkpXHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuXHJcbiAgICAgICAgLy9TZSBub24gaG8gcXVhbGNvc2EgZGVsIHRpcG8gWFgvWVkvWlpaWiBhYTpiYjpjYyBkaSBzaWN1cm8gbm9uIMOoIHVuYSBkYXRhIGNoZSBtaSBpbnRlcmVzc2FcclxuICAgICAgICBpZiAoIS9eXFxkXFxkXFwvXFxkXFxkXFwvXFxkXFxkXFxkXFxkIFxcZFxcZDpcXGRcXGQ6XFxkXFxkJC9nLnRlc3QodmFsdWUpKVxyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcblxyXG4gICAgICAgIC8vSW4gcXVlc3RvIGNhc28gbWkgYXJyaXZhbm8gdmFsb3JpIGNoZSBkZXZvbm8gZXNzZXJlIHN0YW1wYXRpIGFzLWlzLCBzb2xvIHRhZ2xpYW5kbyBpIHNlY29uZGlcclxuICAgICAgICByZXR1cm4gXCInXCIgKyB2YWx1ZS5zdWJzdHIoMCwgdmFsdWUubGVuZ3RoIC0gMyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEYXRhIHVuYSBsaXN0YSBkaSBkYXRlIERhIGUgdW5hIGxpc3RhIGRpIGRhdGUgQSByZXN0aXR1aXNjZSB1biBvZ2dldHRvIHJhcHByZXNlbnRhbnRlIGlsIHJhbmdlIGNoZSBpbmNsdWRlIHR1dHRlIGxlIGRhdGUgcGFzc2F0ZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueVtdfSBmcm9tRGF0ZXMgTGlzdGEgZGVpIERhXHJcbiAgICAgKiBAcGFyYW0ge2FueVtdfSB0b0RhdGVzIExpc3RhIGRlaSBBXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHt7IGZyb206IGFueSwgdG86IGFueSB9fSBSYW5nZSBkaSBkYXRlIERhIC0gQSBjaGUgaW5jbHVkZSB0dXR0aSBpIHZhbG9yaSBkaSAqKmZyb21EYXRlcyoqIGUgKip0b0RhdGVzKipcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldE1pbk1heERhdGVzUmFuZ2UoZnJvbURhdGVzOiBhbnlbXSwgdG9EYXRlczogYW55W10pOiB7IGZyb206IGFueSwgdG86IGFueSB9IHtcclxuICAgICAgICBsZXQgZGF0ZXNGcm9tczogYW55W10gPSBbXTtcclxuICAgICAgICBsZXQgZGF0ZXNUbzogYW55W10gPSBbXTtcclxuXHJcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGZyb21EYXRlcy5sZW5ndGg7IGkrKylcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIGxldCBkID0gZnJvbURhdGVzW2ldO1xyXG4gICAgICAgICAgICB2YXIgY29udmVydGlvbiA9IHRoaXMuZ2V0RGF0ZUNvbnZlcnRpb24oZCk7XHJcbiAgICAgICAgICAgIGlmIChjb252ZXJ0aW9uKVxyXG4gICAgICAgICAgICAgICAgZGF0ZXNGcm9tcy5wdXNoKGNvbnZlcnRpb24pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRvRGF0ZXMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBsZXQgZCA9IHRvRGF0ZXNbaV07XHJcbiAgICAgICAgICAgIHZhciBjb252ZXJ0aW9uID0gdGhpcy5nZXREYXRlQ29udmVydGlvbihkKTtcclxuICAgICAgICAgICAgaWYgKGNvbnZlcnRpb24pXHJcbiAgICAgICAgICAgICAgICBkYXRlc1RvLnB1c2goY29udmVydGlvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geyBmcm9tOiBkYXlqcy5taW4oZGF0ZXNGcm9tcyksIHRvOiBkYXlqcy5tYXgoZGF0ZXNUbykgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE90dGllbmUgbGEgY29udmVyc2lvbmUgZGkgdW5hIGRhdGEgaW4gcXVhbHNpYXNpIGZvcm1hdG8gYWwgZm9ybWF0byBzdGFuZGFyZCBEYXlKc1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gZGF0ZSBPZ2dldHRvIHJhcHByZXNlbnRhbnRlIHVuYSBkYXRhLiBQb3RyZWJiZSBlc3NlcmUgdW5hIHN0cmluZ2EsIHVuIERhdGUgbyBnacOgIHVuIERheUpzXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHVzZVV0YyBJbmRpY2Egc2UgdXNhcmUgbCdlc3RlbnNpb25lIHV0YyBkaSBEYXlqcyBwZXIgcGFyc2FyZSBsYSBkYXRhIG8gbm9cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge2FueX0gRGF0YSBpbiBtb2RhbGl0w6AgRGF5SnNcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldERhdGVDb252ZXJ0aW9uKGRhdGU6IGFueSwgdXNlVXRjOiBib29sZWFuID0gZmFsc2UpOiBhbnkge1xyXG4gICAgICAgIGlmICghZGF0ZSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmlzRGF5SnMoZGF0ZSkpXHJcbiAgICAgICAgICAgIHJldHVybiBkYXRlO1xyXG5cclxuICAgICAgICBpZih0aGlzLmlzSnNEYXRlKGRhdGUpKVxyXG4gICAgICAgICAgICByZXR1cm4gdXNlVXRjID8gZGF5anMudXRjKGRhdGUpOiBkYXlqcyhkYXRlKTtcclxuXHJcbiAgICAgICAgLy8gU2Ugbm9uIGMnw6ggbGEgcHJvcHJpZXTDoCBsZW5ndGggdnVvbCBkaXJlIGNoZSBub24gw6ggdW5hIHN0cmluZ2EgZSBhIHF1ZXN0byBwdW50byBub24gaG8gaWRlYSBkaSBjaGUgbWluY2hpYSBzaWFcclxuICAgICAgICBsZXQgbGVuZ3RoID0gZGF0ZS5sZW5ndGg7XHJcbiAgICAgICAgaWYgKCFsZW5ndGgpXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgICBpZiAodXNlVXRjICYmICF0aGlzLmFsbG93VXRjKVxyXG4gICAgICAgICAgICB0aHJvdyBcIkBlc2ZhZW56YS9leHRlbnNpb25zOiBSaWNoaWVzdGEgZGF0YSBVVEMgbWEgZGEgY29uZmlndXJhemlvbmUgbGEgbGlicmVyaWEgbm9uIGxvIHN1cHBvcnRhXCI7XHJcblxyXG4gICAgICAgIC8vIFBlciByaXNwYXJtaWFyZSBjaGlhbWF0ZSBhIHRlbnRvbmksIGluIGJhc2UgYWxsYSBsdW5naGV6emEgZGVsbGEgc3RyaW5nYSBjaGlhbW8gZGlyZXR0YW1lbnRlIGlsIG1ldG9kbyBnaXVzdG8sIFxyXG4gICAgICAgIC8vIGNvbnRyb2xsYW5kbyBwb2kgY2hlIG1pIGdlbmVyaSB1bmEgZGF0YSBjb21lIG1lIGxhIGFzcGV0dG8gaW9cclxuICAgICAgICBsZXQgdHJ5VGhpcyA9IG51bGw7XHJcbiAgICAgICAgbGV0IHRvQ2FsbCA9IHVzZVV0YyA/IGRheWpzLnV0YyA6IGRheWpzO1xyXG5cclxuICAgICAgICAvLyBTZSBsYSBkYXRhIGNvbnRpZW5lIGxhIGxldHRlcmEgXCJUXCIgdnVvbCBkaXJlIGNoZSDDqCB1bmEgZGF0YSBkZWwgdGlwbyAyMDIwLTEwLTE1VDAwOjAwOjAwLCBkaXJldHRhbWVudGUgcGFyc2FiaWxlIGRhbCBkYXlqcyBjb2wgbG9jYWxlIGNvcnJldHRvLlxyXG4gICAgICAgIC8vIFBlciBpbCByZXN0byBtaSBiYXNvIHN1bGxhIGx1bmdoZXp6YSBkZWxsYSBzdHJpbmdhXHJcbiAgICAgICAgaWYgKCg8c3RyaW5nPmRhdGUpLmluY2x1ZGVzKFwiVFwiKSlcclxuICAgICAgICAgICAgdHJ5VGhpcyA9IHRvQ2FsbChkYXRlKTtcclxuICAgICAgICBlbHNlIGlmIChsZW5ndGggPT0gdGhpcy5jZmcuZnVsbGRhdGUubGVuZ3RoKVxyXG4gICAgICAgICAgICB0cnlUaGlzID0gdG9DYWxsKGRhdGUsIHRoaXMuY2ZnLmZ1bGxkYXRlKTtcclxuICAgICAgICBlbHNlIGlmIChsZW5ndGggPT0gdGhpcy5jZmcuc21hbGxEYXRlLmxlbmd0aClcclxuICAgICAgICAgICAgdHJ5VGhpcyA9IHRvQ2FsbChkYXRlLCB0aGlzLmNmZy5zbWFsbERhdGUpO1xyXG4gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA9PSB0aGlzLmNmZy5mdWxsZGF0ZU5vU1MubGVuZ3RoKVxyXG4gICAgICAgICAgICB0cnlUaGlzID0gdG9DYWxsKGRhdGUsIHRoaXMuY2ZnLmZ1bGxkYXRlTm9TUylcclxuXHJcbiAgICAgICAgaWYgKHRyeVRoaXMgJiYgdHJ5VGhpcy5pc1ZhbGlkICYmIHRyeVRoaXMuaXNWYWxpZCgpKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ5VGhpcztcclxuXHJcbiAgICAgICAgLy8gU2UgbmllbnRlIGZ1bnppb25hLCBudWxsLiBcclxuICAgICAgICAvLyBSaWNvbmR1cnJlIGwnSW5wdXQgYWQgdW5hIGRhdGEgbm9uIMOoIHBvc3NpYmlsZS5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBjaGUgcmVzdGl0dWlzY2UgKip0cnVlKiogcXVhbG9yYSBsJ29nZ2V0dG8gcGFzc2F0byBmb3NzZSB1bmEgZGF0YSB2ZXJhIGUgcHJvcHJpYSwgKipmYWxzZSoqIGFsdHJpbWVudGlcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHthbnl9IGNoZWNrIE9nZ2V0dG8gZGEgY29udHJvbGxhcmVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IEluZGljYXppb25lIHNlIGwnb2dnZXR0byDDqCB1biB2ZXJvIERhdGUgZGkgSmF2YXNjcmlwdCBvIG5vXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaXNKc0RhdGUoY2hlY2s6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBjaGVjayAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoY2hlY2spID09PSBcIltvYmplY3QgRGF0ZV1cIiAmJiAhaXNOYU4oY2hlY2spO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGNoZSByZXN0aXR1aXNjZSAqKnRydWUqKiBxdWFsb3JhIGwnb2dnZXR0byBwYXNzYXRvIGZvc3NlIHVuIERheUpzIHZlcm8gZSBwcm9wcmlvLCAqKmZhbHNlKiogYWx0cmltZW50aVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gY2hlY2sgT2dnZXR0byBkYSBjb250cm9sbGFyZVxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IEluZGljYXppb25lIHNlIGwnb2dnZXR0byDDqCB1biB2ZXJvIERheUpzIG8gbm9cclxuICAgICAqL1xyXG4gICAgIHByaXZhdGUgaXNEYXlKcyhjaGVjazogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgLy8gTm9uIHVzbyBpbnN0YW5jZW9mIHBlcmNow6kgc2FyZWJiZSBlc3RyZW1hbWVudGUgcGnDuSBsZW50b1xyXG4gICAgICAgIC8vIE5vbiB1c28gbmVtbWVubyBpc0RheWpzKCkgZGVsbGEgbGlicmVyaWEgRGF5anMgZGF0byBjaGUgaGEgbG8gc3Rlc3NvIHByb2JsZW1hOiBodHRwczovL2dpdGh1Yi5jb20vaWFta3VuL2RheWpzL2Jsb2IvMDZmODhmNDI1ODI4YjFjZTk2YjczNzMzMmQyNTE0NWE5NWE0ZWU5ZC9zcmMvaW5kZXguanMjTDlcclxuICAgICAgICByZXR1cm4gY2hlY2suJEQgIT09IHVuZGVmaW5lZCAmJiBjaGVjay4kTSAhPT0gdW5kZWZpbmVkICYmIGNoZWNrLiR5ICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPdHRpZW5lIGxhIGZvcm1hdHRhemlvbmUgZGkgdW5hIGRhdGEgaW4gYmFzZSBhbGxhIHZlcnNpb25lIHJpY2hpZXN0YSBcInNtYWxsXCIgbyBcImxvbmdcIiBlIGEgc2Ugc3RhbXBhcmUgbyBtZW5vIGkgc2Vjb25kaVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2FueX0gZGF0ZSBPZ2dldHRvIHJhcHByZXNlbnRhbnRlIHVuYSBkYXRhLiBQb3RyZWJiZSBlc3NlcmUgdW5hIHN0cmluZ2EsIHVuIERhdGUgbyBnacOgIHVuIERheUpzXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNtYWxsIEluZGljYSBzZSBmb3JtYXR0YXJsYSBjb24gdW4gZm9ybWF0byBicmV2ZSAoc2UgKip0cnVlKiopIG8gdW4gZm9ybWF0byBwacO5IGx1bmdvIChzZSAqKmZhbHNlKiopXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IERhdGEgZm9ybWF0dGF0YSBuZWwgZm9ybWF0byByaWNoaWVzdG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEZvcm1hdHRlZChkYXRlOiBhbnksIHNtYWxsOiBib29sZWFuLCBzZWNvbmRzOiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgICAgICB2YXIgZGF0ZSA9IHRoaXMuZ2V0RGF0ZUNvbnZlcnRpb24oZGF0ZSk7XHJcbiAgICAgICAgaWYgKCFkYXRlKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgcmV0dXJuIGRhdGUuZm9ybWF0KHNtYWxsID8gdGhpcy5jZmcuc21hbGxEYXRlIDogc2Vjb25kcyA/IHRoaXMuY2ZnLmZ1bGxkYXRlRGlzcGxheSA6IHRoaXMuY2ZnLmZ1bGxkYXRlRGlzcGxheU5vU1MpO1xyXG4gICAgfVxyXG59Il19
@@ -585,8 +585,13 @@ class DateService {
585
585
  if (mydt == null)
586
586
  return "FE: Not a Date";
587
587
  let isZeroTime = mydt.startOf(timepart).valueOf() === mydt.valueOf();
588
- if (!isZeroTime)
588
+ if (!isZeroTime) {
589
+ if (timepart == "day" && mydt.subtract(1, "hour").hour() == mydt.hour()) {
590
+ // Se l'ora precedente è lo stesso orario dell'ora attuale l'istante finale dev'essere mandato avanti di 1
591
+ mydt = mydt.add(1, "hour");
592
+ }
589
593
  return printSeconds ? mydt.format(this.cfg.fulldateDisplay) : mydt.format(this.cfg.fulldateDisplayNoSS);
594
+ }
590
595
  let tmpValue = mydt.subtract(1, timepart);
591
596
  let value = "";
592
597
  // Istante finale delle ore: 05/10/1992 --> 04/10/1992 24:00(:00)