@appium/base-driver 8.2.4 → 8.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/build/lib/basedriver/commands/find.js +4 -11
  2. package/build/lib/basedriver/commands/log.js +3 -6
  3. package/build/lib/basedriver/commands/session.js +18 -27
  4. package/build/lib/basedriver/commands/settings.js +4 -8
  5. package/build/lib/basedriver/commands/timeout.js +10 -15
  6. package/build/lib/basedriver/device-settings.js +14 -2
  7. package/build/lib/basedriver/driver.js +22 -20
  8. package/build/lib/basedriver/helpers.js +9 -9
  9. package/build/lib/express/express-logging.js +2 -2
  10. package/build/lib/express/idempotency.js +2 -2
  11. package/build/lib/helpers/capabilities.js +39 -0
  12. package/build/lib/index.js +3 -5
  13. package/build/lib/jsonwp-proxy/protocol-converter.js +18 -12
  14. package/build/lib/jsonwp-proxy/proxy.js +19 -12
  15. package/build/lib/protocol/protocol.js +36 -27
  16. package/build/lib/protocol/routes.js +67 -1
  17. package/build/test/basedriver/capabilities-specs.js +43 -1
  18. package/build/test/basedriver/capability-specs.js +126 -167
  19. package/build/test/basedriver/commands/log-specs.js +12 -5
  20. package/build/test/basedriver/driver-tests.js +11 -14
  21. package/build/test/basedriver/timeout-specs.js +7 -9
  22. package/build/test/express/server-e2e-specs.js +10 -5
  23. package/build/test/express/server-specs.js +22 -16
  24. package/build/test/express/static-specs.js +10 -5
  25. package/build/test/protocol/fake-driver.js +12 -15
  26. package/build/test/protocol/protocol-e2e-specs.js +16 -10
  27. package/build/test/protocol/routes-specs.js +2 -2
  28. package/lib/basedriver/commands/find.js +3 -6
  29. package/lib/basedriver/commands/log.js +2 -4
  30. package/lib/basedriver/commands/session.js +21 -22
  31. package/lib/basedriver/commands/settings.js +3 -5
  32. package/lib/basedriver/commands/timeout.js +9 -10
  33. package/lib/basedriver/device-settings.js +10 -1
  34. package/lib/basedriver/driver.js +25 -12
  35. package/lib/basedriver/helpers.js +13 -11
  36. package/lib/express/express-logging.js +1 -1
  37. package/lib/express/idempotency.js +1 -1
  38. package/lib/helpers/capabilities.js +25 -0
  39. package/lib/index.js +2 -2
  40. package/lib/jsonwp-proxy/protocol-converter.js +14 -13
  41. package/lib/jsonwp-proxy/proxy.js +16 -12
  42. package/lib/protocol/protocol.js +34 -29
  43. package/lib/protocol/routes.js +60 -1
  44. package/package.json +29 -22
  45. package/test/basedriver/capabilities-specs.js +34 -2
  46. package/test/basedriver/capability-specs.js +120 -146
  47. package/test/basedriver/commands/log-specs.js +12 -3
  48. package/test/basedriver/driver-tests.js +12 -7
  49. package/test/basedriver/timeout-specs.js +6 -11
  50. package/build/lib/protocol/sessions-cache.js +0 -88
  51. package/lib/protocol/sessions-cache.js +0 -74
@@ -1,29 +1,15 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  require("source-map-support/register");
6
4
 
7
5
  var _lib = require("../../lib");
8
6
 
9
7
  var _server2 = require("../../lib/express/server");
10
8
 
11
- var _sinon = _interopRequireDefault(require("sinon"));
9
+ var _sinon = require("sinon");
12
10
 
13
11
  var _helpers = require("../helpers");
14
12
 
15
- function fakeApp() {
16
- const app = {
17
- use: _sinon.default.spy(),
18
- all: _sinon.default.spy(),
19
- get: _sinon.default.spy(),
20
- post: _sinon.default.spy(),
21
- delete: _sinon.default.spy(),
22
- totalCount: () => app.use.callCount + app.all.callCount + app.get.callCount + app.post.callCount + app.delete.callCount
23
- };
24
- return app;
25
- }
26
-
27
13
  const newMethodMap = {
28
14
  '/session/:sessionId/fake': {
29
15
  GET: {
@@ -52,9 +38,29 @@ function fakeDriver() {
52
38
 
53
39
  describe('server configuration', function () {
54
40
  let port;
41
+ let sandbox;
42
+
43
+ function fakeApp() {
44
+ const app = {
45
+ use: sandbox.spy(),
46
+ all: sandbox.spy(),
47
+ get: sandbox.spy(),
48
+ post: sandbox.spy(),
49
+ delete: sandbox.spy(),
50
+ totalCount: () => app.use.callCount + app.all.callCount + app.get.callCount + app.post.callCount + app.delete.callCount
51
+ };
52
+ return app;
53
+ }
54
+
55
55
  before(async function () {
56
56
  port = await (0, _helpers.getTestPort)(true);
57
57
  });
58
+ beforeEach(function () {
59
+ sandbox = (0, _sinon.createSandbox)();
60
+ });
61
+ afterEach(function () {
62
+ sandbox.restore();
63
+ });
58
64
  it('should actually use the middleware', function () {
59
65
  const app = fakeApp();
60
66
 
@@ -148,4 +154,4 @@ describe('server configuration', function () {
148
154
  });require('source-map-support').install();
149
155
 
150
156
 
151
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZXhwcmVzcy9zZXJ2ZXItc3BlY3MuanMiXSwibmFtZXMiOlsiZmFrZUFwcCIsImFwcCIsInVzZSIsInNpbm9uIiwic3B5IiwiYWxsIiwiZ2V0IiwicG9zdCIsImRlbGV0ZSIsInRvdGFsQ291bnQiLCJjYWxsQ291bnQiLCJuZXdNZXRob2RNYXAiLCJHRVQiLCJjb21tYW5kIiwiUE9TVCIsInBheWxvYWRQYXJhbXMiLCJyZXF1aXJlZCIsInVwZGF0ZVNlcnZlciIsImh0dHBTZXJ2ZXIiLCJ1cGRhdGVkIiwiZmFrZURyaXZlciIsInNlc3Npb25FeGlzdHMiLCJleGVjdXRlQ29tbWFuZCIsImRlc2NyaWJlIiwicG9ydCIsImJlZm9yZSIsIml0IiwiY29uZmlndXJlUm91dGVzIiwiYWRkUm91dGVzIiwic2hvdWxkIiwiZXF1YWwiLCJhcHAxIiwiYXBwMiIsImRyaXZlciIsImV4dHJhTWV0aG9kTWFwIiwiZXFsIiwiX3NlcnZlciIsInJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiIsInNlcnZlclVwZGF0ZXJzIiwiYmUiLCJ0cnVlIiwiY2xvc2UiLCJFcnJvciIsInJlamVjdGVkV2l0aCIsInRocm93Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxTQUFTQSxPQUFULEdBQW9CO0FBQ2xCLFFBQU1DLEdBQUcsR0FBRztBQUNWQyxJQUFBQSxHQUFHLEVBQUVDLGVBQU1DLEdBQU4sRUFESztBQUVWQyxJQUFBQSxHQUFHLEVBQUVGLGVBQU1DLEdBQU4sRUFGSztBQUdWRSxJQUFBQSxHQUFHLEVBQUVILGVBQU1DLEdBQU4sRUFISztBQUlWRyxJQUFBQSxJQUFJLEVBQUVKLGVBQU1DLEdBQU4sRUFKSTtBQUtWSSxJQUFBQSxNQUFNLEVBQUVMLGVBQU1DLEdBQU4sRUFMRTtBQU1WSyxJQUFBQSxVQUFVLEVBQUUsTUFDVlIsR0FBRyxDQUFDQyxHQUFKLENBQVFRLFNBQVIsR0FBb0JULEdBQUcsQ0FBQ0ksR0FBSixDQUFRSyxT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QUFZO0FBQ3pDRyxJQUFBQSxFQUFFLENBQUMsbURBQUQsRUFBc0QsWUFBWTtBQUNsRUcsTUFBQUEsTUFBTSxDQUFDZSxLQUFQLENBQWEsTUFBTTtBQUNqQix3Q0FBa0IsSUFBbEI7QUFDRCxPQUZEO0FBR0FmLE1BQUFBLE1BQU0sQ0FBQ2UsS0FBUCxDQUFhLE1BQU07QUFDakIsd0NBQWtCLENBQWxCO0FBQ0QsT0FGRDtBQUdELEtBUEMsQ0FBRjtBQVFBbEIsSUFBQUEsRUFBRSxDQUFDLGdDQUFELEVBQW1DLFlBQVk7QUFDL0Msc0NBQWtCLFVBQWxCLEVBQThCRyxNQUE5QixDQUFxQ00sR0FBckMsQ0FBeUMsU0FBekM7QUFDQSxzQ0FBa0IsT0FBbEIsRUFBMkJOLE1BQTNCLENBQWtDTSxHQUFsQyxDQUFzQyxNQUF0QztBQUNBLHNDQUFrQixHQUFsQixFQUF1Qk4sTUFBdkIsQ0FBOEJNLEdBQTlCLENBQWtDLEVBQWxDO0FBQ0QsS0FKQyxDQUFGO0FBS0FULElBQUFBLEVBQUUsQ0FBQywwQ0FBRCxFQUE2QyxZQUFZO0FBQ3pELHNDQUFrQixLQUFsQixFQUF5QkcsTUFBekIsQ0FBZ0NNLEdBQWhDLENBQW9DLE1BQXBDO0FBQ0Esc0NBQWtCLFFBQWxCLEVBQTRCTixNQUE1QixDQUFtQ00sR0FBbkMsQ0FBdUMsU0FBdkM7QUFDQSxzQ0FBa0IsU0FBbEIsRUFBNkJOLE1BQTdCLENBQW9DTSxHQUFwQyxDQUF3QyxTQUF4QztBQUNELEtBSkMsQ0FBRjtBQUtELEdBbkJPLENBQVI7QUFvQkQsQ0FoRk8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptb2NoYVxuXG5pbXBvcnQgeyBzZXJ2ZXIsIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiB9IGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgeyBjb25maWd1cmVTZXJ2ZXIsIG5vcm1hbGl6ZUJhc2VQYXRoIH0gZnJvbSAnLi4vLi4vbGliL2V4cHJlc3Mvc2VydmVyJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQge2dldFRlc3RQb3J0fSBmcm9tICcuLi9oZWxwZXJzJztcblxuZnVuY3Rpb24gZmFrZUFwcCAoKSB7XG4gIGNvbnN0IGFwcCA9IHtcbiAgICB1c2U6IHNpbm9uLnNweSgpLFxuICAgIGFsbDogc2lub24uc3B5KCksXG4gICAgZ2V0OiBzaW5vbi5zcHkoKSxcbiAgICBwb3N0OiBzaW5vbi5zcHkoKSxcbiAgICBkZWxldGU6IHNpbm9uLnNweSgpLFxuICAgIHRvdGFsQ291bnQ6ICgpID0+IChcbiAgICAgIGFwcC51c2UuY2FsbENvdW50ICsgYXBwLmFsbC5jYWxsQ291bnQgKyBhcHAuZ2V0LmNhbGxDb3VudCArIGFwcC5wb3N0LmNhbGxDb3VudCArXG4gICAgICBhcHAuZGVsZXRlLmNhbGxDb3VudFxuICAgIClcbiAgfTtcbiAgcmV0dXJuIGFwcDtcbn1cblxuY29uc3QgbmV3TWV0aG9kTWFwID0ge1xuICAnL3Nlc3Npb24vOnNlc3Npb25JZC9mYWtlJzoge1xuICAgIEdFVDoge2NvbW1hbmQ6ICdmYWtlR2V0J30sXG4gICAgUE9TVDoge2NvbW1hbmQ6ICdmYWtlUG9zdCcsIHBheWxvYWRQYXJhbXM6IHtyZXF1aXJlZDogWydmYWtlUGFyYW0nXX19XG4gIH0sXG59O1xuXG5jb25zdCB1cGRhdGVTZXJ2ZXIgPSAoYXBwLCBodHRwU2VydmVyKSA9PiB7XG4gIGFwcC51cGRhdGVkID0gdHJ1ZTtcbiAgaHR0cFNlcnZlci51cGRhdGVkID0gdHJ1ZTtcbn07XG5cbmZ1bmN0aW9uIGZha2VEcml2ZXIgKCkge1xuICByZXR1cm4ge3Nlc3Npb25FeGlzdHM6ICgpID0+IHt9LCBleGVjdXRlQ29tbWFuZDogKCkgPT4ge319O1xufVxuXG5kZXNjcmliZSgnc2VydmVyIGNvbmZpZ3VyYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBwb3J0O1xuXG4gIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgcG9ydCA9IGF3YWl0IGdldFRlc3RQb3J0KHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFjdHVhbGx5IHVzZSB0aGUgbWlkZGxld2FyZScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBhcHAgPSBmYWtlQXBwKCk7XG4gICAgY29uc3QgY29uZmlndXJlUm91dGVzID0gKCkgPT4ge307XG4gICAgY29uZmlndXJlU2VydmVyKHthcHAsIGFkZFJvdXRlczogY29uZmlndXJlUm91dGVzfSk7XG4gICAgYXBwLnVzZS5jYWxsQ291bnQuc2hvdWxkLmVxdWFsKDE0KTtcbiAgICBhcHAuYWxsLmNhbGxDb3VudC5zaG91bGQuZXF1YWwoNCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYXBwbHkgbmV3IG1ldGhvZHMgaW4gcGx1Z2lucyB0byB0aGUgc3RhbmRhcmQgbWV0aG9kIG1hcCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBhcHAxID0gZmFrZUFwcCgpO1xuICAgIGNvbnN0IGFwcDIgPSBmYWtlQXBwKCk7XG4gICAgY29uc3QgZHJpdmVyID0gZmFrZURyaXZlcigpO1xuICAgIGNvbnN0IGFkZFJvdXRlcyA9IHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbihkcml2ZXIpO1xuICAgIGNvbmZpZ3VyZVNlcnZlcih7YXBwOiBhcHAxLCBhZGRSb3V0ZXN9KTtcbiAgICBjb25maWd1cmVTZXJ2ZXIoe2FwcDogYXBwMiwgYWRkUm91dGVzLCBleHRyYU1ldGhvZE1hcDogbmV3TWV0aG9kTWFwfSk7XG4gICAgYXBwMi50b3RhbENvdW50KCkuc2hvdWxkLmVxbChhcHAxLnRvdGFsQ291bnQoKSArIDIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHNpbGVudGx5IHJlamVjdCBuZXcgbWV0aG9kcyBpbiBwbHVnaW5zIGlmIG5vdCBwbGFpbiBvYmplY3RzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGFwcDEgPSBmYWtlQXBwKCk7XG4gICAgY29uc3QgYXBwMiA9IGZha2VBcHAoKTtcbiAgICBjb25zdCBkcml2ZXIgPSBmYWtlRHJpdmVyKCk7XG4gICAgY29uc3QgYWRkUm91dGVzID0gcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uKGRyaXZlcik7XG4gICAgY29uZmlndXJlU2VydmVyKHthcHA6IGFwcDEsIGFkZFJvdXRlc30pO1xuICAgIGNvbmZpZ3VyZVNlcnZlcih7YXBwOiBhcHAyLCBhZGRSb3V0ZXMsIGV4dHJhTWV0aG9kTWFwOiBbXX0pO1xuICAgIGFwcDIudG90YWxDb3VudCgpLnNob3VsZC5lcWwoYXBwMS50b3RhbENvdW50KCkpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFsbG93IHBsdWdpbnMgdG8gdXBkYXRlIHRoZSBzZXJ2ZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZHJpdmVyID0gZmFrZURyaXZlcigpO1xuICAgIGNvbnN0IF9zZXJ2ZXIgPSBhd2FpdCBzZXJ2ZXIoe1xuICAgICAgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uOiByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24oZHJpdmVyKSxcbiAgICAgIHBvcnQsXG4gICAgICBleHRyYU1ldGhvZE1hcDogbmV3TWV0aG9kTWFwLFxuICAgICAgc2VydmVyVXBkYXRlcnM6IFt1cGRhdGVTZXJ2ZXJdXG4gICAgfSk7XG4gICAgdHJ5IHtcbiAgICAgIF9zZXJ2ZXIudXBkYXRlZC5zaG91bGQuYmUudHJ1ZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgX3NlcnZlci5jbG9zZSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWplY3QgaWYgZXJyb3IgdGhyb3duIGluIGNvbmZpZ3VyZVJvdXRlcyBwYXJhbWV0ZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgY29uZmlndXJlUm91dGVzID0gKCkgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJIGFtIE1yLiBNZWVTZWVrcyBsb29rIGF0IG1lIScpO1xuICAgIH07XG4gICAgYXdhaXQgc2VydmVyKHtcbiAgICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbjogY29uZmlndXJlUm91dGVzLFxuICAgICAgcG9ydCxcbiAgICB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdNZWVTZWVrcycpO1xuICB9KTtcblxuICBkZXNjcmliZSgnI25vcm1hbGl6ZUJhc2VQYXRoJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgZm9yIHBhdGhzIG9mIHRoZSB3cm9uZyB0eXBlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2hvdWxkLnRocm93KCgpID0+IHtcbiAgICAgICAgbm9ybWFsaXplQmFzZVBhdGgobnVsbCk7XG4gICAgICB9KTtcbiAgICAgIHNob3VsZC50aHJvdygoKSA9PiB7XG4gICAgICAgIG5vcm1hbGl6ZUJhc2VQYXRoKDEpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCByZW1vdmUgdHJhaWxpbmcgc2xhc2hlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vcm1hbGl6ZUJhc2VQYXRoKCcvd2QvaHViLycpLnNob3VsZC5lcWwoJy93ZC9odWInKTtcbiAgICAgIG5vcm1hbGl6ZUJhc2VQYXRoKCcvZm9vLycpLnNob3VsZC5lcWwoJy9mb28nKTtcbiAgICAgIG5vcm1hbGl6ZUJhc2VQYXRoKCcvJykuc2hvdWxkLmVxbCgnJyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBlbnN1cmUgYSBsZWFkaW5nIHNsYXNoIGlzIHByZXNlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBub3JtYWxpemVCYXNlUGF0aCgnZm9vJykuc2hvdWxkLmVxbCgnL2ZvbycpO1xuICAgICAgbm9ybWFsaXplQmFzZVBhdGgoJ3dkL2h1YicpLnNob3VsZC5lcWwoJy93ZC9odWInKTtcbiAgICAgIG5vcm1hbGl6ZUJhc2VQYXRoKCd3ZC9odWIvJykuc2hvdWxkLmVxbCgnL3dkL2h1YicpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sImZpbGUiOiJ0ZXN0L2V4cHJlc3Mvc2VydmVyLXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
157
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZXhwcmVzcy9zZXJ2ZXItc3BlY3MuanMiXSwibmFtZXMiOlsibmV3TWV0aG9kTWFwIiwiR0VUIiwiY29tbWFuZCIsIlBPU1QiLCJwYXlsb2FkUGFyYW1zIiwicmVxdWlyZWQiLCJ1cGRhdGVTZXJ2ZXIiLCJhcHAiLCJodHRwU2VydmVyIiwidXBkYXRlZCIsImZha2VEcml2ZXIiLCJzZXNzaW9uRXhpc3RzIiwiZXhlY3V0ZUNvbW1hbmQiLCJkZXNjcmliZSIsInBvcnQiLCJzYW5kYm94IiwiZmFrZUFwcCIsInVzZSIsInNweSIsImFsbCIsImdldCIsInBvc3QiLCJkZWxldGUiLCJ0b3RhbENvdW50IiwiY2FsbENvdW50IiwiYmVmb3JlIiwiYmVmb3JlRWFjaCIsImFmdGVyRWFjaCIsInJlc3RvcmUiLCJpdCIsImNvbmZpZ3VyZVJvdXRlcyIsImFkZFJvdXRlcyIsInNob3VsZCIsImVxdWFsIiwiYXBwMSIsImFwcDIiLCJkcml2ZXIiLCJleHRyYU1ldGhvZE1hcCIsImVxbCIsIl9zZXJ2ZXIiLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJzZXJ2ZXJVcGRhdGVycyIsImJlIiwidHJ1ZSIsImNsb3NlIiwiRXJyb3IiLCJyZWplY3RlZFdpdGgiLCJ0aHJvdyJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFlBQVksR0FBRztBQUNuQiw4QkFBNEI7QUFDMUJDLElBQUFBLEdBQUcsRUFBRTtBQUFDQyxNQUFBQSxPQUFPLEVBQUU7QUFBVixLQURxQjtBQUUxQkMsSUFBQUEsSUFBSSxFQUFFO0FBQUNELE1BQUFBLE9BQU8sRUFBRSxVQUFWO0FBQXNCRSxNQUFBQSxhQUFhLEVBQUU7QUFBQ0MsUUFBQUEsUUFBUSxFQUFFLENBQUMsV0FBRDtBQUFYO0FBQXJDO0FBRm9CO0FBRFQsQ0FBckI7O0FBT0EsTUFBTUMsWUFBWSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsVUFBTixLQUFxQjtBQUN4Q0QsRUFBQUEsR0FB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dXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptb2NoYVxuXG5pbXBvcnQgeyBzZXJ2ZXIsIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiB9IGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgeyBjb25maWd1cmVTZXJ2ZXIsIG5vcm1hbGl6ZUJhc2VQYXRoIH0gZnJvbSAnLi4vLi4vbGliL2V4cHJlc3Mvc2VydmVyJztcbmltcG9ydCB7IGNyZWF0ZVNhbmRib3ggfSBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyBnZXRUZXN0UG9ydCB9IGZyb20gJy4uL2hlbHBlcnMnO1xuXG5jb25zdCBuZXdNZXRob2RNYXAgPSB7XG4gICcvc2Vzc2lvbi86c2Vzc2lvbklkL2Zha2UnOiB7XG4gICAgR0VUOiB7Y29tbWFuZDogJ2Zha2VHZXQnfSxcbiAgICBQT1NUOiB7Y29tbWFuZDogJ2Zha2VQb3N0JywgcGF5bG9hZFBhcmFtczoge3JlcXVpcmVkOiBbJ2Zha2VQYXJhbSddfX1cbiAgfSxcbn07XG5cbmNvbnN0IHVwZGF0ZVNlcnZlciA9IChhcHAsIGh0dHBTZXJ2ZXIpID0+IHtcbiAgYXBwLnVwZGF0ZWQgPSB0cnVlO1xuICBodHRwU2VydmVyLnVwZGF0ZWQgPSB0cnVlO1xufTtcblxuZnVuY3Rpb24gZmFrZURyaXZlciAoKSB7XG4gIHJldHVybiB7c2Vzc2lvbkV4aXN0czogKCkgPT4ge30sIGV4ZWN1dGVDb21tYW5kOiAoKSA9PiB7fX07XG59XG5cbmRlc2NyaWJlKCdzZXJ2ZXIgY29uZmlndXJhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHBvcnQ7XG5cbiAgbGV0IHNhbmRib3g7XG5cbiAgZnVuY3Rpb24gZmFrZUFwcCAoKSB7XG4gICAgY29uc3QgYXBwID0ge1xuICAgICAgdXNlOiBzYW5kYm94LnNweSgpLFxuICAgICAgYWxsOiBzYW5kYm94LnNweSgpLFxuICAgICAgZ2V0OiBzYW5kYm94LnNweSgpLFxuICAgICAgcG9zdDogc2FuZGJveC5zcHkoKSxcbiAgICAgIGRlbGV0ZTogc2FuZGJveC5zcHkoKSxcbiAgICAgIHRvdGFsQ291bnQ6ICgpID0+IChcbiAgICAgICAgYXBwLnVzZS5jYWxsQ291bnQgKyBhcHAuYWxsLmNhbGxDb3VudCArIGFwcC5nZXQuY2FsbENvdW50ICsgYXBwLnBvc3QuY2FsbENvdW50ICtcbiAgICAgICAgYXBwLmRlbGV0ZS5jYWxsQ291bnRcbiAgICAgIClcbiAgICB9O1xuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIHBvcnQgPSBhd2FpdCBnZXRUZXN0UG9ydCh0cnVlKTtcbiAgfSk7XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2FuZGJveCA9IGNyZWF0ZVNhbmRib3goKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY3R1YWxseSB1c2UgdGhlIG1pZGRsZXdhcmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYXBwID0gZmFrZUFwcCgpO1xuICAgIGNvbnN0IGNvbmZpZ3VyZVJvdXRlcyA9ICgpID0+IHt9O1xuICAgIGNvbmZpZ3VyZVNlcnZlcih7YXBwLCBhZGRSb3V0ZXM6IGNvbmZpZ3VyZVJvdXRlc30pO1xuICAgIGFwcC51c2UuY2FsbENvdW50LnNob3VsZC5lcXVhbCgxNCk7XG4gICAgYXBwLmFsbC5jYWxsQ291bnQuc2hvdWxkLmVxdWFsKDQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGFwcGx5IG5ldyBtZXRob2RzIGluIHBsdWdpbnMgdG8gdGhlIHN0YW5kYXJkIG1ldGhvZCBtYXAnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYXBwMSA9IGZha2VBcHAoKTtcbiAgICBjb25zdCBhcHAyID0gZmFrZUFwcCgpO1xuICAgIGNvbnN0IGRyaXZlciA9IGZha2VEcml2ZXIoKTtcbiAgICBjb25zdCBhZGRSb3V0ZXMgPSByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24oZHJpdmVyKTtcbiAgICBjb25maWd1cmVTZXJ2ZXIoe2FwcDogYXBwMSwgYWRkUm91dGVzfSk7XG4gICAgY29uZmlndXJlU2VydmVyKHthcHA6IGFwcDIsIGFkZFJvdXRlcywgZXh0cmFNZXRob2RNYXA6IG5ld01ldGhvZE1hcH0pO1xuICAgIGFwcDIudG90YWxDb3VudCgpLnNob3VsZC5lcWwoYXBwMS50b3RhbENvdW50KCkgKyAyKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzaWxlbnRseSByZWplY3QgbmV3IG1ldGhvZHMgaW4gcGx1Z2lucyBpZiBub3QgcGxhaW4gb2JqZWN0cycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBhcHAxID0gZmFrZUFwcCgpO1xuICAgIGNvbnN0IGFwcDIgPSBmYWtlQXBwKCk7XG4gICAgY29uc3QgZHJpdmVyID0gZmFrZURyaXZlcigpO1xuICAgIGNvbnN0IGFkZFJvdXRlcyA9IHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbihkcml2ZXIpO1xuICAgIGNvbmZpZ3VyZVNlcnZlcih7YXBwOiBhcHAxLCBhZGRSb3V0ZXN9KTtcbiAgICBjb25maWd1cmVTZXJ2ZXIoe2FwcDogYXBwMiwgYWRkUm91dGVzLCBleHRyYU1ldGhvZE1hcDogW119KTtcbiAgICBhcHAyLnRvdGFsQ291bnQoKS5zaG91bGQuZXFsKGFwcDEudG90YWxDb3VudCgpKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhbGxvdyBwbHVnaW5zIHRvIHVwZGF0ZSB0aGUgc2VydmVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGRyaXZlciA9IGZha2VEcml2ZXIoKTtcbiAgICBjb25zdCBfc2VydmVyID0gYXdhaXQgc2VydmVyKHtcbiAgICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbjogcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uKGRyaXZlciksXG4gICAgICBwb3J0LFxuICAgICAgZXh0cmFNZXRob2RNYXA6IG5ld01ldGhvZE1hcCxcbiAgICAgIHNlcnZlclVwZGF0ZXJzOiBbdXBkYXRlU2VydmVyXVxuICAgIH0pO1xuICAgIHRyeSB7XG4gICAgICBfc2VydmVyLnVwZGF0ZWQuc2hvdWxkLmJlLnRydWU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IF9zZXJ2ZXIuY2xvc2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVqZWN0IGlmIGVycm9yIHRocm93biBpbiBjb25maWd1cmVSb3V0ZXMgcGFyYW1ldGVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGNvbmZpZ3VyZVJvdXRlcyA9ICgpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSSBhbSBNci4gTWVlU2Vla3MgbG9vayBhdCBtZSEnKTtcbiAgICB9O1xuICAgIGF3YWl0IHNlcnZlcih7XG4gICAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb246IGNvbmZpZ3VyZVJvdXRlcyxcbiAgICAgIHBvcnQsXG4gICAgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnTWVlU2Vla3MnKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJyNub3JtYWxpemVCYXNlUGF0aCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGZvciBwYXRocyBvZiB0aGUgd3JvbmcgdHlwZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNob3VsZC50aHJvdygoKSA9PiB7XG4gICAgICAgIG5vcm1hbGl6ZUJhc2VQYXRoKG51bGwpO1xuICAgICAgfSk7XG4gICAgICBzaG91bGQudGhyb3coKCkgPT4ge1xuICAgICAgICBub3JtYWxpemVCYXNlUGF0aCgxKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgcmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBub3JtYWxpemVCYXNlUGF0aCgnL3dkL2h1Yi8nKS5zaG91bGQuZXFsKCcvd2QvaHViJyk7XG4gICAgICBub3JtYWxpemVCYXNlUGF0aCgnL2Zvby8nKS5zaG91bGQuZXFsKCcvZm9vJyk7XG4gICAgICBub3JtYWxpemVCYXNlUGF0aCgnLycpLnNob3VsZC5lcWwoJycpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZW5zdXJlIGEgbGVhZGluZyBzbGFzaCBpcyBwcmVzZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgbm9ybWFsaXplQmFzZVBhdGgoJ2ZvbycpLnNob3VsZC5lcWwoJy9mb28nKTtcbiAgICAgIG5vcm1hbGl6ZUJhc2VQYXRoKCd3ZC9odWInKS5zaG91bGQuZXFsKCcvd2QvaHViJyk7XG4gICAgICBub3JtYWxpemVCYXNlUGF0aCgnd2QvaHViLycpLnNob3VsZC5lcWwoJy93ZC9odWInKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJmaWxlIjoidGVzdC9leHByZXNzL3NlcnZlci1zcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -1,17 +1,22 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  require("source-map-support/register");
6
4
 
7
5
  var _static = require("../../lib/express/static");
8
6
 
9
- var _sinon = _interopRequireDefault(require("sinon"));
7
+ var _sinon = require("sinon");
10
8
 
11
9
  describe('welcome', function () {
10
+ let sandbox;
11
+ beforeEach(function () {
12
+ sandbox = (0, _sinon.createSandbox)();
13
+ });
14
+ afterEach(function () {
15
+ sandbox.restore();
16
+ });
12
17
  it('should fill the template', async function () {
13
18
  let res = {
14
- send: _sinon.default.spy()
19
+ send: sandbox.stub()
15
20
  };
16
21
  await (0, _static.welcome)({}, res);
17
22
  res.send.calledOnce.should.be.true;
@@ -20,4 +25,4 @@ describe('welcome', function () {
20
25
  });require('source-map-support').install();
21
26
 
22
27
 
23
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZXhwcmVzcy9zdGF0aWMtc3BlY3MuanMiXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJpdCIsInJlcyIsInNlbmQiLCJzaW5vbiIsInNweSIsImNhbGxlZE9uY2UiLCJzaG91bGQiLCJiZSIsInRydWUiLCJhcmdzIiwiaW5jbHVkZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUE7O0FBQ0E7O0FBSUFBLFFBQVEsQ0FBQyxTQUFELEVBQVksWUFBWTtBQUM5QkMsRUFBQUEsRUFBRSxDQUFDLDBCQUFELEVBQTZCLGtCQUFrQjtBQUMvQyxRQUFJQyxHQUFHLEdBQUc7QUFDUkMsTUFBQUEsSUFBSSxFQUFFQyxlQUFNQyxHQUFOO0FBREUsS0FBVjtBQUdBLFVBQU0scUJBQVEsRUFBUixFQUFZSCxHQUFaLENBQU47QUFFQUEsSUFBQUEsR0FBRyxDQUFDQyxJQUFKLENBQVNHLFVBQVQsQ0FBb0JDLE1BQXBCLENBQTJCQyxFQUEzQixDQUE4QkMsSUFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDQyxJQUFKLENBQVNPLElBQVQsQ0FBYyxDQUFkLEVBQWlCLENBQWpCLEVBQW9CSCxNQUFwQixDQUEyQkksT0FBM0IsQ0FBbUMsZ0JBQW5DO0FBQ0QsR0FSQyxDQUFGO0FBU0QsQ0FWTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1vY2hhXG5cbmltcG9ydCB7IHdlbGNvbWUgfSBmcm9tICcuLi8uLi9saWIvZXhwcmVzcy9zdGF0aWMnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcblxuXG5cbmRlc2NyaWJlKCd3ZWxjb21lJywgZnVuY3Rpb24gKCkge1xuICBpdCgnc2hvdWxkIGZpbGwgdGhlIHRlbXBsYXRlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGxldCByZXMgPSB7XG4gICAgICBzZW5kOiBzaW5vbi5zcHkoKVxuICAgIH07XG4gICAgYXdhaXQgd2VsY29tZSh7fSwgcmVzKTtcblxuICAgIHJlcy5zZW5kLmNhbGxlZE9uY2Uuc2hvdWxkLmJlLnRydWU7XG4gICAgcmVzLnNlbmQuYXJnc1swXVswXS5zaG91bGQuaW5jbHVkZSgnTGV0XFwncyBicm93c2UhJyk7XG4gIH0pO1xufSk7XG4iXSwiZmlsZSI6InRlc3QvZXhwcmVzcy9zdGF0aWMtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
28
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvZXhwcmVzcy9zdGF0aWMtc3BlY3MuanMiXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJzYW5kYm94IiwiYmVmb3JlRWFjaCIsImFmdGVyRWFjaCIsInJlc3RvcmUiLCJpdCIsInJlcyIsInNlbmQiLCJzdHViIiwiY2FsbGVkT25jZSIsInNob3VsZCIsImJlIiwidHJ1ZSIsImFyZ3MiLCJpbmNsdWRlIl0sIm1hcHBpbmdzIjoiOzs7O0FBRUE7O0FBQ0E7O0FBRUFBLFFBQVEsQ0FBQyxTQUFELEVBQVksWUFBWTtBQUM5QixNQUFJQyxPQUFKO0FBRUFDLEVBQUFBLFVBQVUsQ0FBQyxZQUFZO0FBQ3JCRCxJQUFBQSxPQUFPLEdBQUcsMkJBQVY7QUFDRCxHQUZTLENBQVY7QUFJQUUsRUFBQUEsU0FBUyxDQUFDLFlBQVk7QUFDcEJGLElBQUFBLE9BQU8sQ0FBQ0csT0FBUjtBQUNELEdBRlEsQ0FBVDtBQUlBQyxFQUFBQSxFQUFFLENBQUMsMEJBQUQsRUFBNkIsa0JBQWtCO0FBQy9DLFFBQUlDLEdBQUcsR0FBRztBQUNSQyxNQUFBQSxJQUFJLEVBQUVOLE9BQU8sQ0FBQ08sSUFBUjtBQURFLEtBQVY7QUFHQSxVQUFNLHFCQUFRLEVBQVIsRUFBWUYsR0FBWixDQUFOO0FBRUFBLElBQUFBLEdBQUcsQ0FBQ0MsSUFBSixDQUFTRSxVQUFULENBQW9CQyxNQUFwQixDQUEyQkMsRUFBM0IsQ0FBOEJDLElBQTlCO0FBQ0FOLElBQUFBLEdBQUcsQ0FBQ0MsSUFBSixDQUFTTSxJQUFULENBQWMsQ0FBZCxFQUFpQixDQUFqQixFQUFvQkgsTUFBcEIsQ0FBMkJJLE9BQTNCLENBQW1DLGdCQUFuQztBQUNELEdBUkMsQ0FBRjtBQVNELENBcEJPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0cmFuc3BpbGU6bW9jaGFcblxuaW1wb3J0IHsgd2VsY29tZSB9IGZyb20gJy4uLy4uL2xpYi9leHByZXNzL3N0YXRpYyc7XG5pbXBvcnQgeyBjcmVhdGVTYW5kYm94IH0gZnJvbSAnc2lub24nO1xuXG5kZXNjcmliZSgnd2VsY29tZScsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHNhbmRib3g7XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2FuZGJveCA9IGNyZWF0ZVNhbmRib3goKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmaWxsIHRoZSB0ZW1wbGF0ZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgcmVzID0ge1xuICAgICAgc2VuZDogc2FuZGJveC5zdHViKClcbiAgICB9O1xuICAgIGF3YWl0IHdlbGNvbWUoe30sIHJlcyk7XG5cbiAgICByZXMuc2VuZC5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlO1xuICAgIHJlcy5zZW5kLmFyZ3NbMF1bMF0uc2hvdWxkLmluY2x1ZGUoJ0xldFxcJ3MgYnJvd3NlIScpO1xuICB9KTtcbn0pO1xuIl0sImZpbGUiOiJ0ZXN0L2V4cHJlc3Mvc3RhdGljLXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -1,14 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  exports.FakeDriver = void 0;
9
7
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
8
  require("source-map-support/register");
13
9
 
14
10
  var _lib = require("../../lib");
@@ -18,6 +14,15 @@ var _constants = require("../../lib/constants");
18
14
  var _support = require("@appium/support");
19
15
 
20
16
  class FakeDriver extends _lib.BaseDriver {
17
+ static newMethodMap = {
18
+ '/session/:sessionId/noproxy': {
19
+ GET: {
20
+ command: 'notProxiedCommand',
21
+ neverProxy: true
22
+ }
23
+ }
24
+ };
25
+
21
26
  constructor() {
22
27
  super();
23
28
  this.protocol = _constants.PROTOCOLS.MJSONWP;
@@ -48,7 +53,7 @@ class FakeDriver extends _lib.BaseDriver {
48
53
  }
49
54
 
50
55
  if (cmd === 'createSession') {
51
- this.protocol = (0, _lib.determineProtocol)(...args);
56
+ this.protocol = (0, _lib.determineProtocol)(args);
52
57
  }
53
58
 
54
59
  return await this[cmd](...args);
@@ -154,15 +159,7 @@ class FakeDriver extends _lib.BaseDriver {
154
159
 
155
160
  }
156
161
 
157
- exports.FakeDriver = FakeDriver;
158
- (0, _defineProperty2.default)(FakeDriver, "newMethodMap", {
159
- '/session/:sessionId/noproxy': {
160
- GET: {
161
- command: 'notProxiedCommand',
162
- neverProxy: true
163
- }
164
- }
165
- });require('source-map-support').install();
162
+ exports.FakeDriver = FakeDriver;require('source-map-support').install();
166
163
 
167
164
 
168
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvcHJvdG9jb2wvZmFrZS1kcml2ZXIuanMiXSwibmFtZXMiOlsiRmFrZURyaXZlciIsIkJhc2VEcml2ZXIiLCJjb25zdHJ1Y3RvciIsInByb3RvY29sIiwiUFJPVE9DT0xTIiwiTUpTT05XUCIsInNlc3Npb25JZCIsImp3cFByb3h5QWN0aXZlIiwic2Vzc2lvbkV4aXN0cyIsImRyaXZlckZvclNlc3Npb24iLCJjcmVhdGVTZXNzaW9uIiwiZGVzaXJlZENhcGFiaWxpdGllcyIsInJlcXVpcmVkQ2FwYWJpbGl0aWVzIiwiY2FwYWJpbGl0aWVzIiwidXRpbCIsInV1aWRWNCIsImV4ZWN1dGVDb21tYW5kIiwiY21kIiwiYXJncyIsImVycm9ycyIsIk5vdFlldEltcGxlbWVudGVkRXJyb3IiLCJkZWxldGVTZXNzaW9uIiwiZ2V0U3RhdHVzIiwic2V0VXJsIiwidXJsIiwiZ2V0VXJsIiwiYmFjayIsImZvcndhcmQiLCJyZWZyZXNoIiwiRXJyb3IiLCJnZXRTZXNzaW9uIiwiTm9TdWNoRHJpdmVyRXJyb3IiLCJjbGljayIsImVsZW1lbnRJZCIsImltcGxpY2l0V2FpdCIsIm1zIiwiY2xpY2tDdXJyZW50IiwiYnV0dG9uIiwic2V0TmV0d29ya0Nvbm5lY3Rpb24iLCJ0eXBlIiwibW92ZVRvIiwiZWxlbWVudCIsInhPZmZzZXQiLCJ5T2Zmc2V0IiwiZ2V0VGV4dCIsImdldEF0dHJpYnV0ZSIsImF0dHIiLCJzZXRWYWx1ZSIsInZhbHVlIiwicGVyZm9ybVRvdWNoIiwic2V0RnJhbWUiLCJmcmFtZUlkIiwicmVtb3ZlQXBwIiwiYXBwIiwicmVjZWl2ZUFzeW5jUmVzcG9uc2UiLCJzdGF0dXMiLCJwcm94eUFjdGl2ZSIsImdldFByb3h5QXZvaWRMaXN0IiwiY2FuUHJveHkiLCJub3RQcm94aWVkQ29tbWFuZCIsIkdFVCIsImNvbW1hbmQiLCJuZXZlclByb3h5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsVUFB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ZixTQUFSLENBQVA7QUFDRDs7QUFFaUIsUUFBWmdCLFlBQVksQ0FBRSxHQUFHL0IsSUFBTCxFQUFXO0FBQzNCLFdBQU9BLElBQVA7QUFDRDs7QUFFYSxRQUFSZ0MsUUFBUSxDQUFFQyxPQUFGLEVBQVc7QUFDdkIsV0FBT0EsT0FBUDtBQUNEOztBQUVjLFFBQVRDLFNBQVMsQ0FBRUMsR0FBRixFQUFPO0FBQ3BCLFdBQU9BLEdBQVA7QUFDRDs7QUFFeUIsUUFBcEJDLG9CQUFvQixHQUFJO0FBRTVCLFdBQU87QUFBQ0MsTUFBQUEsTUFBTSxFQUFFLEVBQVQ7QUFBYVAsTUFBQUEsS0FBSyxFQUFFO0FBQXBCLEtBQVA7QUFDRDs7QUFFRFEsRUFBQUEsV0FBVyxHQUFpQjtBQUMxQixXQUFPLEtBQVA7QUFDRDs7QUFFREMsRUFBQUEsaUJBQWlCLEdBQWlCO0FBQ2hDLFdBQU8sRUFBUDtBQUNEOztBQUVEQyxFQUFBQSxRQUFRLEdBQWlCO0FBQ3ZCLFdBQU8sS0FBUDtBQUNEOztBQUVzQixRQUFqQkMsaUJBQWlCLEdBQUk7QUFDekIsV0FBTyxzQkFBUDtBQUNEOztBQXhJaUM7Ozs4QkFBOUIzRCxVLGtCQUVrQjtBQUNwQixpQ0FBK0I7QUFDN0I0RCxJQUFBQSxHQUFHLEVBQUU7QUFBQ0MsTUFBQUEsT0FBTyxFQUFFLG1CQUFWO0FBQStCQyxNQUFBQSxVQUFVLEVBQUU7QUFBM0M7QUFEd0I7QUFEWCxDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmVxdWlyZS1hd2FpdCAqL1xuaW1wb3J0IHsgZXJyb3JzLCBCYXNlRHJpdmVyLCBkZXRlcm1pbmVQcm90b2NvbCB9IGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgeyBQUk9UT0NPTFMgfSBmcm9tICcuLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmNsYXNzIEZha2VEcml2ZXIgZXh0ZW5kcyBCYXNlRHJpdmVyIHtcblxuICBzdGF0aWMgbmV3TWV0aG9kTWFwID0ge1xuICAgICcvc2Vzc2lvbi86c2Vzc2lvbklkL25vcHJveHknOiB7XG4gICAgICBHRVQ6IHtjb21tYW5kOiAnbm90UHJveGllZENvbW1hbmQnLCBuZXZlclByb3h5OiB0cnVlfVxuICAgIH1cbiAgfTtcblxuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnByb3RvY29sID0gUFJPVE9DT0xTLk1KU09OV1A7XG4gICAgdGhpcy5zZXNzaW9uSWQgPSBudWxsO1xuICAgIHRoaXMuandwUHJveHlBY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIHNlc3Npb25FeGlzdHMgKHNlc3Npb25JZCkge1xuICAgIGlmICghc2Vzc2lvbklkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBzZXNzaW9uSWQgPT09IHRoaXMuc2Vzc2lvbklkO1xuICB9XG5cbiAgZHJpdmVyRm9yU2Vzc2lvbiAoLypzZXNzaW9uSWQqLykge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlU2Vzc2lvbiAoZGVzaXJlZENhcGFiaWxpdGllcywgcmVxdWlyZWRDYXBhYmlsaXRpZXMsIGNhcGFiaWxpdGllcykge1xuICAgIC8vIFVzZSBhIGNvdW50ZXIgdG8gbWFrZSBzdXJlIGVhY2ggc2Vzc2lvbiBoYXMgYSB1bmlxdWUgaWRcbiAgICB0aGlzLnNlc3Npb25JZCA9IGBmYWtlU2Vzc2lvbl8ke3V0aWwudXVpZFY0KCl9YDtcbiAgICByZXR1cm4gW3RoaXMuc2Vzc2lvbklkLCBjYXBhYmlsaXRpZXNdO1xuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZUNvbW1hbmQgKGNtZCwgLi4uYXJncykge1xuICAgIGlmICghdGhpc1tjbWRdKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdFlldEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG4gICAgaWYgKGNtZCA9PT0gJ2NyZWF0ZVNlc3Npb24nKSB7XG4gICAgICB0aGlzLnByb3RvY29sID0gZGV0ZXJtaW5lUHJvdG9jb2woLi4uYXJncyk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB0aGlzW2NtZF0oLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBkZWxldGVTZXNzaW9uICgpIHtcbiAgICB0aGlzLmp3cFByb3h5QWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5zZXNzaW9uSWQgPSBudWxsO1xuICB9XG5cbiAgYXN5bmMgZ2V0U3RhdHVzICgpIHtcbiAgICByZXR1cm4gXCJJJ20gZmluZVwiO1xuICB9XG5cbiAgYXN5bmMgc2V0VXJsICh1cmwpIHtcbiAgICByZXR1cm4gYE5hdmlnYXRlZCB0bzogJHt1cmx9YDtcbiAgfVxuXG4gIGFzeW5jIGdldFVybCAoKSB7XG4gICAgcmV0dXJuICdodHRwOi8vZm9vYmFyLmNvbSc7XG4gIH1cblxuICBhc3luYyBiYWNrIChzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gc2Vzc2lvbklkO1xuICB9XG5cbiAgYXN5bmMgZm9yd2FyZCAoKSB7fVxuXG4gIGFzeW5jIHJlZnJlc2ggKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVG9vIEZyZXNoIScpO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2Vzc2lvbiAoKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob1N1Y2hEcml2ZXJFcnJvcigpO1xuICB9XG5cbiAgYXN5bmMgY2xpY2sgKGVsZW1lbnRJZCwgc2Vzc2lvbklkKSB7XG4gICAgcmV0dXJuIFtlbGVtZW50SWQsIHNlc3Npb25JZF07XG4gIH1cblxuICBhc3luYyBpbXBsaWNpdFdhaXQgKG1zKSB7XG4gICAgcmV0dXJuIG1zO1xuICB9XG5cbiAgYXN5bmMgY2xpY2tDdXJyZW50IChidXR0b24pIHtcbiAgICByZXR1cm4gYnV0dG9uO1xuICB9XG5cbiAgYXN5bmMgc2V0TmV0d29ya0Nvbm5lY3Rpb24gKHR5cGUpIHtcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGFzeW5jIG1vdmVUbyAoZWxlbWVudCwgeE9mZnNldCwgeU9mZnNldCkge1xuICAgIHJldHVybiBbZWxlbWVudCwgeE9mZnNldCwgeU9mZnNldF07XG4gIH1cblxuICBhc3luYyBnZXRUZXh0ICgpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBhc3luYyBnZXRBdHRyaWJ1dGUgKGF0dHIsIGVsZW1lbnRJZCwgc2Vzc2lvbklkKSB7XG4gICAgcmV0dXJuIFthdHRyLCBlbGVtZW50SWQsIHNlc3Npb25JZF07XG4gIH1cblxuICBhc3luYyBzZXRWYWx1ZSAodmFsdWUsIGVsZW1lbnRJZCkge1xuICAgIHJldHVybiBbdmFsdWUsIGVsZW1lbnRJZF07XG4gIH1cblxuICBhc3luYyBwZXJmb3JtVG91Y2ggKC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gYXJncztcbiAgfVxuXG4gIGFzeW5jIHNldEZyYW1lIChmcmFtZUlkKSB7XG4gICAgcmV0dXJuIGZyYW1lSWQ7XG4gIH1cblxuICBhc3luYyByZW1vdmVBcHAgKGFwcCkge1xuICAgIHJldHVybiBhcHA7XG4gIH1cblxuICBhc3luYyByZWNlaXZlQXN5bmNSZXNwb25zZSAoKSB7XG4gICAgLy8gdGhpcyBpcyBoZXJlIHRvIHRlc3QgYSBmYWlsaW5nIGNvbW1hbmQgdGhhdCBkb2VzIG5vdCB0aHJvdyBhbiBlcnJvclxuICAgIHJldHVybiB7c3RhdHVzOiAxMywgdmFsdWU6ICdNaXNoYW5kbGVkIERyaXZlciBFcnJvcid9O1xuICB9XG5cbiAgcHJveHlBY3RpdmUgKC8qc2Vzc2lvbklkKi8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRQcm94eUF2b2lkTGlzdCAoLypzZXNzaW9uSWQqLykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNhblByb3h5ICgvKnNlc3Npb25JZCovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgbm90UHJveGllZENvbW1hbmQgKCkge1xuICAgIHJldHVybiAnVGhpcyB3YXMgbm90IHByb3hpZWQnO1xuICB9XG59XG5cbmV4cG9ydCB7IEZha2VEcml2ZXIgfTtcbiJdLCJmaWxlIjoidGVzdC9wcm90b2NvbC9mYWtlLWRyaXZlci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
165
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvcHJvdG9jb2wvZmFrZS1kcml2ZXIuanMiXSwibmFtZXMiOlsiRmFrZURyaXZlciIsIkJhc2VEcml2ZXIiLCJuZXdNZXRob2RNYXAiLCJHRVQiLCJjb21tYW5kIiwibmV2ZXJQcm94eSIsImNvbnN0cnVjdG9yIiwicHJvdG9jb2wiLCJQUk9UT0NPTFMiLCJNSlNPTldQIiwic2Vzc2lvbklkIiwiandwUHJveHlBY3RpdmUiLCJzZXNzaW9uRXhpc3RzIiwiZHJpdmVyRm9yU2Vzc2lvbiIsImNyZWF0ZVNlc3Npb24iLCJkZXNpcmVkQ2FwYWJpbGl0aWVzIiwicmVxdWlyZWRDYXBhYmlsaXRpZXMiLCJjYXBhYmlsaXRpZXMiLCJ1dGlsIiwidXVpZFY0IiwiZXhlY3V0ZUNvbW1hbmQiLCJjbWQiLCJhcmdzIiwiZXJyb3JzIiwiTm90WWV0SW1wbGVtZW50ZWRFcnJvciIsImRlbGV0ZVNlc3Npb24iLCJnZXRTdGF0dXMiLCJzZXRVcmwiLCJ1cmwiLCJnZXRVcmwiLCJiYWNrIiwiZm9yd2FyZCIsInJlZnJlc2giLCJFcnJvciIsImdldFNlc3Npb24iLCJOb1N1Y2hEcml2ZXJFcnJvciIsImNsaWNrIiwiZWxlbWVudElkIiwiaW1wbGljaXRXYWl0IiwibXMiLCJjbGlja0N1cnJlbnQiLCJidXR0b24iLCJzZXROZXR3b3JrQ29ubmVjdGlvbiIsInR5cGUiLCJtb3ZlVG8iLCJlbGVtZW50IiwieE9mZnNldCIsInlPZmZzZXQiLCJnZXRUZXh0IiwiZ2V0QXR0cmlidXRlIiwiYXR0ciIsInNldFZhbHVlIiwidmFsdWUiLCJwZXJmb3JtVG91Y2giLCJzZXRGcmFtZSIsImZyYW1lSWQiLCJyZW1vdmVBcHAiLCJhcHAiLCJyZWNlaXZlQXN5bmNSZXNwb25zZSIsInN0YXR1cyIsInByb3h5QWN0aXZlIiwiZ2V0UHJveHlBdm9pZExpc3QiLCJjYW5Qcm94eSIsIm5vdFByb3hpZWRDb21tYW5kIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFH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LEVBQThCO0FBQzlDLFdBQU8sQ0FBQ3dDLElBQUQsRUFBT2IsU0FBUCxFQUFrQjNCLFNBQWxCLENBQVA7QUFDRDs7QUFFYSxRQUFSeUMsUUFBUSxDQUFFQyxLQUFGLEVBQVNmLFNBQVQsRUFBb0I7QUFDaEMsV0FBTyxDQUFDZSxLQUFELEVBQVFmLFNBQVIsQ0FBUDtBQUNEOztBQUVpQixRQUFaZ0IsWUFBWSxDQUFFLEdBQUcvQixJQUFMLEVBQVc7QUFDM0IsV0FBT0EsSUFBUDtBQUNEOztBQUVhLFFBQVJnQyxRQUFRLENBQUVDLE9BQUYsRUFBVztBQUN2QixXQUFPQSxPQUFQO0FBQ0Q7O0FBRWMsUUFBVEMsU0FBUyxDQUFFQyxHQUFGLEVBQU87QUFDcEIsV0FBT0EsR0FBUDtBQUNEOztBQUV5QixRQUFwQkMsb0JBQW9CLEdBQUk7QUFFNUIsV0FBTztBQUFDQyxNQUFBQSxNQUFNLEVBQUUsRUFBVDtBQUFhUCxNQUFBQSxLQUFLLEVBQUU7QUFBcEIsS0FBUDtBQUNEOztBQUVEUSxFQUFBQSxXQUFXLEdBQWlCO0FBQzFCLFdBQU8sS0FBUDtBQUNEOztBQUVEQyxFQUFBQSxpQkFBaUIsR0FBaUI7QUFDaEMsV0FBTyxFQUFQO0FBQ0Q7O0FBRURDLEVBQUFBLFFBQVEsR0FBaUI7QUFDdkIsV0FBTyxLQUFQO0FBQ0Q7O0FBRXNCLFFBQWpCQyxpQkFBaUIsR0FBSTtBQUN6QixXQUFPLHNCQUFQO0FBQ0Q7O0FBeElpQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJlcXVpcmUtYXdhaXQgKi9cbmltcG9ydCB7IGVycm9ycywgQmFzZURyaXZlciwgZGV0ZXJtaW5lUHJvdG9jb2wgfSBmcm9tICcuLi8uLi9saWInO1xuaW1wb3J0IHsgUFJPVE9DT0xTIH0gZnJvbSAnLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuXG5jbGFzcyBGYWtlRHJpdmVyIGV4dGVuZHMgQmFzZURyaXZlciB7XG5cbiAgc3RhdGljIG5ld01ldGhvZE1hcCA9IHtcbiAgICAnL3Nlc3Npb24vOnNlc3Npb25JZC9ub3Byb3h5Jzoge1xuICAgICAgR0VUOiB7Y29tbWFuZDogJ25vdFByb3hpZWRDb21tYW5kJywgbmV2ZXJQcm94eTogdHJ1ZX1cbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IgKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5wcm90b2NvbCA9IFBST1RPQ09MUy5NSlNPTldQO1xuICAgIHRoaXMuc2Vzc2lvbklkID0gbnVsbDtcbiAgICB0aGlzLmp3cFByb3h5QWN0aXZlID0gZmFsc2U7XG4gIH1cblxuICBzZXNzaW9uRXhpc3RzIChzZXNzaW9uSWQpIHtcbiAgICBpZiAoIXNlc3Npb25JZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gc2Vzc2lvbklkID09PSB0aGlzLnNlc3Npb25JZDtcbiAgfVxuXG4gIGRyaXZlckZvclNlc3Npb24gKC8qc2Vzc2lvbklkKi8pIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlc3Npb24gKGRlc2lyZWRDYXBhYmlsaXRpZXMsIHJlcXVpcmVkQ2FwYWJpbGl0aWVzLCBjYXBhYmlsaXRpZXMpIHtcbiAgICAvLyBVc2UgYSBjb3VudGVyIHRvIG1ha2Ugc3VyZSBlYWNoIHNlc3Npb24gaGFzIGEgdW5pcXVlIGlkXG4gICAgdGhpcy5zZXNzaW9uSWQgPSBgZmFrZVNlc3Npb25fJHt1dGlsLnV1aWRWNCgpfWA7XG4gICAgcmV0dXJuIFt0aGlzLnNlc3Npb25JZCwgY2FwYWJpbGl0aWVzXTtcbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGVDb21tYW5kIChjbWQsIC4uLmFyZ3MpIHtcbiAgICBpZiAoIXRoaXNbY21kXSkge1xuICAgICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RZZXRJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuICAgIGlmIChjbWQgPT09ICdjcmVhdGVTZXNzaW9uJykge1xuICAgICAgdGhpcy5wcm90b2NvbCA9IGRldGVybWluZVByb3RvY29sKGFyZ3MpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpc1tjbWRdKC4uLmFyZ3MpO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlU2Vzc2lvbiAoKSB7XG4gICAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuc2Vzc2lvbklkID0gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGdldFN0YXR1cyAoKSB7XG4gICAgcmV0dXJuIFwiSSdtIGZpbmVcIjtcbiAgfVxuXG4gIGFzeW5jIHNldFVybCAodXJsKSB7XG4gICAgcmV0dXJuIGBOYXZpZ2F0ZWQgdG86ICR7dXJsfWA7XG4gIH1cblxuICBhc3luYyBnZXRVcmwgKCkge1xuICAgIHJldHVybiAnaHR0cDovL2Zvb2Jhci5jb20nO1xuICB9XG5cbiAgYXN5bmMgYmFjayAoc2Vzc2lvbklkKSB7XG4gICAgcmV0dXJuIHNlc3Npb25JZDtcbiAgfVxuXG4gIGFzeW5jIGZvcndhcmQgKCkge31cblxuICBhc3luYyByZWZyZXNoICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RvbyBGcmVzaCEnKTtcbiAgfVxuXG4gIGFzeW5jIGdldFNlc3Npb24gKCkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm9TdWNoRHJpdmVyRXJyb3IoKTtcbiAgfVxuXG4gIGFzeW5jIGNsaWNrIChlbGVtZW50SWQsIHNlc3Npb25JZCkge1xuICAgIHJldHVybiBbZWxlbWVudElkLCBzZXNzaW9uSWRdO1xuICB9XG5cbiAgYXN5bmMgaW1wbGljaXRXYWl0IChtcykge1xuICAgIHJldHVybiBtcztcbiAgfVxuXG4gIGFzeW5jIGNsaWNrQ3VycmVudCAoYnV0dG9uKSB7XG4gICAgcmV0dXJuIGJ1dHRvbjtcbiAgfVxuXG4gIGFzeW5jIHNldE5ldHdvcmtDb25uZWN0aW9uICh0eXBlKSB7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBhc3luYyBtb3ZlVG8gKGVsZW1lbnQsIHhPZmZzZXQsIHlPZmZzZXQpIHtcbiAgICByZXR1cm4gW2VsZW1lbnQsIHhPZmZzZXQsIHlPZmZzZXRdO1xuICB9XG5cbiAgYXN5bmMgZ2V0VGV4dCAoKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgYXN5bmMgZ2V0QXR0cmlidXRlIChhdHRyLCBlbGVtZW50SWQsIHNlc3Npb25JZCkge1xuICAgIHJldHVybiBbYXR0ciwgZWxlbWVudElkLCBzZXNzaW9uSWRdO1xuICB9XG5cbiAgYXN5bmMgc2V0VmFsdWUgKHZhbHVlLCBlbGVtZW50SWQpIHtcbiAgICByZXR1cm4gW3ZhbHVlLCBlbGVtZW50SWRdO1xuICB9XG5cbiAgYXN5bmMgcGVyZm9ybVRvdWNoICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIGFyZ3M7XG4gIH1cblxuICBhc3luYyBzZXRGcmFtZSAoZnJhbWVJZCkge1xuICAgIHJldHVybiBmcmFtZUlkO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlQXBwIChhcHApIHtcbiAgICByZXR1cm4gYXBwO1xuICB9XG5cbiAgYXN5bmMgcmVjZWl2ZUFzeW5jUmVzcG9uc2UgKCkge1xuICAgIC8vIHRoaXMgaXMgaGVyZSB0byB0ZXN0IGEgZmFpbGluZyBjb21tYW5kIHRoYXQgZG9lcyBub3QgdGhyb3cgYW4gZXJyb3JcbiAgICByZXR1cm4ge3N0YXR1czogMTMsIHZhbHVlOiAnTWlzaGFuZGxlZCBEcml2ZXIgRXJyb3InfTtcbiAgfVxuXG4gIHByb3h5QWN0aXZlICgvKnNlc3Npb25JZCovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0UHJveHlBdm9pZExpc3QgKC8qc2Vzc2lvbklkKi8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjYW5Qcm94eSAoLypzZXNzaW9uSWQqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIG5vdFByb3hpZWRDb21tYW5kICgpIHtcbiAgICByZXR1cm4gJ1RoaXMgd2FzIG5vdCBwcm94aWVkJztcbiAgfVxufVxuXG5leHBvcnQgeyBGYWtlRHJpdmVyIH07XG4iXSwiZmlsZSI6InRlc3QvcHJvdG9jb2wvZmFrZS1kcml2ZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==