surveysparrow-ionic-plugin 1.0.7-beta.14 → 1.0.7-beta.16

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 (90) hide show
  1. package/Package.swift +8 -8
  2. package/README.md +85 -16
  3. package/{SurveysparrowIonicPlugin2.podspec → SurveysparrowIonicPlugin.podspec} +1 -1
  4. package/android/build.gradle +7 -2
  5. package/android/src/main/java/com/surveysparrow/plugins/ionic/SurveySparrowIonicPlugin.java +53 -0
  6. package/android/src/main/java/com/surveysparrow/plugins/ionic/SurveySparrowIonicPluginPlugin.java +74 -0
  7. package/dist/angular-ui/esm2022/angular-ui.mjs +5 -0
  8. package/dist/angular-ui/esm2022/spotcheck.component.mjs +4 -4
  9. package/dist/angular-ui/esm2022/spotchecks/SpotCheck.mjs +1 -1
  10. package/dist/angular-ui/esm2022/spotchecks/SpotCheckComponent.mjs +16 -16
  11. package/dist/angular-ui/esm2022/spotchecks/SpotcheckStateService.mjs +4 -4
  12. package/dist/angular-ui/esm2022/spotchecks/api.mjs +4 -4
  13. package/dist/angular-ui/esm2022/spotchecks/helpers.mjs +1 -1
  14. package/dist/angular-ui/esm2022/spotchecks/types.mjs +1 -1
  15. package/dist/angular-ui/fesm2022/{surveysparrow-ionic-plugin-angular-ui.mjs → angular-ui.mjs} +25 -25
  16. package/dist/angular-ui/fesm2022/angular-ui.mjs.map +1 -0
  17. package/dist/angular-ui/index.d.ts +1 -1
  18. package/dist/angular-ui/spotchecks/types.d.ts +4 -4
  19. package/dist/docs.json +4462 -10
  20. package/dist/esm/angular-ui/lib/public-api.d.ts +2 -0
  21. package/dist/esm/angular-ui/lib/public-api.js +3 -0
  22. package/dist/esm/angular-ui/lib/public-api.js.map +1 -0
  23. package/dist/esm/angular-ui/lib/spotcheck.component.d.ts +2 -0
  24. package/dist/esm/angular-ui/lib/spotcheck.component.js +20 -0
  25. package/dist/esm/angular-ui/lib/spotcheck.component.js.map +1 -0
  26. package/dist/esm/angular-ui/lib/spotchecks/SpotCheck.d.ts +4 -0
  27. package/dist/esm/angular-ui/lib/spotchecks/SpotCheck.js +51 -0
  28. package/dist/esm/angular-ui/lib/spotchecks/SpotCheck.js.map +1 -0
  29. package/dist/esm/angular-ui/lib/spotchecks/SpotCheckComponent.d.ts +46 -0
  30. package/dist/esm/angular-ui/lib/spotchecks/SpotCheckComponent.js +306 -0
  31. package/dist/esm/angular-ui/lib/spotchecks/SpotCheckComponent.js.map +1 -0
  32. package/dist/esm/angular-ui/lib/spotchecks/SpotcheckStateService.d.ts +9 -0
  33. package/dist/esm/angular-ui/lib/spotchecks/SpotcheckStateService.js +69 -0
  34. package/dist/esm/angular-ui/lib/spotchecks/SpotcheckStateService.js.map +1 -0
  35. package/dist/esm/angular-ui/lib/spotchecks/api.d.ts +15 -0
  36. package/dist/esm/angular-ui/lib/spotchecks/api.js +240 -0
  37. package/dist/esm/angular-ui/lib/spotchecks/api.js.map +1 -0
  38. package/dist/esm/angular-ui/lib/spotchecks/helpers.d.ts +30 -0
  39. package/dist/esm/angular-ui/lib/spotchecks/helpers.js +293 -0
  40. package/dist/esm/angular-ui/lib/spotchecks/helpers.js.map +1 -0
  41. package/dist/esm/angular-ui/lib/spotchecks/index.d.ts +2 -0
  42. package/dist/esm/angular-ui/lib/spotchecks/index.js +2 -0
  43. package/dist/esm/angular-ui/lib/spotchecks/index.js.map +1 -0
  44. package/dist/esm/angular-ui/lib/spotchecks/storage.d.ts +2 -0
  45. package/dist/esm/angular-ui/lib/spotchecks/storage.js +7 -0
  46. package/dist/esm/angular-ui/lib/spotchecks/storage.js.map +1 -0
  47. package/dist/esm/angular-ui/lib/spotchecks/types.d.ts +77 -0
  48. package/dist/esm/angular-ui/lib/spotchecks/types.js +2 -0
  49. package/dist/esm/angular-ui/lib/spotchecks/types.js.map +1 -0
  50. package/dist/esm/definitions.d.ts +13 -6
  51. package/dist/esm/definitions.js.map +1 -1
  52. package/dist/esm/index.d.ts +4 -3
  53. package/dist/esm/index.js +3 -4
  54. package/dist/esm/index.js.map +1 -1
  55. package/dist/plugin.cjs.js +52019 -10
  56. package/dist/plugin.cjs.js.map +1 -1
  57. package/dist/plugin.js +52018 -12
  58. package/dist/plugin.js.map +1 -1
  59. package/ios/Sources/SurveySparrowIonicPluginPlugin/SsSurveyDelegate.swift +16 -0
  60. package/ios/Sources/SurveySparrowIonicPluginPlugin/SsSurveyHelper.swift +179 -0
  61. package/ios/Sources/SurveySparrowIonicPluginPlugin/SsSurveyView.swift +320 -0
  62. package/ios/Sources/SurveySparrowIonicPluginPlugin/SsSurveyViewController.swift +81 -0
  63. package/ios/Sources/SurveySparrowIonicPluginPlugin/SurveySparrow.swift +158 -0
  64. package/ios/Sources/SurveySparrowIonicPluginPlugin/SurveySparrowIonicPlugin.swift +70 -0
  65. package/ios/Sources/SurveySparrowIonicPluginPlugin/SurveySparrowIonicPluginPlugin.swift +50 -0
  66. package/ios/Tests/SurveySparrowIonicPluginPluginTests/SurveySparrowIonicPluginPluginTests.swift +72 -0
  67. package/package.json +36 -27
  68. package/src/angular-ui/lib/spotchecks/SpotCheckComponent.ts +1 -0
  69. package/src/angular-ui/lib/spotchecks/api.ts +3 -3
  70. package/src/angular-ui/lib/spotchecks/types.ts +4 -4
  71. package/src/angular-ui/package.json +2 -2
  72. package/src/definitions.ts +16 -2
  73. package/src/index.ts +5 -5
  74. package/android/src/main/java/com/surveysparrow/plugins/ionic2/SurveySparrowIonicPlugin2.java +0 -11
  75. package/android/src/main/java/com/surveysparrow/plugins/ionic2/SurveySparrowIonicPlugin2Plugin.java +0 -22
  76. package/dist/angular-ui/esm2022/surveysparrow-ionic-plugin-angular-ui.mjs +0 -5
  77. package/dist/angular-ui/fesm2022/surveysparrow-ionic-plugin-angular-ui.mjs.map +0 -1
  78. package/dist/angular-ui/package.json +0 -26
  79. package/dist/esm/web.d.ts +0 -9
  80. package/dist/esm/web.js +0 -8
  81. package/dist/esm/web.js.map +0 -1
  82. package/ios/Sources/SurveySparrowIonicPlugin2Plugin/SurveySparrowIonicPlugin2.swift +0 -8
  83. package/ios/Sources/SurveySparrowIonicPlugin2Plugin/SurveySparrowIonicPlugin2Plugin.swift +0 -23
  84. package/ios/Tests/SurveySparrowIonicPlugin2PluginTests/SurveySparrowIonicPlugin2PluginTests.swift +0 -15
  85. package/src/angular-ui/node_modules/.cache/ng-packagr/content-v2/sha512/48/7f/62c610601af12f907a6c451b7403632ec1b46aa6eb934436e975d11fb0279bdd48f99cd9a6ef9bebf4e76fa3729a01de5dbbd44495621cce4510729329ec +0 -1
  86. package/src/angular-ui/node_modules/.cache/ng-packagr/content-v2/sha512/49/e2/92b07f833cfa67fb9ab260b8bb1c7d98ead9388ed23fec5b45ef6bef19cbe6f669e2ad8757d9c89a1282bfe033f6e28d0207466d924e58e26709cf3cf85e +0 -1
  87. package/src/angular-ui/node_modules/.cache/ng-packagr/index-v5/05/e4/21e297b0d6f5d32263635d13178d37fffd2b116f3038a4d89284cd86fee9 +0 -2
  88. package/src/angular-ui/node_modules/.cache/ng-packagr/index-v5/0f/08/0e2e594d25ea02e021f3ad76398fc4fc5fa4e65caeafa6128083c83ee494 +0 -2
  89. package/src/angular-ui/node_modules/.cache/ng-packagr/tsbuildinfo/surveysparrow-ionic-plugin-angular-ui.tsbuildinfo +0 -1
  90. package/src/web.ts +0 -10
package/Package.swift CHANGED
@@ -2,27 +2,27 @@
2
2
  import PackageDescription
3
3
 
4
4
  let package = Package(
5
- name: "SurveysparrowIonicPlugin2",
5
+ name: "SurveysparrowIonicPlugin",
6
6
  platforms: [.iOS(.v14)],
7
7
  products: [
8
8
  .library(
9
- name: "SurveysparrowIonicPlugin2",
10
- targets: ["SurveySparrowIonicPlugin2Plugin"])
9
+ name: "SurveysparrowIonicPlugin",
10
+ targets: ["SurveySparrowIonicPluginPlugin"])
11
11
  ],
12
12
  dependencies: [
13
13
  .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", from: "7.0.0")
14
14
  ],
15
15
  targets: [
16
16
  .target(
17
- name: "SurveySparrowIonicPlugin2Plugin",
17
+ name: "SurveySparrowIonicPluginPlugin",
18
18
  dependencies: [
19
19
  .product(name: "Capacitor", package: "capacitor-swift-pm"),
20
20
  .product(name: "Cordova", package: "capacitor-swift-pm")
21
21
  ],
22
- path: "ios/Sources/SurveySparrowIonicPlugin2Plugin"),
22
+ path: "ios/Sources/SurveySparrowIonicPluginPlugin"),
23
23
  .testTarget(
24
- name: "SurveySparrowIonicPlugin2PluginTests",
25
- dependencies: ["SurveySparrowIonicPlugin2Plugin"],
26
- path: "ios/Tests/SurveySparrowIonicPlugin2PluginTests")
24
+ name: "SurveySparrowIonicPluginPluginTests",
25
+ dependencies: ["SurveySparrowIonicPluginPlugin"],
26
+ path: "ios/Tests/SurveySparrowIonicPluginPluginTests")
27
27
  ]
28
28
  )
package/README.md CHANGED
@@ -1,37 +1,106 @@
1
- # surveysparrow-ionic-plugin-2
1
+ # surveysparrow-ionic-plugin
2
2
 
3
- SurveySparrow SDK enables you to collect feedback from your mobile app. Embed the Classic, Chat & NPS surveys in your ionic application seamlessly with few lines of code.
3
+ SurveySparrow SDK enables you to collect feedback from your mobile app. Embed the Classic, Chat & NPS surveys in your Ionic application seamlessly with few lines of code.
4
4
 
5
5
  ## Install
6
6
 
7
7
  ```bash
8
- npm install surveysparrow-ionic-plugin-2
8
+ npm install surveysparrow-ionic-plugin
9
9
  npx cap sync
10
10
  ```
11
11
 
12
- ## API
12
+ ## Permissions Required
13
+
14
+ To use this plugin, ensure the following permissions are added to your app:
15
+
16
+ ### Android
17
+
18
+ Add this in your **root** `build.gradle` at the end of repositories:
13
19
 
14
- <docgen-index>
20
+ ```gradle
21
+ allprojects {
22
+ repositories {
23
+ ...
24
+ maven { url 'https://jitpack.io' }
25
+ }
26
+ }
27
+ ```
28
+
29
+ Add these permissions to your `AndroidManifest.xml`:
15
30
 
16
- * [`echo(...)`](#echo)
31
+ ```xml
32
+ <uses-permission android:name="android.permission.INTERNET" />
33
+ <uses-permission android:name="android.permission.CAMERA" />
34
+ <uses-permission android:name="android.permission.RECORD_AUDIO" />
35
+ ```
17
36
 
18
- </docgen-index>
37
+ ### iOS
19
38
 
20
- <docgen-api>
21
- <!--Update the source file JSDoc comments and rerun docgen to update the docs below-->
39
+ Add the necessary permissions to your `Info.plist`:
22
40
 
23
- ### echo(...)
41
+ ```xml
42
+ <key>NSCameraUsageDescription</key>
43
+ <string>We need camera access to capture photos and videos.</string>
44
+ <key>NSMicrophoneUsageDescription</key>
45
+ <string>We need microphone access to record audio.</string>
46
+ ```
47
+
48
+ ### General Note
49
+
50
+ Based on the survey type being used, ensure the necessary permissions (e.g., for photos, videos, audio, or storage) are added to your app's configuration.
51
+
52
+ ## API
53
+
54
+ [loadFullScreenSurvey(...)](#loadfullscreensurvey)
55
+
56
+ [loadFullScreenSurveyWithValidation(...)](#loadfullscreensurveywithvalidation)
57
+
58
+ ### loadFullScreenSurvey(...)
24
59
 
25
60
  ```typescript
26
- echo(options: { value: string; }) => Promise<{ value: string; }>
61
+ loadFullScreenSurvey(options: { domain: String; token: String; params: Object; properties: Object; }) => Promise<void>
27
62
  ```
28
63
 
29
- | Param | Type |
30
- | ------------- | ------------------------------- |
31
- | **`options`** | <code>{ value: string; }</code> |
64
+ | Param | Type |
65
+ | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
66
+ | **`options`** | <code>{ domain: <a href="#string">String</a>; token: <a href="#string">String</a>; params: <a href="#object">Object</a>; properties: <a href="#object">Object</a>; }</code> |
32
67
 
33
- **Returns:** <code>Promise&lt;{ value: string; }&gt;</code>
68
+ --------------------
34
69
 
70
+ ### loadFullScreenSurveyWithValidation(...)
71
+
72
+ ```typescript
73
+ loadFullScreenSurveyWithValidation(options: { domain: String; token: String; params: Object; properties: Object; }) => Promise<void>
74
+ ```
75
+
76
+ | Param | Type |
77
+ | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
78
+ | **`options`** | <code>{ domain: <a href="#string">String</a>; token: <a href="#string">String</a>; params: <a href="#object">Object</a>; properties: <a href="#object">Object</a>; }</code> |
35
79
  --------------------
36
80
 
37
- </docgen-api>
81
+ ## Validations
82
+
83
+ Validations include **Limit Submission Per User** and **Survey Throttling**.
84
+
85
+ To achieve this, the **`emailaddress`** of the user must be passed in the `params` object.
86
+
87
+ ## Params
88
+
89
+ The `params` object allows passing **survey variables**, which can be accessed in the survey's end-user interface. Ensure that the spelling of survey variables matches the configured values. Additionally, make sure to include the **`emailaddress`** field for validations.
90
+
91
+ ## Properties
92
+
93
+ The `properties` object includes the following parameters:
94
+
95
+ 1. **`isCloseButtonEnabled`** (default: `true`)
96
+ - If set to `false`, the close button will be removed.
97
+ - **Note:** Disabling this option will also disable the survey validation.
98
+
99
+ 2. **`langCode`** (default: `en`)
100
+ - To load the survey in a specific language, pass the corresponding language code.
101
+ - Ensure that the language is configured in the SurveySparrow app.
102
+ - A list of supported language codes can be found [here](https://docs.google.com/document/d/1cmmWJQba8B3UkV6g5m93DgpenVojclzeOB0mdn-rlrg/edit?usp=sharing).
103
+
104
+
105
+ ## Support
106
+ For questions or issues, contact us at [support@surveysparrow.com](mailto:support@surveysparrow.com).
@@ -3,7 +3,7 @@ require 'json'
3
3
  package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
4
4
 
5
5
  Pod::Spec.new do |s|
6
- s.name = 'SurveysparrowIonicPlugin2'
6
+ s.name = 'SurveysparrowIonicPlugin'
7
7
  s.version = package['version']
8
8
  s.summary = package['description']
9
9
  s.license = package['license']
@@ -11,14 +11,14 @@ buildscript {
11
11
  mavenCentral()
12
12
  }
13
13
  dependencies {
14
- classpath 'com.android.tools.build:gradle:8.7.2'
14
+ classpath 'com.android.tools.build:gradle:8.6.1'
15
15
  }
16
16
  }
17
17
 
18
18
  apply plugin: 'com.android.library'
19
19
 
20
20
  android {
21
- namespace "com.surveysparrow.plugins.ionic2"
21
+ namespace "com.surveysparrow.plugins.ionic"
22
22
  compileSdk project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 35
23
23
  defaultConfig {
24
24
  minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 23
@@ -45,6 +45,7 @@ android {
45
45
  repositories {
46
46
  google()
47
47
  mavenCentral()
48
+ maven { url 'https://jitpack.io' }
48
49
  }
49
50
 
50
51
 
@@ -53,6 +54,10 @@ dependencies {
53
54
  implementation project(':capacitor-android')
54
55
  implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
55
56
  testImplementation "junit:junit:$junitVersion"
57
+
58
+
59
+ implementation("com.github.surveysparrow:surveysparrow-android-sdk:0.6.4-beta.2")
60
+
56
61
  androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
57
62
  androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"
58
63
  }
@@ -0,0 +1,53 @@
1
+ package com.surveysparrow.plugins.ionic;
2
+
3
+ import android.util.Log;
4
+
5
+ import androidx.appcompat.app.AppCompatActivity;
6
+
7
+ import com.surveysparrow.ss_android_sdk.OnSsResponseEventListener;
8
+ import com.surveysparrow.ss_android_sdk.OnSsValidateSurveyEventListener;
9
+ import com.surveysparrow.ss_android_sdk.SsSurvey;
10
+ import com.surveysparrow.ss_android_sdk.SsSurvey.CustomParam;
11
+ import com.surveysparrow.ss_android_sdk.SurveySparrow;
12
+ import org.json.JSONObject;
13
+ import java.util.HashMap;
14
+
15
+ public class SurveySparrowIonicPlugin implements OnSsValidateSurveyEventListener, OnSsResponseEventListener {
16
+
17
+ private static final int SURVEY_REQUEST_CODE = 1;
18
+ private static final int SURVEY_SCHEDULE_REQUEST_CODE = 2;
19
+
20
+ public void loadFullScreenSurvey(String domain, String token, CustomParam[] params, HashMap properties, AppCompatActivity activity) {
21
+ if(activity == null) {
22
+ throw new RuntimeException("Activity is null. Error fetching activity.");
23
+ }
24
+
25
+ SsSurvey survey = new SsSurvey(domain, token, params, properties);
26
+ SurveySparrow surveySparrow = new SurveySparrow(activity, survey)
27
+ .enableBackButton(true)
28
+ .setWaitTime(2000);
29
+
30
+ surveySparrow.startSurveyForResult(SURVEY_REQUEST_CODE);
31
+ }
32
+
33
+ public void loadFullScreenSurveyWithValidation(String domain, String token, CustomParam[] params, HashMap properties, AppCompatActivity activity) {
34
+ SsSurvey survey = new SsSurvey(domain, token, params, properties);
35
+ SurveySparrow surveySparrow = new SurveySparrow(activity, survey)
36
+ .enableBackButton(true)
37
+ .setWaitTime(2000);
38
+
39
+ surveySparrow.scheduleSurvey(SURVEY_SCHEDULE_REQUEST_CODE);
40
+ surveySparrow.setValidateSurveyListener(this);
41
+ surveySparrow.startSurvey(SURVEY_REQUEST_CODE);
42
+ }
43
+
44
+ @Override
45
+ public void onSsValidateSurvey(JSONObject jsonObject) {
46
+ Log.v("SurveySparrow", "Survey validation error json: " + jsonObject.toString());
47
+ }
48
+
49
+ @Override
50
+ public void onSsResponseEvent(JSONObject jsonObject) {
51
+ Log.v("SurveySparrow", "Survey response received: " + jsonObject.toString());
52
+ }
53
+ }
@@ -0,0 +1,74 @@
1
+ package com.surveysparrow.plugins.ionic;
2
+
3
+ import com.getcapacitor.JSObject;
4
+ import com.getcapacitor.Plugin;
5
+ import com.getcapacitor.PluginCall;
6
+ import com.getcapacitor.PluginMethod;
7
+ import com.getcapacitor.annotation.CapacitorPlugin;
8
+
9
+ import com.surveysparrow.ss_android_sdk.SsSurvey.CustomParam;
10
+
11
+ import java.util.List;
12
+ import java.util.ArrayList;
13
+ import java.util.HashMap;
14
+ import java.util.Iterator;
15
+
16
+ @CapacitorPlugin(name = "SurveySparrowIonicPlugin")
17
+ public class SurveySparrowIonicPluginPlugin extends Plugin {
18
+
19
+ private final SurveySparrowIonicPlugin implementation = new SurveySparrowIonicPlugin();
20
+
21
+ @PluginMethod
22
+ public void loadFullScreenSurvey(PluginCall call) {
23
+ String domain = call.getString("domain");
24
+ String token = call.getString("token");
25
+ CustomParam[] params = parseParams(call.getObject("params"));
26
+ HashMap<String, String> properties = parseProperties(call.getObject("properties"));
27
+
28
+ implementation.loadFullScreenSurvey(domain, token, params, properties, this.getActivity());
29
+ call.resolve();
30
+ }
31
+
32
+ @PluginMethod
33
+ public void loadFullScreenSurveyWithValidation(PluginCall call) {
34
+ String domain = call.getString("domain");
35
+ String token = call.getString("token");
36
+ CustomParam[] params = parseParams(call.getObject("params"));
37
+ HashMap<String, String> properties = parseProperties(call.getObject("properties"));
38
+
39
+ implementation.loadFullScreenSurveyWithValidation(domain, token, params, properties, this.getActivity());
40
+ call.resolve();
41
+ }
42
+
43
+ private CustomParam[] parseParams(JSObject jsParams) {
44
+ if (jsParams == null) {
45
+ return new CustomParam[0];
46
+ }
47
+
48
+ Iterator<String> keysIterator = jsParams.keys();
49
+ List<CustomParam> paramsList = new ArrayList<>();
50
+
51
+ while (keysIterator.hasNext()) {
52
+ String key = keysIterator.next();
53
+ String value = jsParams.getString(key);
54
+ paramsList.add(new CustomParam(key, value));
55
+ }
56
+
57
+ return paramsList.toArray(new CustomParam[0]);
58
+ }
59
+
60
+ private HashMap<String, String> parseProperties(JSObject jsProperties) {
61
+ HashMap<String, String> properties = new HashMap<>();
62
+ if (jsProperties != null) {
63
+ for (Iterator<String> it = jsProperties.keys(); it.hasNext(); ) {
64
+ String key = it.next();
65
+ properties.put(key, jsProperties.getString(key));
66
+ }
67
+ }
68
+ if (!properties.containsKey("langCode")) {
69
+ properties.put("langCode", "en");
70
+ }
71
+ return properties;
72
+ }
73
+ }
74
+
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci11aS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbmd1bGFyLXVpL2xpYi9hbmd1bGFyLXVpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -2,10 +2,10 @@ import { Component } from '@angular/core';
2
2
  import { SpotCheckComponent } from './spotchecks/SpotCheckComponent';
3
3
  import * as i0 from "@angular/core";
4
4
  export class SpotCheck {
5
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpotCheck, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SpotCheck, isStandalone: true, selector: "SpotCheck", ngImport: i0, template: `<SpotCheckComponent />`, isInline: true, dependencies: [{ kind: "component", type: SpotCheckComponent, selector: "SpotCheckComponent" }] });
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SpotCheck, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: SpotCheck, isStandalone: true, selector: "SpotCheck", ngImport: i0, template: `<SpotCheckComponent />`, isInline: true, dependencies: [{ kind: "component", type: SpotCheckComponent, selector: "SpotCheckComponent" }] });
7
7
  }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpotCheck, decorators: [{
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SpotCheck, decorators: [{
9
9
  type: Component,
10
10
  args: [{
11
11
  selector: 'SpotCheck',
@@ -14,4 +14,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
14
14
  imports: [SpotCheckComponent],
15
15
  }]
16
16
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdGNoZWNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbmd1bGFyLXVpL2xpYi9zcG90Y2hlY2suY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBUXJFLE1BQU0sT0FBTyxTQUFTO3dHQUFULFNBQVM7NEZBQVQsU0FBUyxxRUFKVix3QkFBd0IsNERBRXhCLGtCQUFrQjs7NEZBRWpCLFNBQVM7a0JBTnJCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNwb3RDaGVja0NvbXBvbmVudCB9IGZyb20gJy4vc3BvdGNoZWNrcy9TcG90Q2hlY2tDb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdTcG90Q2hlY2snLFxuICB0ZW1wbGF0ZTogYDxTcG90Q2hlY2tDb21wb25lbnQgLz5gLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbU3BvdENoZWNrQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU3BvdENoZWNrIHt9XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdGNoZWNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbmd1bGFyLXVpL2xpYi9zcG90Y2hlY2suY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBUXJFLE1BQU0sT0FBTyxTQUFTO3VHQUFULFNBQVM7MkZBQVQsU0FBUyxxRUFKVix3QkFBd0IsNERBRXhCLGtCQUFrQjs7MkZBRWpCLFNBQVM7a0JBTnJCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNwb3RDaGVja0NvbXBvbmVudCB9IGZyb20gJy4vc3BvdGNoZWNrcy9TcG90Q2hlY2tDb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdTcG90Q2hlY2snLFxuICB0ZW1wbGF0ZTogYDxTcG90Q2hlY2tDb21wb25lbnQgLz5gLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbU3BvdENoZWNrQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU3BvdENoZWNrIHt9XG4iXX0=
@@ -48,4 +48,4 @@ export const trackEvent = async ({ screen, event }) => {
48
48
  console.log(`Event Tracking Failed. ${error.message}`);
49
49
  }
50
50
  };
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BvdENoZWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvU3BvdENoZWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFckQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxFQUNuQyxVQUFVLEVBQ1YsV0FBVyxFQUNYLFdBQVcsR0FBRyxFQUFFLEVBQ2hCLFNBQVMsR0FBRyxFQUFFLEVBQ2QsZ0JBQWdCLEdBQUcsRUFBRSxHQUNLLEVBQUUsRUFBRTtJQUM5QixNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixFQUFFLENBQUM7SUFDekQscUJBQXFCLENBQUMsUUFBUSxDQUFDO1FBQzdCLFVBQVU7UUFDVixXQUFXO1FBQ1gsV0FBVztRQUNYLFNBQVM7UUFDVCxnQkFBZ0I7S0FDakIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQW9CLEVBQUUsRUFBRTtJQUN6RSxJQUFJO1FBQ0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxzQkFBc0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRTtZQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDM0M7YUFBTTtZQUNMLElBQUksT0FBTyxJQUFJLFFBQVEsRUFBRTtnQkFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDNUM7aUJBQU07Z0JBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO2FBQy9EO1NBQ0Y7S0FDRjtJQUFDLE9BQU8sS0FBVSxFQUFFO1FBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQ3pEO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQW1CLEVBQUUsRUFBRTtJQUNyRSxJQUFJO1FBQ0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRTtZQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNMLElBQUksT0FBTyxJQUFJLFFBQVEsRUFBRTtnQkFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDNUM7aUJBQU07Z0JBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO2FBQy9EO1NBQ0Y7S0FDRjtJQUFDLE9BQU8sS0FBVSxFQUFFO1FBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0tBQ3hEO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5pdGlhbGl6ZVNwb3RDaGVja3NQcm9wcywgVHJhY2tFdmVudFByb3BzLCBUcmFja1NjcmVlblByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBzZW5kVHJhY2tTY3JlZW5SZXF1ZXN0LCBzZW5kVHJhY2tFdmVudFJlcXVlc3QgfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbGl6ZVNwb3RDaGVja3MgPSAoe1xuICBkb21haW5OYW1lLFxuICB0YXJnZXRUb2tlbixcbiAgdXNlckRldGFpbHMgPSB7fSxcbiAgdmFyaWFibGVzID0ge30sXG4gIGN1c3RvbVByb3BlcnRpZXMgPSB7fSxcbn06IEluaXRpYWxpemVTcG90Q2hlY2tzUHJvcHMpID0+IHtcbiAgY29uc3Qgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gIHNwb3RjaGVja1N0YXRlU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgZG9tYWluTmFtZSxcbiAgICB0YXJnZXRUb2tlbixcbiAgICB1c2VyRGV0YWlscyxcbiAgICB2YXJpYWJsZXMsXG4gICAgY3VzdG9tUHJvcGVydGllcyxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhY2tTY3JlZW4gPSBhc3luYyAoeyBzY3JlZW4sIG9wdGlvbnMgfTogVHJhY2tTY3JlZW5Qcm9wcykgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VuZFRyYWNrU2NyZWVuUmVxdWVzdCh7IHNjcmVlbiwgb3B0aW9ucyB9KTtcbiAgICBpZiAocmVzcG9uc2UudmFsaWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdTY3JlZW4gVHJhY2tpbmcgc3VjY2VlZGVkLicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoJ2Vycm9yJyBpbiByZXNwb25zZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzcG9uc2UuZXJyb3IudG9TdHJpbmcoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyYWNraW5nIGZhaWxlZCB3aXRob3V0IGFuIGV4cGxpY2l0IGVycm9yLicpO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKGBTY3JlZW4gVHJhY2tpbmcgRmFpbGVkLiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0cmFja0V2ZW50ID0gYXN5bmMgKHsgc2NyZWVuLCBldmVudCB9OiBUcmFja0V2ZW50UHJvcHMpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlbmRUcmFja0V2ZW50UmVxdWVzdCh7IHNjcmVlbiwgZXZlbnQgfSk7XG4gICAgaWYgKHJlc3BvbnNlLnZhbGlkKSB7XG4gICAgICBjb25zb2xlLmxvZygnVHJhY2tFdmVudCBzdWNjZWVkZWQuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICgnZXJyb3InIGluIHJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihyZXNwb25zZS5lcnJvci50b1N0cmluZygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVHJhY2tpbmcgZmFpbGVkIHdpdGhvdXQgYW4gZXhwbGljaXQgZXJyb3IuJyk7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgY29uc29sZS5sb2coYEV2ZW50IFRyYWNraW5nIEZhaWxlZC4gJHtlcnJvci5tZXNzYWdlfWApO1xuICB9XG59O1xuIl19
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BvdENoZWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvU3BvdENoZWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFckQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxFQUNuQyxVQUFVLEVBQ1YsV0FBVyxFQUNYLFdBQVcsR0FBRyxFQUFFLEVBQ2hCLFNBQVMsR0FBRyxFQUFFLEVBQ2QsZ0JBQWdCLEdBQUcsRUFBRSxHQUNLLEVBQUUsRUFBRTtJQUM5QixNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixFQUFFLENBQUM7SUFDekQscUJBQXFCLENBQUMsUUFBUSxDQUFDO1FBQzdCLFVBQVU7UUFDVixXQUFXO1FBQ1gsV0FBVztRQUNYLFNBQVM7UUFDVCxnQkFBZ0I7S0FDakIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQW9CLEVBQUUsRUFBRTtJQUN6RSxJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLHNCQUFzQixDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbkUsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzVDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDaEUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQW1CLEVBQUUsRUFBRTtJQUNyRSxJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLHFCQUFxQixDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDaEUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5pdGlhbGl6ZVNwb3RDaGVja3NQcm9wcywgVHJhY2tFdmVudFByb3BzLCBUcmFja1NjcmVlblByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBzZW5kVHJhY2tTY3JlZW5SZXF1ZXN0LCBzZW5kVHJhY2tFdmVudFJlcXVlc3QgfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbGl6ZVNwb3RDaGVja3MgPSAoe1xuICBkb21haW5OYW1lLFxuICB0YXJnZXRUb2tlbixcbiAgdXNlckRldGFpbHMgPSB7fSxcbiAgdmFyaWFibGVzID0ge30sXG4gIGN1c3RvbVByb3BlcnRpZXMgPSB7fSxcbn06IEluaXRpYWxpemVTcG90Q2hlY2tzUHJvcHMpID0+IHtcbiAgY29uc3Qgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gIHNwb3RjaGVja1N0YXRlU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgZG9tYWluTmFtZSxcbiAgICB0YXJnZXRUb2tlbixcbiAgICB1c2VyRGV0YWlscyxcbiAgICB2YXJpYWJsZXMsXG4gICAgY3VzdG9tUHJvcGVydGllcyxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhY2tTY3JlZW4gPSBhc3luYyAoeyBzY3JlZW4sIG9wdGlvbnMgfTogVHJhY2tTY3JlZW5Qcm9wcykgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VuZFRyYWNrU2NyZWVuUmVxdWVzdCh7IHNjcmVlbiwgb3B0aW9ucyB9KTtcbiAgICBpZiAocmVzcG9uc2UudmFsaWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdTY3JlZW4gVHJhY2tpbmcgc3VjY2VlZGVkLicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoJ2Vycm9yJyBpbiByZXNwb25zZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzcG9uc2UuZXJyb3IudG9TdHJpbmcoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyYWNraW5nIGZhaWxlZCB3aXRob3V0IGFuIGV4cGxpY2l0IGVycm9yLicpO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKGBTY3JlZW4gVHJhY2tpbmcgRmFpbGVkLiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0cmFja0V2ZW50ID0gYXN5bmMgKHsgc2NyZWVuLCBldmVudCB9OiBUcmFja0V2ZW50UHJvcHMpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlbmRUcmFja0V2ZW50UmVxdWVzdCh7IHNjcmVlbiwgZXZlbnQgfSk7XG4gICAgaWYgKHJlc3BvbnNlLnZhbGlkKSB7XG4gICAgICBjb25zb2xlLmxvZygnVHJhY2tFdmVudCBzdWNjZWVkZWQuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICgnZXJyb3InIGluIHJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihyZXNwb25zZS5lcnJvci50b1N0cmluZygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVHJhY2tpbmcgZmFpbGVkIHdpdGhvdXQgYW4gZXhwbGljaXQgZXJyb3IuJyk7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgY29uc29sZS5sb2coYEV2ZW50IFRyYWNraW5nIEZhaWxlZC4gJHtlcnJvci5tZXNzYWdlfWApO1xuICB9XG59O1xuIl19
@@ -81,8 +81,8 @@ export class WebViewComponent {
81
81
  break;
82
82
  }
83
83
  }
84
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebViewComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
85
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: WebViewComponent, isStandalone: true, selector: "WebViewComponent", inputs: { url: "url", webviewType: "webviewType" }, host: { listeners: { "window:message": "onMessage($event)" } }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframeRef"], descendants: true }], ngImport: i0, template: `
84
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: WebViewComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
85
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: WebViewComponent, isStandalone: true, selector: "WebViewComponent", inputs: { url: "url", webviewType: "webviewType" }, host: { listeners: { "window:message": "onMessage($event)" } }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframeRef"], descendants: true }], ngImport: i0, template: `
86
86
  <div style="overflow: hidden; height: 100%;">
87
87
  <iframe
88
88
  #iframeRef
@@ -94,7 +94,7 @@ export class WebViewComponent {
94
94
  </div>
95
95
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
96
96
  }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WebViewComponent, decorators: [{
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: WebViewComponent, decorators: [{
98
98
  type: Component,
99
99
  args: [{
100
100
  selector: 'WebViewComponent',
@@ -112,7 +112,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
112
112
  standalone: true,
113
113
  imports: [CommonModule],
114
114
  }]
115
- }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { url: [{
115
+ }], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { url: [{
116
116
  type: Input
117
117
  }], webviewType: [{
118
118
  type: Input
@@ -127,8 +127,8 @@ export class CloseSVGComponent {
127
127
  size = 32;
128
128
  stroke = '#919191';
129
129
  strokeWidth = 1.5;
130
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CloseSVGComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
131
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CloseSVGComponent, isStandalone: true, selector: "close-svg", inputs: { size: "size", stroke: "stroke", strokeWidth: "strokeWidth" }, ngImport: i0, template: `
130
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: CloseSVGComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
131
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: CloseSVGComponent, isStandalone: true, selector: "close-svg", inputs: { size: "size", stroke: "stroke", strokeWidth: "strokeWidth" }, ngImport: i0, template: `
132
132
  <svg
133
133
  [attr.width]="size"
134
134
  [attr.height]="size"
@@ -146,7 +146,7 @@ export class CloseSVGComponent {
146
146
  </svg>
147
147
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
148
148
  }
149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CloseSVGComponent, decorators: [{
149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: CloseSVGComponent, decorators: [{
150
150
  type: Component,
151
151
  args: [{
152
152
  selector: 'close-svg',
@@ -216,8 +216,8 @@ export class CloseButtonComponent {
216
216
  await closeSpotCheck();
217
217
  handleSurveyEnd();
218
218
  };
219
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CloseButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
220
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CloseButtonComponent, isStandalone: true, selector: "spotcheck-close-button", inputs: { size: "size", strokeWidth: "strokeWidth" }, ngImport: i0, template: `
219
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: CloseButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
220
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: CloseButtonComponent, isStandalone: true, selector: "spotcheck-close-button", inputs: { size: "size", strokeWidth: "strokeWidth" }, ngImport: i0, template: `
221
221
  <div style="position: absolute; top: -36px; right: 16px; z-index: 100001; cursor: pointer; background-color: white; border-radius: 50px;" (click)="onClick()" *ngIf="isVisible && isMiniCard">
222
222
  <close-svg [size]="size" [stroke]="stroke" [strokeWidth]="strokeWidth" style="display: flex; align-items: center; justify-content: center;"/>
223
223
  </div>
@@ -226,7 +226,7 @@ export class CloseButtonComponent {
226
226
  </div>
227
227
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CloseSVGComponent, selector: "close-svg", inputs: ["size", "stroke", "strokeWidth"] }] });
228
228
  }
229
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CloseButtonComponent, decorators: [{
229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: CloseButtonComponent, decorators: [{
230
230
  type: Component,
231
231
  args: [{
232
232
  selector: 'spotcheck-close-button',
@@ -241,7 +241,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
241
241
  standalone: true,
242
242
  imports: [CommonModule, CloseSVGComponent],
243
243
  }]
244
- }], ctorParameters: function () { return []; }, propDecorators: { size: [{
244
+ }], ctorParameters: () => [], propDecorators: { size: [{
245
245
  type: Input
246
246
  }], strokeWidth: [{
247
247
  type: Input
@@ -308,11 +308,11 @@ export class SpotCheckComponent {
308
308
  console.log('Error initializing widget:', JSON.stringify(error));
309
309
  }
310
310
  };
311
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpotCheckComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
312
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SpotCheckComponent, isStandalone: true, selector: "SpotCheckComponent", ngImport: i0, template: "<div [ngStyle]=\"componentStyles.wrapperStyles\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: WebViewComponent, selector: "WebViewComponent", inputs: ["url", "webviewType"] }, { kind: "component", type: CloseButtonComponent, selector: "spotcheck-close-button", inputs: ["size", "strokeWidth"] }] });
311
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SpotCheckComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
312
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.3", type: SpotCheckComponent, isStandalone: true, selector: "SpotCheckComponent", ngImport: i0, template: "<div [ngStyle]=\"componentStyles.wrapperStyles\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: WebViewComponent, selector: "WebViewComponent", inputs: ["url", "webviewType"] }, { kind: "component", type: CloseButtonComponent, selector: "spotcheck-close-button", inputs: ["size", "strokeWidth"] }] });
313
313
  }
314
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SpotCheckComponent, decorators: [{
314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: SpotCheckComponent, decorators: [{
315
315
  type: Component,
316
316
  args: [{ selector: 'SpotCheckComponent', standalone: true, imports: [CommonModule, WebViewComponent, CloseButtonComponent], template: "<div [ngStyle]=\"componentStyles.wrapperStyles\">\n <div [ngStyle]=\"componentStyles.styles\">\n <div style=\"position: relative; height: 100%;\">\n <spotcheck-close-button />\n \n <WebViewComponent\n *ngIf=\"state.classicUrl && state.classicUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'classic'\"\n [url]=\"state.classicUrl\"\n [webviewType]=\"'classic'\"\n />\n \n <WebViewComponent\n *ngIf=\"state.chatUrl && state.chatUrl.length > 0 && state.spotcheckURL.length > 0 && state.spotCheckType === 'chat'\"\n [url]=\"state.chatUrl\"\n [webviewType]=\"'chat'\"\n />\n\n <div *ngIf=\"state.spotChecksMode === 'miniCard' && state.avatarEnabled\">\n <div style=\"position: absolute; bottom: -66px; left: 16px; z-index: 100001;\">\n <img [src]=\"avatarUrl\" style=\"width: 56px; height: 56px; border-radius: 50px; background-color: white;\"/>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
317
- }], ctorParameters: function () { return []; } });
318
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BvdENoZWNrQ29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvU3BvdENoZWNrQ29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvU3BvdENoZWNrQ29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBRUwsU0FBUyxFQUdULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQ0FBZ0MsRUFBRSw4QkFBOEIsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTVJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7QUFrQjFCLE1BQU0sT0FBTyxnQkFBZ0I7SUFPUDtJQU5YLEdBQUcsR0FBVyxFQUFFLENBQUM7SUFDakIsV0FBVyxHQUF1QixTQUFTLENBQUM7SUFFckQsT0FBTyxHQUEyQixJQUFJLENBQUM7SUFDZixNQUFNLENBQWlDO0lBRS9ELFlBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7SUFBRyxDQUFDO0lBQy9DLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLFlBQVksR0FBRyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxN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TyxFQUFFLFVBQVU7aUJBQ3BCLENBQUMsQ0FBQzthQUNKO1NBQ0Y7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2xFO0lBQ0gsQ0FBQyxDQUFDO3dHQTNFUyxrQkFBa0I7NEZBQWxCLGtCQUFrQiw4RUN0Ti9CLGlnQ0F5QkEsMkNEMkxZLFlBQVksd05BakxYLGdCQUFnQiw2RkEySGhCLG9CQUFvQjs7NEZBd0RwQixrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0Usb0JBQW9CLGNBRWxCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE9uSW5pdCxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIEhvc3RMaXN0ZW5lcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgY2xvc2VTcG90Q2hlY2ssIGNsb3NlU3BvdENoZWNrQW5kSGFuZGxlU3VydmV5RW5kLCBnZXRTcG90Y2hlY2tDb21wb25lbnRDc3NTdHlsZXMsIGhhbmRsZVN1cnZleUVuZCwgaXNjaGF0U3VydmV5IH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFNwb3RjaGVja1N0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgU3BvdGNoZWNrU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9TcG90Y2hlY2tTdGF0ZVNlcnZpY2UnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnV2ViVmlld0NvbXBvbmVudCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBzdHlsZT1cIm92ZXJmbG93OiBoaWRkZW47IGhlaWdodDogMTAwJTtcIj5cbiAgICAgIDxpZnJhbWVcbiAgICAgICAgI2lmcmFtZVJlZlxuICAgICAgICBbc3JjXT1cInNhZmVVcmxcIlxuICAgICAgICBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGRpc3BsYXk6IGJsb2NrO1wiXG4gICAgICAgIGZyYW1lYm9yZGVyPVwiMFwiXG4gICAgICA+XG4gICAgICA8L2lmcmFtZT5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFdlYlZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSB1cmw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB3ZWJ2aWV3VHlwZTogJ2NsYXNzaWMnIHwgJ2NoYXQnID0gJ2NsYXNzaWMnO1xuXG4gIHNhZmVVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGwgPSBudWxsO1xuICBAVmlld0NoaWxkKCdpZnJhbWVSZWYnKSBpZnJhbWUhOiBFbGVtZW50UmVmPEhUTUxJRnJhbWVFbGVtZW50PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy51cmwpIHtcbiAgICAgIHRoaXMuc2FmZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0aGlzLnVybCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IHN0YXRlU2VydmljZSA9IGdldFNwb3RjaGVja1N0YXRlU2VydmljZSgpO1xuICAgIGNvbnN0IHdlYlZpZXdSZWYgPSB0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50O1xuXG4gICAgaWYgKHRoaXMud2Vidmlld1R5cGUgPT09ICdjbGFzc2ljJykge1xuICAgICAgc3RhdGVTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgY2xhc3NpY1dlYlZpZXdSZWY6IHdlYlZpZXdSZWYsXG4gICAgICAgIGlzQ2xhc3NpY0xvYWRpbmc6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICAgIGNoYXRXZWJWaWV3UmVmOiB3ZWJWaWV3UmVmLFxuICAgICAgICBpc0NoYXRMb2FkaW5nOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnNldHVwSWZyYW1lTG9hZExpc3RlbmVyKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwSWZyYW1lTG9hZExpc3RlbmVyKCkge1xuICAgIGNvbnN0IGlmcmFtZSA9IHRoaXMuaWZyYW1lLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZVNlcnZpY2UgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgICAgIGlmICh0aGlzLndlYnZpZXdUeXBlID09PSAnY2xhc3NpYycpIHtcbiAgICAgICAgc3RhdGVTZXJ2aWNlLnNldFN0YXRlKHsgaXNDbGFzc2ljTG9hZGluZzogZmFsc2UgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoeyBpc0NoYXRMb2FkaW5nOiBmYWxzZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptZXNzYWdlJywgWyckZXZlbnQnXSlcbiAgb25NZXNzYWdlKGV2ZW50OiBNZXNzYWdlRXZlbnQpIHtcbiAgICBjb25zdCBzdGF0ZVNlcnZpY2UgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGV2ZW50O1xuICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7XG4gICAgICBjYXNlICdzbGlkZUluRnJhbWUnOlxuICAgICAgICBpZiAoZGF0YS5tb3VudGVkKSB7XG4gICAgICAgICAgc3RhdGVTZXJ2aWNlLnNldFN0YXRlKHsgaXNNb3VudGVkOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyZXNpemVXaW5kb3cnOlxuICAgICAgICBpZiAoZGF0YS5zaXplKSB7XG4gICAgICAgICAgc3RhdGVTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGN1cnJlbnRRdWVzdGlvbkhlaWdodDogZGF0YS5zaXplLmhlaWdodCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLmlzQ2xvc2VCdXR0b25FbmFibGVkKSB7XG4gICAgICAgICAgc3RhdGVTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGlzQ2xvc2VCdXR0b25FbmFibGVkOiBkYXRhLmlzQ2xvc2VCdXR0b25FbmFibGVkLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzdXJ2ZXlDb21wbGV0ZWQnOlxuICAgICAgICBjbG9zZVNwb3RDaGVja0FuZEhhbmRsZVN1cnZleUVuZCgpO1xuICAgICAgICAvLyBzcG90Y2hlY2tzTGlzdGVuZXIuZW1pdFN1cnZleUNvbXBsZXRlZChkYXRhLnJlc3BvbnNlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3N1cnZleUxvYWRTdGFydGVkJzpcbiAgICAgICAgLy8gc3BvdGNoZWNrc0xpc3RlbmVyLmVtaXRTdXJ2ZXlMb2FkU3RhcnRlZChkYXRhLnN1cnZleURldGFpbHMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsb3NlLXN2ZycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHN2Z1xuICAgICAgW2F0dHIud2lkdGhdPVwic2l6ZVwiXG4gICAgICBbYXR0ci5oZWlnaHRdPVwic2l6ZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDMyIDMyXCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHhtbG5zPVwiaHR0cHM6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBkPVwiTTEwLjY2NjUgMTAuNjY3TDIxLjMzMzIgMjEuMzMzN00yMS4zMzMyIDEwLjY2N0wxMC42NjY1IDIxLjMzMzdcIlxuICAgICAgICBbYXR0ci5zdHJva2VdPVwic3Ryb2tlXCJcbiAgICAgICAgW2F0dHIuc3Ryb2tlLXdpZHRoXT1cInN0cm9rZVdpZHRoXCJcbiAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBDbG9zZVNWR0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNpemU6IG51bWJlciA9IDMyO1xuICBASW5wdXQoKSBzdHJva2U6IHN0cmluZyA9ICcjOTE5MTkxJztcbiAgQElucHV0KCkgc3Ryb2tlV2lkdGg6IG51bWJlciA9IDEuNTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3BvdGNoZWNrLWNsb3NlLWJ1dHRvbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6IC0zNnB4OyByaWdodDogMTZweDsgei1pbmRleDogMTAwMDAxOyBjdXJzb3I6IHBvaW50ZXI7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyBib3JkZXItcmFkaXVzOiA1MHB4O1wiIChjbGljayk9XCJvbkNsaWNrKClcIiAqbmdJZj1cImlzVmlzaWJsZSAmJiBpc01pbmlDYXJkXCI+XG4gICAgICAgIDxjbG9zZS1zdmcgW3NpemVdPVwic2l6ZVwiIFtzdHJva2VdPVwic3Ryb2tlXCIgW3N0cm9rZVdpZHRoXT1cInN0cm9rZVdpZHRoXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcIi8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTZweDsgcmlnaHQ6IDE2cHg7IHotaW5kZXg6IDEwMDAwMTsgY3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJvbkNsaWNrKClcIiAqbmdJZj1cImlzVmlzaWJsZSAmJiAhaXNNaW5pQ2FyZFwiPlxuICAgICAgICA8Y2xvc2Utc3ZnIFtzaXplXT1cInNpemVcIiBbc3Ryb2tlXT1cInN0cm9rZVwiIFtzdHJva2VXaWR0aF09XCJzdHJva2VXaWR0aFwiLz5cbiAgICAgIDwvZGl2PlxuICBgLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDbG9zZVNWR0NvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIENsb3NlQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KCkgc2l6ZTogbnVtYmVyID0gMzA7XG4gIEBJbnB1dCgpIHN0cm9rZVdpZHRoOiBudW1iZXIgPSAxLjI7XG4gIFxuICBzdGF0ZTogU3BvdGNoZWNrU3RhdGU7XG4gIHByaXZhdGUgc3RhdGVTZXJ2aWNlOiBTcG90Y2hlY2tTdGF0ZVNlcnZpY2U7XG4gIHByaXZhdGUgc3RhdGVTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gIFxuICBpc1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNNaW5pQ2FyZDogYm9vbGVhbiA9IGZhbHNlO1xuICBzdHJva2U6IHN0cmluZyA9ICdibGFjayc7XG4gIFxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnN0YXRlU2VydmljZSA9IGdldFNwb3RjaGVja1N0YXRlU2VydmljZSgpO1xuICAgIHRoaXMuc3RhdGUgPSB0aGlzLnN0YXRlU2VydmljZS5nZXRTdGF0ZSgpO1xuICAgIHRoaXMudXBkYXRlQ29tcG9uZW50U3RhdGUoKTtcblxuICAgIHRoaXMuc3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnN0YXRlU2VydmljZS5zdGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgKG5ld1N0YXRlOiBTcG90Y2hlY2tTdGF0ZSkgPT4ge1xuICAgICAgICB0aGlzLnN0YXRlID0gbmV3U3RhdGU7XG4gICAgICAgIHRoaXMudXBkYXRlQ29tcG9uZW50U3RhdGUoKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbXBvbmVudFN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaXNpYmxlID1cbiAgICAgIHRoaXMuc3RhdGUuaXNDbG9zZUJ1dHRvbkVuYWJsZWQgJiZcbiAgICAgICgodGhpcy5zdGF0ZS5jdXJyZW50UXVlc3Rpb25IZWlnaHQgPiAwICYmICF0aGlzLnN0YXRlLmlzRnVsbFNjcmVlbk1vZGUpIHx8XG4gICAgICAgICh0aGlzLnN0YXRlLmlzRnVsbFNjcmVlbk1vZGUgJiZcbiAgICAgICAgICAoKCF0aGlzLnN0YXRlLmlzQ2xhc3NpY0xvYWRpbmcgJiZcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NsYXNzaWMnKSB8fFxuICAgICAgICAgICAgKCF0aGlzLnN0YXRlLmlzQ2hhdExvYWRpbmcgJiZcbiAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zcG90Q2hlY2tUeXBlID09PSAnY2hhdCcpKSkpO1xuICAgIHRoaXMuaXNNaW5pQ2FyZCA9IHRoaXMuc3RhdGUuc3BvdENoZWNrc01vZGUgPT09ICdtaW5pQ2FyZCc7XG4gICAgdGhpcy5zdHJva2UgPSB0aGlzLmlzTWluaUNhcmQgPyAnYmxhY2snIDogdGhpcy5zdGF0ZS5jbG9zZUJ1dHRvblN0eWxlPy5bJ2N0YUJ1dHRvbiddIHx8ICdibGFjayc7XG4gIH1cblxuICBvbkNsaWNrID0gYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGNsb3NlU3BvdENoZWNrKCk7XG4gICAgaGFuZGxlU3VydmV5RW5kKCk7XG4gIH07XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1Nwb3RDaGVja0NvbXBvbmVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9TcG90Q2hlY2tDb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFdlYlZpZXdDb21wb25lbnQsIENsb3NlQnV0dG9uQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU3BvdENoZWNrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0ZTogU3BvdGNoZWNrU3RhdGU7XG4gIHByaXZhdGUgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlOiBTcG90Y2hlY2tTdGF0ZVNlcnZpY2U7XG4gIHByaXZhdGUgc3RhdGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgY29tcG9uZW50U3R5bGVzOiBhbnkgPSB7fTtcbiAgYXZhdGFyVXJsOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNwb3RjaGVja1N0YXRlU2VydmljZSA9IGdldFNwb3RjaGVja1N0YXRlU2VydmljZSgpO1xuICAgIHRoaXMuc3RhdGUgPSB0aGlzLnNwb3RjaGVja1N0YXRlU2VydmljZS5nZXRTdGF0ZSgpO1xuICAgIHRoaXMudXBkYXRlQ29tcG9uZW50U3R5bGVzKCk7XG5cbiAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uID0gdGhpcy5zcG90Y2hlY2tTdGF0ZVNlcnZpY2Uuc3RhdGUkLnN1YnNjcmliZShcbiAgICAgIChuZXdTdGF0ZTogU3BvdGNoZWNrU3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudFN0eWxlcygpO1xuICAgICAgICB0aGlzLmF2YXRhclVybCA9IHRoaXMuc3RhdGUuYXZhdGFyVXJsIHx8IFwiaHR0cHM6Ly9zdGF0aWMuc3VydmV5c3BhcnJvdy5jb20vYXBwbGljYXRpb24vaW1hZ2VzL3Byb2ZpbGUucG5nXCI7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbXBvbmVudFN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudFN0eWxlcyA9IGdldFNwb3RjaGVja0NvbXBvbmVudENzc1N0eWxlcyh0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIGluaXRpYWxpemVDb21wb25lbnQgPSBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRvbWFpbk5hbWUgPSB0aGlzLnN0YXRlLmRvbWFpbk5hbWU7XG4gICAgICBjb25zdCB0YXJnZXRUb2tlbiA9IHRoaXMuc3RhdGUudGFyZ2V0VG9rZW47XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgICAgYGh0dHBzOi8vJHtkb21haW5OYW1lfS9hcGkvaW50ZXJuYWwvc3BvdGNoZWNrL3dpZGdldC8ke3RhcmdldFRva2VufS9pbml0YFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5kYXRhO1xuXG4gICAgICBpZiAoZGF0YS5maWx0ZXJlZFNwb3RDaGVja3MgJiYgZGF0YS5maWx0ZXJlZFNwb3RDaGVja3MubGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgY2xhc3NpY0lmcmFtZSA9IGZhbHNlO1xuICAgICAgICBsZXQgY2hhdElmcmFtZSA9IGZhbHNlO1xuXG4gICAgICAgIGRhdGEuZmlsdGVyZWRTcG90Q2hlY2tzLmZvckVhY2goKHNwb3RjaGVjazogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgc3BvdGNoZWNrLmFwcGVhcmFuY2UubW9kZSA9PT0gJ2Z1bGxTY3JlZW4nICYmXG4gICAgICAgICAgICBpc2NoYXRTdXJ2ZXkoc3BvdGNoZWNrPy5zdXJ2ZXk/LnN1cnZleVR5cGUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjaGF0SWZyYW1lID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2xhc3NpY0lmcmFtZSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBuZXdDbGFzc2ljVXJsID0gY2xhc3NpY0lmcmFtZVxuICAgICAgICAgID8gYGh0dHBzOi8vJHtkb21haW5OYW1lfS9ldWktdGVtcGxhdGUvY2xhc3NpY2BcbiAgICAgICAgICA6ICcnO1xuICAgICAgICBjb25zdCBuZXdDaGF0VXJsID0gY2hhdElmcmFtZVxuICAgICAgICAgID8gYGh0dHBzOi8vJHtkb21haW5OYW1lfS9ldWktdGVtcGxhdGUvY2hhdGBcbiAgICAgICAgICA6ICcnO1xuXG4gICAgICAgIHRoaXMuc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgICBmaWx0ZXJlZFNwb3RDaGVja3M6IGRhdGEuZmlsdGVyZWRTcG90Q2hlY2tzLFxuICAgICAgICAgIGNsYXNzaWNVcmw6IG5ld0NsYXNzaWNVcmwsXG4gICAgICAgICAgY2hhdFVybDogbmV3Q2hhdFVybCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbml0aWFsaXppbmcgd2lkZ2V0OicsIEpTT04uc3RyaW5naWZ5KGVycm9yKSk7XG4gICAgfVxuICB9O1xufVxuIiwiPGRpdiBbbmdTdHlsZV09XCJjb21wb25lbnRTdHlsZXMud3JhcHBlclN0eWxlc1wiPlxuICA8ZGl2IFtuZ1N0eWxlXT1cImNvbXBvbmVudFN0eWxlcy5zdHlsZXNcIj5cbiAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICA8c3BvdGNoZWNrLWNsb3NlLWJ1dHRvbiAvPlxuICBcbiAgICAgIDxXZWJWaWV3Q29tcG9uZW50XG4gICAgICAgICpuZ0lmPVwic3RhdGUuY2xhc3NpY1VybCAmJiBzdGF0ZS5jbGFzc2ljVXJsLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdGNoZWNrVVJMLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NsYXNzaWMnXCJcbiAgICAgICAgW3VybF09XCJzdGF0ZS5jbGFzc2ljVXJsXCJcbiAgICAgICAgW3dlYnZpZXdUeXBlXT1cIidjbGFzc2ljJ1wiXG4gICAgICAvPlxuICBcbiAgICAgIDxXZWJWaWV3Q29tcG9uZW50XG4gICAgICAgICpuZ0lmPVwic3RhdGUuY2hhdFVybCAmJiBzdGF0ZS5jaGF0VXJsLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdGNoZWNrVVJMLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NoYXQnXCJcbiAgICAgICAgW3VybF09XCJzdGF0ZS5jaGF0VXJsXCJcbiAgICAgICAgW3dlYnZpZXdUeXBlXT1cIidjaGF0J1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwic3RhdGUuc3BvdENoZWNrc01vZGUgPT09ICdtaW5pQ2FyZCcgJiYgc3RhdGUuYXZhdGFyRW5hYmxlZFwiPlxuICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyBib3R0b206IC02NnB4OyBsZWZ0OiAxNnB4OyB6LWluZGV4OiAxMDAwMDE7XCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cImF2YXRhclVybFwiIHN0eWxlPVwid2lkdGg6IDU2cHg7IGhlaWdodDogNTZweDsgYm9yZGVyLXJhZGl1czogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XCIvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
317
+ }], ctorParameters: () => [] });
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BvdENoZWNrQ29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvU3BvdENoZWNrQ29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2FuZ3VsYXItdWkvbGliL3Nwb3RjaGVja3MvU3BvdENoZWNrQ29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxLQUFLLEVBRUwsU0FBUyxFQUdULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQ0FBZ0MsRUFBRSw4QkFBOEIsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTVJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7QUFrQjFCLE1BQU0sT0FBTyxnQkFBZ0I7SUFPUDtJQU5YLEdBQUcsR0FBVyxFQUFFLENBQUM7SUFDakIsV0FBVyxHQUF1QixTQUFTLENBQUM7SUFFckQsT0FBTyxHQUEyQixJQUFJLENBQUM7SUFDZixNQUFNLENBQWlDO0lBRS9ELFlBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7SUFBRyxDQUFDO0lBQy9DLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxZQUFZLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFVBQVUsR0FBRyxJ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b0JBQW9CO29CQUMzQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUVQLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUM7b0JBQ2xDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7b0JBQzNDLFVBQVUsRUFBRSxhQUFhO29CQUN6QixPQUFPLEVBQUUsVUFBVTtpQkFDcEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUMsQ0FBQzt1R0EzRVMsa0JBQWtCOzJGQUFsQixrQkFBa0IsOEVDdk4vQixpZ0NBeUJBLDJDRDRMWSxZQUFZLHdOQWxMWCxnQkFBZ0IsNkZBMkhoQixvQkFBb0I7OzJGQXlEcEIsa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLG9CQUFvQixjQUVsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBPbkluaXQsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBIb3N0TGlzdGVuZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGNsb3NlU3BvdENoZWNrLCBjbG9zZVNwb3RDaGVja0FuZEhhbmRsZVN1cnZleUVuZCwgZ2V0U3BvdGNoZWNrQ29tcG9uZW50Q3NzU3R5bGVzLCBoYW5kbGVTdXJ2ZXlFbmQsIGlzY2hhdFN1cnZleSB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBTcG90Y2hlY2tTdGF0ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFNwb3RjaGVja1N0YXRlU2VydmljZSB9IGZyb20gJy4vU3BvdGNoZWNrU3RhdGVTZXJ2aWNlJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1dlYlZpZXdDb21wb25lbnQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgc3R5bGU9XCJvdmVyZmxvdzogaGlkZGVuOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICA8aWZyYW1lXG4gICAgICAgICNpZnJhbWVSZWZcbiAgICAgICAgW3NyY109XCJzYWZlVXJsXCJcbiAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBibG9jaztcIlxuICAgICAgICBmcmFtZWJvcmRlcj1cIjBcIlxuICAgICAgPlxuICAgICAgPC9pZnJhbWU+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBXZWJWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgdXJsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgd2Vidmlld1R5cGU6ICdjbGFzc2ljJyB8ICdjaGF0JyA9ICdjbGFzc2ljJztcblxuICBzYWZlVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsID0gbnVsbDtcbiAgQFZpZXdDaGlsZCgnaWZyYW1lUmVmJykgaWZyYW1lITogRWxlbWVudFJlZjxIVE1MSUZyYW1lRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMudXJsKSB7XG4gICAgICB0aGlzLnNhZmVVcmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodGhpcy51cmwpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBzdGF0ZVNlcnZpY2UgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgICBjb25zdCB3ZWJWaWV3UmVmID0gdGhpcy5pZnJhbWUubmF0aXZlRWxlbWVudDtcblxuICAgIGlmICh0aGlzLndlYnZpZXdUeXBlID09PSAnY2xhc3NpYycpIHtcbiAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICAgIGNsYXNzaWNXZWJWaWV3UmVmOiB3ZWJWaWV3UmVmLFxuICAgICAgICBpc0NsYXNzaWNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZVNlcnZpY2Uuc2V0U3RhdGUoe1xuICAgICAgICBjaGF0V2ViVmlld1JlZjogd2ViVmlld1JlZixcbiAgICAgICAgaXNDaGF0TG9hZGluZzogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5zZXR1cElmcmFtZUxvYWRMaXN0ZW5lcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cElmcmFtZUxvYWRMaXN0ZW5lcigpIHtcbiAgICBjb25zdCBpZnJhbWUgPSB0aGlzLmlmcmFtZS5uYXRpdmVFbGVtZW50O1xuICAgIGlmcmFtZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gICAgICBpZiAodGhpcy53ZWJ2aWV3VHlwZSA9PT0gJ2NsYXNzaWMnKSB7XG4gICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7IGlzQ2xhc3NpY0xvYWRpbmc6IGZhbHNlIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGVTZXJ2aWNlLnNldFN0YXRlKHsgaXNDaGF0TG9hZGluZzogZmFsc2UgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXG4gIG9uTWVzc2FnZShldmVudDogTWVzc2FnZUV2ZW50KSB7XG4gICAgY29uc3Qgc3RhdGVTZXJ2aWNlID0gZ2V0U3BvdGNoZWNrU3RhdGVTZXJ2aWNlKCk7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBldmVudDtcbiAgICBzd2l0Y2ggKGRhdGEudHlwZSkge1xuICAgICAgY2FzZSAnc2xpZGVJbkZyYW1lJzpcbiAgICAgICAgaWYgKGRhdGEubW91bnRlZCkge1xuICAgICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7IGlzTW91bnRlZDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmVzaXplV2luZG93JzpcbiAgICAgICAgaWYgKGRhdGEuc2l6ZSkge1xuICAgICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBjdXJyZW50UXVlc3Rpb25IZWlnaHQ6IGRhdGEuc2l6ZS5oZWlnaHQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YS5pc0Nsb3NlQnV0dG9uRW5hYmxlZCkge1xuICAgICAgICAgIHN0YXRlU2VydmljZS5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBpc0Nsb3NlQnV0dG9uRW5hYmxlZDogZGF0YS5pc0Nsb3NlQnV0dG9uRW5hYmxlZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc3VydmV5Q29tcGxldGVkJzpcbiAgICAgICAgY2xvc2VTcG90Q2hlY2tBbmRIYW5kbGVTdXJ2ZXlFbmQoKTtcbiAgICAgICAgLy8gc3BvdGNoZWNrc0xpc3RlbmVyLmVtaXRTdXJ2ZXlDb21wbGV0ZWQoZGF0YS5yZXNwb25zZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzdXJ2ZXlMb2FkU3RhcnRlZCc6XG4gICAgICAgIC8vIHNwb3RjaGVja3NMaXN0ZW5lci5lbWl0U3VydmV5TG9hZFN0YXJ0ZWQoZGF0YS5zdXJ2ZXlEZXRhaWxzKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbG9zZS1zdmcnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzdmdcbiAgICAgIFthdHRyLndpZHRoXT1cInNpemVcIlxuICAgICAgW2F0dHIuaGVpZ2h0XT1cInNpemVcIlxuICAgICAgdmlld0JveD1cIjAgMCAzMiAzMlwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB4bWxucz1cImh0dHBzOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZD1cIk0xMC42NjY1IDEwLjY2N0wyMS4zMzMyIDIxLjMzMzdNMjEuMzMzMiAxMC42NjdMMTAuNjY2NSAyMS4zMzM3XCJcbiAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInN0cm9rZVwiXG4gICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJzdHJva2VXaWR0aFwiXG4gICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAvPlxuICAgIDwvc3ZnPlxuICBgLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xvc2VTVkdDb21wb25lbnQge1xuICBASW5wdXQoKSBzaXplOiBudW1iZXIgPSAzMjtcbiAgQElucHV0KCkgc3Ryb2tlOiBzdHJpbmcgPSAnIzkxOTE5MSc7XG4gIEBJbnB1dCgpIHN0cm9rZVdpZHRoOiBudW1iZXIgPSAxLjU7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Nwb3RjaGVjay1jbG9zZS1idXR0b24nLFxuICB0ZW1wbGF0ZTogYFxuICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAtMzZweDsgcmlnaHQ6IDE2cHg7IHotaW5kZXg6IDEwMDAwMTsgY3Vyc29yOiBwb2ludGVyOyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgYm9yZGVyLXJhZGl1czogNTBweDtcIiAoY2xpY2spPVwib25DbGljaygpXCIgKm5nSWY9XCJpc1Zpc2libGUgJiYgaXNNaW5pQ2FyZFwiPlxuICAgICAgICA8Y2xvc2Utc3ZnIFtzaXplXT1cInNpemVcIiBbc3Ryb2tlXT1cInN0cm9rZVwiIFtzdHJva2VXaWR0aF09XCJzdHJva2VXaWR0aFwiIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCIvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6IDE2cHg7IHJpZ2h0OiAxNnB4OyB6LWluZGV4OiAxMDAwMDE7IGN1cnNvcjogcG9pbnRlcjtcIiAoY2xpY2spPVwib25DbGljaygpXCIgKm5nSWY9XCJpc1Zpc2libGUgJiYgIWlzTWluaUNhcmRcIj5cbiAgICAgICAgPGNsb3NlLXN2ZyBbc2l6ZV09XCJzaXplXCIgW3N0cm9rZV09XCJzdHJva2VcIiBbc3Ryb2tlV2lkdGhdPVwic3Ryb2tlV2lkdGhcIi8+XG4gICAgICA8L2Rpdj5cbiAgYCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ2xvc2VTVkdDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBDbG9zZUJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHNpemU6IG51bWJlciA9IDMwO1xuICBASW5wdXQoKSBzdHJva2VXaWR0aDogbnVtYmVyID0gMS4yO1xuICBcbiAgc3RhdGU6IFNwb3RjaGVja1N0YXRlO1xuICBwcml2YXRlIHN0YXRlU2VydmljZTogU3BvdGNoZWNrU3RhdGVTZXJ2aWNlO1xuICBwcml2YXRlIHN0YXRlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBcbiAgaXNWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGlzTWluaUNhcmQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc3Ryb2tlOiBzdHJpbmcgPSAnYmxhY2snO1xuICBcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdGF0ZVNlcnZpY2UgPSBnZXRTcG90Y2hlY2tTdGF0ZVNlcnZpY2UoKTtcbiAgICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZVNlcnZpY2UuZ2V0U3RhdGUoKTtcbiAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudFN0YXRlKCk7XG5cbiAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uID0gdGhpcy5zdGF0ZVNlcnZpY2Uuc3RhdGUkLnN1YnNjcmliZShcbiAgICAgIChuZXdTdGF0ZTogU3BvdGNoZWNrU3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudFN0YXRlKCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXRlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb21wb25lbnRTdGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlzaWJsZSA9XG4gICAgICB0aGlzLnN0YXRlLmlzQ2xvc2VCdXR0b25FbmFibGVkICYmXG4gICAgICAoKHRoaXMuc3RhdGUuY3VycmVudFF1ZXN0aW9uSGVpZ2h0ID4gMCAmJiAhdGhpcy5zdGF0ZS5pc0Z1bGxTY3JlZW5Nb2RlKSB8fFxuICAgICAgICAodGhpcy5zdGF0ZS5pc0Z1bGxTY3JlZW5Nb2RlICYmXG4gICAgICAgICAgKCghdGhpcy5zdGF0ZS5pc0NsYXNzaWNMb2FkaW5nICYmXG4gICAgICAgICAgICB0aGlzLnN0YXRlLnNwb3RDaGVja1R5cGUgPT09ICdjbGFzc2ljJykgfHxcbiAgICAgICAgICAgICghdGhpcy5zdGF0ZS5pc0NoYXRMb2FkaW5nICYmXG4gICAgICAgICAgICAgIHRoaXMuc3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NoYXQnKSkpKTtcbiAgICB0aGlzLmlzTWluaUNhcmQgPSB0aGlzLnN0YXRlLnNwb3RDaGVja3NNb2RlID09PSAnbWluaUNhcmQnO1xuICAgIHRoaXMuc3Ryb2tlID0gdGhpcy5pc01pbmlDYXJkID8gJ2JsYWNrJyA6IHRoaXMuc3RhdGUuY2xvc2VCdXR0b25TdHlsZT8uWydjdGFCdXR0b24nXSB8fCAnYmxhY2snO1xuICB9XG5cbiAgb25DbGljayA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBjbG9zZVNwb3RDaGVjaygpO1xuICAgIGhhbmRsZVN1cnZleUVuZCgpO1xuICB9O1xufVxuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1Nwb3RDaGVja0NvbXBvbmVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9TcG90Q2hlY2tDb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFdlYlZpZXdDb21wb25lbnQsIENsb3NlQnV0dG9uQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU3BvdENoZWNrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBzdGF0ZTogU3BvdGNoZWNrU3RhdGU7XG4gIHByaXZhdGUgc3BvdGNoZWNrU3RhdGVTZXJ2aWNlOiBTcG90Y2hlY2tTdGF0ZVNlcnZpY2U7XG4gIHByaXZhdGUgc3RhdGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgY29tcG9uZW50U3R5bGVzOiBhbnkgPSB7fTtcbiAgYXZhdGFyVXJsOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNwb3RjaGVja1N0YXRlU2VydmljZSA9IGdldFNwb3RjaGVja1N0YXRlU2VydmljZSgpO1xuICAgIHRoaXMuc3RhdGUgPSB0aGlzLnNwb3RjaGVja1N0YXRlU2VydmljZS5nZXRTdGF0ZSgpO1xuICAgIHRoaXMudXBkYXRlQ29tcG9uZW50U3R5bGVzKCk7XG5cbiAgICB0aGlzLnN0YXRlU3Vic2NyaXB0aW9uID0gdGhpcy5zcG90Y2hlY2tTdGF0ZVNlcnZpY2Uuc3RhdGUkLnN1YnNjcmliZShcbiAgICAgIChuZXdTdGF0ZTogU3BvdGNoZWNrU3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudFN0eWxlcygpO1xuICAgICAgICB0aGlzLmF2YXRhclVybCA9IHRoaXMuc3RhdGUuYXZhdGFyVXJsIHx8IFwiaHR0cHM6Ly9zdGF0aWMuc3VydmV5c3BhcnJvdy5jb20vYXBwbGljYXRpb24vaW1hZ2VzL3Byb2ZpbGUucG5nXCI7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbXBvbmVudFN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudFN0eWxlcyA9IGdldFNwb3RjaGVja0NvbXBvbmVudENzc1N0eWxlcyh0aGlzLnN0YXRlKTtcbiAgfVxuXG4gIGluaXRpYWxpemVDb21wb25lbnQgPSBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRvbWFpbk5hbWUgPSB0aGlzLnN0YXRlLmRvbWFpbk5hbWU7XG4gICAgICBjb25zdCB0YXJnZXRUb2tlbiA9IHRoaXMuc3RhdGUudGFyZ2V0VG9rZW47XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldChcbiAgICAgICAgYGh0dHBzOi8vJHtkb21haW5OYW1lfS9hcGkvaW50ZXJuYWwvc3BvdGNoZWNrL3dpZGdldC8ke3RhcmdldFRva2VufS9pbml0YFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5kYXRhO1xuXG4gICAgICBpZiAoZGF0YS5maWx0ZXJlZFNwb3RDaGVja3MgJiYgZGF0YS5maWx0ZXJlZFNwb3RDaGVja3MubGVuZ3RoID4gMCkge1xuICAgICAgICBsZXQgY2xhc3NpY0lmcmFtZSA9IGZhbHNlO1xuICAgICAgICBsZXQgY2hhdElmcmFtZSA9IGZhbHNlO1xuXG4gICAgICAgIGRhdGEuZmlsdGVyZWRTcG90Q2hlY2tzLmZvckVhY2goKHNwb3RjaGVjazogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgc3BvdGNoZWNrLmFwcGVhcmFuY2UubW9kZSA9PT0gJ2Z1bGxTY3JlZW4nICYmXG4gICAgICAgICAgICBpc2NoYXRTdXJ2ZXkoc3BvdGNoZWNrPy5zdXJ2ZXk/LnN1cnZleVR5cGUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjaGF0SWZyYW1lID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2xhc3NpY0lmcmFtZSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBuZXdDbGFzc2ljVXJsID0gY2xhc3NpY0lmcmFtZVxuICAgICAgICAgID8gYGh0dHBzOi8vJHtkb21haW5OYW1lfS9ldWktdGVtcGxhdGUvY2xhc3NpY2BcbiAgICAgICAgICA6ICcnO1xuICAgICAgICBjb25zdCBuZXdDaGF0VXJsID0gY2hhdElmcmFtZVxuICAgICAgICAgID8gYGh0dHBzOi8vJHtkb21haW5OYW1lfS9ldWktdGVtcGxhdGUvY2hhdGBcbiAgICAgICAgICA6ICcnO1xuXG4gICAgICAgIHRoaXMuc3BvdGNoZWNrU3RhdGVTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgICBmaWx0ZXJlZFNwb3RDaGVja3M6IGRhdGEuZmlsdGVyZWRTcG90Q2hlY2tzLFxuICAgICAgICAgIGNsYXNzaWNVcmw6IG5ld0NsYXNzaWNVcmwsXG4gICAgICAgICAgY2hhdFVybDogbmV3Q2hhdFVybCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbml0aWFsaXppbmcgd2lkZ2V0OicsIEpTT04uc3RyaW5naWZ5KGVycm9yKSk7XG4gICAgfVxuICB9O1xufVxuIiwiPGRpdiBbbmdTdHlsZV09XCJjb21wb25lbnRTdHlsZXMud3JhcHBlclN0eWxlc1wiPlxuICA8ZGl2IFtuZ1N0eWxlXT1cImNvbXBvbmVudFN0eWxlcy5zdHlsZXNcIj5cbiAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICA8c3BvdGNoZWNrLWNsb3NlLWJ1dHRvbiAvPlxuICBcbiAgICAgIDxXZWJWaWV3Q29tcG9uZW50XG4gICAgICAgICpuZ0lmPVwic3RhdGUuY2xhc3NpY1VybCAmJiBzdGF0ZS5jbGFzc2ljVXJsLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdGNoZWNrVVJMLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NsYXNzaWMnXCJcbiAgICAgICAgW3VybF09XCJzdGF0ZS5jbGFzc2ljVXJsXCJcbiAgICAgICAgW3dlYnZpZXdUeXBlXT1cIidjbGFzc2ljJ1wiXG4gICAgICAvPlxuICBcbiAgICAgIDxXZWJWaWV3Q29tcG9uZW50XG4gICAgICAgICpuZ0lmPVwic3RhdGUuY2hhdFVybCAmJiBzdGF0ZS5jaGF0VXJsLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdGNoZWNrVVJMLmxlbmd0aCA+IDAgJiYgc3RhdGUuc3BvdENoZWNrVHlwZSA9PT0gJ2NoYXQnXCJcbiAgICAgICAgW3VybF09XCJzdGF0ZS5jaGF0VXJsXCJcbiAgICAgICAgW3dlYnZpZXdUeXBlXT1cIidjaGF0J1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwic3RhdGUuc3BvdENoZWNrc01vZGUgPT09ICdtaW5pQ2FyZCcgJiYgc3RhdGUuYXZhdGFyRW5hYmxlZFwiPlxuICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyBib3R0b206IC02NnB4OyBsZWZ0OiAxNnB4OyB6LWluZGV4OiAxMDAwMDE7XCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cImF2YXRhclVybFwiIHN0eWxlPVwid2lkdGg6IDU2cHg7IGhlaWdodDogNTZweDsgYm9yZGVyLXJhZGl1czogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XCIvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19