@appium/base-driver 8.5.2 → 8.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/basedriver/capabilities.d.ts.map +1 -1
- package/build/lib/basedriver/capabilities.js +1 -1
- package/build/lib/basedriver/commands/event.js +1 -1
- package/build/lib/basedriver/commands/find.d.ts.map +1 -1
- package/build/lib/basedriver/commands/find.js +1 -1
- package/build/lib/basedriver/commands/index.js +1 -1
- package/build/lib/basedriver/commands/log.d.ts.map +1 -1
- package/build/lib/basedriver/commands/log.js +1 -1
- package/build/lib/basedriver/commands/session.js +1 -1
- package/build/lib/basedriver/commands/settings.d.ts.map +1 -1
- package/build/lib/basedriver/commands/settings.js +1 -1
- package/build/lib/basedriver/commands/timeout.d.ts.map +1 -1
- package/build/lib/basedriver/commands/timeout.js +1 -1
- package/build/lib/basedriver/core.d.ts +120 -139
- package/build/lib/basedriver/core.d.ts.map +1 -1
- package/build/lib/basedriver/core.js +1 -49
- package/build/lib/basedriver/desired-caps.d.ts +5 -2
- package/build/lib/basedriver/desired-caps.d.ts.map +1 -1
- package/build/lib/basedriver/desired-caps.js +14 -18
- package/build/lib/basedriver/device-settings.d.ts +9 -9
- package/build/lib/basedriver/device-settings.d.ts.map +1 -1
- package/build/lib/basedriver/device-settings.js +4 -4
- package/build/lib/basedriver/driver.d.ts +43 -38
- package/build/lib/basedriver/driver.d.ts.map +1 -1
- package/build/lib/basedriver/driver.js +58 -11
- package/build/lib/basedriver/helpers.d.ts +8 -3
- package/build/lib/basedriver/helpers.d.ts.map +1 -1
- package/build/lib/basedriver/helpers.js +4 -6
- package/build/lib/basedriver/logger.d.ts +1 -1
- package/build/lib/basedriver/logger.d.ts.map +1 -1
- package/build/lib/basedriver/logger.js +1 -1
- package/build/lib/constants.js +1 -1
- package/build/lib/express/crash.d.ts.map +1 -1
- package/build/lib/express/crash.js +1 -1
- package/build/lib/express/express-logging.d.ts.map +1 -1
- package/build/lib/express/express-logging.js +1 -1
- package/build/lib/express/idempotency.js +1 -1
- package/build/lib/express/logger.d.ts +1 -1
- package/build/lib/express/logger.d.ts.map +1 -1
- package/build/lib/express/logger.js +1 -1
- package/build/lib/express/middleware.d.ts.map +1 -1
- package/build/lib/express/middleware.js +1 -1
- package/build/lib/express/server.d.ts +21 -0
- package/build/lib/express/server.d.ts.map +1 -1
- package/build/lib/express/server.js +4 -9
- package/build/lib/express/static.d.ts.map +1 -1
- package/build/lib/express/static.js +2 -2
- package/build/lib/express/websocket.d.ts +14 -11
- package/build/lib/express/websocket.d.ts.map +1 -1
- package/build/lib/express/websocket.js +2 -2
- package/build/lib/helpers/capabilities.d.ts.map +1 -1
- package/build/lib/helpers/capabilities.js +1 -1
- package/build/lib/index.d.ts +2 -1
- package/build/lib/index.js +7 -1
- package/build/lib/jsonwp-proxy/protocol-converter.d.ts.map +1 -1
- package/build/lib/jsonwp-proxy/protocol-converter.js +2 -2
- package/build/lib/jsonwp-proxy/proxy.d.ts +30 -5
- package/build/lib/jsonwp-proxy/proxy.d.ts.map +1 -1
- package/build/lib/jsonwp-proxy/proxy.js +20 -4
- package/build/lib/jsonwp-status/status.d.ts.map +1 -1
- package/build/lib/jsonwp-status/status.js +2 -2
- package/build/lib/protocol/errors.d.ts +17 -8
- package/build/lib/protocol/errors.d.ts.map +1 -1
- package/build/lib/protocol/errors.js +9 -5
- package/build/lib/protocol/helpers.js +1 -1
- package/build/lib/protocol/index.js +1 -1
- package/build/lib/protocol/protocol.d.ts.map +1 -1
- package/build/lib/protocol/protocol.js +1 -1
- package/build/lib/protocol/routes.d.ts +17 -3
- package/build/lib/protocol/routes.d.ts.map +1 -1
- package/build/lib/protocol/routes.js +1 -1
- package/build/lib/protocol/validators.js +1 -1
- package/build/test/basedriver/driver-e2e-tests.js +1 -1
- package/build/test/basedriver/driver-tests.js +1 -1
- package/build/test/basedriver/index.js +1 -1
- package/build/test/e2e/basedriver/driver.e2e.spec.js +1 -1
- package/build/test/e2e/basedriver/helpers.e2e.spec.js +1 -1
- package/build/test/e2e/basedriver/websockets.e2e.spec.js +1 -1
- package/build/test/e2e/express/server.e2e.spec.js +1 -1
- package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +1 -1
- package/build/test/e2e/protocol/fake-driver.js +1 -1
- package/build/test/e2e/protocol/helpers.js +1 -1
- package/build/test/e2e/protocol/protocol.e2e.spec.js +13 -13
- package/build/test/helpers.js +1 -1
- package/build/test/unit/basedriver/capabilities.spec.js +12 -12
- package/build/test/unit/basedriver/capability.spec.js +15 -15
- package/build/test/unit/basedriver/commands/event.spec.js +1 -1
- package/build/test/unit/basedriver/commands/log.spec.js +1 -1
- package/build/test/unit/basedriver/device-settings.spec.js +1 -1
- package/build/test/unit/basedriver/driver.spec.js +1 -1
- package/build/test/unit/basedriver/helpers.spec.js +33 -33
- package/build/test/unit/basedriver/timeout.spec.js +1 -1
- package/build/test/unit/express/server.spec.js +1 -1
- package/build/test/unit/express/static.spec.js +2 -2
- package/build/test/unit/jsonwp-proxy/mock-request.js +1 -1
- package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +1 -1
- package/build/test/unit/jsonwp-proxy/proxy.spec.js +2 -2
- package/build/test/unit/jsonwp-proxy/url.spec.js +1 -1
- package/build/test/unit/jsonwp-status/status.spec.js +1 -1
- package/build/test/unit/protocol/errors.spec.js +1 -1
- package/build/test/unit/protocol/routes.spec.js +1 -1
- package/build/test/unit/protocol/validator.spec.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/lib/basedriver/capabilities.js +95 -47
- package/lib/basedriver/commands/event.js +4 -4
- package/lib/basedriver/commands/find.js +12 -26
- package/lib/basedriver/commands/index.js +7 -7
- package/lib/basedriver/commands/log.js +5 -7
- package/lib/basedriver/commands/session.js +3 -3
- package/lib/basedriver/commands/settings.js +3 -5
- package/lib/basedriver/commands/timeout.js +18 -23
- package/lib/basedriver/core.js +150 -229
- package/lib/basedriver/desired-caps.js +30 -29
- package/lib/basedriver/device-settings.js +21 -20
- package/lib/basedriver/driver.js +131 -96
- package/lib/basedriver/helpers.js +124 -81
- package/lib/basedriver/logger.js +1 -1
- package/lib/constants.js +2 -6
- package/lib/express/crash.js +4 -6
- package/lib/express/express-logging.js +26 -24
- package/lib/express/idempotency.js +16 -16
- package/lib/express/logger.js +1 -1
- package/lib/express/middleware.js +49 -33
- package/lib/express/server.js +68 -44
- package/lib/express/static.js +11 -12
- package/lib/express/websocket.js +26 -16
- package/lib/helpers/capabilities.js +11 -16
- package/lib/index.js +50 -33
- package/lib/jsonwp-proxy/protocol-converter.js +85 -69
- package/lib/jsonwp-proxy/proxy.js +116 -53
- package/lib/jsonwp-status/status.js +36 -29
- package/lib/protocol/errors.js +469 -292
- package/lib/protocol/helpers.js +5 -8
- package/lib/protocol/index.js +22 -15
- package/lib/protocol/protocol.js +103 -55
- package/lib/protocol/routes.js +430 -273
- package/lib/protocol/validators.js +5 -5
- package/package.json +9 -11
- package/test/basedriver/driver-e2e-tests.js +92 -66
- package/test/basedriver/driver-tests.js +90 -33
- package/test/basedriver/index.js +1 -1
|
@@ -346,11 +346,11 @@ describe('caps', function () {
|
|
|
346
346
|
(0, _capabilities.processCapabilities)({
|
|
347
347
|
alwaysMatch: {
|
|
348
348
|
'appium:platformName': 'Foo',
|
|
349
|
-
|
|
349
|
+
platformName: 'Bar'
|
|
350
350
|
},
|
|
351
351
|
firstMatch: [{
|
|
352
352
|
'appium:browserName': 'FOO',
|
|
353
|
-
|
|
353
|
+
browserName: 'BAR'
|
|
354
354
|
}]
|
|
355
355
|
}).should.deep.equal({
|
|
356
356
|
platformName: 'Bar',
|
|
@@ -360,7 +360,7 @@ describe('caps', function () {
|
|
|
360
360
|
it('should throw exception if duplicates in alwaysMatch and firstMatch', function () {
|
|
361
361
|
(() => (0, _capabilities.processCapabilities)({
|
|
362
362
|
alwaysMatch: {
|
|
363
|
-
|
|
363
|
+
platformName: 'Fake',
|
|
364
364
|
'appium:fakeCap': 'foobar'
|
|
365
365
|
},
|
|
366
366
|
firstMatch: [{
|
|
@@ -371,7 +371,7 @@ describe('caps', function () {
|
|
|
371
371
|
it('should not throw an exception if presence constraint is not met on a firstMatch capability', function () {
|
|
372
372
|
const caps = (0, _capabilities.processCapabilities)({
|
|
373
373
|
alwaysMatch: {
|
|
374
|
-
|
|
374
|
+
platformName: 'Fake',
|
|
375
375
|
'appium:fakeCap': 'foobar'
|
|
376
376
|
},
|
|
377
377
|
firstMatch: [{
|
|
@@ -392,7 +392,7 @@ describe('caps', function () {
|
|
|
392
392
|
it('should throw an exception if no matching caps were found', function () {
|
|
393
393
|
(() => (0, _capabilities.processCapabilities)({
|
|
394
394
|
alwaysMatch: {
|
|
395
|
-
|
|
395
|
+
platformName: 'Fake',
|
|
396
396
|
'appium:fakeCap': 'foobar'
|
|
397
397
|
},
|
|
398
398
|
firstMatch: [{
|
|
@@ -414,15 +414,15 @@ describe('caps', function () {
|
|
|
414
414
|
const constraints = { ..._desiredCaps.desiredCapabilityConstraints
|
|
415
415
|
};
|
|
416
416
|
const expectedMatchingCaps = {
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
417
|
+
platformName: 'Fake',
|
|
418
|
+
automationName: 'Fake',
|
|
419
|
+
deviceName: 'Fake'
|
|
420
420
|
};
|
|
421
421
|
let matchingCaps;
|
|
422
422
|
let caps;
|
|
423
423
|
beforeEach(function () {
|
|
424
424
|
matchingCaps = {
|
|
425
|
-
|
|
425
|
+
platformName: 'Fake',
|
|
426
426
|
'appium:automationName': 'Fake',
|
|
427
427
|
'appium:deviceName': 'Fake'
|
|
428
428
|
};
|
|
@@ -498,7 +498,7 @@ describe('caps', function () {
|
|
|
498
498
|
it('should not find a standard cap in alwaysMatch', function () {
|
|
499
499
|
(0, _capabilities.findNonPrefixedCaps)({
|
|
500
500
|
alwaysMatch: {
|
|
501
|
-
|
|
501
|
+
platformName: 'Any'
|
|
502
502
|
}
|
|
503
503
|
}).should.eql([]);
|
|
504
504
|
});
|
|
@@ -514,7 +514,7 @@ describe('caps', function () {
|
|
|
514
514
|
(0, _capabilities.findNonPrefixedCaps)({
|
|
515
515
|
alwaysMatch: {},
|
|
516
516
|
firstMatch: [{
|
|
517
|
-
|
|
517
|
+
platformName: 'Any'
|
|
518
518
|
}]
|
|
519
519
|
}).should.eql([]);
|
|
520
520
|
});
|
|
@@ -669,4 +669,4 @@ describe('caps', function () {
|
|
|
669
669
|
});
|
|
670
670
|
});
|
|
671
671
|
});
|
|
672
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iYXNlZHJpdmVyL2NhcGFiaWxpdGllcy5zcGVjLmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiaXQiLCJhcmciLCJ1bmRlZmluZWQiLCJzaG91bGQiLCJ0aHJvdyIsImRlZXAiLCJlcXVhbCIsImZvbyIsInByZXNlbmNlIiwic2tpcFByZXNlbmNlQ29uc3RyYWludCIsImlzU3RyaW5nIiwiaXNOdW1iZXIiLCJpc0Jvb2xlYW4iLCJpbmNsdXNpb25DYXNlSW5zZW5zaXRpdmUiLCJpbmNsdXNpb24iLCJjYXBzIiwibnVtYmVyIiwic3RyaW5nIiwicHJlc2VudCIsImV4dHJhIiwiY29uc3RyYWludHMiLCJub3RQcmVzZW50IiwiaGVsbG8iLCJwcmltYXJ5IiwiYSIsImIiLCJzZWNvbmRhcnkiLCJjIiwiZCIsImJlZm9yZUVhY2giLCJhbHdheXNNYXRjaCIsInJlcXVpcmVkQ2FwcyIsImFsbEZpcnN0TWF0Y2hDYXBzIiwiZmlyc3RNYXRjaCIsInZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzIiwibWF0Y2hlZENhcHMiLCJnb29kYnllIiwic29tZUF0dHJpYnV0ZSIsInBsYXRmb3JtTmFtZSIsImJyb3dzZXJOYW1lIiwiZmFrZUNhcCIsIm1pc3NpbmdDYXAiLCJkZXNpcmVkQ2FwYWJpbGl0eUNvbnN0cmFpbnRzIiwiZXhwZWN0ZWRNYXRjaGluZ0NhcHMiLCJtYXRjaGluZ0NhcHMiLCJfIiwib21pdCIsImVxbCIsIm5vblN0YW5kYXJkT25lIiwibm9uU3RhbmRhcmRUd28iLCJub25TdGFuZGFyZFRocmVlIiwibm9uU3RhbmRhcmRGb3VyIiwibm9uU3RhbmRhcmRGaXZlIiwiYnJvd3NlclZlcnNpb24iLCJhcHBpdW1DYXBzIiwibm9uQXBwaXVtQ2FwcyIsImFwcGl1bVVucHJlZml4ZWRDYXBzIiwiY2xvbmUiLCJzaW1wbGVDYXBzIiwiQVBQSVVNX09QVFNfQ0FQIiwiZ29vZ0NhcHMiLCJpbnZhbGlkQ2FwcyIsImZpcnRNYXRjaCIs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Q3RCO0FBQUNoQyxRQUFBQSxVQUFVLEVBQUUsQ0FBQyxFQUFEO0FBQWIsT0FEc0IsRUFFdEI7QUFBQ0EsUUFBQUEsVUFBVSxFQUFFLENBQUMsRUFBRCxDQUFiO0FBQW1CaUMsUUFBQUEsVUFBVSxFQUFFO0FBQS9CLE9BRnNCLEVBR3RCO0FBQUNKLFFBQUFBLFNBQVMsRUFBRSxDQUFDLEVBQUQsQ0FBWjtBQUFrQmhDLFFBQUFBLFdBQVcsRUFBRTtBQUEvQixPQUhzQixFQUl0QjtBQUFDQSxRQUFBQSxXQUFXLEVBQUU7QUFBZCxPQUpzQixDQUF4QixFQUtHO0FBQ0Qsc0NBQVVtQyxTQUFWLEVBQXFCOUQsTUFBckIsQ0FBNEI0RCxFQUE1QixDQUErQkksSUFBL0I7QUFDRDtBQUNGLEtBVEMsQ0FBRjtBQVVELEdBM0JPLENBQVI7QUE0QkQsQ0EvZ0JPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBwYXJzZUNhcHMsIHZhbGlkYXRlQ2FwcywgbWVyZ2VDYXBzLCBwcm9jZXNzQ2FwYWJpbGl0aWVzLCBmaW5kTm9uUHJlZml4ZWRDYXBzLFxuICBwcm9tb3RlQXBwaXVtT3B0aW9ucywgQVBQSVVNX09QVFNfQ0FQLCBzdHJpcEFwcGl1bVByZWZpeGVzXG59IGZyb20gJy4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2NhcGFiaWxpdGllcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZGVzaXJlZENhcGFiaWxpdHlDb25zdHJhaW50cyB9IGZyb20gJy4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2Rlc2lyZWQtY2Fwcyc7XG5pbXBvcnQgeyBpc1czY0NhcHMgfSBmcm9tICcuLi8uLi8uLi9saWIvaGVscGVycy9jYXBhYmlsaXRpZXMnO1xuXG5cbmRlc2NyaWJlKCdjYXBzJywgZnVuY3Rpb24gKCkge1xuXG4gIC8vIFRlc3RzIGJhc2VkIG9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNkZm4tdmFsaWRhdGUtY2Fwc1xuICBkZXNjcmliZSgnI3ZhbGlkYXRlQ2FwcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgncmV0dXJucyBpbnZhbGlkIGFyZ3VtZW50IGVycm9yIGlmIFwiY2FwYWJpbGl0eVwiIGlzIG5vdCBhIEpTT04gb2JqZWN0ICgxKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAobGV0IGFyZyBvZiBbdW5kZWZpbmVkLCBudWxsLCAxLCB0cnVlLCAnc3RyaW5nJ10pIHtcbiAgICAgICAgKGZ1bmN0aW9uICgpIHsgdmFsaWRhdGVDYXBzKGFyZyk7IH0pLnNob3VsZC50aHJvdygvbXVzdCBiZSBhIEpTT04gb2JqZWN0Lyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyByZXN1bHQge30gYnkgZGVmYXVsdCBpZiBjYXBzIGlzIGVtcHR5IG9iamVjdCBhbmQgbm8gY29uc3RyYWludHMgcHJvdmlkZWQgKDIpJywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFsaWRhdGVDYXBzKHt9KS5zaG91bGQuZGVlcC5lcXVhbCh7fSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndGhyb3dzIGVycm9ycyBpZiBjb25zdHJhaW50cyBhcmUgbm90IG1ldCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJwcmVzZW50XCIgY29uc3RyYWludCBub3QgbWV0IG9uIHByb3BlcnR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4gdmFsaWRhdGVDYXBzKHt9LCB7Zm9vOiB7cHJlc2VuY2U6IHRydWV9fSkpLnNob3VsZC50aHJvdygvJ2ZvbycgY2FuJ3QgYmUgYmxhbmsvKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgncmV0dXJucyB0aGUgY2FwYWJpbGl0eSB0aGF0IHdhcyBwYXNzZWQgaW4gaWYgXCJza2lwUHJlc2VuY2VDb25zdHJhaW50XCIgaXMgZmFsc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhbGlkYXRlQ2Fwcyh7fSwge2Zvbzoge3ByZXNlbmNlOiB0cnVlfX0sIHtza2lwUHJlc2VuY2VDb25zdHJhaW50OiB0cnVlfSkuc2hvdWxkLmRlZXAuZXF1YWwoe30pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJpc1N0cmluZ1wiIGNvbnN0cmFpbnQgbm90IG1ldCBvbiBwcm9wZXJ0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHZhbGlkYXRlQ2Fwcyh7Zm9vOiAxfSwge2Zvbzoge2lzU3RyaW5nOiB0cnVlfX0pKS5zaG91bGQudGhyb3coLydmb28nIG11c3QgYmUgb2YgdHlwZSBzdHJpbmcvKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgncmV0dXJucyBpbnZhbGlkIGFyZ3VtZW50IGVycm9yIGlmIFwiaXNOdW1iZXJcIiBjb25zdHJhaW50IG5vdCBtZXQgb24gcHJvcGVydHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB2YWxpZGF0ZUNhcHMoe2ZvbzogJ2Jhcid9LCB7Zm9vOiB7aXNOdW1iZXI6IHRydWV9fSkpLnNob3VsZC50aHJvdygvJ2ZvbycgbXVzdCBiZSBvZiB0eXBlIG51bWJlci8pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJpc0Jvb2xlYW5cIiBjb25zdHJhaW50IG5vdCBtZXQgb24gcHJvcGVydHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB2YWxpZGF0ZUNhcHMoe2ZvbzogJ2Jhcid9LCB7Zm9vOiB7aXNCb29sZWFuOiB0cnVlfX0pKS5zaG91bGQudGhyb3coLydmb28nIG11c3QgYmUgb2YgdHlwZSBib29sZWFuLyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3JldHVybnMgaW52YWxpZCBhcmd1bWVudCBlcnJvciBpZiBcImluY2x1c2lvblwiIGNvbnN0cmFpbnQgbm90IG1ldCBvbiBwcm9wZXJ0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHZhbGlkYXRlQ2Fwcyh7Zm9vOiAnMyd9LCB7Zm9vOiB7aW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlOiBbJzEnLCAnMiddfX0pKS5zaG91bGQudGhyb3coLydmb28nIDMgbm90IHBhcnQgb2YgMSwyLyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3JldHVybnMgaW52YWxpZCBhcmd1bWVudCBlcnJvciBpZiBcImluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZVwiIGNvbnN0cmFpbnQgbm90IG1ldCBvbiBwcm9wZXJ0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHZhbGlkYXRlQ2Fwcyh7Zm9vOiAnYSd9LCB7Zm9vOiB7aW5jbHVzaW9uOiBbJ0EnLCAnQicsICdDJ119fSkpLnNob3VsZC50aHJvdygvJ2ZvbycgYSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGxpc3QvKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgdGhyb3cgZXJyb3JzIGlmIGNvbnN0cmFpbnRzIGFyZSBtZXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgY2FwcyA9IHtcbiAgICAgICAgbnVtYmVyOiAxLFxuICAgICAgICBzdHJpbmc6ICdzdHJpbmcnLFxuICAgICAgICBwcmVzZW50OiAncHJlc2VudCcsXG4gICAgICAgIGV4dHJhOiAnZXh0cmEnLFxuICAgICAgfTtcblxuICAgICAgbGV0IGNvbnN0cmFpbnRzID0ge1xuICAgICAgICBudW1iZXI6IHtpc051bWJlcjogdHJ1ZX0sXG4gICAgICAgIHN0cmluZzoge2lzU3RyaW5nOiB0cnVlfSxcbiAgICAgICAgcHJlc2VudDoge3ByZXNlbmNlOiB0cnVlfSxcbiAgICAgICAgbm90UHJlc2VudDoge3ByZXNlbmNlOiBmYWxzZX0sXG4gICAgICB9O1xuXG4gICAgICB2YWxpZGF0ZUNhcHMoY2FwcywgY29uc3RyYWludHMpLnNob3VsZC5kZWVwLmVxdWFsKGNhcHMpO1xuICAgIH0pO1xuICB9KTtcblxuICAvLyBUZXN0cyBiYXNlZCBvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZGZuLW1lcmdpbmctY2Fwc1xuICBkZXNjcmliZSgnI21lcmdlQ2FwcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgncmV0dXJucyBhIHJlc3VsdCB0aGF0IGlzIHt9IGJ5IGRlZmF1bHQgKDEpJywgZnVuY3Rpb24gKCkge1xuICAgICAgbWVyZ2VDYXBzKCkuc2hvdWxkLmRlZXAuZXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgYSByZXN1bHQgdGhhdCBtYXRjaGVzIHByaW1hcnkgYnkgZGVmYXVsdCAoMiwgMyknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBtZXJnZUNhcHMoe2hlbGxvOiAnd29ybGQnfSkuc2hvdWxkLmRlZXAuZXF1YWwoe2hlbGxvOiAnd29ybGQnfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBpbnZhbGlkIGFyZ3VtZW50IGVycm9yIGlmIHByaW1hcnkgYW5kIHNlY29uZGFyeSBoYXZlIG1hdGNoaW5nIHByb3BlcnRpZXMgKDQpJywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+IG1lcmdlQ2Fwcyh7aGVsbG86ICd3b3JsZCd9LCB7aGVsbG86ICd3aGlybCd9KSkuc2hvdWxkLnRocm93KC9wcm9wZXJ0eSAnaGVsbG8nIHNob3VsZCBub3QgZXhpc3Qgb24gYm90aCBwcmltYXJ5IFtcXHdcXFddKiBhbmQgc2Vjb25kYXJ5IFtcXHdcXFddKi8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgYSByZXN1bHQgd2l0aCBrZXlzIGZyb20gcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IHRvZ2V0aGVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHByaW1hcnkgPSB7XG4gICAgICAgIGE6ICdhJyxcbiAgICAgICAgYjogJ2InLFxuICAgICAgfTtcbiAgICAgIGxldCBzZWNvbmRhcnkgPSB7XG4gICAgICAgIGM6ICdjJyxcbiAgICAgICAgZDogJ2QnLFxuICAgICAgfTtcbiAgICAgIG1lcmdlQ2FwcyhwcmltYXJ5LCBzZWNvbmRhcnkpLnNob3VsZC5kZWVwLmVxdWFsKHtcbiAgICAgICAgYTogJ2EnLCBiOiAnYicsIGM6ICdjJywgZDogJ2QnLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIFRlc3RzIGJhc2VkIG9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNwcm9jZXNzaW5nLWNhcGFiaWxpdGllc1xuICBkZXNjcmliZSgnI3BhcnNlQ2FwcycsIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgY2FwcztcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY2FwcyA9IHt9O1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gaW52YWxpZCBhcmd1bWVudCBpZiBubyBjYXBzIG9iamVjdCBwcm92aWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICgoKSA9PiBwYXJzZUNhcHMoKSkuc2hvdWxkLnRocm93KC9tdXN0IGJlIGEgSlNPTiBvYmplY3QvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzZXRzIFwicmVxdWlyZWRDYXBzXCIgdG8gcHJvcGVydHkgbmFtZWQgXCJhbHdheXNNYXRjaFwiICgyKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhcHMuYWx3YXlzTWF0Y2ggPSB7J2FwcGl1bTpoZWxsbyc6ICd3b3JsZCd9O1xuICAgICAgcGFyc2VDYXBzKGNhcHMpLnJlcXVpcmVkQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbChjYXBzLmFsd2F5c01hdGNoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzZXRzIFwicmVxdWlyZWRDYXBzXCIgdG8gZW1wdHkgSlNPTiBvYmplY3QgaWYgXCJhbHdheXNNYXRjaFwiIGlzIG5vdCBhbiBvYmplY3QgKDIuMSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwYXJzZUNhcHMoY2FwcykucmVxdWlyZWRDYXBzLnNob3VsZC5kZWVwLmVxdWFsKHt9KTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJyZXF1aXJlZENhcHNcIiBkb25cXCd0IG1hdGNoIFwiY29uc3RyYWludHNcIiAoMi4yKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhcHMuYWx3YXlzTWF0Y2ggPSB7J2FwcGl1bTpmb28nOiAxfTtcbiAgICAgICgoKSA9PiBwYXJzZUNhcHMoY2Fwcywge2Zvbzoge2lzU3RyaW5nOiB0cnVlfX0pKS5zaG91bGQudGhyb3coLydmb28nIG11c3QgYmUgb2YgdHlwZSBzdHJpbmcvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzZXRzIFwiYWxsRmlyc3RNYXRjaENhcHNcIiB0byBwcm9wZXJ0eSBuYW1lZCBcImZpcnN0TWF0Y2hcIiAoMyknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwYXJzZUNhcHMoe30sIFt7fV0pLmFsbEZpcnN0TWF0Y2hDYXBzLnNob3VsZC5kZWVwLmVxdWFsKFt7fV0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NldHMgXCJhbGxGaXJzdE1hdGNoQ2Fwc1wiIHRvIFt7fV0gaWYgXCJmaXJzdE1hdGNoXCIgaXMgdW5kZWZpbmVkICgzLjEpJywgZnVuY3Rpb24gKCkge1xuICAgICAgcGFyc2VDYXBzKHt9KS5hbGxGaXJzdE1hdGNoQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbChbe31dKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJmaXJzdE1hdGNoXCIgaXMgbm90IGFuIGFycmF5IGFuZCBpcyBub3QgdW5kZWZpbmVkICgzLjIpJywgZnVuY3Rpb24gKCkge1xuICAgICAgZm9yIChsZXQgYXJnIG9mIFtudWxsLCAxLCB0cnVlLCAnc3RyaW5nJ10pIHtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gYXJnO1xuICAgICAgICAoZnVuY3Rpb24gKCkgeyBwYXJzZUNhcHMoY2Fwcyk7IH0pLnNob3VsZC50aHJvdygvbXVzdCBiZSBhIEpTT04gYXJyYXkgb3IgdW5kZWZpbmVkLyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIFwidmFsaWRhdGVkRmlyc3RNYXRjaENhcHNcIiBwcm9wZXJ0eSB0aGF0IGlzIGVtcHR5IGJ5IGRlZmF1bHQgaWYgbm8gdmFsaWQgZmlyc3RNYXRjaCBjYXBzIHdlcmUgZm91bmQgKDQpJywgZnVuY3Rpb24gKCkge1xuICAgICAgcGFyc2VDYXBzKGNhcHMsIHtmb286IHtwcmVzZW5jZTogdHJ1ZX19KS52YWxpZGF0ZWRGaXJzdE1hdGNoQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbChbXSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncmV0dXJucyBhIFwidmFsaWRhdGVkRmlyc3RNYXRjaENhcHNcIiBhcnJheSAoNSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgndGhhdCBlcXVhbHMgXCJmaXJzdE1hdGNoXCIgaWYgZmlyc3RNYXRjaCBpcyBvbmUgZW1wdHkgb2JqZWN0IGFuZCB0aGVyZSBhcmUgbm8gY29uc3RyYWludHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMuZmlyc3RNYXRjaCA9IFt7fV07XG4gICAgICAgIHBhcnNlQ2FwcyhjYXBzKS52YWxpZGF0ZWRGaXJzdE1hdGNoQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbChjYXBzLmZpcnN0TWF0Y2gpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIFwibnVsbFwiIG1hdGNoZWRDYXBzIGlmIG5vdGhpbmcgbWF0Y2hlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3t9XTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHBhcnNlQ2FwcyhjYXBzLCB7Zm9vOiB7cHJlc2VuY2U6IHRydWV9fSkubWF0Y2hlZENhcHMsIG51bGwpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KGBzaG91bGQgcmV0dXJuIGNhcGFiaWxpdGllcyBpZiBwcmVzZW5jZSBjb25zdHJhaW50IGlzIG1hdGNoZWQgaW4gYXQgbGVhc3Qgb25lIG9mIHRoZSAnZmlyc3RNYXRjaCcgY2FwYWJpbGl0aWVzIG9iamVjdHNgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMuYWx3YXlzTWF0Y2ggPSB7XG4gICAgICAgICAgJ2FwcGl1bTpmb28nOiAnYmFyJyxcbiAgICAgICAgfTtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3tcbiAgICAgICAgICAnYXBwaXVtOmhlbGxvJzogJ3dvcmxkJyxcbiAgICAgICAgfSwge1xuICAgICAgICAgICdhcHBpdW06Z29vZGJ5ZSc6ICd3b3JsZCcsXG4gICAgICAgIH1dO1xuICAgICAgICBwYXJzZUNhcHMoY2Fwcywge2dvb2RieWU6IHtwcmVzZW5jZTogdHJ1ZX19KS5tYXRjaGVkQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbCh7XG4gICAgICAgICAgZm9vOiAnYmFyJyxcbiAgICAgICAgICBnb29kYnllOiAnd29ybGQnLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdChgdGhyb3dzIGludmFsaWQgYXJndW1lbnQgaWYgcHJlc2VuY2UgY29uc3RyYWludCBpcyBub3QgbWV0IG9uIGFueSBjYXBhYmlsaXRpZXNgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMuYWx3YXlzTWF0Y2ggPSB7XG4gICAgICAgICAgJ2FwcGl1bTpmb28nOiAnYmFyJyxcbiAgICAgICAgfTtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3tcbiAgICAgICAgICAnYXBwaXVtOmhlbGxvJzogJ3dvcmxkJyxcbiAgICAgICAgfSwge1xuICAgICAgICAgICdhcHBpdW06Z29vZGJ5ZSc6ICd3b3JsZCcsXG4gICAgICAgIH1dO1xuICAgICAgICBzaG91bGQuZXF1YWwocGFyc2VDYXBzKGNhcHMsIHtzb21lQXR0cmlidXRlOiB7cHJlc2VuY2U6IHRydWV9fSkubWF0Y2hlZENhcHMsIG51bGwpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCd0aGF0IGVxdWFscyBmaXJzdE1hdGNoIGlmIGZpcnN0TWF0Y2ggY29udGFpbnMgdHdvIG9iamVjdHMgdGhhdCBwYXNzIHRoZSBwcm92aWRlZCBjb25zdHJhaW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2Fwcy5hbHdheXNNYXRjaCA9IHtcbiAgICAgICAgICAnYXBwaXVtOmZvbyc6ICdiYXInXG4gICAgICAgIH07XG4gICAgICAgIGNhcHMuZmlyc3RNYXRjaCA9IFtcbiAgICAgICAgICB7J2FwcGl1bTpmb28nOiAnYmFyMSd9LFxuICAgICAgICAgIHsnYXBwaXVtOmZvbyc6ICdiYXIyJ30sXG4gICAgICAgIF07XG5cbiAgICAgICAgbGV0IGNvbnN0cmFpbnRzID0ge1xuICAgICAgICAgIGZvbzoge1xuICAgICAgICAgICAgcHJlc2VuY2U6IHRydWUsXG4gICAgICAgICAgICBpc1N0cmluZzogdHJ1ZSxcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgcGFyc2VDYXBzKGNhcHMsIGNvbnN0cmFpbnRzKS52YWxpZGF0ZWRGaXJzdE1hdGNoQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbChjYXBzLmZpcnN0TWF0Y2gpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIG5vIHZlbmRvciBwcmVmaXggZXJyb3IgaWYgdGhlIGZpcnN0TWF0Y2hbMl0gZG9lcyBub3QgaGF2ZSBpdCBiZWNhdXNlIG9mIG5vIGJqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzLmFsd2F5c01hdGNoID0ge307XG4gICAgICAgIGNhcHMuZmlyc3RNYXRjaCA9IFt7J2FwcGl1bTpmb28nOiAnYmFyJ30sICdmb28nXTtcbiAgICAgICAgKCgpID0+IHBhcnNlQ2FwcyhjYXBzLCB7fSkpLnNob3VsZC50aHJvdygvQWxsIG5vbi1zdGFuZGFyZCBjYXBhYmlsaXRpZXMgc2hvdWxkIGhhdmUgYSB2ZW5kb3IgcHJlZml4Lyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdyZXR1cm5zIGEgbWF0Y2hlZENhcHMgb2JqZWN0ICg2KScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzLmFsd2F5c01hdGNoID0geydhcHBpdW06aGVsbG8nOiAnd29ybGQnfTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnd2hpY2ggaXMgc2FtZSBhcyBhbHdheXNNYXRjaCBpZiBmaXJzdE1hdGNoIGFycmF5IGlzIG5vdCBwcm92aWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcGFyc2VDYXBzKGNhcHMpLm1hdGNoZWRDYXBzLnNob3VsZC5kZWVwLmVxdWFsKHtoZWxsbzogJ3dvcmxkJ30pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdtZXJnZXMgY2FwcyB0b2dldGhlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3snYXBwaXVtOmZvbyc6ICdiYXInfV07XG4gICAgICAgIHBhcnNlQ2FwcyhjYXBzKS5tYXRjaGVkQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbCh7aGVsbG86ICd3b3JsZCcsIGZvbzogJ2Jhcid9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnd2l0aCBtZXJnZWQgY2FwcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3snYXBwaXVtOmhlbGxvJzogJ2JhcicsICdhcHBpdW06Zm9vJzogJ2Zvbyd9LCB7J2FwcGl1bTpmb28nOiAnYmFyJ31dO1xuICAgICAgICBwYXJzZUNhcHMoY2FwcykubWF0Y2hlZENhcHMuc2hvdWxkLmRlZXAuZXF1YWwoe2hlbGxvOiAnd29ybGQnLCBmb286ICdiYXInfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJyNwcm9jZXNzQ2FwcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBcImFsd2F5c01hdGNoXCIgaWYgXCJmaXJzdE1hdGNoXCIgYW5kIFwiY29uc3RyYWludHNcIiB3ZXJlIG5vdCBwcm92aWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3NDYXBhYmlsaXRpZXMoe30pLnNob3VsZC5kZWVwLmVxdWFsKHt9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIG1lcmdlZCBjYXBzJywgZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyh7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7J2FwcGl1bTpoZWxsbyc6ICd3b3JsZCd9LFxuICAgICAgICBmaXJzdE1hdGNoOiBbeydhcHBpdW06Zm9vJzogJ2Jhcid9XVxuICAgICAgfSkuc2hvdWxkLmRlZXAuZXF1YWwoe2hlbGxvOiAnd29ybGQnLCBmb286ICdiYXInfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN0cmlwIG91dCB0aGUgXCJhcHBpdW06XCIgcHJlZml4IGZvciBub24tc3RhbmRhcmQgY2FwYWJpbGl0aWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyh7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7J2FwcGl1bTpoZWxsbyc6ICd3b3JsZCd9LFxuICAgICAgICBmaXJzdE1hdGNoOiBbeydhcHBpdW06Zm9vJzogJ2Jhcid9XVxuICAgICAgfSkuc2hvdWxkLmRlZXAuZXF1YWwoe2hlbGxvOiAnd29ybGQnLCBmb286ICdiYXInfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN0aWxsIGFjY2VwdCBwcmVmaXhlZCBjYXBzIGV2ZW4gaWYgdGhleSBhcmUgc3RhbmRhcmQgY2FwYWJpbGl0aWVzIChodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNkZm4tdGFibGUtb2Ytc3RhbmRhcmQtY2FwYWJpbGl0aWVzKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3NDYXBhYmlsaXRpZXMoe1xuICAgICAgICBhbHdheXNNYXRjaDogeydhcHBpdW06cGxhdGZvcm1OYW1lJzogJ1doYXRldnonfSxcbiAgICAgICAgZmlyc3RNYXRjaDogW3snYXBwaXVtOmJyb3dzZXJOYW1lJzogJ0FueXRoaW5nJ31dLFxuICAgICAgfSkuc2hvdWxkLmRlZXAuZXF1YWwoe3BsYXRmb3JtTmFtZTogJ1doYXRldnonLCBicm93c2VyTmFtZTogJ0FueXRoaW5nJ30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwcmVmZXIgc3RhbmRhcmQgY2FwcyB0aGF0IGFyZSBub24tcHJlZml4ZWQgdG8gcHJlZml4ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzQ2FwYWJpbGl0aWVzKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHsnYXBwaXVtOnBsYXRmb3JtTmFtZSc6ICdGb28nLCAncGxhdGZvcm1OYW1lJzogJ0Jhcid9LFxuICAgICAgICBmaXJzdE1hdGNoOiBbeydhcHBpdW06YnJvd3Nlck5hbWUnOiAnRk9PJywgJ2Jyb3dzZXJOYW1lJzogJ0JBUid9XSxcbiAgICAgIH0pLnNob3VsZC5kZWVwLmVxdWFsKHtwbGF0Zm9ybU5hbWU6ICdCYXInLCBicm93c2VyTmFtZTogJ0JBUid9KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHRocm93IGV4Y2VwdGlvbiBpZiBkdXBsaWNhdGVzIGluIGFsd2F5c01hdGNoIGFuZCBmaXJzdE1hdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+IHByb2Nlc3NDYXBhYmlsaXRpZXMoe1xuICAgICAgICBhbHdheXNNYXRjaDogeydwbGF0Zm9ybU5hbWUnOiAnRmFrZScsICdhcHBpdW06ZmFrZUNhcCc6ICdmb29iYXInfSxcbiAgICAgICAgZmlyc3RNYXRjaDogW3snYXBwaXVtOnBsYXRmb3JtTmFtZSc6ICdiYXInfV0sXG4gICAgICB9KSkuc2hvdWxkLnRocm93KC9zaG91bGQgbm90IGV4aXN0IG9uIGJvdGggcHJpbWFyeS8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIHByZXNlbmNlIGNvbnN0cmFpbnQgaXMgbm90IG1ldCBvbiBhIGZpcnN0TWF0Y2ggY2FwYWJpbGl0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNhcHMgPSBwcm9jZXNzQ2FwYWJpbGl0aWVzKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHsncGxhdGZvcm1OYW1lJzogJ0Zha2UnLCAnYXBwaXVtOmZha2VDYXAnOiAnZm9vYmFyJ30sXG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7J2FwcGl1bTpmb28nOiAnYmFyJ31dLFxuICAgICAgfSwge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6IHtcbiAgICAgICAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZmFrZUNhcDoge1xuICAgICAgICAgIHByZXNlbmNlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY2Fwcy5wbGF0Zm9ybU5hbWUuc2hvdWxkLmVxdWFsKCdGYWtlJyk7XG4gICAgICBjYXBzLmZha2VDYXAuc2hvdWxkLmVxdWFsKCdmb29iYXInKTtcbiAgICAgIGNhcHMuZm9vLnNob3VsZC5lcXVhbCgnYmFyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBubyBtYXRjaGluZyBjYXBzIHdlcmUgZm91bmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAoKCkgPT4gcHJvY2Vzc0NhcGFiaWxpdGllcyh7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7J3BsYXRmb3JtTmFtZSc6ICdGYWtlJywgJ2FwcGl1bTpmYWtlQ2FwJzogJ2Zvb2Jhcid9LFxuICAgICAgICBmaXJzdE1hdGNoOiBbeydhcHBpdW06Zm9vJzogJ2Jhcid9XSxcbiAgICAgIH0sIHtcbiAgICAgICAgcGxhdGZvcm1OYW1lOiB7XG4gICAgICAgICAgcHJlc2VuY2U6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGZha2VDYXA6IHtcbiAgICAgICAgICBwcmVzZW5jZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBtaXNzaW5nQ2FwOiB7XG4gICAgICAgICAgcHJlc2VuY2U6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KSkuc2hvdWxkLnRocm93KC8nbWlzc2luZ0NhcCcgY2FuJ3QgYmUgYmxhbmsvKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd2YWxpZGF0ZSBBcHBpdW0gY29uc3RyYWludHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjb25zdHJhaW50cyA9IHsuLi5kZXNpcmVkQ2FwYWJpbGl0eUNvbnN0cmFpbnRzfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkTWF0Y2hpbmdDYXBzID0geydwbGF0Zm9ybU5hbWUnOiAnRmFrZScsICdhdXRvbWF0aW9uTmFtZSc6ICdGYWtlJywgJ2RldmljZU5hbWUnOiAnRmFrZSd9O1xuXG4gICAgICBsZXQgbWF0Y2hpbmdDYXBzO1xuICAgICAgbGV0IGNhcHM7XG5cbiAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICBtYXRjaGluZ0NhcHMgPSB7XG4gICAgICAgICAgJ3BsYXRmb3JtTmFtZSc6ICdGYWtlJyxcbiAgICAgICAgICAnYXBwaXVtOmF1dG9tYXRpb25OYW1lJzogJ0Zha2UnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdGYWtlJ1xuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgd2hlbiBhbHdheXNNYXRjaCBoYXMgdGhlIHByb3BlciBjYXBzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzID0ge1xuICAgICAgICAgIGFsd2F5c01hdGNoOiBtYXRjaGluZ0NhcHMsXG4gICAgICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyhjYXBzLCBjb25zdHJhaW50cykuc2hvdWxkLmRlZXAuZXF1YWwoZXhwZWN0ZWRNYXRjaGluZ0NhcHMpO1xuICAgICAgfSk7XG5cblxuICAgICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB3aGVuIGZpcnN0TWF0Y2hbMF0gaGFzIHRoZSBwcm9wZXIgY2FwcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FwcyA9IHtcbiAgICAgICAgICBhbHdheXNNYXRjaDoge30sXG4gICAgICAgICAgZmlyc3RNYXRjaDogW21hdGNoaW5nQ2Fwc10sXG4gICAgICAgIH07XG4gICAgICAgIHByb2Nlc3NDYXBhYmlsaXRpZXMoY2FwcywgY29uc3RyYWludHMpLnNob3VsZC5kZWVwLmVxdWFsKGV4cGVjdGVkTWF0Y2hpbmdDYXBzKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHdoZW4gYWx3YXlzTWF0Y2ggYW5kIGZpcnN0TWF0Y2hbMF0gaGF2ZSB0aGUgcHJvcGVyIGNhcHMgd2hlbiBtZXJnZWQgdG9nZXRoZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMgPSB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IF8ub21pdChtYXRjaGluZ0NhcHMsIFsnYXBwaXVtOmRldmljZU5hbWUnXSksXG4gICAgICAgICAgZmlyc3RNYXRjaDogW3snYXBwaXVtOmRldmljZU5hbWUnOiAnRmFrZSd9XSxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyhjYXBzLCBjb25zdHJhaW50cykuc2hvdWxkLmRlZXAuZXF1YWwoZXhwZWN0ZWRNYXRjaGluZ0NhcHMpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgd2hlbiBhdXRvbWF0aW9uTmFtZSBpcyBvbWl0dGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzID0ge1xuICAgICAgICAgIGFsd2F5c01hdGNoOiBfLm9taXQobWF0Y2hpbmdDYXBzLCBbJ2FwcGl1bTphdXRvbWF0aW9uTmFtZSddKSxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyhjYXBzLCBjb25zdHJhaW50cykuc2hvdWxkLmRlZXAuZXF1YWwoXy5vbWl0KGV4cGVjdGVkTWF0Y2hpbmdDYXBzLCAnYXV0b21hdGlvbk5hbWUnKSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBwYXNzIGlmIGZpcnN0IGVsZW1lbnQgaW4gXCJmaXJzdE1hdGNoXCIgZG9lcyB2YWxpZGF0ZSBhbmQgc2Vjb25kIGVsZW1lbnQgZG9lcyBub3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMgPSB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IHt9LFxuICAgICAgICAgIGZpcnN0TWF0Y2g6IFtcbiAgICAgICAgICAgIG1hdGNoaW5nQ2FwcyxcbiAgICAgICAgICAgIHsnYXBwaXVtOmJhZENhcHMnOiAnYmFkQ2Fwcyd9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICAgIHByb2Nlc3NDYXBhYmlsaXRpZXMoY2FwcywgY29uc3RyYWludHMpLnNob3VsZC5kZWVwLmVxdWFsKGV4cGVjdGVkTWF0Y2hpbmdDYXBzKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHBhc3MgaWYgZmlyc3QgZWxlbWVudCBpbiBcImZpcnN0TWF0Y2hcIiBkb2VzIG5vdCB2YWxpZGF0ZSBhbmQgc2Vjb25kIGVsZW1lbnQgZG9lcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FwcyA9IHtcbiAgICAgICAgICBhbHdheXNNYXRjaDoge30sXG4gICAgICAgICAgZmlyc3RNYXRjaDogW1xuICAgICAgICAgICAgeydhcHBpdW06YmFkQ2Fwcyc6ICdiYWRDYXBzJ30sXG4gICAgICAgICAgICBtYXRjaGluZ0NhcHMsXG4gICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyhjYXBzLCBjb25zdHJhaW50cykuc2hvdWxkLmRlZXAuZXF1YWwoZXhwZWN0ZWRNYXRjaGluZ0NhcHMpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZmFpbCB3aGVuIGJhZCBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgaW4gbW9yZSB0aGFuIG9uZSBmaXJzdE1hdGNoIGNhcGFiaWxpdHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMgPSB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IHt9LFxuICAgICAgICAgIGZpcnN0TWF0Y2g6IFt7XG4gICAgICAgICAgICAnYXBwaXVtOmJhZCc6ICdwYXJhbXMnLFxuICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICdhcHBpdW06bW9yZSc6ICdiYWQtcGFyYW1zJyxcbiAgICAgICAgICB9XSxcbiAgICAgICAgfTtcbiAgICAgICAgKCgpID0+IHByb2Nlc3NDYXBhYmlsaXRpZXMoY2FwcywgY29uc3RyYWludHMpKS5zaG91bGQudGhyb3coL0NvdWxkIG5vdCBmaW5kIG1hdGNoaW5nIGNhcGFiaWxpdGllcy8pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuICBkZXNjcmliZSgnLmZpbmROb25QcmVmaXhlZENhcHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBmaW5kIGFsd2F5c01hdGNoIGNhcHMgd2l0aCBubyBwcmVmaXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmaW5kTm9uUHJlZml4ZWRDYXBzKHthbHdheXNNYXRjaDoge1xuICAgICAgICAnbm9uLXN0YW5kYXJkJzogJ2R1bW15JyxcbiAgICAgIH19KS5zaG91bGQuZXFsKFsnbm9uLXN0YW5kYXJkJ10pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgbm90IGZpbmQgYSBzdGFuZGFyZCBjYXAgaW4gYWx3YXlzTWF0Y2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmaW5kTm9uUHJlZml4ZWRDYXBzKHthbHdheXNNYXRjaDoge1xuICAgICAgICAncGxhdGZvcm1OYW1lJzogJ0FueScsXG4gICAgICB9fSkuc2hvdWxkLmVxbChbXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBmaW5kIGZpcnN0TWF0Y2ggY2FwcyB3aXRoIG5vIHByZWZpeCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZpbmROb25QcmVmaXhlZENhcHMoe2Fsd2F5c01hdGNoOiB7fSwgZmlyc3RNYXRjaDogW3tcbiAgICAgICAgJ25vbi1zdGFuZGFyZCc6ICdkdW1teScsXG4gICAgICB9XX0pLnNob3VsZC5lcWwoWydub24tc3RhbmRhcmQnXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBub3QgZmluZCBhIHN0YW5kYXJkIGNhcCBpbiBwcmVmaXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmaW5kTm9uUHJlZml4ZWRDYXBzKHthbHdheXNNYXRjaDoge30sIGZpcnN0TWF0Y2g6IFt7XG4gICAgICAgICdwbGF0Zm9ybU5hbWUnOiAnQW55JyxcbiAgICAgIH1dfSkuc2hvdWxkLmVxbChbXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBmaW5kIGZpcnN0TWF0Y2ggY2FwcyBpbiBzZWNvbmQgaXRlbSBvZiBmaXJzdE1hdGNoIGFycmF5JywgZnVuY3Rpb24gKCkge1xuICAgICAgZmluZE5vblByZWZpeGVkQ2Fwcyh7YWx3YXlzTWF0Y2g6IHt9LCBmaXJzdE1hdGNoOiBbe30sIHtcbiAgICAgICAgJ25vbi1zdGFuZGFyZCc6ICdkdW1teScsXG4gICAgICB9XX0pLnNob3VsZC5lcWwoWydub24tc3RhbmRhcmQnXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCByZW1vdmUgZHVwbGljYXRlcyBmcm9tIGFsd2F5c01hdGNoIGFuZCBmaXJzdE1hdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgZmluZE5vblByZWZpeGVkQ2Fwcyh7YWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgJ25vbi1zdGFuZGFyZCc6ICdzb21ldGhpbmcnLFxuICAgICAgfSwgZmlyc3RNYXRjaDogW3tcbiAgICAgICAgJ25vbi1zdGFuZGFyZCc6ICdkdW1teScsXG4gICAgICB9XX0pLnNob3VsZC5lcWwoWydub24tc3RhbmRhcmQnXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCByZW1vdmUgZHVwbGljYXRlcyBmcm9tIGZpcnN0TWF0Y2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmaW5kTm9uUHJlZml4ZWRDYXBzKHtmaXJzdE1hdGNoOiBbe1xuICAgICAgICAnbm9uLXN0YW5kYXJkJzogJ2R1bW15JyxcbiAgICAgIH0sIHtcbiAgICAgICAgJ25vbi1zdGFuZGFyZCc6ICdkdW1teSAyJyxcbiAgICAgIH1dfSkuc2hvdWxkLmVxbChbJ25vbi1zdGFuZGFyZCddKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHJlbW92ZSBkdXBsaWNhdGVzIGFuZCBrZWVwIHN0YW5kYXJkIGNhcGFiaWxpdGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFsd2F5c01hdGNoID0ge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdGYWtlJyxcbiAgICAgICAgbm9uU3RhbmRhcmRPbmU6ICdub24tc3RhbmRhcmQnLFxuICAgICAgICBub25TdGFuZGFyZFR3bzogJ25vbi1zdGFuZGFyZCcsXG4gICAgICB9O1xuICAgICAgY29uc3QgZmlyc3RNYXRjaCA9IFtcbiAgICAgICAge25vblN0YW5kYXJkVGhyZWU6ICdub24tc3RhbmRhcmQnLCBub25TdGFuZGFyZEZvdXI6ICdub24tc3RhbmRhcmQnLCBicm93c2VyTmFtZTogJ0Zha2VCcm93c2VyJ30sXG4gICAgICAgIHtub25TdGFuZGFyZFRocmVlOiAnbm9uLXN0YW5kYXJkJywgbm9uU3RhbmRhcmRGb3VyOiAnbm9uLXN0YW5kYXJkJywgbm9uU3RhbmRhcmRGaXZlOiAnbm9uLXN0YW5kYXJkJywgYnJvd3NlclZlcnNpb246ICd3aGF0ZXZhJ30sXG4gICAgICBdO1xuICAgICAgZmluZE5vblByZWZpeGVkQ2Fwcyh7YWx3YXlzTWF0Y2gsIGZpcnN0TWF0Y2h9KS5zaG91bGQuZXFsKFsnbm9uU3RhbmRhcmRPbmUnLCAnbm9uU3RhbmRhcmRUd28nLCAnbm9uU3RhbmRhcmRUaHJlZScsICdub25TdGFuZGFyZEZvdXInLCAnbm9uU3RhbmRhcmRGaXZlJ10pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnI3Byb21vdGVBcHBpdW1PcHRpb25zJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGFwcGl1bUNhcHMgPSB7XG4gICAgICAnYXBwaXVtOnBsYXRmb3JtVmVyc2lvbic6ICcxNC40JyxcbiAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdpUGhvbmUgMTEnLFxuICAgICAgJ2FwcGl1bTphcHAnOiAnL2Zvby9iYXIuYXBwLnppcCcsXG4gICAgICAnYXBwaXVtOmF1dG9tYXRpb25OYW1lJzogJ1hDVUlUZXN0JyxcbiAgICB9O1xuICAgIGNvbnN0IG5vbkFwcGl1bUNhcHMgPSB7XG4gICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgIH07XG4gICAgY29uc3QgYXBwaXVtVW5wcmVmaXhlZENhcHMgPSBfLmNsb25lKGFwcGl1bUNhcHMpO1xuICAgIHN0cmlwQXBwaXVtUHJlZml4ZXMoYXBwaXVtVW5wcmVmaXhlZENhcHMpO1xuICAgIGNvbnN0IHNpbXBsZUNhcHMgPSB7XG4gICAgICAuLi5ub25BcHBpdW1DYXBzLFxuICAgICAgLi4uYXBwaXVtVW5wcmVmaXhlZENhcHMsXG4gICAgfTtcbiAgICBpdCgnc2hvdWxkIGRvIG5vdGhpbmcgdG8gY2FwcyB0aGF0IGRvbnQgaW5jbHVkZSB0aGUgb3B0aW9ucycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb21vdGVBcHBpdW1PcHRpb25zKHNpbXBsZUNhcHMpLnNob3VsZC5lcWwoc2ltcGxlQ2Fwcyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBwcm9tb3RlIG9wdGlvbnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYXBzID0ge1xuICAgICAgICAuLi5ub25BcHBpdW1DYXBzLFxuICAgICAgICBbQVBQSVVNX09QVFNfQ0FQXToge1xuICAgICAgICAgIC4uLmFwcGl1bVVucHJlZml4ZWRDYXBzLFxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcHJvbW90ZUFwcGl1bU9wdGlvbnMoY2Fwcykuc2hvdWxkLmVxbChzaW1wbGVDYXBzKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGdldCByaWQgb2YgcHJlZml4ZXMgaWYgY2FwcyBpbnNpZGUgb3B0aW9ucyBhcmUgcHJlZml4ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYXBzID0ge1xuICAgICAgICAuLi5ub25BcHBpdW1DYXBzLFxuICAgICAgICBbQVBQSVVNX09QVFNfQ0FQXToge1xuICAgICAgICAgIC4uLmFwcGl1bUNhcHMsXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBwcm9tb3RlQXBwaXVtT3B0aW9ucyhjYXBzKS5zaG91bGQuZXFsKHNpbXBsZUNhcHMpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgcHJlc2VydmUgbm9uLWFwcGl1bSB2ZW5kb3IgcHJlZml4ZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBnb29nQ2FwcyA9IHsnZ29vZzpjaHJvbWVPcHRpb25zJzoge2ZvbzogJ2Jhcid9fTtcbiAgICAgIGNvbnN0IGNhcHMgPSB7XG4gICAgICAgIC4uLm5vbkFwcGl1bUNhcHMsXG4gICAgICAgIFtBUFBJVU1fT1BUU19DQVBdOiB7XG4gICAgICAgICAgLi4uYXBwaXVtQ2FwcyxcbiAgICAgICAgICAuLi5nb29nQ2FwcyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBwcm9tb3RlQXBwaXVtT3B0aW9ucyhjYXBzKS5zaG91bGQuZXFsKHtcbiAgICAgICAgLi4uc2ltcGxlQ2FwcyxcbiAgICAgICAgLi4uZ29vZ0NhcHMsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIG92ZXJ3cml0ZSBjYXBzIGZvdW5kIG9uIHRoZSB0b3AgbGV2ZWwnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYXBzID0ge1xuICAgICAgICAuLi5ub25BcHBpdW1DYXBzLFxuICAgICAgICBmb286ICdiYXInLFxuICAgICAgICBbQVBQSVVNX09QVFNfQ0FQXToge1xuICAgICAgICAgIC4uLmFwcGl1bUNhcHMsXG4gICAgICAgICAgZm9vOiAnYmF6JyxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHByb21vdGVBcHBpdW1PcHRpb25zKGNhcHMpLnNob3VsZC5lcWwoe1xuICAgICAgICAuLi5zaW1wbGVDYXBzLFxuICAgICAgICBmb286ICdiYXonLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcjaXNXM2NDYXBzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgZHJvcCBpbnZhbGlkIFczQyBjYXBhYmlsaXRpZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGNvbnN0IGludmFsaWRDYXBzIG9mIFtcbiAgICAgICAgbnVsbCwgdW5kZWZpbmVkLCBbXSwge30sXG4gICAgICAgIHtmaXJzdE1hdGNoOiBudWxsfSxcbiAgICAgICAge2ZpcnRNYXRjaDogW3t9XX0sXG4gICAgICAgIHthbHdheXNNYXRjaDogbnVsbH0sXG4gICAgICAgIHtmaXJzdE1hdGNoOiBbe31dLCBhbHdheXNNYXRjaDogbnVsbH0sXG4gICAgICAgIHtmaXJzdE1hdGNoOiBbXSwgYWx3YXlzTWF0Y2g6IHt9fSxcbiAgICAgICAge2ZpcnN0TWF0Y2g6IFtdfSxcbiAgICAgICAge2ZpcnN0TWF0Y2g6IHt9fSxcbiAgICAgICAge2Fsd2F5c01hdGNoOiBbXX0sXG4gICAgICBdKSB7XG4gICAgICAgIGlzVzNjQ2FwcyhpbnZhbGlkQ2Fwcykuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhY2NlcHQgdmFsaWQgVzNDIGNhcGFiaWxpdGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAoY29uc3QgdmFsaWRDYXBzIG9mIFtcbiAgICAgICAge2ZpcnN0TWF0Y2g6IFt7fV19LFxuICAgICAgICB7Zmlyc3RNYXRjaDogW3t9XSwgYWxheXNNYXRjaDoge319LFxuICAgICAgICB7ZmlydE1hdGNoOiBbe31dLCBhbHdheXNNYXRjaDoge319LFxuICAgICAgICB7YWx3YXlzTWF0Y2g6IHt9fSxcbiAgICAgIF0pIHtcbiAgICAgICAgaXNXM2NDYXBzKHZhbGlkQ2Fwcykuc2hvdWxkLmJlLnRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
672
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0IiwiYXJnIiwidW5kZWZpbmVkIiwidmFsaWRhdGVDYXBzIiwic2hvdWxkIiwidGhyb3ciLCJkZWVwIiwiZXF1YWwiLCJmb28iLCJwcmVzZW5jZSIsInNraXBQcmVzZW5jZUNvbnN0cmFpbnQiLCJpc1N0cmluZyIsImlzTnVtYmVyIiwiaXNCb29sZWFuIiwiaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlIiwiaW5jbHVzaW9uIiwiY2FwcyIsIm51bWJlciIsInN0cmluZyIsInByZXNlbnQiLCJleHRyYSIsImNvbnN0cmFpbnRzIiwibm90UHJlc2VudCIsIm1lcmdlQ2FwcyIsImhlbGxvIiwicHJpbWFyeSIsImEiLCJiIiwic2Vjb25kYXJ5IiwiYyIsImQiLCJiZWZvcmVFYWNoIiwicGFyc2VDYXBzIiwiYWx3YXlzTWF0Y2giLCJyZXF1aXJlZENhcHMiLCJhbGxGaXJzdE1hdGNoQ2FwcyIsImZpcnN0TWF0Y2giLCJ2YWxpZGF0ZWRGaXJzdE1hdGNoQ2FwcyIsIm1hdGNoZWRDYXBzIiwiZ29vZGJ5ZSIsInNvbWVBdHRyaWJ1dGUiLCJwcm9jZXNzQ2FwYWJpbGl0aWVzIiwicGxhdGZvcm1OYW1lIiwiYnJvd3Nlck5hbWUiLCJmYWtlQ2FwIiwibWlzc2luZ0NhcCIsImRlc2lyZWRDYXBhYmlsaXR5Q29uc3RyYWludHMiLCJleHBlY3RlZE1hdGNoaW5nQ2FwcyIsImF1dG9tYXRpb25OYW1lIiwiZGV2aWNlTmFtZSIsIm1hdGNoaW5nQ2FwcyIsIl8iLCJvbWl0IiwiZmluZE5vblByZWZpeGVkQ2FwcyIsImVxbCIsIm5vblN0YW5kYXJkT25lIiwibm9uU3RhbmRhcmRUd28iLCJub25TdGFuZGFyZFRocmVlIiwibm9uU3RhbmRhcmRGb3VyIiwibm9uU3RhbmRhcmRGaXZlIiwiYnJvd3NlclZlcnNpb24iLCJhcHBpdW1DYXBzIiwibm9uQXBwaXVtQ2FwcyIsImFwcGl1bVVucHJlZml4ZWRDYXBzIiwiY2xvbmUiLCJzdHJpcEFwcGl1bVByZWZpeGVzIiwic2ltcGxlQ2FwcyIsInByb21vdGVBcHBpdW1PcHRpb25zIiwiQVBQSVVNX09QVFNfQ0FQIiwiZ29vZ0NhcHMiLCJpbnZhbGlkQ2FwcyIsImZpcnRNYXRjaCIsImlzVzNjQ2FwcyIsImJlIiwiZmFsc2UiLCJ2YWxpZENhcHMiLCJhbGF5c01hdGNoIiwidHJ1ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iYXNlZHJpdmVyL2NhcGFiaWxpdGllcy5zcGVjLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHBhcnNlQ2FwcyxcbiAgdmFsaWRhdGVDYXBzLFxuICBtZXJnZUNhcHMsXG4gIHByb2Nlc3NDYXBhYmlsaXRpZXMsXG4gIGZpbmROb25QcmVmaXhlZENhcHMsXG4gIHByb21vdGVBcHBpdW1PcHRpb25zLFxuICBBUFBJVU1fT1BUU19DQVAsXG4gIHN0cmlwQXBwaXVtUHJlZml4ZXMsXG59IGZyb20gJy4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2NhcGFiaWxpdGllcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtkZXNpcmVkQ2FwYWJpbGl0eUNvbnN0cmFpbnRzfSBmcm9tICcuLi8uLi8uLi9saWIvYmFzZWRyaXZlci9kZXNpcmVkLWNhcHMnO1xuaW1wb3J0IHtpc1czY0NhcHN9IGZyb20gJy4uLy4uLy4uL2xpYi9oZWxwZXJzL2NhcGFiaWxpdGllcyc7XG5cbmRlc2NyaWJlKCdjYXBzJywgZnVuY3Rpb24gKCkge1xuICAvLyBUZXN0cyBiYXNlZCBvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZGZuLXZhbGlkYXRlLWNhcHNcbiAgZGVzY3JpYmUoJyN2YWxpZGF0ZUNhcHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3JldHVybnMgaW52YWxpZCBhcmd1bWVudCBlcnJvciBpZiBcImNhcGFiaWxpdHlcIiBpcyBub3QgYSBKU09OIG9iamVjdCAoMSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGxldCBhcmcgb2YgW3VuZGVmaW5lZCwgbnVsbCwgMSwgdHJ1ZSwgJ3N0cmluZyddKSB7XG4gICAgICAgIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFsaWRhdGVDYXBzKGFyZyk7XG4gICAgICAgIH0uc2hvdWxkLnRocm93KC9tdXN0IGJlIGEgSlNPTiBvYmplY3QvKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyByZXN1bHQge30gYnkgZGVmYXVsdCBpZiBjYXBzIGlzIGVtcHR5IG9iamVjdCBhbmQgbm8gY29uc3RyYWludHMgcHJvdmlkZWQgKDIpJywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFsaWRhdGVDYXBzKHt9KS5zaG91bGQuZGVlcC5lcXVhbCh7fSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndGhyb3dzIGVycm9ycyBpZiBjb25zdHJhaW50cyBhcmUgbm90IG1ldCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJwcmVzZW50XCIgY29uc3RyYWludCBub3QgbWV0IG9uIHByb3BlcnR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4gdmFsaWRhdGVDYXBzKHt9LCB7Zm9vOiB7cHJlc2VuY2U6IHRydWV9fSkpLnNob3VsZC50aHJvdygvJ2ZvbycgY2FuJ3QgYmUgYmxhbmsvKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgncmV0dXJucyB0aGUgY2FwYWJpbGl0eSB0aGF0IHdhcyBwYXNzZWQgaW4gaWYgXCJza2lwUHJlc2VuY2VDb25zdHJhaW50XCIgaXMgZmFsc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhbGlkYXRlQ2Fwcyh7fSwge2Zvbzoge3ByZXNlbmNlOiB0cnVlfX0sIHtza2lwUHJlc2VuY2VDb25zdHJhaW50OiB0cnVlfSkuc2hvdWxkLmRlZXAuZXF1YWwoXG4gICAgICAgICAge31cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgncmV0dXJucyBpbnZhbGlkIGFyZ3VtZW50IGVycm9yIGlmIFwiaXNTdHJpbmdcIiBjb25zdHJhaW50IG5vdCBtZXQgb24gcHJvcGVydHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB2YWxpZGF0ZUNhcHMoe2ZvbzogMX0sIHtmb286IHtpc1N0cmluZzogdHJ1ZX19KSkuc2hvdWxkLnRocm93KFxuICAgICAgICAgIC8nZm9vJyBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nL1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJpc051bWJlclwiIGNvbnN0cmFpbnQgbm90IG1ldCBvbiBwcm9wZXJ0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHZhbGlkYXRlQ2Fwcyh7Zm9vOiAnYmFyJ30sIHtmb286IHtpc051bWJlcjogdHJ1ZX19KSkuc2hvdWxkLnRocm93KFxuICAgICAgICAgIC8nZm9vJyBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyL1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJpc0Jvb2xlYW5cIiBjb25zdHJhaW50IG5vdCBtZXQgb24gcHJvcGVydHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB2YWxpZGF0ZUNhcHMoe2ZvbzogJ2Jhcid9LCB7Zm9vOiB7aXNCb29sZWFuOiB0cnVlfX0pKS5zaG91bGQudGhyb3coXG4gICAgICAgICAgLydmb28nIG11c3QgYmUgb2YgdHlwZSBib29sZWFuL1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJpbmNsdXNpb25cIiBjb25zdHJhaW50IG5vdCBtZXQgb24gcHJvcGVydHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PlxuICAgICAgICAgIHZhbGlkYXRlQ2Fwcyh7Zm9vOiAnMyd9LCB7Zm9vOiB7aW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlOiBbJzEnLCAnMiddfX0pKS5zaG91bGQudGhyb3coXG4gICAgICAgICAgLydmb28nIDMgbm90IHBhcnQgb2YgMSwyL1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJpbmNsdXNpb25DYXNlSW5zZW5zaXRpdmVcIiBjb25zdHJhaW50IG5vdCBtZXQgb24gcHJvcGVydHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB2YWxpZGF0ZUNhcHMoe2ZvbzogJ2EnfSwge2Zvbzoge2luY2x1c2lvbjogWydBJywgJ0InLCAnQyddfX0pKS5zaG91bGQudGhyb3coXG4gICAgICAgICAgLydmb28nIGEgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBsaXN0L1xuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCB0aHJvdyBlcnJvcnMgaWYgY29uc3RyYWludHMgYXJlIG1ldCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBjYXBzID0ge1xuICAgICAgICBudW1iZXI6IDEsXG4gICAgICAgIHN0cmluZzogJ3N0cmluZycsXG4gICAgICAgIHByZXNlbnQ6ICdwcmVzZW50JyxcbiAgICAgICAgZXh0cmE6ICdleHRyYScsXG4gICAgICB9O1xuXG4gICAgICBsZXQgY29uc3RyYWludHMgPSB7XG4gICAgICAgIG51bWJlcjoge2lzTnVtYmVyOiB0cnVlfSxcbiAgICAgICAgc3RyaW5nOiB7aXNTdHJpbmc6IHRydWV9LFxuICAgICAgICBwcmVzZW50OiB7cHJlc2VuY2U6IHRydWV9LFxuICAgICAgICBub3RQcmVzZW50OiB7cHJlc2VuY2U6IGZhbHNlfSxcbiAgICAgIH07XG5cbiAgICAgIHZhbGlkYXRlQ2FwcyhjYXBzLCBjb25zdHJhaW50cykuc2hvdWxkLmRlZXAuZXF1YWwoY2Fwcyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIFRlc3RzIGJhc2VkIG9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNkZm4tbWVyZ2luZy1jYXBzXG4gIGRlc2NyaWJlKCcjbWVyZ2VDYXBzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdyZXR1cm5zIGEgcmVzdWx0IHRoYXQgaXMge30gYnkgZGVmYXVsdCAoMSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBtZXJnZUNhcHMoKS5zaG91bGQuZGVlcC5lcXVhbCh7fSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBhIHJlc3VsdCB0aGF0IG1hdGNoZXMgcHJpbWFyeSBieSBkZWZhdWx0ICgyLCAzKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1lcmdlQ2Fwcyh7aGVsbG86ICd3b3JsZCd9KS5zaG91bGQuZGVlcC5lcXVhbCh7aGVsbG86ICd3b3JsZCd9KTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IGhhdmUgbWF0Y2hpbmcgcHJvcGVydGllcyAoNCknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAoKCkgPT4gbWVyZ2VDYXBzKHtoZWxsbzogJ3dvcmxkJ30sIHtoZWxsbzogJ3doaXJsJ30pKS5zaG91bGQudGhyb3coXG4gICAgICAgIC9wcm9wZXJ0eSAnaGVsbG8nIHNob3VsZCBub3QgZXhpc3Qgb24gYm90aCBwcmltYXJ5IFtcXHdcXFddKiBhbmQgc2Vjb25kYXJ5IFtcXHdcXFddKi9cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBhIHJlc3VsdCB3aXRoIGtleXMgZnJvbSBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgdG9nZXRoZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgcHJpbWFyeSA9IHtcbiAgICAgICAgYTogJ2EnLFxuICAgICAgICBiOiAnYicsXG4gICAgICB9O1xuICAgICAgbGV0IHNlY29uZGFyeSA9IHtcbiAgICAgICAgYzogJ2MnLFxuICAgICAgICBkOiAnZCcsXG4gICAgICB9O1xuICAgICAgbWVyZ2VDYXBzKHByaW1hcnksIHNlY29uZGFyeSkuc2hvdWxkLmRlZXAuZXF1YWwoe1xuICAgICAgICBhOiAnYScsXG4gICAgICAgIGI6ICdiJyxcbiAgICAgICAgYzogJ2MnLFxuICAgICAgICBkOiAnZCcsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gVGVzdHMgYmFzZWQgb246IGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJkcml2ZXIvI3Byb2Nlc3NpbmctY2FwYWJpbGl0aWVzXG4gIGRlc2NyaWJlKCcjcGFyc2VDYXBzJywgZnVuY3Rpb24gKCkge1xuICAgIGxldCBjYXBzO1xuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjYXBzID0ge307XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBpbnZhbGlkIGFyZ3VtZW50IGlmIG5vIGNhcHMgb2JqZWN0IHByb3ZpZGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+IHBhcnNlQ2FwcygpKS5zaG91bGQudGhyb3coL211c3QgYmUgYSBKU09OIG9iamVjdC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NldHMgXCJyZXF1aXJlZENhcHNcIiB0byBwcm9wZXJ0eSBuYW1lZCBcImFsd2F5c01hdGNoXCIgKDIpJywgZnVuY3Rpb24gKCkge1xuICAgICAgY2Fwcy5hbHdheXNNYXRjaCA9IHsnYXBwaXVtOmhlbGxvJzogJ3dvcmxkJ307XG4gICAgICBwYXJzZUNhcHMoY2FwcykucmVxdWlyZWRDYXBzLnNob3VsZC5kZWVwLmVxdWFsKGNhcHMuYWx3YXlzTWF0Y2gpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NldHMgXCJyZXF1aXJlZENhcHNcIiB0byBlbXB0eSBKU09OIG9iamVjdCBpZiBcImFsd2F5c01hdGNoXCIgaXMgbm90IGFuIG9iamVjdCAoMi4xKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHBhcnNlQ2FwcyhjYXBzKS5yZXF1aXJlZENhcHMuc2hvdWxkLmRlZXAuZXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgaW52YWxpZCBhcmd1bWVudCBlcnJvciBpZiBcInJlcXVpcmVkQ2Fwc1wiIGRvblxcJ3QgbWF0Y2ggXCJjb25zdHJhaW50c1wiICgyLjIpJywgZnVuY3Rpb24gKCkge1xuICAgICAgY2Fwcy5hbHdheXNNYXRjaCA9IHsnYXBwaXVtOmZvbyc6IDF9O1xuICAgICAgKCgpID0+IHBhcnNlQ2FwcyhjYXBzLCB7Zm9vOiB7aXNTdHJpbmc6IHRydWV9fSkpLnNob3VsZC50aHJvdygvJ2ZvbycgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NldHMgXCJhbGxGaXJzdE1hdGNoQ2Fwc1wiIHRvIHByb3BlcnR5IG5hbWVkIFwiZmlyc3RNYXRjaFwiICgzKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHBhcnNlQ2Fwcyh7fSwgW3t9XSkuYWxsRmlyc3RNYXRjaENhcHMuc2hvdWxkLmRlZXAuZXF1YWwoW3t9XSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2V0cyBcImFsbEZpcnN0TWF0Y2hDYXBzXCIgdG8gW3t9XSBpZiBcImZpcnN0TWF0Y2hcIiBpcyB1bmRlZmluZWQgKDMuMSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwYXJzZUNhcHMoe30pLmFsbEZpcnN0TWF0Y2hDYXBzLnNob3VsZC5kZWVwLmVxdWFsKFt7fV0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgaW52YWxpZCBhcmd1bWVudCBlcnJvciBpZiBcImZpcnN0TWF0Y2hcIiBpcyBub3QgYW4gYXJyYXkgYW5kIGlzIG5vdCB1bmRlZmluZWQgKDMuMiknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGxldCBhcmcgb2YgW251bGwsIDEsIHRydWUsICdzdHJpbmcnXSkge1xuICAgICAgICBjYXBzLmZpcnN0TWF0Y2ggPSBhcmc7XG4gICAgICAgIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGFyc2VDYXBzKGNhcHMpO1xuICAgICAgICB9LnNob3VsZC50aHJvdygvbXVzdCBiZSBhIEpTT04gYXJyYXkgb3IgdW5kZWZpbmVkLykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ2hhcyBcInZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzXCIgcHJvcGVydHkgdGhhdCBpcyBlbXB0eSBieSBkZWZhdWx0IGlmIG5vIHZhbGlkIGZpcnN0TWF0Y2ggY2FwcyB3ZXJlIGZvdW5kICg0KScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHBhcnNlQ2FwcyhjYXBzLCB7XG4gICAgICAgIGZvbzoge3ByZXNlbmNlOiB0cnVlfSxcbiAgICAgIH0pLnZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzLnNob3VsZC5kZWVwLmVxdWFsKFtdKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdyZXR1cm5zIGEgXCJ2YWxpZGF0ZWRGaXJzdE1hdGNoQ2Fwc1wiIGFycmF5ICg1KScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCd0aGF0IGVxdWFscyBcImZpcnN0TWF0Y2hcIiBpZiBmaXJzdE1hdGNoIGlzIG9uZSBlbXB0eSBvYmplY3QgYW5kIHRoZXJlIGFyZSBubyBjb25zdHJhaW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3t9XTtcbiAgICAgICAgcGFyc2VDYXBzKGNhcHMpLnZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzLnNob3VsZC5kZWVwLmVxdWFsKGNhcHMuZmlyc3RNYXRjaCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3JldHVybnMgXCJudWxsXCIgbWF0Y2hlZENhcHMgaWYgbm90aGluZyBtYXRjaGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzLmZpcnN0TWF0Y2ggPSBbe31dO1xuICAgICAgICBzaG91bGQuZXF1YWwocGFyc2VDYXBzKGNhcHMsIHtmb286IHtwcmVzZW5jZTogdHJ1ZX19KS5tYXRjaGVkQ2FwcywgbnVsbCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoYHNob3VsZCByZXR1cm4gY2FwYWJpbGl0aWVzIGlmIHByZXNlbmNlIGNvbnN0cmFpbnQgaXMgbWF0Y2hlZCBpbiBhdCBsZWFzdCBvbmUgb2YgdGhlICdmaXJzdE1hdGNoJyBjYXBhYmlsaXRpZXMgb2JqZWN0c2AsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2Fwcy5hbHdheXNNYXRjaCA9IHtcbiAgICAgICAgICAnYXBwaXVtOmZvbyc6ICdiYXInLFxuICAgICAgICB9O1xuICAgICAgICBjYXBzLmZpcnN0TWF0Y2ggPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgJ2FwcGl1bTpoZWxsbyc6ICd3b3JsZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAnYXBwaXVtOmdvb2RieWUnOiAnd29ybGQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHBhcnNlQ2FwcyhjYXBzLCB7XG4gICAgICAgICAgZ29vZGJ5ZToge3ByZXNlbmNlOiB0cnVlfSxcbiAgICAgICAgfSkubWF0Y2hlZENhcHMuc2hvdWxkLmRlZXAuZXF1YWwoe1xuICAgICAgICAgIGZvbzogJ2JhcicsXG4gICAgICAgICAgZ29vZGJ5ZTogJ3dvcmxkJyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoYHRocm93cyBpbnZhbGlkIGFyZ3VtZW50IGlmIHByZXNlbmNlIGNvbnN0cmFpbnQgaXMgbm90IG1ldCBvbiBhbnkgY2FwYWJpbGl0aWVzYCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzLmFsd2F5c01hdGNoID0ge1xuICAgICAgICAgICdhcHBpdW06Zm9vJzogJ2JhcicsXG4gICAgICAgIH07XG4gICAgICAgIGNhcHMuZmlyc3RNYXRjaCA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICAnYXBwaXVtOmhlbGxvJzogJ3dvcmxkJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgICdhcHBpdW06Z29vZGJ5ZSc6ICd3b3JsZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHBhcnNlQ2FwcyhjYXBzLCB7c29tZUF0dHJpYnV0ZToge3ByZXNlbmNlOiB0cnVlfX0pLm1hdGNoZWRDYXBzLCBudWxsKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgndGhhdCBlcXVhbHMgZmlyc3RNYXRjaCBpZiBmaXJzdE1hdGNoIGNvbnRhaW5zIHR3byBvYmplY3RzIHRoYXQgcGFzcyB0aGUgcHJvdmlkZWQgY29uc3RyYWludHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMuYWx3YXlzTWF0Y2ggPSB7XG4gICAgICAgICAgJ2FwcGl1bTpmb28nOiAnYmFyJyxcbiAgICAgICAgfTtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3snYXBwaXVtOmZvbyc6ICdiYXIxJ30sIHsnYXBwaXVtOmZvbyc6ICdiYXIyJ31dO1xuXG4gICAgICAgIGxldCBjb25zdHJhaW50cyA9IHtcbiAgICAgICAgICBmb286IHtcbiAgICAgICAgICAgIHByZXNlbmNlOiB0cnVlLFxuICAgICAgICAgICAgaXNTdHJpbmc6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICBwYXJzZUNhcHMoY2FwcywgY29uc3RyYWludHMpLnZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzLnNob3VsZC5kZWVwLmVxdWFsKGNhcHMuZmlyc3RNYXRjaCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3JldHVybnMgbm8gdmVuZG9yIHByZWZpeCBlcnJvciBpZiB0aGUgZmlyc3RNYXRjaFsyXSBkb2VzIG5vdCBoYXZlIGl0IGJlY2F1c2Ugb2Ygbm8gYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMuYWx3YXlzTWF0Y2ggPSB7fTtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3snYXBwaXVtOmZvbyc6ICdiYXInfSwgJ2ZvbyddO1xuICAgICAgICAoKCkgPT4gcGFyc2VDYXBzKGNhcHMsIHt9KSkuc2hvdWxkLnRocm93KFxuICAgICAgICAgIC9BbGwgbm9uLXN0YW5kYXJkIGNhcGFiaWxpdGllcyBzaG91bGQgaGF2ZSBhIHZlbmRvciBwcmVmaXgvXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdyZXR1cm5zIGEgbWF0Y2hlZENhcHMgb2JqZWN0ICg2KScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzLmFsd2F5c01hdGNoID0geydhcHBpdW06aGVsbG8nOiAnd29ybGQnfTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnd2hpY2ggaXMgc2FtZSBhcyBhbHdheXNNYXRjaCBpZiBmaXJzdE1hdGNoIGFycmF5IGlzIG5vdCBwcm92aWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcGFyc2VDYXBzKGNhcHMpLm1hdGNoZWRDYXBzLnNob3VsZC5kZWVwLmVxdWFsKHtoZWxsbzogJ3dvcmxkJ30pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdtZXJnZXMgY2FwcyB0b2dldGhlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3snYXBwaXVtOmZvbyc6ICdiYXInfV07XG4gICAgICAgIHBhcnNlQ2FwcyhjYXBzKS5tYXRjaGVkQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbCh7XG4gICAgICAgICAgaGVsbG86ICd3b3JsZCcsXG4gICAgICAgICAgZm9vOiAnYmFyJyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3dpdGggbWVyZ2VkIGNhcHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMuZmlyc3RNYXRjaCA9IFt7J2FwcGl1bTpoZWxsbyc6ICdiYXInLCAnYXBwaXVtOmZvbyc6ICdmb28nfSwgeydhcHBpdW06Zm9vJzogJ2Jhcid9XTtcbiAgICAgICAgcGFyc2VDYXBzKGNhcHMpLm1hdGNoZWRDYXBzLnNob3VsZC5kZWVwLmVxdWFsKHtcbiAgICAgICAgICBoZWxsbzogJ3dvcmxkJyxcbiAgICAgICAgICBmb286ICdiYXInLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnI3Byb2Nlc3NDYXBzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIFwiYWx3YXlzTWF0Y2hcIiBpZiBcImZpcnN0TWF0Y2hcIiBhbmQgXCJjb25zdHJhaW50c1wiIHdlcmUgbm90IHByb3ZpZGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyh7fSkuc2hvdWxkLmRlZXAuZXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gbWVyZ2VkIGNhcHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzQ2FwYWJpbGl0aWVzKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHsnYXBwaXVtOmhlbGxvJzogJ3dvcmxkJ30sXG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7J2FwcGl1bTpmb28nOiAnYmFyJ31dLFxuICAgICAgfSkuc2hvdWxkLmRlZXAuZXF1YWwoe2hlbGxvOiAnd29ybGQnLCBmb286ICdiYXInfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN0cmlwIG91dCB0aGUgXCJhcHBpdW06XCIgcHJlZml4IGZvciBub24tc3RhbmRhcmQgY2FwYWJpbGl0aWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyh7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7J2FwcGl1bTpoZWxsbyc6ICd3b3JsZCd9LFxuICAgICAgICBmaXJzdE1hdGNoOiBbeydhcHBpdW06Zm9vJzogJ2Jhcid9XSxcbiAgICAgIH0pLnNob3VsZC5kZWVwLmVxdWFsKHtoZWxsbzogJ3dvcmxkJywgZm9vOiAnYmFyJ30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdGlsbCBhY2NlcHQgcHJlZml4ZWQgY2FwcyBldmVuIGlmIHRoZXkgYXJlIHN0YW5kYXJkIGNhcGFiaWxpdGllcyAoaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZGZuLXRhYmxlLW9mLXN0YW5kYXJkLWNhcGFiaWxpdGllcyknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzQ2FwYWJpbGl0aWVzKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHsnYXBwaXVtOnBsYXRmb3JtTmFtZSc6ICdXaGF0ZXZ6J30sXG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7J2FwcGl1bTpicm93c2VyTmFtZSc6ICdBbnl0aGluZyd9XSxcbiAgICAgIH0pLnNob3VsZC5kZWVwLmVxdWFsKHtwbGF0Zm9ybU5hbWU6ICdXaGF0ZXZ6JywgYnJvd3Nlck5hbWU6ICdBbnl0aGluZyd9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcHJlZmVyIHN0YW5kYXJkIGNhcHMgdGhhdCBhcmUgbm9uLXByZWZpeGVkIHRvIHByZWZpeGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyh7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7J2FwcGl1bTpwbGF0Zm9ybU5hbWUnOiAnRm9vJywgcGxhdGZvcm1OYW1lOiAnQmFyJ30sXG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7J2FwcGl1bTpicm93c2VyTmFtZSc6ICdGT08nLCBicm93c2VyTmFtZTogJ0JBUid9XSxcbiAgICAgIH0pLnNob3VsZC5kZWVwLmVxdWFsKHtwbGF0Zm9ybU5hbWU6ICdCYXInLCBicm93c2VyTmFtZTogJ0JBUid9KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHRocm93IGV4Y2VwdGlvbiBpZiBkdXBsaWNhdGVzIGluIGFsd2F5c01hdGNoIGFuZCBmaXJzdE1hdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+XG4gICAgICAgIHByb2Nlc3NDYXBhYmlsaXRpZXMoe1xuICAgICAgICAgIGFsd2F5c01hdGNoOiB7cGxhdGZvcm1OYW1lOiAnRmFrZScsICdhcHBpdW06ZmFrZUNhcCc6ICdmb29iYXInfSxcbiAgICAgICAgICBmaXJzdE1hdGNoOiBbeydhcHBpdW06cGxhdGZvcm1OYW1lJzogJ2Jhcid9XSxcbiAgICAgICAgfSkpLnNob3VsZC50aHJvdygvc2hvdWxkIG5vdCBleGlzdCBvbiBib3RoIHByaW1hcnkvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IHRocm93IGFuIGV4Y2VwdGlvbiBpZiBwcmVzZW5jZSBjb25zdHJhaW50IGlzIG5vdCBtZXQgb24gYSBmaXJzdE1hdGNoIGNhcGFiaWxpdHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYXBzID0gcHJvY2Vzc0NhcGFiaWxpdGllcyhcbiAgICAgICAge1xuICAgICAgICAgIGFsd2F5c01hdGNoOiB7cGxhdGZvcm1OYW1lOiAnRmFrZScsICdhcHBpdW06ZmFrZUNhcCc6ICdmb29iYXInfSxcbiAgICAgICAgICBmaXJzdE1hdGNoOiBbeydhcHBpdW06Zm9vJzogJ2Jhcid9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZToge1xuICAgICAgICAgICAgcHJlc2VuY2U6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmYWtlQ2FwOiB7XG4gICAgICAgICAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBjYXBzLnBsYXRmb3JtTmFtZS5zaG91bGQuZXF1YWwoJ0Zha2UnKTtcbiAgICAgIGNhcHMuZmFrZUNhcC5zaG91bGQuZXF1YWwoJ2Zvb2JhcicpO1xuICAgICAgY2Fwcy5mb28uc2hvdWxkLmVxdWFsKCdiYXInKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIG5vIG1hdGNoaW5nIGNhcHMgd2VyZSBmb3VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICgoKSA9PlxuICAgICAgICBwcm9jZXNzQ2FwYWJpbGl0aWVzKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsd2F5c01hdGNoOiB7cGxhdGZvcm1OYW1lOiAnRmFrZScsICdhcHBpdW06ZmFrZUNhcCc6ICdmb29iYXInfSxcbiAgICAgICAgICAgIGZpcnN0TWF0Y2g6IFt7J2FwcGl1bTpmb28nOiAnYmFyJ31dLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGxhdGZvcm1OYW1lOiB7XG4gICAgICAgICAgICAgIHByZXNlbmNlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZha2VDYXA6IHtcbiAgICAgICAgICAgICAgcHJlc2VuY2U6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWlzc2luZ0NhcDoge1xuICAgICAgICAgICAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICApKS5zaG91bGQudGhyb3coLydtaXNzaW5nQ2FwJyBjYW4ndCBiZSBibGFuay8pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3ZhbGlkYXRlIEFwcGl1bSBjb25zdHJhaW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNvbnN0cmFpbnRzID0gey4uLmRlc2lyZWRDYXBhYmlsaXR5Q29uc3RyYWludHN9O1xuICAgICAgY29uc3QgZXhwZWN0ZWRNYXRjaGluZ0NhcHMgPSB7XG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgICBhdXRvbWF0aW9uTmFtZTogJ0Zha2UnLFxuICAgICAgICBkZXZpY2VOYW1lOiAnRmFrZScsXG4gICAgICB9O1xuXG4gICAgICBsZXQgbWF0Y2hpbmdDYXBzO1xuICAgICAgbGV0IGNhcHM7XG5cbiAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICBtYXRjaGluZ0NhcHMgPSB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnRmFrZScsXG4gICAgICAgICAgJ2FwcGl1bTphdXRvbWF0aW9uTmFtZSc6ICdGYWtlJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRmFrZScsXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB3aGVuIGFsd2F5c01hdGNoIGhhcyB0aGUgcHJvcGVyIGNhcHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMgPSB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IG1hdGNoaW5nQ2FwcyxcbiAgICAgICAgICBmaXJzdE1hdGNoOiBbe31dLFxuICAgICAgICB9O1xuICAgICAgICBwcm9jZXNzQ2FwYWJpbGl0aWVzKGNhcHMsIGNvbnN0cmFpbnRzKS5zaG91bGQuZGVlcC5lcXVhbChleHBlY3RlZE1hdGNoaW5nQ2Fwcyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB3aGVuIGZpcnN0TWF0Y2hbMF0gaGFzIHRoZSBwcm9wZXIgY2FwcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FwcyA9IHtcbiAgICAgICAgICBhbHdheXNNYXRjaDoge30sXG4gICAgICAgICAgZmlyc3RNYXRjaDogW21hdGNoaW5nQ2Fwc10sXG4gICAgICAgIH07XG4gICAgICAgIHByb2Nlc3NDYXBhYmlsaXRpZXMoY2FwcywgY29uc3RyYWludHMpLnNob3VsZC5kZWVwLmVxdWFsKGV4cGVjdGVkTWF0Y2hpbmdDYXBzKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHdoZW4gYWx3YXlzTWF0Y2ggYW5kIGZpcnN0TWF0Y2hbMF0gaGF2ZSB0aGUgcHJvcGVyIGNhcHMgd2hlbiBtZXJnZWQgdG9nZXRoZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMgPSB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IF8ub21pdChtYXRjaGluZ0NhcHMsIFsnYXBwaXVtOmRldmljZU5hbWUnXSksXG4gICAgICAgICAgZmlyc3RNYXRjaDogW3snYXBwaXVtOmRldmljZU5hbWUnOiAnRmFrZSd9XSxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyhjYXBzLCBjb25zdHJhaW50cykuc2hvdWxkLmRlZXAuZXF1YWwoZXhwZWN0ZWRNYXRjaGluZ0NhcHMpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgd2hlbiBhdXRvbWF0aW9uTmFtZSBpcyBvbWl0dGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzID0ge1xuICAgICAgICAgIGFsd2F5c01hdGNoOiBfLm9taXQobWF0Y2hpbmdDYXBzLCBbJ2FwcGl1bTphdXRvbWF0aW9uTmFtZSddKSxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyhjYXBzLCBjb25zdHJhaW50cykuc2hvdWxkLmRlZXAuZXF1YWwoXG4gICAgICAgICAgXy5vbWl0KGV4cGVjdGVkTWF0Y2hpbmdDYXBzLCAnYXV0b21hdGlvbk5hbWUnKVxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcGFzcyBpZiBmaXJzdCBlbGVtZW50IGluIFwiZmlyc3RNYXRjaFwiIGRvZXMgdmFsaWRhdGUgYW5kIHNlY29uZCBlbGVtZW50IGRvZXMgbm90JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzID0ge1xuICAgICAgICAgIGFsd2F5c01hdGNoOiB7fSxcbiAgICAgICAgICBmaXJzdE1hdGNoOiBbbWF0Y2hpbmdDYXBzLCB7J2FwcGl1bTpiYWRDYXBzJzogJ2JhZENhcHMnfV0sXG4gICAgICAgIH07XG4gICAgICAgIHByb2Nlc3NDYXBhYmlsaXRpZXMoY2FwcywgY29uc3RyYWludHMpLnNob3VsZC5kZWVwLmVxdWFsKGV4cGVjdGVkTWF0Y2hpbmdDYXBzKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHBhc3MgaWYgZmlyc3QgZWxlbWVudCBpbiBcImZpcnN0TWF0Y2hcIiBkb2VzIG5vdCB2YWxpZGF0ZSBhbmQgc2Vjb25kIGVsZW1lbnQgZG9lcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FwcyA9IHtcbiAgICAgICAgICBhbHdheXNNYXRjaDoge30sXG4gICAgICAgICAgZmlyc3RNYXRjaDogW3snYXBwaXVtOmJhZENhcHMnOiAnYmFkQ2Fwcyd9LCBtYXRjaGluZ0NhcHNdLFxuICAgICAgICB9O1xuICAgICAgICBwcm9jZXNzQ2FwYWJpbGl0aWVzKGNhcHMsIGNvbnN0cmFpbnRzKS5zaG91bGQuZGVlcC5lcXVhbChleHBlY3RlZE1hdGNoaW5nQ2Fwcyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gYmFkIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCBpbiBtb3JlIHRoYW4gb25lIGZpcnN0TWF0Y2ggY2FwYWJpbGl0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FwcyA9IHtcbiAgICAgICAgICBhbHdheXNNYXRjaDoge30sXG4gICAgICAgICAgZmlyc3RNYXRjaDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAnYXBwaXVtOmJhZCc6ICdwYXJhbXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgJ2FwcGl1bTptb3JlJzogJ2JhZC1wYXJhbXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgICAgICAoKCkgPT4gcHJvY2Vzc0NhcGFiaWxpdGllcyhjYXBzLCBjb25zdHJhaW50cykpLnNob3VsZC50aHJvdyhcbiAgICAgICAgICAvQ291bGQgbm90IGZpbmQgbWF0Y2hpbmcgY2FwYWJpbGl0aWVzL1xuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuICBkZXNjcmliZSgnLmZpbmROb25QcmVmaXhlZENhcHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBmaW5kIGFsd2F5c01hdGNoIGNhcHMgd2l0aCBubyBwcmVmaXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmaW5kTm9uUHJlZml4ZWRDYXBzKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAnbm9uLXN0YW5kYXJkJzogJ2R1bW15JyxcbiAgICAgICAgfSxcbiAgICAgIH0pLnNob3VsZC5lcWwoWydub24tc3RhbmRhcmQnXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBub3QgZmluZCBhIHN0YW5kYXJkIGNhcCBpbiBhbHdheXNNYXRjaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZpbmROb25QcmVmaXhlZENhcHMoe1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ0FueScsXG4gICAgICAgIH0sXG4gICAgICB9KS5zaG91bGQuZXFsKFtdKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGZpbmQgZmlyc3RNYXRjaCBjYXBzIHdpdGggbm8gcHJlZml4JywgZnVuY3Rpb24gKCkge1xuICAgICAgZmluZE5vblByZWZpeGVkQ2Fwcyh7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7fSxcbiAgICAgICAgZmlyc3RNYXRjaDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgICdub24tc3RhbmRhcmQnOiAnZHVtbXknLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KS5zaG91bGQuZXFsKFsnbm9uLXN0YW5kYXJkJ10pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgbm90IGZpbmQgYSBzdGFuZGFyZCBjYXAgaW4gcHJlZml4JywgZnVuY3Rpb24gKCkge1xuICAgICAgZmluZE5vblByZWZpeGVkQ2Fwcyh7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7fSxcbiAgICAgICAgZmlyc3RNYXRjaDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ0FueScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pLnNob3VsZC5lcWwoW10pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZmluZCBmaXJzdE1hdGNoIGNhcHMgaW4gc2Vjb25kIGl0ZW0gb2YgZmlyc3RNYXRjaCBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZpbmROb25QcmVmaXhlZENhcHMoe1xuICAgICAgICBhbHdheXNNYXRjaDoge30sXG4gICAgICAgIGZpcnN0TWF0Y2g6IFtcbiAgICAgICAgICB7fSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAnbm9uLXN0YW5kYXJkJzogJ2R1bW15JyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSkuc2hvdWxkLmVxbChbJ25vbi1zdGFuZGFyZCddKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHJlbW92ZSBkdXBsaWNhdGVzIGZyb20gYWx3YXlzTWF0Y2ggYW5kIGZpcnN0TWF0Y2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmaW5kTm9uUHJlZml4ZWRDYXBzKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAnbm9uLXN0YW5kYXJkJzogJ3NvbWV0aGluZycsXG4gICAgICAgIH0sXG4gICAgICAgIGZpcnN0TWF0Y2g6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICAnbm9uLXN0YW5kYXJkJzogJ2R1bW15JyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSkuc2hvdWxkLmVxbChbJ25vbi1zdGFuZGFyZCddKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHJlbW92ZSBkdXBsaWNhdGVzIGZyb20gZmlyc3RNYXRjaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZpbmROb25QcmVmaXhlZENhcHMoe1xuICAgICAgICBmaXJzdE1hdGNoOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgJ25vbi1zdGFuZGFyZCc6ICdkdW1teScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAnbm9uLXN0YW5kYXJkJzogJ2R1bW15IDInLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KS5zaG91bGQuZXFsKFsnbm9uLXN0YW5kYXJkJ10pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgcmVtb3ZlIGR1cGxpY2F0ZXMgYW5kIGtlZXAgc3RhbmRhcmQgY2FwYWJpbGl0aWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWx3YXlzTWF0Y2ggPSB7XG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgICBub25TdGFuZGFyZE9uZTogJ25vbi1zdGFuZGFyZCcsXG4gICAgICAgIG5vblN0YW5kYXJkVHdvOiAnbm9uLXN0YW5kYXJkJyxcbiAgICAgIH07XG4gICAgICBjb25zdCBmaXJzdE1hdGNoID0gW1xuICAgICAgICB7XG4gICAgICAgICAgbm9uU3RhbmRhcmRUaHJlZTogJ25vbi1zdGFuZGFyZCcsXG4gICAgICAgICAgbm9uU3RhbmRhcmRGb3VyOiAnbm9uLXN0YW5kYXJkJyxcbiAgICAgICAgICBicm93c2VyTmFtZTogJ0Zha2VCcm93c2VyJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5vblN0YW5kYXJkVGhyZWU6ICdub24tc3RhbmRhcmQnLFxuICAgICAgICAgIG5vblN0YW5kYXJkRm91cjogJ25vbi1zdGFuZGFyZCcsXG4gICAgICAgICAgbm9uU3RhbmRhcmRGaXZlOiAnbm9uLXN0YW5kYXJkJyxcbiAgICAgICAgICBicm93c2VyVmVyc2lvbjogJ3doYXRldmEnLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIGZpbmROb25QcmVmaXhlZENhcHMoe2Fsd2F5c01hdGNoLCBmaXJzdE1hdGNofSkuc2hvdWxkLmVxbChbXG4gICAgICAgICdub25TdGFuZGFyZE9uZScsXG4gICAgICAgICdub25TdGFuZGFyZFR3bycsXG4gICAgICAgICdub25TdGFuZGFyZFRocmVlJyxcbiAgICAgICAgJ25vblN0YW5kYXJkRm91cicsXG4gICAgICAgICdub25TdGFuZGFyZEZpdmUnLFxuICAgICAgXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcjcHJvbW90ZUFwcGl1bU9wdGlvbnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYXBwaXVtQ2FwcyA9IHtcbiAgICAgICdhcHBpdW06cGxhdGZvcm1WZXJzaW9uJzogJzE0LjQnLFxuICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ2lQaG9uZSAxMScsXG4gICAgICAnYXBwaXVtOmFwcCc6ICcvZm9vL2Jhci5hcHAuemlwJyxcbiAgICAgICdhcHBpdW06YXV0b21hdGlvbk5hbWUnOiAnWENVSVRlc3QnLFxuICAgIH07XG4gICAgY29uc3Qgbm9uQXBwaXVtQ2FwcyA9IHtcbiAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgfTtcbiAgICBjb25zdCBhcHBpdW1VbnByZWZpeGVkQ2FwcyA9IF8uY2xvbmUoYXBwaXVtQ2Fwcyk7XG4gICAgc3RyaXBBcHBpdW1QcmVmaXhlcyhhcHBpdW1VbnByZWZpeGVkQ2Fwcyk7XG4gICAgY29uc3Qgc2ltcGxlQ2FwcyA9IHtcbiAgICAgIC4uLm5vbkFwcGl1bUNhcHMsXG4gICAgICAuLi5hcHBpdW1VbnByZWZpeGVkQ2FwcyxcbiAgICB9O1xuICAgIGl0KCdzaG91bGQgZG8gbm90aGluZyB0byBjYXBzIHRoYXQgZG9udCBpbmNsdWRlIHRoZSBvcHRpb25zJywgZnVuY3Rpb24gKCkge1xuICAgICAgcHJvbW90ZUFwcGl1bU9wdGlvbnMoc2ltcGxlQ2Fwcykuc2hvdWxkLmVxbChzaW1wbGVDYXBzKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHByb21vdGUgb3B0aW9ucycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNhcHMgPSB7XG4gICAgICAgIC4uLm5vbkFwcGl1bUNhcHMsXG4gICAgICAgIFtBUFBJVU1fT1BUU19DQVBdOiB7XG4gICAgICAgICAgLi4uYXBwaXVtVW5wcmVmaXhlZENhcHMsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgcHJvbW90ZUFwcGl1bU9wdGlvbnMoY2Fwcykuc2hvdWxkLmVxbChzaW1wbGVDYXBzKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGdldCByaWQgb2YgcHJlZml4ZXMgaWYgY2FwcyBpbnNpZGUgb3B0aW9ucyBhcmUgcHJlZml4ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYXBzID0ge1xuICAgICAgICAuLi5ub25BcHBpdW1DYXBzLFxuICAgICAgICBbQVBQSVVNX09QVFNfQ0FQXToge1xuICAgICAgICAgIC4uLmFwcGl1bUNhcHMsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgcHJvbW90ZUFwcGl1bU9wdGlvbnMoY2Fwcykuc2hvdWxkLmVxbChzaW1wbGVDYXBzKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHByZXNlcnZlIG5vbi1hcHBpdW0gdmVuZG9yIHByZWZpeGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZ29vZ0NhcHMgPSB7J2dvb2c6Y2hyb21lT3B0aW9ucyc6IHtmb286ICdiYXInfX07XG4gICAgICBjb25zdCBjYXBzID0ge1xuICAgICAgICAuLi5ub25BcHBpdW1DYXBzLFxuICAgICAgICBbQVBQSVVNX09QVFNfQ0FQXToge1xuICAgICAgICAgIC4uLmFwcGl1bUNhcHMsXG4gICAgICAgICAgLi4uZ29vZ0NhcHMsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgcHJvbW90ZUFwcGl1bU9wdGlvbnMoY2Fwcykuc2hvdWxkLmVxbCh7XG4gICAgICAgIC4uLnNpbXBsZUNhcHMsXG4gICAgICAgIC4uLmdvb2dDYXBzLFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBvdmVyd3JpdGUgY2FwcyBmb3VuZCBvbiB0aGUgdG9wIGxldmVsJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY2FwcyA9IHtcbiAgICAgICAgLi4ubm9uQXBwaXVtQ2FwcyxcbiAgICAgICAgZm9vOiAnYmFyJyxcbiAgICAgICAgW0FQUElVTV9PUFRTX0NBUF06IHtcbiAgICAgICAgICAuLi5hcHBpdW1DYXBzLFxuICAgICAgICAgIGZvbzogJ2JheicsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgcHJvbW90ZUFwcGl1bU9wdGlvbnMoY2Fwcykuc2hvdWxkLmVxbCh7XG4gICAgICAgIC4uLnNpbXBsZUNhcHMsXG4gICAgICAgIGZvbzogJ2JheicsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJyNpc1czY0NhcHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBkcm9wIGludmFsaWQgVzNDIGNhcGFiaWxpdGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAoY29uc3QgaW52YWxpZENhcHMgb2YgW1xuICAgICAgICBudWxsLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIFtdLFxuICAgICAgICB7fSxcbiAgICAgICAge2ZpcnN0TWF0Y2g6IG51bGx9LFxuICAgICAgICB7ZmlydE1hdGNoOiBbe31dfSxcbiAgICAgICAge2Fsd2F5c01hdGNoOiBudWxsfSxcbiAgICAgICAge2ZpcnN0TWF0Y2g6IFt7fV0sIGFsd2F5c01hdGNoOiBudWxsfSxcbiAgICAgICAge2ZpcnN0TWF0Y2g6IFtdLCBhbHdheXNNYXRjaDoge319LFxuICAgICAgICB7Zmlyc3RNYXRjaDogW119LFxuICAgICAgICB7Zmlyc3RNYXRjaDoge319LFxuICAgICAgICB7YWx3YXlzTWF0Y2g6IFtdfSxcbiAgICAgIF0pIHtcbiAgICAgICAgaXNXM2NDYXBzKGludmFsaWRDYXBzKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFjY2VwdCB2YWxpZCBXM0MgY2FwYWJpbGl0aWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgZm9yIChjb25zdCB2YWxpZENhcHMgb2YgW1xuICAgICAgICB7Zmlyc3RNYXRjaDogW3t9XX0sXG4gICAgICAgIHtmaXJzdE1hdGNoOiBbe31dLCBhbGF5c01hdGNoOiB7fX0sXG4gICAgICAgIHtmaXJ0TWF0Y2g6IFt7fV0sIGFsd2F5c01hdGNoOiB7fX0sXG4gICAgICAgIHthbHdheXNNYXRjaDoge319LFxuICAgICAgXSkge1xuICAgICAgICBpc1czY0NhcHModmFsaWRDYXBzKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBw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
|
|
@@ -61,7 +61,7 @@ describe('Desired Capabilities', function () {
|
|
|
61
61
|
};
|
|
62
62
|
await d.createSession(null, null, {
|
|
63
63
|
alwaysMatch: {
|
|
64
|
-
|
|
64
|
+
platformName: 'iOS',
|
|
65
65
|
'appium:deviceName': 'Delorean'
|
|
66
66
|
}
|
|
67
67
|
}).should.eventually.be.rejectedWith(_lib.errors.SessionNotCreatedError, /necessary.*proper/);
|
|
@@ -86,7 +86,7 @@ describe('Desired Capabilities', function () {
|
|
|
86
86
|
it('should accept extra capabilities', async function () {
|
|
87
87
|
await d.createSession(null, null, {
|
|
88
88
|
alwaysMatch: {
|
|
89
|
-
|
|
89
|
+
platformName: 'iOS',
|
|
90
90
|
'appium:deviceName': 'Delorean',
|
|
91
91
|
'appium:extra': 'cheese',
|
|
92
92
|
'appium:hold the': 'sauce'
|
|
@@ -97,7 +97,7 @@ describe('Desired Capabilities', function () {
|
|
|
97
97
|
this.timeout(500);
|
|
98
98
|
await d.createSession(null, null, {
|
|
99
99
|
alwaysMatch: {
|
|
100
|
-
|
|
100
|
+
platformName: 'iOS',
|
|
101
101
|
'appium:deviceName': 'Delorean',
|
|
102
102
|
'appium:extra': 'cheese',
|
|
103
103
|
'appium:hold the': 'sauce'
|
|
@@ -108,7 +108,7 @@ describe('Desired Capabilities', function () {
|
|
|
108
108
|
it('should be sensitive to the case of caps', async function () {
|
|
109
109
|
await d.createSession(null, null, {
|
|
110
110
|
alwaysMatch: {
|
|
111
|
-
|
|
111
|
+
platformname: 'iOS',
|
|
112
112
|
'appium:deviceName': 'Delorean'
|
|
113
113
|
}
|
|
114
114
|
}).should.eventually.be.rejectedWith(_lib.errors.SessionNotCreatedError, /platformName/);
|
|
@@ -117,7 +117,7 @@ describe('Desired Capabilities', function () {
|
|
|
117
117
|
it('should allow a string "false"', async function () {
|
|
118
118
|
await d.createSession(null, null, {
|
|
119
119
|
alwaysMatch: {
|
|
120
|
-
|
|
120
|
+
platformName: 'iOS',
|
|
121
121
|
'appium:deviceName': 'Delorean',
|
|
122
122
|
'appium:noReset': 'false'
|
|
123
123
|
}
|
|
@@ -129,7 +129,7 @@ describe('Desired Capabilities', function () {
|
|
|
129
129
|
it('should allow a string "true"', async function () {
|
|
130
130
|
await d.createSession(null, null, {
|
|
131
131
|
alwaysMatch: {
|
|
132
|
-
|
|
132
|
+
platformName: 'iOS',
|
|
133
133
|
'appium:deviceName': 'Delorean',
|
|
134
134
|
'appium:noReset': 'true'
|
|
135
135
|
}
|
|
@@ -141,7 +141,7 @@ describe('Desired Capabilities', function () {
|
|
|
141
141
|
it('should allow a string "true" in string capabilities', async function () {
|
|
142
142
|
await d.createSession(null, null, {
|
|
143
143
|
alwaysMatch: {
|
|
144
|
-
|
|
144
|
+
platformName: 'iOS',
|
|
145
145
|
'appium:deviceName': 'Delorean',
|
|
146
146
|
'appium:language': 'true'
|
|
147
147
|
}
|
|
@@ -155,7 +155,7 @@ describe('Desired Capabilities', function () {
|
|
|
155
155
|
it('should allow a string "1"', async function () {
|
|
156
156
|
await d.createSession(null, null, {
|
|
157
157
|
alwaysMatch: {
|
|
158
|
-
|
|
158
|
+
platformName: 'iOS',
|
|
159
159
|
'appium:deviceName': 'Delorean',
|
|
160
160
|
'appium:newCommandTimeout': '1'
|
|
161
161
|
}
|
|
@@ -167,7 +167,7 @@ describe('Desired Capabilities', function () {
|
|
|
167
167
|
it('should allow a string "1.1"', async function () {
|
|
168
168
|
await d.createSession(null, null, {
|
|
169
169
|
alwaysMatch: {
|
|
170
|
-
|
|
170
|
+
platformName: 'iOS',
|
|
171
171
|
'appium:deviceName': 'Delorean',
|
|
172
172
|
'appium:newCommandTimeout': '1.1'
|
|
173
173
|
}
|
|
@@ -179,7 +179,7 @@ describe('Desired Capabilities', function () {
|
|
|
179
179
|
it('should allow a string "1" in string capabilities', async function () {
|
|
180
180
|
await d.createSession(null, null, {
|
|
181
181
|
alwaysMatch: {
|
|
182
|
-
|
|
182
|
+
platformName: 'iOS',
|
|
183
183
|
'appium:deviceName': 'Delorean',
|
|
184
184
|
'appium:language': '1'
|
|
185
185
|
}
|
|
@@ -192,7 +192,7 @@ describe('Desired Capabilities', function () {
|
|
|
192
192
|
it('should error if objects in caps', async function () {
|
|
193
193
|
await d.createSession(null, null, {
|
|
194
194
|
alwaysMatch: {
|
|
195
|
-
|
|
195
|
+
platformName: {
|
|
196
196
|
a: 'iOS'
|
|
197
197
|
},
|
|
198
198
|
'appium:deviceName': 'Delorean'
|
|
@@ -208,7 +208,7 @@ describe('Desired Capabilities', function () {
|
|
|
208
208
|
};
|
|
209
209
|
await d.createSession(null, null, {
|
|
210
210
|
alwaysMatch: {
|
|
211
|
-
|
|
211
|
+
platformName: 'iOS',
|
|
212
212
|
'appium:deviceName': 'Delorean',
|
|
213
213
|
'appium:lynx-version': 5
|
|
214
214
|
}
|
|
@@ -224,7 +224,7 @@ describe('Desired Capabilities', function () {
|
|
|
224
224
|
};
|
|
225
225
|
await d.createSession(null, null, {
|
|
226
226
|
alwaysMatch: {
|
|
227
|
-
|
|
227
|
+
platformName: 'iOS',
|
|
228
228
|
'appium:deviceName': 'Delorean',
|
|
229
229
|
'appium:lynx-version': 5
|
|
230
230
|
}
|
|
@@ -233,7 +233,7 @@ describe('Desired Capabilities', function () {
|
|
|
233
233
|
});
|
|
234
234
|
it('should not validate against null/undefined caps', async function () {
|
|
235
235
|
d.desiredCapConstraints = {
|
|
236
|
-
|
|
236
|
+
foo: {
|
|
237
237
|
isString: true
|
|
238
238
|
}
|
|
239
239
|
};
|
|
@@ -350,4 +350,4 @@ describe('Desired Capabilities', function () {
|
|
|
350
350
|
});
|
|
351
351
|
});
|
|
352
352
|
});
|
|
353
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iYXNlZHJpdmVyL2NhcGFiaWxpdHkuc3BlYy5qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsImQiLCJzYW5kYm94IiwiYmVmb3JlRWFjaCIsIkJhc2VEcml2ZXIiLCJzcHkiLCJsb2ciLCJsb2dnZXIiLCJhZnRlckVhY2giLCJyZXN0b3JlIiwiaXQiLCJjcmVhdGVTZXNzaW9uIiwiZmlyc3RNYXRjaCIsInNob3VsZCIsImV2ZW50dWFsbHkiLCJiZSIsInJlamVjdGVkV2l0aCIsImVycm9ycyIsIlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IiLCJhbHdheXNNYXRjaCIsInBsYXRmb3JtTmFtZSIsImZ1bGZpbGxlZCIsImRlc2lyZWRDYXBDb25zdHJhaW50cyIsIm5lY2Vzc2FyeSIsInByZXNlbmNlIiwicHJvcGVyIiwiaXNTdHJpbmciLCJpbmNsdXNpb24iLCJ0aW1lb3V0Iiwid2FybiIsImhhdmUiLCJiZWVuIiwiY2FsbGVkIiwic2Vzc2lvbnMiLCJnZXRTZXNzaW9ucyIsImNhcGFiaWxpdGllcyIsIm5vUmVzZXQiLCJlcWwiLCJub3QiLCJsYW5ndWFnZSIsIm5ld0NvbW1hbmRUaW1lb3V0IiwiYSIsImRlcHJlY2F0ZWQiLCJkZWxldGVTZXNzaW9uIiwidW5kZWZpbmVkIiwiZm9vIiwic2Vzc2lvbklkIiwiY2FwcyIsImV4aXN0IiwiZGV2aWNlTmFtZSIsInRlc3RWYWx1ZXMiLCJCIiwibWFwIiwidmFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUFBLFFBQVEsQ0FBQyxzQkFBRCxFQUF5QixZQUFZO0FBQzNDLE1BQUlDLENBQUo7QUFDQSxNQUFJQyxPQUFKO0FBRUFDLEVBQUFBLFVBQVUsQ0FBQyxZQUFZO0FBQ3JCRixJQUFBQSxDQUFDLEdBQUcsSUFBSUcsWUFBSixFQUFKO0FBQ0FGLElBQUFBLE9BQU8sR0FBRywyQkFBVjtBQUNBQSxJQUFBQSxPQUFPLENBQUNHLEdBQVIs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LEVBQTRCO0FBQzFEUSxRQUFBQSxXQUFXLEVBQUU7QUFDWEMsVUFBQUEsWUFBWSxFQUFFLEtBREg7QUFFWCwrQkFBcUI7QUFGVixTQUQ2QztBQUl2RFIsUUFBQUEsVUFBVSxFQUFFLENBQUMsRUFBRDtBQUoyQyxPQUE1QixDQUFoQzs7QUFNQSxVQUFJO0FBQ0ZrQyxRQUFBQSxTQUFTLENBQUNqQyxNQUFWLENBQWlCbUMsS0FBakI7QUFDQUQsUUFBQUEsSUFBSSxDQUFDbEMsTUFBTCxDQUFZd0IsR0FBWixDQUFnQjtBQUNkakIsVUFBQUEsWUFBWSxFQUFFLEtBREE7QUFFZDZCLFVBQUFBLFVBQVUsRUFBRTtBQUZFLFNBQWhCO0FBSUQsT0FORCxTQU1VO0FBQ1IsY0FBTWhELENBQUMsQ0FBQzBDLGFBQUYsRUFBTjtBQUNEO0FBQ0YsS0FoQkMsQ0FBRjtBQWtCQWpDLElBQUFBLEVBQUUsQ0FBQyxzRUFBRCxFQUF5RSxrQkFBa0I7QUFDM0YsWUFBTXdDLFVBQVUsR0FBRyxDQUFDLElBQUQsRUFBTyxRQUFQLEVBQWlCLEVBQWpCLEVBQXFCLEdBQXJCLENBQW5CO0FBRUEsWUFBTUMsa0JBQUVDLEdBQUYsQ0FBTUYsVUFBTixFQUFtQkcsR0FBRCxJQUFTcEQsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCMEMsR0FBNUIsRUFBaUN4QyxNQUFqQyxDQUF3Q0MsVUFBeEMsQ0FBbURDLEVBQW5ELENBQXNEQyxZQUF0RCxDQUFtRUMsWUFBT0Msc0JBQTFFLENBQTNCLENBQU47QUFDRCxLQUpDLENBQUY7QUFLRCxHQXhCTyxDQUFSO0FBeUJELENBdlhPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBCYXNlRHJpdmVyLCBlcnJvcnMgfSBmcm9tICcuLi8uLi8uLi9saWInO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi8uLi8uLi9saWIvYmFzZWRyaXZlci9sb2dnZXInO1xuaW1wb3J0IHsgY3JlYXRlU2FuZGJveCB9IGZyb20gJ3Npbm9uJztcblxuZGVzY3JpYmUoJ0Rlc2lyZWQgQ2FwYWJpbGl0aWVzJywgZnVuY3Rpb24gKCkge1xuICBsZXQgZDtcbiAgbGV0IHNhbmRib3g7XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgZCA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgc2FuZGJveCA9IGNyZWF0ZVNhbmRib3goKTtcbiAgICBzYW5kYm94LnNweShkLmxvZywgJ3dhcm4nKTtcbiAgICBzYW5kYm94LnNweShsb2dnZXIsICd3YXJuJyk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2FuZGJveC5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVxdWlyZSBwbGF0Zm9ybU5hbWUgYW5kIGRldmljZU5hbWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKHtcbiAgICAgIGZpcnN0TWF0Y2g6IFt7fV1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9wbGF0Zm9ybU5hbWUvKTtcbiAgfSk7XG5cblxuICBpdCgnc2hvdWxkIHJlcXVpcmUgcGxhdGZvcm1OYW1lJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbih7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nXG4gICAgICB9XG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKGVycm9ycy5TZXNzaW9uTm90Q3JlYXRlZEVycm9yLCAvcGxhdGZvcm1OYW1lLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IGNhcmUgYWJvdXQgY2FwIG9yZGVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnXG4gICAgICB9XG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUuZnVsZmlsbGVkO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIHJlcXVpcmVkIGNhcHMgd2hpY2ggYXJlIGFkZGVkIHRvIGRyaXZlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBkLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHtcbiAgICAgIG5lY2Vzc2FyeToge1xuICAgICAgICBwcmVzZW5jZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHByb3Blcjoge1xuICAgICAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICAgICAgaXNTdHJpbmc6IHRydWUsXG4gICAgICAgIGluY2x1c2lvbjogWydEZWxvcmVhbicsICdSZXZlbnRvbiddXG4gICAgICB9XG4gICAgfTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbidcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9uZWNlc3NhcnkuKnByb3Blci8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIGFkZGVkIHJlcXVpcmVkIGNhcHMgaW4gYWRkaXRpb24gdG8gYmFzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBkLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHtcbiAgICAgIG5lY2Vzc2FyeToge1xuICAgICAgICBwcmVzZW5jZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHByb3Blcjoge1xuICAgICAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICAgICAgaXNTdHJpbmc6IHRydWUsXG4gICAgICAgIGluY2x1c2lvbjogWydEZWxvcmVhbicsICdSZXZlbnRvbiddXG4gICAgICB9XG4gICAgfTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAnYXBwaXVtOm5lY2Vzc2FyeSc6ICd5dXAnXG4gICAgICB9XG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKGVycm9ycy5TZXNzaW9uTm90Q3JlYXRlZEVycm9yLCAvcGxhdGZvcm1OYW1lLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYWNjZXB0IGV4dHJhIGNhcGFiaWxpdGllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgJ3BsYXRmb3JtTmFtZSc6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAnYXBwaXVtOmV4dHJhJzogJ2NoZWVzZScsXG4gICAgICAgICdhcHBpdW06aG9sZCB0aGUnOiAnc2F1Y2UnXG4gICAgICB9XG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUuZnVsZmlsbGVkO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGxvZyB0aGUgdXNlIG9mIGV4dHJhIGNhcHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy50aW1lb3V0KDUwMCk7XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgJ3BsYXRmb3JtTmFtZSc6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAnYXBwaXVtOmV4dHJhJzogJ2NoZWVzZScsXG4gICAgICAgICdhcHBpdW06aG9sZCB0aGUnOiAnc2F1Y2UnXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBkLmxvZy53YXJuLnNob3VsZC5oYXZlLmJlZW4uY2FsbGVkO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJlIHNlbnNpdGl2ZSB0byB0aGUgY2FzZSBvZiBjYXBzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAncGxhdGZvcm1uYW1lJzogJ2lPUycsXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbidcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9wbGF0Zm9ybU5hbWUvKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Jvb2xlYW4gY2FwYWJpbGl0aWVzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgYWxsb3cgYSBzdHJpbmcgXCJmYWxzZVwiJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOm5vUmVzZXQnOiAnZmFsc2UnXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZC5sb2cud2Fybi5zaG91bGQuaGF2ZS5iZWVuLmNhbGxlZDtcblxuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLm5vUmVzZXQuc2hvdWxkLmVxbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IGEgc3RyaW5nIFwidHJ1ZVwiJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOm5vUmVzZXQnOiAndHJ1ZSdcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBkLmxvZy53YXJuLnNob3VsZC5oYXZlLmJlZW4uY2FsbGVkO1xuXG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG4gICAgICBzZXNzaW9uc1swXS5jYXBhYmlsaXRpZXMubm9SZXNldC5zaG91bGQuZXFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIHN0cmluZyBcInRydWVcIiBpbiBzdHJpbmcgY2FwYWJpbGl0aWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOmxhbmd1YWdlJzogJ3RydWUnXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZC5sb2cud2Fybi5zaG91bGQubm90LmhhdmUuYmVlbi5jYWxsZWQ7XG5cbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcbiAgICAgIHNlc3Npb25zWzBdLmNhcGFiaWxpdGllcy5sYW5ndWFnZS5zaG91bGQuZXFsKCd0cnVlJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdudW1iZXIgY2FwYWJpbGl0aWVzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgYWxsb3cgYSBzdHJpbmcgXCIxXCInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgICdwbGF0Zm9ybU5hbWUnOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAgICdhcHBpdW06bmV3Q29tbWFuZFRpbWVvdXQnOiAnMSdcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBkLmxvZy53YXJuLnNob3VsZC5oYXZlLmJlZW4uY2FsbGVkO1xuXG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG4gICAgICBzZXNzaW9uc1swXS5jYXBhYmlsaXRpZXMubmV3Q29tbWFuZFRpbWVvdXQuc2hvdWxkLmVxbCgxKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgYSBzdHJpbmcgXCIxLjFcIicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgJ3BsYXRmb3JtTmFtZSc6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgICAgJ2FwcGl1bTpuZXdDb21tYW5kVGltZW91dCc6ICcxLjEnXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZC5sb2cud2Fybi5zaG91bGQuaGF2ZS5iZWVuLmNhbGxlZDtcblxuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLm5ld0NvbW1hbmRUaW1lb3V0LnNob3VsZC5lcWwoMS4xKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgYSBzdHJpbmcgXCIxXCIgaW4gc3RyaW5nIGNhcGFiaWxpdGllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgJ3BsYXRmb3JtTmFtZSc6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgICAgJ2FwcGl1bTpsYW5ndWFnZSc6ICcxJ1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGQubG9nLndhcm4uc2hvdWxkLm5vdC5oYXZlLmJlZW4uY2FsbGVkO1xuXG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG4gICAgICBzZXNzaW9uc1swXS5jYXBhYmlsaXRpZXMubGFuZ3VhZ2Uuc2hvdWxkLmVxbCgnMScpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCAoJ3Nob3VsZCBlcnJvciBpZiBvYmplY3RzIGluIGNhcHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdwbGF0Zm9ybU5hbWUnOiB7YTogJ2lPUyd9LFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nXG4gICAgICB9XG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKGVycm9ycy5TZXNzaW9uTm90Q3JlYXRlZEVycm9yLCAvcGxhdGZvcm1OYW1lL2kpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIGZvciBkZXByZWNhdGVkIGNhcHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy50aW1lb3V0KDUwMCk7XG5cbiAgICBkLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHtcbiAgICAgICdseW54LXZlcnNpb24nOiB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6IHRydWVcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdwbGF0Zm9ybU5hbWUnOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgJ2FwcGl1bTpseW54LXZlcnNpb24nOiA1XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsb2dnZXIud2Fybi5zaG91bGQuaGF2ZS5iZWVuLmNhbGxlZDtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3Qgd2FybiBpZiBkZXByZWNhdGVkPWZhbHNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIHRoaXMudGltZW91dCg1MDApO1xuXG4gICAgZC5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7XG4gICAgICAnbHlueC12ZXJzaW9uJzoge1xuICAgICAgICBkZXByZWNhdGVkOiBmYWxzZVxuICAgICAgfVxuICAgIH07XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgJ3BsYXRmb3JtTmFtZSc6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAnYXBwaXVtOmx5bngtdmVyc2lvbic6IDVcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGQubG9nLndhcm4uc2hvdWxkLm5vdC5oYXZlLmJlZW4uY2FsbGVkO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCB2YWxpZGF0ZSBhZ2FpbnN0IG51bGwvdW5kZWZpbmVkIGNhcHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZC5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7XG4gICAgICAnZm9vJzoge1xuICAgICAgICBpc1N0cmluZzogdHJ1ZVxuICAgICAgfVxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgICAnYXBwaXVtOmZvbyc6IG51bGxcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgIH1cblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAgICdhcHBpdW06Zm9vJzogMVxuICAgICAgfVxuICAgIH0pLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvJ2ZvbycgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy8pO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAgICAgJ2FwcGl1bTpmb28nOiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAgICdhcHBpdW06Zm9vJzogJydcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdGlsbCB2YWxpZGF0ZSBudWxsL3VuZGVmaW5lZC9lbXB0eSBjYXBzIHdob3NlIHByZXNlbmNlIGlzIHJlcXVpcmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGQuZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge1xuICAgICAgZm9vOiB7XG4gICAgICAgIHByZXNlbmNlOiB0cnVlXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAnYXBwaXVtOmZvbyc6IG51bGxcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2JsYW5rLyk7XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwge1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAnYXBwaXVtOmZvbyc6ICcnXG4gICAgICB9XG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9ibGFuay8pO1xuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKHtcbiAgICAgIGZpcnN0TWF0Y2g6IFt7XG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgJ2FwcGl1bTpmb28nOiB7fVxuICAgICAgfV1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2JsYW5rLyk7XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24oe1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAnYXBwaXVtOmZvbyc6IFtdXG4gICAgICB9XG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9ibGFuay8pO1xuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgJ2FwcGl1bTpmb28nOiAnICAnXG4gICAgICB9XG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9ibGFuay8pO1xuICB9KTtcblxuICBkZXNjcmliZSgndzNjJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgYWNjZXB0IHczYyBjYXBhYmlsaXRpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBbc2Vzc2lvbklkLCBjYXBzXSA9IGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nXG4gICAgICAgIH0sIGZpcnN0TWF0Y2g6IFt7fV0sXG4gICAgICB9KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNlc3Npb25JZC5zaG91bGQuZXhpc3Q7XG4gICAgICAgIGNhcHMuc2hvdWxkLmVxbCh7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICBkZXZpY2VOYW1lOiAnRGVsb3JlYW4nLFxuICAgICAgICB9KTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByYWlzZSBhbiBlcnJvciBpZiB3M2MgY2FwYWJpbGl0aWVzIGlzIG5vdCBhIHBsYWluIEpTT04gb2JqZWN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdGVzdFZhbHVlcyA9IFt0cnVlLCAnc3RyaW5nJywgW10sIDEwMF07XG4gICAgICAvLyB0aGlzIGxvb3AgcnVucyBpbiBwYXJhbGxlbCwgYW5kIGRvZXMgbm90IGd1YXJhbnRlZSBhbGwgYXNzZXJ0aW9ucyB3aWxsIGJlIG1hZGVcbiAgICAgIGF3YWl0IEIubWFwKHRlc3RWYWx1ZXMsICh2YWwpID0+IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB2YWwpLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aChlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcikpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
353
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNjcmliZSIsImQiLCJzYW5kYm94IiwiYmVmb3JlRWFjaCIsIkJhc2VEcml2ZXIiLCJjcmVhdGVTYW5kYm94Iiwic3B5IiwibG9nIiwibG9nZ2VyIiwiYWZ0ZXJFYWNoIiwicmVzdG9yZSIsIml0IiwiY3JlYXRlU2Vzc2lvbiIsImZpcnN0TWF0Y2giLCJzaG91bGQiLCJldmVudHVhbGx5IiwiYmUiLCJyZWplY3RlZFdpdGgiLCJlcnJvcnMiLCJTZXNzaW9uTm90Q3JlYXRlZEVycm9yIiwiYWx3YXlzTWF0Y2giLCJwbGF0Zm9ybU5hbWUiLCJmdWxmaWxsZWQiLCJkZXNpcmVkQ2FwQ29uc3RyYWludHMiLCJuZWNlc3NhcnkiLCJwcmVzZW5jZSIsInByb3BlciIsImlzU3RyaW5nIiwiaW5jbHVzaW9uIiwidGltZW91dCIsIndhcm4iLCJoYXZlIiwiYmVlbiIsImNhbGxlZCIsInBsYXRmb3JtbmFtZSIsInNlc3Npb25zIiwiZ2V0U2Vzc2lvbnMiLCJjYXBhYmlsaXRpZXMiLCJub1Jlc2V0IiwiZXFsIiwibm90IiwibGFuZ3VhZ2UiLCJuZXdDb21tYW5kVGltZW91dCIsImEiLCJkZXByZWNhdGVkIiwiZm9vIiwiZGVsZXRlU2Vzc2lvbiIsInVuZGVmaW5lZCIsInNlc3Npb25JZCIsImNhcHMiLCJleGlzdCIsImRldmljZU5hbWUiLCJ0ZXN0VmFsdWVzIiwiQiIsIm1hcCIsInZhbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iYXNlZHJpdmVyL2NhcGFiaWxpdHkuc3BlYy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHtkZWZhdWx0IGFzIEJhc2VEcml2ZXIsIGVycm9yc30gZnJvbSAnLi4vLi4vLi4vbGliJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vLi4vLi4vbGliL2Jhc2Vkcml2ZXIvbG9nZ2VyJztcbmltcG9ydCB7Y3JlYXRlU2FuZGJveH0gZnJvbSAnc2lub24nO1xuXG5kZXNjcmliZSgnRGVzaXJlZCBDYXBhYmlsaXRpZXMnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBkO1xuICBsZXQgc2FuZGJveDtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBzYW5kYm94ID0gY3JlYXRlU2FuZGJveCgpO1xuICAgIHNhbmRib3guc3B5KGQubG9nLCAnd2FybicpO1xuICAgIHNhbmRib3guc3B5KGxvZ2dlciwgJ3dhcm4nKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXF1aXJlIHBsYXRmb3JtTmFtZSBhbmQgZGV2aWNlTmFtZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBkXG4gICAgICAuY3JlYXRlU2Vzc2lvbih7XG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7fV0sXG4gICAgICB9KVxuICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aChlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvciwgL3BsYXRmb3JtTmFtZS8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlcXVpcmUgcGxhdGZvcm1OYW1lJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGRcbiAgICAgIC5jcmVhdGVTZXNzaW9uKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9wbGF0Zm9ybU5hbWUvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgY2FyZSBhYm91dCBjYXAgb3JkZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICB9LFxuICAgIH0pLnNob3VsZC5ldmVudHVhbGx5LmJlLmZ1bGZpbGxlZDtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjaGVjayByZXF1aXJlZCBjYXBzIHdoaWNoIGFyZSBhZGRlZCB0byBkcml2ZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZC5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7XG4gICAgICBuZWNlc3Nhcnk6IHtcbiAgICAgICAgcHJlc2VuY2U6IHRydWUsXG4gICAgICB9LFxuICAgICAgcHJvcGVyOiB7XG4gICAgICAgIHByZXNlbmNlOiB0cnVlLFxuICAgICAgICBpc1N0cmluZzogdHJ1ZSxcbiAgICAgICAgaW5jbHVzaW9uOiBbJ0RlbG9yZWFuJywgJ1JldmVudG9uJ10sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBhd2FpdCBkXG4gICAgICAuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9uZWNlc3NhcnkuKnByb3Blci8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIGFkZGVkIHJlcXVpcmVkIGNhcHMgaW4gYWRkaXRpb24gdG8gYmFzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBkLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHtcbiAgICAgIG5lY2Vzc2FyeToge1xuICAgICAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBwcm9wZXI6IHtcbiAgICAgICAgcHJlc2VuY2U6IHRydWUsXG4gICAgICAgIGlzU3RyaW5nOiB0cnVlLFxuICAgICAgICBpbmNsdXNpb246IFsnRGVsb3JlYW4nLCAnUmV2ZW50b24nXSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGF3YWl0IGRcbiAgICAgIC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAnYXBwaXVtOm5lY2Vzc2FyeSc6ICd5dXAnLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9wbGF0Zm9ybU5hbWUvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY2NlcHQgZXh0cmEgY2FwYWJpbGl0aWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAnYXBwaXVtOmV4dHJhJzogJ2NoZWVzZScsXG4gICAgICAgICdhcHBpdW06aG9sZCB0aGUnOiAnc2F1Y2UnLFxuICAgICAgfSxcbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5mdWxmaWxsZWQ7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbG9nIHRoZSB1c2Ugb2YgZXh0cmEgY2FwcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRpbWVvdXQoNTAwKTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAnYXBwaXVtOmV4dHJhJzogJ2NoZWVzZScsXG4gICAgICAgICdhcHBpdW06aG9sZCB0aGUnOiAnc2F1Y2UnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGQubG9nLndhcm4uc2hvdWxkLmhhdmUuYmVlbi5jYWxsZWQ7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgc2Vuc2l0aXZlIHRvIHRoZSBjYXNlIG9mIGNhcHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZFxuICAgICAgLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtbmFtZTogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKGVycm9ycy5TZXNzaW9uTm90Q3JlYXRlZEVycm9yLCAvcGxhdGZvcm1OYW1lLyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdib29sZWFuIGNhcGFiaWxpdGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGFsbG93IGEgc3RyaW5nIFwiZmFsc2VcIicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAgICdhcHBpdW06bm9SZXNldCc6ICdmYWxzZScsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGQubG9nLndhcm4uc2hvdWxkLmhhdmUuYmVlbi5jYWxsZWQ7XG5cbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcbiAgICAgIHNlc3Npb25zWzBdLmNhcGFiaWxpdGllcy5ub1Jlc2V0LnNob3VsZC5lcWwoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIHN0cmluZyBcInRydWVcIicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAgICdhcHBpdW06bm9SZXNldCc6ICd0cnVlJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZC5sb2cud2Fybi5zaG91bGQuaGF2ZS5iZWVuLmNhbGxlZDtcblxuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLm5vUmVzZXQuc2hvdWxkLmVxbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgYSBzdHJpbmcgXCJ0cnVlXCIgaW4gc3RyaW5nIGNhcGFiaWxpdGllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAgICdhcHBpdW06bGFuZ3VhZ2UnOiAndHJ1ZScsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGQubG9nLndhcm4uc2hvdWxkLm5vdC5oYXZlLmJlZW4uY2FsbGVkO1xuXG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG4gICAgICBzZXNzaW9uc1swXS5jYXBhYmlsaXRpZXMubGFuZ3VhZ2Uuc2hvdWxkLmVxbCgndHJ1ZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbnVtYmVyIGNhcGFiaWxpdGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGFsbG93IGEgc3RyaW5nIFwiMVwiJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgICAgJ2FwcGl1bTpuZXdDb21tYW5kVGltZW91dCc6ICcxJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZC5sb2cud2Fybi5zaG91bGQuaGF2ZS5iZWVuLmNhbGxlZDtcblxuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLm5ld0NvbW1hbmRUaW1lb3V0LnNob3VsZC5lcWwoMSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IGEgc3RyaW5nIFwiMS4xXCInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOm5ld0NvbW1hbmRUaW1lb3V0JzogJzEuMScsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGQubG9nLndhcm4uc2hvdWxkLmhhdmUuYmVlbi5jYWxsZWQ7XG5cbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcbiAgICAgIHNlc3Npb25zWzBdLmNhcGFiaWxpdGllcy5uZXdDb21tYW5kVGltZW91dC5zaG91bGQuZXFsKDEuMSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IGEgc3RyaW5nIFwiMVwiIGluIHN0cmluZyBjYXBhYmlsaXRpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOmxhbmd1YWdlJzogJzEnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBkLmxvZy53YXJuLnNob3VsZC5ub3QuaGF2ZS5iZWVuLmNhbGxlZDtcblxuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLmxhbmd1YWdlLnNob3VsZC5lcWwoJzEnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBlcnJvciBpZiBvYmplY3RzIGluIGNhcHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZFxuICAgICAgLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZToge2E6ICdpT1MnfSxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9wbGF0Zm9ybU5hbWUvaSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2hlY2sgZm9yIGRlcHJlY2F0ZWQgY2FwcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRpbWVvdXQoNTAwKTtcblxuICAgIGQuZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge1xuICAgICAgJ2x5bngtdmVyc2lvbic6IHtcbiAgICAgICAgZGVwcmVjYXRlZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAnYXBwaXVtOmx5bngtdmVyc2lvbic6IDUsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgbG9nZ2VyLndhcm4uc2hvdWxkLmhhdmUuYmVlbi5jYWxsZWQ7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IHdhcm4gaWYgZGVwcmVjYXRlZD1mYWxzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRpbWVvdXQoNTAwKTtcblxuICAgIGQuZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge1xuICAgICAgJ2x5bngtdmVyc2lvbic6IHtcbiAgICAgICAgZGVwcmVjYXRlZDogZmFsc2UsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgJ2FwcGl1bTpseW54LXZlcnNpb24nOiA1LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGQubG9nLndhcm4uc2hvdWxkLm5vdC5oYXZlLmJlZW4uY2FsbGVkO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCB2YWxpZGF0ZSBhZ2FpbnN0IG51bGwvdW5kZWZpbmVkIGNhcHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZC5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7XG4gICAgICBmb286IHtcbiAgICAgICAgaXNTdHJpbmc6IHRydWUsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgICAnYXBwaXVtOmZvbyc6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgfVxuXG4gICAgYXdhaXQgZFxuICAgICAgLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAgICdhcHBpdW06Zm9vJzogMSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC8nZm9vJyBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLyk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgICAnYXBwaXVtOmZvbyc6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBkLmRlbGV0ZVNlc3Npb24oKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgICAnYXBwaXVtOmZvbyc6ICcnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdGlsbCB2YWxpZGF0ZSBudWxsL3VuZGVmaW5lZC9lbXB0eSBjYXBzIHdob3NlIHByZXNlbmNlIGlzIHJlcXVpcmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGQuZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge1xuICAgICAgZm9vOiB7XG4gICAgICAgIHByZXNlbmNlOiB0cnVlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgYXdhaXQgZFxuICAgICAgLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAgICdhcHBpdW06Zm9vJzogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9ibGFuay8pO1xuXG4gICAgYXdhaXQgZFxuICAgICAgLmNyZWF0ZVNlc3Npb24obnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAgICdhcHBpdW06Zm9vJzogJycsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvYmxhbmsvKTtcblxuICAgIGF3YWl0IGRcbiAgICAgIC5jcmVhdGVTZXNzaW9uKHtcbiAgICAgICAgZmlyc3RNYXRjaDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAgICAgICAnYXBwaXVtOmZvbyc6IHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvYmxhbmsvKTtcblxuICAgIGF3YWl0IGRcbiAgICAgIC5jcmVhdGVTZXNzaW9uKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgICAnYXBwaXVtOmZvbyc6IFtdLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2JsYW5rLyk7XG5cbiAgICBhd2FpdCBkXG4gICAgICAuY3JlYXRlU2Vzc2lvbih7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAgICAgJ2FwcGl1bTpmb28nOiAnICAnLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2JsYW5rLyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd3M2MnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBhY2NlcHQgdzNjIGNhcGFiaWxpdGllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IFtzZXNzaW9uSWQsIGNhcHNdID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgIH0sXG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7fV0sXG4gICAgICB9KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNlc3Npb25JZC5zaG91bGQuZXhpc3Q7XG4gICAgICAgIGNhcHMuc2hvdWxkLmVxbCh7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICBkZXZpY2VOYW1lOiAnRGVsb3JlYW4nLFxuICAgICAgICB9KTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByYWlzZSBhbiBlcnJvciBpZiB3M2MgY2FwYWJpbGl0aWVzIGlzIG5vdCBhIHBsYWluIEpTT04gb2JqZWN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdGVzdFZhbHVlcyA9IFt0cnVlLCAnc3RyaW5nJywgW10sIDEwMF07XG4gICAgICAvLyB0aGlzIGxvb3AgcnVucyBpbiBwYXJhbGxlbCwgYW5kIGRvZXMgbm90IGd1YXJhbnRlZSBhbGwgYXNzZXJ0aW9ucyB3aWxsIGJlIG1hZGVcbiAgICAgIGF3YWl0IEIubWFwKHRlc3RWYWx1ZXMsICh2YWwpID0+XG4gICAgICAgIGRcbiAgICAgICAgICAuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB2YWwpXG4gICAgICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aChlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcilcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQUEsUUFBUSxDQUFDLHNCQUFELEVBQXlCLFlBQVk7RUFDM0MsSUFBSUMsQ0FBSjtFQUNBLElBQUlDLE9BQUo7RUFFQUMsVUFBVSxDQUFDLFlBQVk7SUFDckJGLENBQUMsR0FBRyxJQUFJRyxZQUFKLEVBQUo7SUFDQUYsT0FBTyxHQUFHLElBQUFHLG9CQUFBLEdBQVY7SUFDQUgsT0FBTyxDQUFDSSxHQUFSLENBQVlMLENBQUMsQ0FBQ00sR0FBZCxFQUFtQixNQUFuQjtJQUNBTCxPQUFPLENBQUNJLEdBQVIsQ0FBWUUsZUFBWixFQUFvQixNQUFwQjtFQUNELENBTFMsQ0FBVjtFQU9BQyxTQUFTLENBQUMsWUFBWTtJQUNwQlAsT0FBTyxDQUFDUSxPQUFSO0VBQ0QsQ0FGUSxDQUFUO0VBSUFDLEVBQUUsQ0FBQyw0Q0FBRCxFQUErQyxrQkFBa0I7SUFDakUsTUFBTVYsQ0FBQyxDQUNKVyxhQURHLENBQ1c7TUFDYkMsVUFBVSxFQUFFLENBQUMsRUFBRDtJQURDLENBRFgsRUFJSEMsTUFKRyxDQUlJQyxVQUpKLENBSWVDLEVBSmYsQ0FJa0JDLFlBSmxCLENBSStCQyxXQUFBLENBQU9DLHNCQUp0QyxFQUk4RCxjQUo5RCxDQUFOO0VBS0QsQ0FOQyxDQUFGO0VBUUFSLEVBQUUsQ0FBQyw2QkFBRCxFQUFnQyxrQkFBa0I7SUFDbEQsTUFBTVYsQ0FBQyxDQUNKVyxhQURHLENBQ1c7TUFDYlEsV0FBVyxFQUFFO1FBQ1gscUJBQXFCO01BRFY7SUFEQSxDQURYLEVBTUhOLE1BTkcsQ0FNSUMsVUFOSixDQU1lQyxFQU5mLENBTWtCQyxZQU5sQixDQU0rQkMsV0FBQSxDQUFPQyxzQkFOdEMsRUFNOEQsY0FOOUQsQ0FBTjtFQU9ELENBUkMsQ0FBRjtFQVVBUixFQUFFLENBQUMsaUNBQUQsRUFBb0Msa0JBQWtCO0lB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
|
|
@@ -107,4 +107,4 @@ describe('#getLogEvents', function () {
|
|
|
107
107
|
(await d.getLogEvents(['noEventName'])).should.eql({});
|
|
108
108
|
});
|
|
109
109
|
});
|
|
110
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0IiwiZCIsIkJhc2VEcml2ZXIiLCJfZXZlbnRIaXN0b3J5Iiwic2hvdWxkIiwiZXFsIiwiY29tbWFuZHMiLCJsb2dDdXN0b21FdmVudCIsIl8iLCJrZXlzIiwibG9nRXZlbnQiLCJldmVudHMiLCJnZXRMb2dFdmVudHMiLCJ0ZXN0Q29tbWFuZCIsInRlc3RDb21tYW5kMiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iYXNlZHJpdmVyL2NvbW1hbmRzL2V2ZW50LnNwZWMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7QmFzZURyaXZlcn0gZnJvbSAnLi4vLi4vLi4vLi4vbGliJztcblxuZGVzY3JpYmUoJ2xvZ2dpbmcgY3VzdG9tIGV2ZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3Nob3VsZCBhbGxvdyBsb2dnaW5nIG9mIGV2ZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgYXdhaXQgZC5sb2dDdXN0b21FdmVudCgnbXlvcmcnLCAnbXlldmVudCcpO1xuICAgIF8ua2V5cyhkLl9ldmVudEhpc3RvcnkpLnNob3VsZC5lcWwoWydjb21tYW5kcycsICdteW9yZzpteWV2ZW50J10pO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBnZXQgYWxsIGV2ZW50cyBpbmNsdWRpbmcgY3VzdG9tIG9uZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZCA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnNob3VsZC5lcWwoe2NvbW1hbmRzOiBbXX0pO1xuICAgIGQubG9nRXZlbnQoJ2FwcGl1bUV2ZW50Jyk7XG4gICAgYXdhaXQgZC5sb2dDdXN0b21FdmVudCgnbXlvcmcnLCAnbXlldmVudCcpO1xuICAgIGNvbnN0IGV2ZW50cyA9IGF3YWl0IGQuZ2V0TG9nRXZlbnRzKCk7XG4gICAgXy5rZXlzKGV2ZW50cykuc2hvdWxkLmVxbChbJ2NvbW1hbmRzJywgJ2FwcGl1bUV2ZW50JywgJ215b3JnOm15ZXZlbnQnXSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCcjZ2V0TG9nRXZlbnRzJywgZnVuY3Rpb24gKCkge1xuICBpdCgnc2hvdWxkIGFsbG93IHRvIGdldCBhbGwgZXZlbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGQgPSBuZXcgQmFzZURyaXZlcigpO1xuICAgIGQuX2V2ZW50SGlzdG9yeS5zaG91bGQuZXFsKHtjb21tYW5kczogW119KTtcbiAgICBkLl9ldmVudEhpc3RvcnkudGVzdENvbW1hbmQgPSBbJzEnLCAnMicsICczJ107XG4gICAgKGF3YWl0IGQuZ2V0TG9nRXZlbnRzKCkpLnNob3VsZC5lcWwoe1xuICAgICAgY29tbWFuZHM6IFtdLFxuICAgICAgdGVzdENvbW1hbmQ6IFsnMScsICcyJywgJzMnXSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmaWx0ZXIgd2l0aCB0ZXN0Q29tbWFuZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnRlc3RDb21tYW5kID0gWycxJywgJzInLCAnMyddO1xuICAgIChhd2FpdCBkLmdldExvZ0V2ZW50cygndGVzdENvbW1hbmQnKSkuc2hvdWxkLmVxbCh7XG4gICAgICB0ZXN0Q29tbWFuZDogWycxJywgJzInLCAnMyddLFxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBmaWx0ZXIgd2l0aCB3cm9uZyBidXQgY2FuIGJlIGEgcGFydCBvZiB0aGUgZXZlbnQgbmFtZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnRlc3RDb21tYW5kID0gWycxJywgJzInLCAnMyddO1xuICAgIChhd2FpdCBkLmdldExvZ0V2ZW50cygndGVzdENvbW1hbmREdW1teScpKS5zaG91bGQuZXFsKHt9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmaWx0ZXIgd2l0aCBtdWx0aXBsZSBldmVudCBrZXlzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGQgPSBuZXcgQmFzZURyaXZlcigpO1xuICAgIGQuX2V2ZW50SGlzdG9yeS5zaG91bGQuZXFsKHtjb21tYW5kczogW119KTtcbiAgICBkLl9ldmVudEhpc3RvcnkudGVzdENvbW1hbmQgPSBbJzEnLCAnMicsICczJ107XG4gICAgZC5fZXZlbnRIaXN0b3J5LnRlc3RDb21tYW5kMiA9IFsnNCcsICc1J107XG4gICAgKGF3YWl0IGQuZ2V0TG9nRXZlbnRzKFsndGVzdENvbW1hbmQnLCAndGVzdENvbW1hbmQyJ10pKS5zaG91bGQuZXFsKHtcbiAgICAgIHRlc3RDb21tYW5kOiBbJzEnLCAnMicsICczJ10sXG4gICAgICB0ZXN0Q29tbWFuZDI6IFsnNCcsICc1J10sXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmlsdGVyIHdpdGggY3VzdG9tIGV2ZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgZC5fZXZlbnRIaXN0b3J5WydjdXN0b206YXBwaXVtRXZlbnQnXSA9IFsnMScsICcyJywgJzMnXTtcbiAgICAoYXdhaXQgZC5nZXRMb2dFdmVudHMoWydjdXN0b206YXBwaXVtRXZlbnQnXSkpLnNob3VsZC5lcWwoe1xuICAgICAgJ2N1c3RvbTphcHBpdW1FdmVudCc6IFsnMScsICcyJywgJzMnXSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgZmlsdGVyIHdpdGggbm8gZXhpc3RlZCBldmVudCBuYW1lJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGQgPSBuZXcgQmFzZURyaXZlcigpO1xuICAgIGQuX2V2ZW50SGlzdG9yeS5zaG91bGQuZXFsKHtjb21tYW5kczogW119KTtcbiAgICBkLl9ldmVudEhpc3RvcnkudGVzdENvbW1hbmQgPSBbJzEnLCAnMicsICczJ107XG4gICAgKGF3YWl0IGQuZ2V0TG9nRXZlbnRzKFsnbm9FdmVudE5hbWUnXSkpLnNob3VsZC5lcWwoe30pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFFQUEsUUFBUSxDQUFDLHVCQUFELEVBQTBCLFlBQVk7RUFDNUNDLEVBQUUsQ0FBQyxnQ0FBRCxFQUFtQyxrQkFBa0I7SUFDckQsTUFBTUMsQ0FBQyxHQUFHLElBQUlDLGVBQUosRUFBVjs7SUFDQUQsQ0FBQyxDQUFDRSxhQUFGLENBQWdCQyxNQUFoQixDQUF1QkMsR0FBdkIsQ0FBMkI7TUFBQ0MsUUFBUSxFQUFFO0lBQVgsQ0FBM0I7O0lBQ0EsTUFBTUwsQ0FBQyxDQUFDTSxjQUFGLENBQWlCLE9BQWpCLEVBQTBCLFNBQTFCLENBQU47O0lBQ0FDLGVBQUEsQ0FBRUMsSUFBRixDQUFPUixDQUFDLENBQUNFLGFBQVQsRUFBd0JDLE1BQXhCLENBQStCQyxHQUEvQixDQUFtQyxDQUFDLFVBQUQsRUFBYSxlQUFiLENBQW5DO0VBQ0QsQ0FMQyxDQUFGO0VBTUFMLEVBQUUsQ0FBQyw2Q0FBRCxFQUFnRCxrQkFBa0I7SUFDbEUsTUFBTUMsQ0FBQyxHQUFHLElBQUlDLGVBQUosRUFBVjs7SUFDQUQsQ0FBQyxDQUFDRSxhQUFGLENBQWdCQyxNQUFoQixDQUF1QkMsR0FBdkIsQ0FBMkI7TUFBQ0MsUUFBUSxFQUFFO0lBQVgsQ0FBM0I7O0lBQ0FMLENBQUMsQ0FB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
|