docks_theme_api 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (237) hide show
  1. checksums.yaml +15 -0
  2. data/.babelrc +4 -0
  3. data/.editorconfig +8 -0
  4. data/.eslintrc +115 -0
  5. data/.gitignore +24 -0
  6. data/.rubocop.yml +20 -0
  7. data/.travis.yml +16 -0
  8. data/Gemfile +4 -0
  9. data/README.md +5 -0
  10. data/Rakefile +3 -0
  11. data/assets/images/icons.svg +63 -0
  12. data/assets/scripts/coffeescript/pattern_library_helpers.coffee +8 -0
  13. data/assets/scripts/javascript/pattern_library_helpers.js +11 -0
  14. data/assets/scripts/pattern_library.js +10380 -0
  15. data/assets/scripts/pattern_library_demo.js +0 -0
  16. data/assets/styles/less/pattern-library-helpers.less +103 -0
  17. data/assets/styles/pattern-library-demo.css +1882 -0
  18. data/assets/styles/pattern-library.css +1882 -0
  19. data/assets/styles/sass/pattern-library-helpers.sass +90 -0
  20. data/assets/styles/scss/pattern-library-helpers.scss +99 -0
  21. data/assets/styles/stylus/pattern-library-helpers.styl +90 -0
  22. data/assets/templates/erb/demo.erb +26 -0
  23. data/assets/templates/erb/layouts/demo.erb +17 -0
  24. data/assets/templates/erb/layouts/pattern.erb +76 -0
  25. data/assets/templates/erb/partials/sidebar.erb +124 -0
  26. data/assets/templates/erb/partials/symbols/class.erb +1 -0
  27. data/assets/templates/erb/partials/symbols/demo.erb +40 -0
  28. data/assets/templates/erb/partials/symbols/factory.erb +70 -0
  29. data/assets/templates/erb/partials/symbols/function.erb +103 -0
  30. data/assets/templates/erb/partials/symbols/mixin.erb +62 -0
  31. data/assets/templates/erb/partials/symbols/variable.erb +59 -0
  32. data/assets/templates/erb/pattern.erb +102 -0
  33. data/assets/templates/haml/demo.haml +14 -0
  34. data/assets/templates/haml/layouts/demo.haml +6 -0
  35. data/assets/templates/haml/layouts/pattern.haml +38 -0
  36. data/assets/templates/haml/partials/sidebar.haml +68 -0
  37. data/assets/templates/haml/partials/symbols/class.haml +1 -0
  38. data/assets/templates/haml/partials/symbols/demo.haml +23 -0
  39. data/assets/templates/haml/partials/symbols/factory.haml +38 -0
  40. data/assets/templates/haml/partials/symbols/function.haml +54 -0
  41. data/assets/templates/haml/partials/symbols/mixin.haml +31 -0
  42. data/assets/templates/haml/partials/symbols/variable.haml +22 -0
  43. data/assets/templates/haml/pattern.haml +54 -0
  44. data/assets/templates/slim/demo.slim +24 -0
  45. data/assets/templates/slim/layouts/demo.slim +5 -0
  46. data/assets/templates/slim/layouts/pattern.slim +48 -0
  47. data/assets/templates/slim/partials/sidebar.slim +112 -0
  48. data/assets/templates/slim/partials/symbols/class.slim +1 -0
  49. data/assets/templates/slim/partials/symbols/demo.slim +30 -0
  50. data/assets/templates/slim/partials/symbols/factory.slim +57 -0
  51. data/assets/templates/slim/partials/symbols/function.slim +81 -0
  52. data/assets/templates/slim/partials/symbols/mixin.slim +45 -0
  53. data/assets/templates/slim/partials/symbols/variable.slim +35 -0
  54. data/assets/templates/slim/pattern.slim +63 -0
  55. data/docks_config.rb +32 -0
  56. data/docks_theme_api.gemspec +37 -0
  57. data/gulpfile.js +88 -0
  58. data/karma.conf.js +6 -0
  59. data/lib/docks_theme_api/components/base_component.rb +99 -0
  60. data/lib/docks_theme_api/components/code_block_component.rb +10 -0
  61. data/lib/docks_theme_api/components/popover_component.rb +15 -0
  62. data/lib/docks_theme_api/components/table_component.rb +34 -0
  63. data/lib/docks_theme_api/components/tablist_component.rb +11 -0
  64. data/lib/docks_theme_api/components.rb +21 -0
  65. data/lib/docks_theme_api/helpers/ui_helper.rb +69 -0
  66. data/lib/docks_theme_api/theme.rb +21 -0
  67. data/lib/docks_theme_api.rb +1 -0
  68. data/package.json +60 -0
  69. data/source/behaviors/filterable/filterable.coffee +353 -0
  70. data/source/behaviors/filterable/filterable.js +0 -0
  71. data/source/behaviors/filterable/filterable.scss +34 -0
  72. data/source/behaviors/filterable/package.json +3 -0
  73. data/source/behaviors/index.js +0 -0
  74. data/source/components/avatar/avatar.erb +20 -0
  75. data/source/components/avatar/avatar.js +142 -0
  76. data/source/components/avatar/avatar.scss +200 -0
  77. data/source/components/avatar/avatar_container.erb +13 -0
  78. data/source/components/avatar/package.json +3 -0
  79. data/source/components/avatar/spec/avatar_spec.js +81 -0
  80. data/source/components/badge/badge.scss +158 -0
  81. data/source/components/button/button.scss +213 -0
  82. data/source/components/card/card.scss +32 -0
  83. data/source/components/code_block/code-block.scss +353 -0
  84. data/source/components/code_block/code_block.erb +95 -0
  85. data/source/components/code_block/code_block.js +444 -0
  86. data/source/components/code_block/package.json +3 -0
  87. data/source/components/code_block/spec/code_block_spec.js +10 -0
  88. data/source/components/demo/demo.js +244 -0
  89. data/source/components/demo/demo.scss +90 -0
  90. data/source/components/demo/package.json +3 -0
  91. data/source/components/exploded/exploded.erb +25 -0
  92. data/source/components/exploded/exploded.js +694 -0
  93. data/source/components/exploded/exploded.scss +166 -0
  94. data/source/components/exploded/package.json +3 -0
  95. data/source/components/field/field.js +24 -0
  96. data/source/components/field/field.scss +101 -0
  97. data/source/components/field/package.json +3 -0
  98. data/source/components/header/header.scss +33 -0
  99. data/source/components/iframe/iframe.erb +12 -0
  100. data/source/components/iframe/iframe.js +381 -0
  101. data/source/components/iframe/package.json +3 -0
  102. data/source/components/index.js +37 -0
  103. data/source/components/inline_group/inline-group.scss +14 -0
  104. data/source/components/internal_link/internal_link.js +49 -0
  105. data/source/components/internal_link/package.json +3 -0
  106. data/source/components/list/list.scss +230 -0
  107. data/source/components/modal/modal.coffee +84 -0
  108. data/source/components/modal/modal.erb +19 -0
  109. data/source/components/modal/modal.js +0 -0
  110. data/source/components/modal/modal.scss +57 -0
  111. data/source/components/modal/package.json +3 -0
  112. data/source/components/notice/notice.scss +48 -0
  113. data/source/components/popover/package.json +3 -0
  114. data/source/components/popover/popover.coffee +562 -0
  115. data/source/components/popover/popover.erb +21 -0
  116. data/source/components/popover/popover.js +0 -0
  117. data/source/components/popover/popover.scss +139 -0
  118. data/source/components/range/range.scss +78 -0
  119. data/source/components/resizable/package.json +3 -0
  120. data/source/components/resizable/resizable.erb +30 -0
  121. data/source/components/resizable/resizable.js +250 -0
  122. data/source/components/resizable/resizable.scss +245 -0
  123. data/source/components/resizable/size_buttons.js +249 -0
  124. data/source/components/scroll_container/package.json +3 -0
  125. data/source/components/scroll_container/scroll-container.scss +4 -0
  126. data/source/components/scroll_container/scroll_container.js +24 -0
  127. data/source/components/section/section.scss +99 -0
  128. data/source/components/select/package.json +3 -0
  129. data/source/components/select/select.erb +21 -0
  130. data/source/components/select/select.js +35 -0
  131. data/source/components/select/select.scss +163 -0
  132. data/source/components/table/package.json +3 -0
  133. data/source/components/table/table.erb +16 -0
  134. data/source/components/table/table.js +351 -0
  135. data/source/components/table/table.scss +236 -0
  136. data/source/components/tablist/package.json +3 -0
  137. data/source/components/tablist/tablist.erb +13 -0
  138. data/source/components/tablist/tablist.js +246 -0
  139. data/source/components/tablist/tablist.scss +191 -0
  140. data/source/components/tablist/tablist_panel.erb +14 -0
  141. data/source/components/tablist/tablist_tab.erb +20 -0
  142. data/source/components/toggle/package.json +3 -0
  143. data/source/components/toggle/toggle.erb +11 -0
  144. data/source/components/toggle/toggle.js +211 -0
  145. data/source/components/toggle/toggle_container.erb +30 -0
  146. data/source/components/vertical_spacer/vertical-spacer.scss +3 -0
  147. data/source/components/vertical_stack/vertical-stack.scss +19 -0
  148. data/source/components/xray/package.json +3 -0
  149. data/source/components/xray/xray.erb +50 -0
  150. data/source/components/xray/xray.js +123 -0
  151. data/source/components/xray/xray.scss +79 -0
  152. data/source/foundation/app/app.js +15 -0
  153. data/source/foundation/app/package.json +3 -0
  154. data/source/pattern-library-demo.scss +13 -0
  155. data/source/pattern-library.scss +13 -0
  156. data/source/pattern_library.js +8 -0
  157. data/source/pattern_library_demo.js +8 -0
  158. data/source/structures/index.js +11 -0
  159. data/source/structures/sidebar/package.json +3 -0
  160. data/source/structures/sidebar/sidebar.js +69 -0
  161. data/source/structures/sidebar/sidebar.scss +79 -0
  162. data/source/utilities/builder/builder.js +138 -0
  163. data/source/utilities/builder/package.json +3 -0
  164. data/source/utilities/client/client.js +7 -0
  165. data/source/utilities/client/package.json +3 -0
  166. data/source/utilities/colors/colors.scss +112 -0
  167. data/source/utilities/defaults/defaults.scss +38 -0
  168. data/source/utilities/dom_cache/dom_cache.js +24 -0
  169. data/source/utilities/dom_cache/package.json +3 -0
  170. data/source/utilities/events/events.js +25 -0
  171. data/source/utilities/events/package.json +3 -0
  172. data/source/utilities/font_sizes/font-sizes.scss +85 -0
  173. data/source/utilities/foundation/a11y.scss +10 -0
  174. data/source/utilities/foundation/base.scss +29 -0
  175. data/source/utilities/foundation/icon.scss +114 -0
  176. data/source/utilities/foundation/layout.scss +67 -0
  177. data/source/utilities/foundation/page.scss +39 -0
  178. data/source/utilities/foundation/type.scss +208 -0
  179. data/source/utilities/functions/functions.scss +127 -0
  180. data/source/utilities/keycodes/keycodes.js +23 -0
  181. data/source/utilities/keycodes/package.json +3 -0
  182. data/source/utilities/markup/markup.js +90 -0
  183. data/source/utilities/markup/package.json +3 -0
  184. data/source/utilities/media/media.scss +172 -0
  185. data/source/utilities/mixins/mixins.scss +89 -0
  186. data/source/utilities/naming_convention/naming_convention.js +3 -0
  187. data/source/utilities/naming_convention/package.json +3 -0
  188. data/source/utilities/numbers/numbers.js +14 -0
  189. data/source/utilities/numbers/package.json +3 -0
  190. data/source/utilities/painting/package.json +3 -0
  191. data/source/utilities/painting/painting.js +7 -0
  192. data/source/utilities/pattern/package.json +3 -0
  193. data/source/utilities/pattern/pattern.js +50 -0
  194. data/source/utilities/query_string/package.json +3 -0
  195. data/source/utilities/query_string/query_string.js +24 -0
  196. data/source/utilities/template/package.json +3 -0
  197. data/source/utilities/template/template.js +10 -0
  198. data/source/utilities/text_range/package.json +3 -0
  199. data/source/utilities/text_range/text_range.js +30 -0
  200. data/source/utilities/ui_events/package.json +3 -0
  201. data/source/utilities/ui_events/ui_events.js +85 -0
  202. data/source/utilities/variables/variables.scss +18 -0
  203. data/source/utilities/z_indexes/z-indexes.scss +88 -0
  204. data/source/vendor/array_includes.js +28 -0
  205. data/source/vendor/highlight.js +1142 -0
  206. data/source/vendor/index.js +1 -0
  207. data/source/vendor/matrix.js +399 -0
  208. data/source/vendor/query_string.js +66 -0
  209. data/spec/assets/.eslintrc +9 -0
  210. data/spec/assets/spec_fixture.js +33 -0
  211. data/spec/assets/spec_helper.js +19 -0
  212. data/spec/lib/components/base_component_spec.rb +156 -0
  213. data/spec/lib/components_spec.rb +30 -0
  214. data/spec/lib/helpers/ui_helper_spec.rb +62 -0
  215. data/spec/lib/theme_spec.rb +25 -0
  216. data/spec/spec_helper.rb +15 -0
  217. data/tasks/gulp/.eslintrc +6 -0
  218. data/tasks/gulp/browser_sync.js +8 -0
  219. data/tasks/gulp/code_quality/scripts.js +10 -0
  220. data/tasks/gulp/config/index.js +116 -0
  221. data/tasks/gulp/minify/scripts.js +13 -0
  222. data/tasks/gulp/minify/styles.js +13 -0
  223. data/tasks/gulp/pattern_library/index.js +5 -0
  224. data/tasks/gulp/pattern_library/scripts.js +10 -0
  225. data/tasks/gulp/pattern_library/styles.js +10 -0
  226. data/tasks/gulp/scripts.js +8 -0
  227. data/tasks/gulp/spec/scripts.js +11 -0
  228. data/tasks/gulp/styles.js +17 -0
  229. data/tasks/gulp/utilities/babel/relative_require.js +22 -0
  230. data/tasks/gulp/utilities/babel/spec_helper.js +20 -0
  231. data/tasks/gulp/utilities/browserify_bundler.js +22 -0
  232. data/tasks/gulp/utilities/handle_errors.js +13 -0
  233. data/tasks/gulp/watch.js +9 -0
  234. data/tasks/rake/rspec.rake +7 -0
  235. data/tasks/rake/rubocop.rake +8 -0
  236. data/tasks/rake/templates.rake +50 -0
  237. metadata +470 -0
@@ -0,0 +1,1882 @@
1
+ @media screen and (max-width: 24.9375rem) {
2
+ .media__helpers--hide-before-small {
3
+ display: none; } }
4
+
5
+ @media screen and (min-width: 25.0625rem) {
6
+ .media__helpers--hide-after-small {
7
+ display: none; } }
8
+
9
+ .media__helpers--show-after-small {
10
+ display: none; }
11
+ @media screen and (min-width: 25.0625rem) {
12
+ .media__helpers--show-after-small {
13
+ display: block; } }
14
+
15
+ @media screen and (max-width: 37.4375rem) {
16
+ .media__helpers--hide-before-medium {
17
+ display: none; } }
18
+
19
+ @media screen and (min-width: 37.5625rem) {
20
+ .media__helpers--hide-after-medium {
21
+ display: none; } }
22
+
23
+ .media__helpers--show-after-medium {
24
+ display: none; }
25
+ @media screen and (min-width: 37.5625rem) {
26
+ .media__helpers--show-after-medium {
27
+ display: block; } }
28
+
29
+ @media screen and (max-width: 49.9375rem) {
30
+ .media__helpers--hide-before-large {
31
+ display: none; } }
32
+
33
+ @media screen and (min-width: 50.0625rem) {
34
+ .media__helpers--hide-after-large {
35
+ display: none; } }
36
+
37
+ .media__helpers--show-after-large {
38
+ display: none; }
39
+ @media screen and (min-width: 50.0625rem) {
40
+ .media__helpers--show-after-large {
41
+ display: block; } }
42
+
43
+ .helper--visually-hidden {
44
+ border: 0;
45
+ clip: rect(0 0 0 0);
46
+ height: 1px;
47
+ margin: -1px;
48
+ overflow: hidden;
49
+ padding: 0;
50
+ position: absolute;
51
+ width: 1px; }
52
+
53
+ html {
54
+ box-sizing: border-box; }
55
+
56
+ *,
57
+ *:before,
58
+ *:after {
59
+ box-sizing: inherit; }
60
+
61
+ body {
62
+ margin: 0;
63
+ padding: 0;
64
+ background-color: white;
65
+ min-height: 100vh; }
66
+
67
+ table {
68
+ border-collapse: collapse;
69
+ border-spacing: 0; }
70
+
71
+ .icon {
72
+ display: inline-block;
73
+ stroke-width: 2; }
74
+
75
+ .icon--medium {
76
+ height: 1.5rem;
77
+ width: 1.5rem; }
78
+
79
+ .icon--large {
80
+ height: 1.75rem;
81
+ width: 1.75rem; }
82
+
83
+ .icon--action {
84
+ height: 1.65rem;
85
+ width: 1.65rem; }
86
+
87
+ .icon--hamburger {
88
+ height: 1.65rem;
89
+ width: 2rem;
90
+ position: relative;
91
+ cursor: pointer;
92
+ opacity: 0.6;
93
+ top: 0.2em;
94
+ -webkit-transition: opacity 0.2s ease;
95
+ transition: opacity 0.2s ease; }
96
+ .icon--hamburger:hover {
97
+ opacity: 1; }
98
+ .icon--hamburger:before,
99
+ .icon--hamburger:after {
100
+ content: "";
101
+ display: block;
102
+ position: absolute;
103
+ height: 4px;
104
+ width: 100%;
105
+ border-radius: 2px;
106
+ background: #6e6f7a; }
107
+ .icon--hamburger:before {
108
+ top: 0; }
109
+ .icon--hamburger:after {
110
+ bottom: 0; }
111
+
112
+ .icon--hamburger__slice {
113
+ height: 4px;
114
+ width: 100%;
115
+ border-radius: 2px;
116
+ background: #6e6f7a;
117
+ position: absolute;
118
+ top: 50%;
119
+ left: 0;
120
+ margin-top: -2px; }
121
+
122
+ .icon--gray-darker {
123
+ fill: #9c9da5;
124
+ stroke: #9c9da5; }
125
+
126
+ .icon--close {
127
+ position: relative;
128
+ opacity: 0.6;
129
+ -webkit-transition: opacity 0.2s ease;
130
+ transition: opacity 0.2s ease;
131
+ cursor: pointer; }
132
+ .icon--close:hover {
133
+ opacity: 1; }
134
+ .icon--close:before,
135
+ .icon--close:after {
136
+ content: "";
137
+ display: block;
138
+ position: absolute;
139
+ height: 4px;
140
+ width: 140%;
141
+ border-radius: 2px;
142
+ background: #6e6f7a;
143
+ top: 50%;
144
+ left: 50%;
145
+ margin-left: -70%;
146
+ margin-top: -2px; }
147
+ .icon--close:before {
148
+ -webkit-transform: rotate(45deg);
149
+ transform: rotate(45deg); }
150
+ .icon--close:after {
151
+ -webkit-transform: rotate(-45deg);
152
+ transform: rotate(-45deg); }
153
+
154
+ .icon--disclosure {
155
+ height: 0.5rem;
156
+ width: 0.5rem;
157
+ -webkit-transform: rotate(45deg) translateY(-50%);
158
+ transform: rotate(45deg) translateY(-50%);
159
+ border-right: 2px solid #6e6f7a;
160
+ border-bottom: 2px solid #6e6f7a;
161
+ margin-left: 0.25rem; }
162
+
163
+ .grid {
164
+ display: -webkit-box;
165
+ display: -webkit-flex;
166
+ display: -ms-flexbox;
167
+ display: flex; }
168
+
169
+ .grid--vertically-centered {
170
+ -webkit-box-align: center;
171
+ -webkit-align-items: center;
172
+ -ms-flex-align: center;
173
+ align-items: center; }
174
+
175
+ .grid--align-right {
176
+ -webkit-box-pack: end;
177
+ -webkit-justify-content: flex-end;
178
+ -ms-flex-pack: end;
179
+ justify-content: flex-end; }
180
+
181
+ .grid--outside-spacing {
182
+ margin: 1rem 0;
183
+ padding: 0 1rem; }
184
+
185
+ .grid--space-between {
186
+ -webkit-box-pack: justify;
187
+ -webkit-justify-content: space-between;
188
+ -ms-flex-pack: justify;
189
+ justify-content: space-between; }
190
+ .grid--space-between > .grid__item {
191
+ -webkit-box-flex: 0;
192
+ -webkit-flex: 0 1 auto;
193
+ -ms-flex: 0 1 auto;
194
+ flex: 0 1 auto; }
195
+
196
+ .grid__item {
197
+ padding: 0 0.5rem;
198
+ -webkit-box-flex: 1;
199
+ -webkit-flex: 1 1 0%;
200
+ -ms-flex: 1 1 0%;
201
+ flex: 1 1 0%;
202
+ display: -webkit-box;
203
+ display: -webkit-flex;
204
+ display: -ms-flexbox;
205
+ display: flex;
206
+ -webkit-box-align: center;
207
+ -webkit-align-items: center;
208
+ -ms-flex-align: center;
209
+ align-items: center; }
210
+ .grid__item:first-child {
211
+ padding-left: 0; }
212
+ .grid__item:last-child {
213
+ padding-right: 0; }
214
+
215
+ .grid__item--no-flex {
216
+ -webkit-box-flex: 0;
217
+ -webkit-flex: 0 0 auto;
218
+ -ms-flex: 0 0 auto;
219
+ flex: 0 0 auto; }
220
+
221
+ .grid__item--half {
222
+ -webkit-box-flex: 0;
223
+ -webkit-flex: 0 0 50%;
224
+ -ms-flex: 0 0 50%;
225
+ flex: 0 0 50%; }
226
+
227
+ .content {
228
+ padding: 0 1rem;
229
+ margin: 1rem 0; }
230
+
231
+ .content--extra-vertical-spacing {
232
+ margin: 3rem 0; }
233
+
234
+ body {
235
+ background-color: #e3e4e6; }
236
+
237
+ .page {
238
+ height: 100vh;
239
+ max-height: 100vh;
240
+ display: -webkit-box;
241
+ display: -webkit-flex;
242
+ display: -ms-flexbox;
243
+ display: flex; }
244
+
245
+ .page__content,
246
+ .page__sidebar {
247
+ position: relative; }
248
+
249
+ .page__content {
250
+ width: 100%;
251
+ max-width: 100%;
252
+ display: -webkit-box;
253
+ display: -webkit-flex;
254
+ display: -ms-flexbox;
255
+ display: flex;
256
+ -webkit-box-flex: 1;
257
+ -webkit-flex: 1 1 0px;
258
+ -ms-flex: 1 1 0px;
259
+ flex: 1 1 0px;
260
+ z-index: 10;
261
+ background: white; }
262
+ .page__content > * {
263
+ -webkit-box-flex: 0;
264
+ -webkit-flex: 0 0 100%;
265
+ -ms-flex: 0 0 100%;
266
+ flex: 0 0 100%; }
267
+
268
+ .page__sidebar {
269
+ z-index: 20;
270
+ -webkit-box-flex: 0;
271
+ -webkit-flex: 0 0 auto;
272
+ -ms-flex: 0 0 auto;
273
+ flex: 0 0 auto; }
274
+
275
+ body {
276
+ -webkit-text-size-adjust: 100%;
277
+ -ms-text-size-adjust: 100%;
278
+ text-size-adjust: 100%;
279
+ color: #33363a;
280
+ font-family: Source Sans Pro, Helvetica Neue, Helvetica, Arial, sans-serif; }
281
+
282
+ button,
283
+ input {
284
+ font-family: Source Sans Pro, Helvetica Neue, Helvetica, Arial, sans-serif; }
285
+
286
+ h1, h2, h3, h4, h5, h6, p, .type {
287
+ margin: 0;
288
+ font-size: inherit; }
289
+
290
+ .type--heading-1 {
291
+ font-weight: 400;
292
+ line-height: 1;
293
+ color: #6e6f7a;
294
+ font-size: 2.25rem; }
295
+
296
+ .type--heading-2 {
297
+ font-weight: 400;
298
+ color: #6e6f7a;
299
+ font-size: 1.875rem; }
300
+
301
+ .type--heading-3 {
302
+ font-weight: 400;
303
+ line-height: 1;
304
+ color: #6e6f7a;
305
+ font-size: 1.5rem; }
306
+
307
+ .type--heading-4 {
308
+ margin: 1rem auto 0.5rem;
309
+ font-weight: 600;
310
+ text-transform: uppercase;
311
+ color: #d1d3d7;
312
+ font-size: 0.875rem; }
313
+
314
+ .type--heading-5 {
315
+ margin: 1rem auto 0.5rem;
316
+ font-weight: 400;
317
+ color: #6e6f7a;
318
+ font-size: 1.25rem; }
319
+ .type--heading-4 + .type--heading-5 {
320
+ margin-top: 0.5rem; }
321
+ .type--paragraph + .type--heading-5,
322
+ .user-type + .type--heading-5 {
323
+ margin-top: 1.5rem; }
324
+
325
+ .type--heading-bordered {
326
+ padding-bottom: 1rem;
327
+ margin-bottom: 1.3rem;
328
+ border-bottom: 2px solid #e3e4e6; }
329
+ .type--heading-bordered + .section {
330
+ margin-top: -1rem; }
331
+
332
+ .type--paragraph {
333
+ font-size: 1.25rem;
334
+ line-height: 1.3;
335
+ font-weight: 300;
336
+ color: #1e1e1f; }
337
+ .type--paragraph + p {
338
+ margin-top: 0.75rem; }
339
+ .type--paragraph > a {
340
+ display: inline-block;
341
+ text-decoration: none;
342
+ color: #627990;
343
+ font-weight: normal; }
344
+ .type--paragraph > a > span {
345
+ border-bottom: 2px solid #8cc2fb; }
346
+ .type--paragraph > a > code {
347
+ color: #627990;
348
+ background-color: #e6ecf4;
349
+ border-color: rgba(98, 121, 144, 0.15); }
350
+ .type--paragraph code {
351
+ font-family: Consolas, monospace;
352
+ display: inline-block;
353
+ padding: 0.05em 0.25em;
354
+ font-size: 0.8em;
355
+ background-color: #f2f2f3;
356
+ color: #6e6f7a;
357
+ border: 1px solid #e3e4e6;
358
+ border-radius: 4px; }
359
+
360
+ .type--paragraph-small {
361
+ font-size: 1.125rem; }
362
+
363
+ .type-container h1 {
364
+ font-weight: 400;
365
+ line-height: 1;
366
+ color: #6e6f7a;
367
+ font-size: 2.25rem; }
368
+
369
+ .type-container h2 {
370
+ font-weight: 400;
371
+ color: #6e6f7a;
372
+ font-size: 1.875rem; }
373
+
374
+ .type-container h3 {
375
+ font-weight: 400;
376
+ line-height: 1;
377
+ color: #6e6f7a;
378
+ font-size: 1.5rem; }
379
+
380
+ .type-container h4 {
381
+ margin: 1rem auto 0.5rem;
382
+ font-weight: 600;
383
+ text-transform: uppercase;
384
+ color: #d1d3d7;
385
+ font-size: 0.875rem; }
386
+
387
+ .type-container h5 {
388
+ margin: 1rem auto 0.5rem;
389
+ font-weight: 400;
390
+ color: #6e6f7a;
391
+ font-size: 1.25rem; }
392
+
393
+ .type-container p {
394
+ font-size: 1.25rem;
395
+ line-height: 1.3;
396
+ font-weight: 300;
397
+ color: #1e1e1f; }
398
+ .type-container p + p {
399
+ margin-top: 0.75rem; }
400
+ .type-container p > a {
401
+ display: inline-block;
402
+ text-decoration: none;
403
+ color: #627990;
404
+ font-weight: normal; }
405
+ .type-container p > a > span {
406
+ border-bottom: 2px solid #8cc2fb; }
407
+ .type-container p > a > code {
408
+ color: #627990;
409
+ background-color: #e6ecf4;
410
+ border-color: rgba(98, 121, 144, 0.15); }
411
+ .type-container p code {
412
+ font-family: Consolas, monospace;
413
+ display: inline-block;
414
+ padding: 0.05em 0.25em;
415
+ font-size: 0.8em;
416
+ background-color: #f2f2f3;
417
+ color: #6e6f7a;
418
+ border: 1px solid #e3e4e6;
419
+ border-radius: 4px; }
420
+
421
+ .type-container--small p {
422
+ font-size: 1.125rem; }
423
+
424
+ .type--display {
425
+ font-size: 1.3rem;
426
+ margin-top: 0;
427
+ font-weight: 500;
428
+ line-height: 1; }
429
+
430
+ .type--margin-bottom {
431
+ margin-bottom: 1rem; }
432
+
433
+ .type--subdued {
434
+ color: #d1d3d7; }
435
+
436
+ .type--code {
437
+ font-family: Consolas, monospace;
438
+ font-size: 0.95em;
439
+ word-wrap: break-word; }
440
+
441
+ ::-moz-selection {
442
+ background: #b7d6f6; }
443
+
444
+ ::selection {
445
+ background: #b7d6f6; }
446
+
447
+ .avatar {
448
+ z-index: 10;
449
+ position: relative;
450
+ -webkit-box-flex: 0;
451
+ -webkit-flex: 0 0 auto;
452
+ -ms-flex: 0 0 auto;
453
+ flex: 0 0 auto;
454
+ display: inline-block;
455
+ background-color: #f1f1f1;
456
+ border-radius: 4px;
457
+ overflow: hidden;
458
+ font-size: 1.25rem; }
459
+
460
+ .avatar__initials {
461
+ z-index: 10;
462
+ position: absolute;
463
+ top: 50%;
464
+ left: 0;
465
+ width: 100%;
466
+ -webkit-transform: translateY(-50%);
467
+ transform: translateY(-50%);
468
+ color: #cfcfcf;
469
+ font-size: 1em;
470
+ line-height: 1;
471
+ text-align: center;
472
+ text-transform: uppercase; }
473
+
474
+ .avatar__image {
475
+ z-index: 20;
476
+ position: relative;
477
+ height: 3rem;
478
+ width: 3rem;
479
+ opacity: 0;
480
+ -webkit-transition: opacity 0.3s ease;
481
+ transition: opacity 0.3s ease;
482
+ background-size: cover;
483
+ background-position: center center;
484
+ background-repeat: no-repeat;
485
+ overflow: hidden; }
486
+
487
+ .avatar__image--is-visible {
488
+ opacity: 1; }
489
+
490
+ .avatar__container {
491
+ display: -webkit-inline-box;
492
+ display: -webkit-inline-flex;
493
+ display: -ms-inline-flexbox;
494
+ display: inline-flex;
495
+ -webkit-flex-wrap: wrap;
496
+ -ms-flex-wrap: wrap;
497
+ flex-wrap: wrap;
498
+ overflow: hidden;
499
+ margin-right: -0.5rem !important;
500
+ margin-bottom: -0.5rem !important;
501
+ max-width: 10.5rem; }
502
+ .avatar__container > .avatar {
503
+ margin-right: 0.5rem;
504
+ margin-bottom: 0.5rem; }
505
+
506
+ .avatar__container--large {
507
+ max-width: 14rem; }
508
+
509
+ .badge {
510
+ position: relative;
511
+ -webkit-box-flex: 0;
512
+ -webkit-flex: 0 0 auto;
513
+ -ms-flex: 0 0 auto;
514
+ flex: 0 0 auto;
515
+ display: inline-block;
516
+ padding: 0.15em 0.5em 0.25em;
517
+ border-radius: 4px;
518
+ background-color: #f2f2f3;
519
+ font-size: 0.75em;
520
+ line-height: 1.3;
521
+ vertical-align: middle;
522
+ color: #9c9da5; }
523
+
524
+ .badge--warning {
525
+ background-color: #fdf7af;
526
+ color: #857e32; }
527
+
528
+ .badge--new {
529
+ background-color: #b7d6f6;
530
+ color: #627990; }
531
+
532
+ .badge--secret {
533
+ background-color: #6e6f7a;
534
+ color: #e3e4e6; }
535
+
536
+ .badge--code {
537
+ padding-bottom: 0;
538
+ padding-top: 0.2em; }
539
+
540
+ .badge--standalone {
541
+ font-size: 1rem; }
542
+
543
+ .badge__container {
544
+ display: -webkit-inline-box;
545
+ display: -webkit-inline-flex;
546
+ display: -ms-inline-flexbox;
547
+ display: inline-flex;
548
+ -webkit-flex-wrap: wrap;
549
+ -ms-flex-wrap: wrap;
550
+ flex-wrap: wrap;
551
+ overflow: hidden;
552
+ margin-right: -0.5rem !important;
553
+ margin-bottom: -0.5rem !important; }
554
+ .badge__container > .badge {
555
+ margin-right: 0.5rem;
556
+ margin-bottom: 0.5rem; }
557
+
558
+ .docks-button {
559
+ display: -webkit-inline-box;
560
+ display: -webkit-inline-flex;
561
+ display: -ms-inline-flexbox;
562
+ display: inline-flex;
563
+ -webkit-box-align: center;
564
+ -webkit-align-items: center;
565
+ -ms-flex-align: center;
566
+ align-items: center;
567
+ -webkit-box-pack: center;
568
+ -webkit-justify-content: center;
569
+ -ms-flex-pack: center;
570
+ justify-content: center;
571
+ padding: 0 0.75rem;
572
+ border-radius: 4px;
573
+ background-color: #f2f2f3;
574
+ border: none;
575
+ cursor: pointer;
576
+ opacity: 1;
577
+ -webkit-transition: opacity 0.3s ease;
578
+ transition: opacity 0.3s ease;
579
+ font-size: 1.125rem;
580
+ line-height: 2.125rem;
581
+ color: #9c9da5;
582
+ vertical-align: middle;
583
+ text-decoration: none;
584
+ white-space: nowrap; }
585
+ .docks-button:focus,
586
+ .docks-button:active {
587
+ background-color: #e3e4e6;
588
+ outline: none; }
589
+ .docks-button > *:first-child {
590
+ margin-right: 0.5rem; }
591
+
592
+ .docks-button--dark {
593
+ background-color: #d1d3d7;
594
+ color: #6e6f7a; }
595
+ .docks-button--dark:focus,
596
+ .docks-button--dark:active {
597
+ background-color: #d1d3d7;
598
+ color: #6e6f7a; }
599
+
600
+ .docks-button--is-disabled {
601
+ opacity: 0.3; }
602
+
603
+ .docks-button__container {
604
+ display: -webkit-inline-box;
605
+ display: -webkit-inline-flex;
606
+ display: -ms-inline-flexbox;
607
+ display: inline-flex;
608
+ -webkit-flex-wrap: wrap;
609
+ -ms-flex-wrap: wrap;
610
+ flex-wrap: wrap;
611
+ margin-right: -0.5rem !important;
612
+ margin-bottom: -0.5rem !important; }
613
+ .docks-button__container:after {
614
+ content: "";
615
+ display: table; }
616
+ .docks-button__container > * {
617
+ -webkit-box-flex: 0;
618
+ -webkit-flex: 0 0 auto;
619
+ -ms-flex: 0 0 auto;
620
+ flex: 0 0 auto;
621
+ margin-right: 0.5rem;
622
+ margin-bottom: 0.5rem; }
623
+
624
+ .docks-button__container--fill-width {
625
+ display: -webkit-box;
626
+ display: -webkit-flex;
627
+ display: -ms-flexbox;
628
+ display: flex;
629
+ -webkit-flex-wrap: wrap;
630
+ -ms-flex-wrap: wrap;
631
+ flex-wrap: wrap;
632
+ -webkit-box-align: start;
633
+ -webkit-align-items: flex-start;
634
+ -ms-flex-align: start;
635
+ align-items: flex-start; }
636
+ .docks-button__container--fill-width .docks-button,
637
+ .docks-button__container--fill-width > *:not(.docks-button) {
638
+ display: -webkit-box;
639
+ display: -webkit-flex;
640
+ display: -ms-flexbox;
641
+ display: flex;
642
+ -webkit-box-flex: 1;
643
+ -webkit-flex: 1 0 0%;
644
+ -ms-flex: 1 0 0%;
645
+ flex: 1 0 0%;
646
+ min-width: -webkit-min-content;
647
+ min-width: -moz-min-content;
648
+ min-width: min-content; }
649
+
650
+ .docks-button__segmented-container {
651
+ display: -webkit-inline-box;
652
+ display: -webkit-inline-flex;
653
+ display: -ms-inline-flexbox;
654
+ display: inline-flex; }
655
+ .docks-button__segmented-container > .docks-button {
656
+ border-radius: 0; }
657
+ .docks-button__segmented-container > .docks-button:not(:first-child) {
658
+ border-left: none; }
659
+ .docks-button__segmented-container > .docks-button:first-child {
660
+ border-radius: 4px 0 0 4px; }
661
+ .docks-button__segmented-container > .docks-button:last-child {
662
+ border-radius: 0 4px 4px 0; }
663
+
664
+ .card {
665
+ background-color: white;
666
+ border-radius: 4px;
667
+ overflow: hidden; }
668
+
669
+ .code-block {
670
+ margin: 1rem 0;
671
+ overflow: hidden;
672
+ background: #f2f2f3;
673
+ border-radius: 4px; }
674
+ .code-block .docks-button {
675
+ display: none; }
676
+
677
+ .code-block--condensed {
678
+ margin-top: 0.5rem; }
679
+ .code-block--condensed .code-block__code {
680
+ padding-bottom: 0.5rem;
681
+ font-size: 0.875rem; }
682
+ .code-block--condensed:not(.code-block--with-header) .code-block__code {
683
+ padding-top: 0.5rem; }
684
+
685
+ .code-block--full-width {
686
+ margin-right: 0;
687
+ margin-left: 0;
688
+ border-radius: 0; }
689
+ .content .code-block--full-width {
690
+ margin-left: -1rem;
691
+ margin-right: -1rem; }
692
+
693
+ .code-block--is-hidden:not(.code-block--with-demo) .code-block__toggler {
694
+ background-color: #f2f2f3; }
695
+
696
+ .code-block--is-hidden .code-block__content {
697
+ height: 0; }
698
+
699
+ .code-block__actions {
700
+ display: -webkit-box;
701
+ display: -webkit-flex;
702
+ display: -ms-flexbox;
703
+ display: flex;
704
+ -webkit-box-align: center;
705
+ -webkit-align-items: center;
706
+ -ms-flex-align: center;
707
+ align-items: center; }
708
+
709
+ .code-block__header {
710
+ display: -webkit-box;
711
+ display: -webkit-flex;
712
+ display: -ms-flexbox;
713
+ display: flex;
714
+ -webkit-box-pack: justify;
715
+ -webkit-justify-content: space-between;
716
+ -ms-flex-pack: justify;
717
+ justify-content: space-between;
718
+ -webkit-box-align: center;
719
+ -webkit-align-items: center;
720
+ -ms-flex-align: center;
721
+ align-items: center;
722
+ padding: 0.5rem 1rem;
723
+ -webkit-box-flex: 0 !important;
724
+ -webkit-flex: 0 0 auto !important;
725
+ -ms-flex: 0 0 auto !important;
726
+ flex: 0 0 auto !important;
727
+ background: #f2f2f3; }
728
+ .code-block__header .select,
729
+ .code-block__header .tablist {
730
+ -webkit-transition: -webkit-transform 0.2s ease;
731
+ transition: transform 0.2s ease; }
732
+ .code-block__header .tablist {
733
+ padding: 0; }
734
+
735
+ .code-block__code-container {
736
+ overflow: auto;
737
+ max-height: 100%; }
738
+
739
+ .code-block__toggler {
740
+ background-color: #e3e4e6;
741
+ width: 100%;
742
+ border: none;
743
+ display: -webkit-box;
744
+ display: -webkit-flex;
745
+ display: -ms-flexbox;
746
+ display: flex;
747
+ -webkit-box-align: center;
748
+ -webkit-align-items: center;
749
+ -ms-flex-align: center;
750
+ align-items: center;
751
+ -webkit-box-pack: center;
752
+ -webkit-justify-content: center;
753
+ -ms-flex-pack: center;
754
+ justify-content: center;
755
+ font-size: 1.125rem;
756
+ padding: 0.5rem 0;
757
+ color: #9c9da5;
758
+ -webkit-transition: background-color 0.2s ease;
759
+ transition: background-color 0.2s ease; }
760
+ .code-block__toggler:focus,
761
+ .code-block__toggler:active {
762
+ background-color: #e3e4e6;
763
+ outline: none; }
764
+ .code-block__toggler > .icon {
765
+ margin-right: 0.5rem;
766
+ opacity: 0.5; }
767
+
768
+ .code-block__content {
769
+ overflow: hidden;
770
+ -webkit-transition: height 0.3s ease;
771
+ transition: height 0.3s ease;
772
+ max-height: 15rem; }
773
+
774
+ .code-block__code {
775
+ margin: 0;
776
+ display: inline-block;
777
+ padding: 0.5rem 1rem 1rem;
778
+ font-size: 1rem;
779
+ line-height: 1.3; }
780
+ .code-block__code:focus {
781
+ outline: none; }
782
+ .code-block:not(.code-block--with-header):not(.code-block--condensed):not(.code-block--with-demo) .code-block__code {
783
+ padding-top: 1rem; }
784
+ .code-block--with-demo:not(.code-block--with-header) .code-block__code {
785
+ padding-top: 0; }
786
+ .code-block__code > code {
787
+ font-family: Consolas, monospace;
788
+ padding: 0;
789
+ background-color: transparent;
790
+ font-size: inherit !important;
791
+ border: none; }
792
+
793
+ .hljs-value,
794
+ .hljs-string,
795
+ .hljs-preprocessor {
796
+ color: #4196df; }
797
+
798
+ .hljs-symbol {
799
+ color: #1a5cab; }
800
+
801
+ .hljs-at_rule,
802
+ .hljs-attribute,
803
+ .hljs-keyword {
804
+ color: #4a4a4a; }
805
+
806
+ .hljs-comment {
807
+ color: rgba(177, 177, 177, 0.5);
808
+ font-style: italic; }
809
+
810
+ .hljs-tag,
811
+ .hljs-variable {
812
+ color: #b1b1b1; }
813
+
814
+ .code-block--with-demo .code-block__content {
815
+ padding-top: 0; }
816
+ .code-block--with-demo .code-block__content > .code-block__header {
817
+ padding-top: 0; }
818
+
819
+ .code-block__demo {
820
+ padding: 1rem; }
821
+
822
+ .code-block__demo__content {
823
+ display: none; }
824
+
825
+ .code-block__iframe {
826
+ height: 10em;
827
+ background-color: white;
828
+ border: none;
829
+ width: 100%;
830
+ margin: 0;
831
+ border-radius: 4px; }
832
+
833
+ .demo {
834
+ background-color: white;
835
+ min-height: 10rem; }
836
+
837
+ .demo__section {
838
+ position: relative;
839
+ box-sizing: border-box;
840
+ overflow: hidden;
841
+ background-color: white; }
842
+ .demo__section ~ .demo__section {
843
+ border-top: 1px solid #f1f1f1; }
844
+
845
+ .demo__header {
846
+ box-sizing: border-box;
847
+ margin-right: -0.5rem;
848
+ padding: 0.5rem 1rem 0;
849
+ text-align: right; }
850
+
851
+ .exploded--is-being-initialized .exploded__pane {
852
+ -webkit-transition: -webkit-transform 0.25s ease;
853
+ transition: transform 0.25s ease; }
854
+
855
+ .exploded__source,
856
+ .exploded__structure {
857
+ padding: 1rem 2rem; }
858
+
859
+ .exploded__structure {
860
+ position: relative;
861
+ -webkit-perspective: 2000px;
862
+ perspective: 2000px;
863
+ -webkit-transform-style: preserve-3d;
864
+ transform-style: preserve-3d;
865
+ cursor: pointer; }
866
+
867
+ .exploded__structure__content {
868
+ position: relative;
869
+ z-index: 0;
870
+ margin: 0 auto; }
871
+
872
+ .exploded__control-container {
873
+ display: -webkit-box;
874
+ display: -webkit-flex;
875
+ display: -ms-flexbox;
876
+ display: flex;
877
+ -webkit-box-align: end;
878
+ -webkit-align-items: flex-end;
879
+ -ms-flex-align: end;
880
+ align-items: flex-end;
881
+ margin: 3rem -1rem 0; }
882
+
883
+ .exploded__control {
884
+ -webkit-box-flex: 1;
885
+ -webkit-flex: 1 1 0;
886
+ -ms-flex: 1 1 0;
887
+ flex: 1 1 0;
888
+ margin-left: 1rem; }
889
+ .exploded__control:first-child {
890
+ margin-left: 0; }
891
+
892
+ .exploded__pane {
893
+ position: absolute;
894
+ box-sizing: content-box;
895
+ border-radius: 4px;
896
+ background-color: rgba(156, 157, 165, 0.6);
897
+ border: 1px solid rgba(227, 228, 230, 0.5);
898
+ -webkit-transition: background 0.3s ease;
899
+ transition: background 0.3s ease; }
900
+ .exploded__pane:hover {
901
+ background-color: #b7d6f6; }
902
+
903
+ .exploded__pane--is-selected, .exploded__pane--is-selected:hover {
904
+ background: #8cc2fb;
905
+ opacity: 1; }
906
+
907
+ .field {
908
+ border-radius: 4px;
909
+ background-color: #d1d3d7;
910
+ display: -webkit-box;
911
+ display: -webkit-flex;
912
+ display: -ms-flexbox;
913
+ display: flex;
914
+ -webkit-box-align: center;
915
+ -webkit-align-items: center;
916
+ -ms-flex-align: center;
917
+ align-items: center;
918
+ max-width: 100%;
919
+ padding: 0 0.5rem; }
920
+
921
+ .field--switch {
922
+ padding: 0;
923
+ background-color: transparent;
924
+ position: relative; }
925
+ .field--switch > .label {
926
+ margin: 0;
927
+ padding-left: 2.25rem;
928
+ position: relative;
929
+ line-height: 1.5rem;
930
+ color: #6e6f7a; }
931
+ .field--switch > .label:after {
932
+ content: '';
933
+ display: block;
934
+ height: 1.05rem;
935
+ width: 0.45rem;
936
+ position: absolute;
937
+ top: 0.75rem;
938
+ left: 0.75rem;
939
+ border-bottom: 2px solid #627990;
940
+ border-right: 2px solid #627990;
941
+ -webkit-transform: translate(-50%, -60%) rotate(45deg);
942
+ transform: translate(-50%, -60%) rotate(45deg);
943
+ display: none; }
944
+ .field--switch > .label:before {
945
+ content: '';
946
+ display: block;
947
+ height: 1.5rem;
948
+ width: 1.5rem;
949
+ background: #e3e4e6;
950
+ position: absolute;
951
+ top: 0;
952
+ left: 0;
953
+ border-radius: 4px; }
954
+ .field--switch > .field__switch:checked + .label:before {
955
+ background: #b7d6f6; }
956
+ .field--switch > .field__switch:checked + .label:after {
957
+ display: block; }
958
+ .field--switch > .field__switch {
959
+ position: absolute;
960
+ top: 0;
961
+ left: 0;
962
+ opacity: 0.1; }
963
+ .field--switch + .field--switch {
964
+ margin-top: 1rem; }
965
+
966
+ .field__icon {
967
+ -webkit-box-flex: 0;
968
+ -webkit-flex: 0 0 auto;
969
+ -ms-flex: 0 0 auto;
970
+ flex: 0 0 auto;
971
+ font-size: 0; }
972
+ .field__icon > .icon {
973
+ fill: #9c9da5;
974
+ stroke: #9c9da5; }
975
+
976
+ .field__input {
977
+ -webkit-box-flex: 1;
978
+ -webkit-flex: 1 1 auto;
979
+ -ms-flex: 1 1 auto;
980
+ flex: 1 1 auto;
981
+ margin: 0;
982
+ padding: 0;
983
+ background: transparent;
984
+ border: none;
985
+ line-height: 2.125rem;
986
+ font-size: 1.1rem;
987
+ font-family: Source Sans Pro, Helvetica Neue, Helvetica, Arial, sans-serif; }
988
+ .field__input::-webkit-input-placeholder {
989
+ color: rgba(156, 157, 165, 0.5); }
990
+ .field__input::-moz-placeholder {
991
+ color: rgba(156, 157, 165, 0.5); }
992
+ .field__input:-ms-input-placeholder {
993
+ color: rgba(156, 157, 165, 0.5); }
994
+ .field__input::placeholder {
995
+ color: rgba(156, 157, 165, 0.5); }
996
+ .field__input:focus {
997
+ outline: none; }
998
+
999
+ .page-header {
1000
+ background-color: #e3e4e6;
1001
+ padding: 1rem;
1002
+ padding-bottom: 1rem;
1003
+ min-height: 4.125rem; }
1004
+ .page-header .type--heading-1 {
1005
+ margin: -0.5em 0; }
1006
+
1007
+ .inline-group {
1008
+ display: -webkit-inline-box;
1009
+ display: -webkit-inline-flex;
1010
+ display: -ms-inline-flexbox;
1011
+ display: inline-flex;
1012
+ -webkit-flex-wrap: wrap;
1013
+ -ms-flex-wrap: wrap;
1014
+ flex-wrap: wrap;
1015
+ -webkit-box-align: center;
1016
+ -webkit-align-items: center;
1017
+ -ms-flex-align: center;
1018
+ align-items: center;
1019
+ margin-right: -0.5rem;
1020
+ margin-bottom: -0.5rem; }
1021
+
1022
+ .inline-group__item {
1023
+ margin-right: 0.5rem;
1024
+ margin-bottom: 0.5rem; }
1025
+
1026
+ .list {
1027
+ padding: 0;
1028
+ margin: 1rem 0 2rem;
1029
+ list-style: none; }
1030
+ .list .type--heading {
1031
+ padding-left: 1rem;
1032
+ padding-right: 1rem; }
1033
+ .popover .list {
1034
+ margin-bottom: 1rem; }
1035
+
1036
+ .list__item {
1037
+ display: block;
1038
+ padding: 0.25rem 1rem;
1039
+ cursor: pointer;
1040
+ text-decoration: none;
1041
+ color: #6e6f7a;
1042
+ white-space: nowrap;
1043
+ text-overflow: ellipsis;
1044
+ overflow: hidden; }
1045
+ .list__item:hover,
1046
+ .list__item:focus {
1047
+ outline: none;
1048
+ background: #f2f2f3; }
1049
+ .list__item:active {
1050
+ background-color: #b7d6f6;
1051
+ color: #627990; }
1052
+
1053
+ .list__item--is-active,
1054
+ .list__item--is-active:hover,
1055
+ .list__item--is-active:focus {
1056
+ background-color: #b7d6f6;
1057
+ color: #627990; }
1058
+
1059
+ .list__item--indented {
1060
+ padding-left: calc(1rem + 2ch);
1061
+ position: relative; }
1062
+ .list__item--indented:before {
1063
+ content: "";
1064
+ display: block;
1065
+ position: absolute;
1066
+ left: calc(1rem + 1ch);
1067
+ top: 0;
1068
+ height: 100%;
1069
+ width: 2px;
1070
+ background: rgba(30, 30, 31, 0.07); }
1071
+ .list__item--indented:last-child:before {
1072
+ height: 85%; }
1073
+ .list__item:not(.list__item--indented) + .list__item--indented:before {
1074
+ top: 15%;
1075
+ height: 85%; }
1076
+
1077
+ .link-list {
1078
+ padding: 0;
1079
+ margin: 0;
1080
+ list-style: none;
1081
+ display: -webkit-box;
1082
+ display: -webkit-flex;
1083
+ display: -ms-flexbox;
1084
+ display: flex;
1085
+ -webkit-flex-wrap: wrap;
1086
+ -ms-flex-wrap: wrap;
1087
+ flex-wrap: wrap; }
1088
+ .link-list > li {
1089
+ position: relative;
1090
+ -webkit-box-flex: 0;
1091
+ -webkit-flex: 0 0 auto;
1092
+ -ms-flex: 0 0 auto;
1093
+ flex: 0 0 auto; }
1094
+ .link-list > li:after {
1095
+ content: "";
1096
+ position: absolute;
1097
+ top: 10%;
1098
+ right: -1px;
1099
+ -webkit-transform: rotate(15deg);
1100
+ transform: rotate(15deg);
1101
+ display: block;
1102
+ height: 80%;
1103
+ border-right: 2px solid rgba(110, 111, 122, 0.1); }
1104
+ .link-list > li:last-child:after {
1105
+ display: none;
1106
+ margin-right: 0; }
1107
+
1108
+ .link-list__item {
1109
+ position: relative;
1110
+ display: block;
1111
+ cursor: pointer;
1112
+ padding: 0.25rem 0.5rem;
1113
+ -webkit-appearance: none;
1114
+ -moz-appearance: none;
1115
+ background: none;
1116
+ border: none;
1117
+ opacity: 0.6;
1118
+ font-size: 1em;
1119
+ line-height: 1;
1120
+ color: #9c9da5;
1121
+ -webkit-transition: opacity 0.25s ease;
1122
+ transition: opacity 0.25s ease; }
1123
+ .link-list__item:hover,
1124
+ .link-list__item:focus {
1125
+ opacity: 1;
1126
+ outline: none; }
1127
+
1128
+ .unstyled-list {
1129
+ margin: 0;
1130
+ padding: 0;
1131
+ list-style: none; }
1132
+ .unstyled-list > li {
1133
+ margin: 2rem 0; }
1134
+ .unstyled-list > li:first-child {
1135
+ margin-top: 0; }
1136
+
1137
+ .details-sheet {
1138
+ max-width: 90%;
1139
+ position: fixed;
1140
+ top: 50%;
1141
+ left: 50%;
1142
+ -webkit-transform: translate(-50%, -50%);
1143
+ transform: translate(-50%, -50%);
1144
+ background-color: white;
1145
+ border-radius: 0.4rem;
1146
+ box-shadow: 0 0 10px rgba(30, 30, 31, 0.3);
1147
+ z-index: 20;
1148
+ display: none; }
1149
+
1150
+ .details-sheet--is-active {
1151
+ display: block; }
1152
+
1153
+ .details-sheet__overlay {
1154
+ background: rgba(30, 30, 31, 0.9);
1155
+ position: absolute;
1156
+ top: 0;
1157
+ bottom: 0;
1158
+ right: 0;
1159
+ left: 0;
1160
+ z-index: 19;
1161
+ display: none; }
1162
+
1163
+ .details-sheet__overlay--is-active {
1164
+ display: block; }
1165
+
1166
+ .details-sheet__section {
1167
+ padding: 1rem; }
1168
+ .details-sheet__section + .details-sheet__section {
1169
+ border-top: 1px solid; }
1170
+
1171
+ .details-sheet__name {
1172
+ display: inline-block;
1173
+ padding: 0.1rem 0.25em;
1174
+ border-radius: 0.25em;
1175
+ color: #37393c;
1176
+ font-size: 1.2em;
1177
+ font-family: Consolas, monospace;
1178
+ margin: 0; }
1179
+
1180
+ .details-sheet__subtitle {
1181
+ margin: 0 0 0.5rem;
1182
+ font-size: 0.6rem;
1183
+ text-transform: uppercase;
1184
+ color: #37393c;
1185
+ opacity: 0.3;
1186
+ font-weight: 600; }
1187
+
1188
+ .notice {
1189
+ background-color: #fdf7af;
1190
+ width: -webkit-fit-content;
1191
+ width: -moz-fit-content;
1192
+ width: fit-content;
1193
+ color: #857e32;
1194
+ padding: 1rem;
1195
+ border-radius: 4px;
1196
+ font-size: 1.125rem;
1197
+ position: relative; }
1198
+ .notice .type, .notice p, .notice code {
1199
+ color: inherit;
1200
+ font-size: inherit; }
1201
+ .notice .type--heading {
1202
+ font-weight: 400; }
1203
+
1204
+ .notice--new {
1205
+ background-color: #b7d6f6;
1206
+ color: #627990; }
1207
+
1208
+ /*============================================================================
1209
+ Next Popover
1210
+ ==============================================================================*/
1211
+ .popover__container {
1212
+ position: relative;
1213
+ display: -webkit-inline-box;
1214
+ display: -webkit-inline-flex;
1215
+ display: -ms-inline-flexbox;
1216
+ display: inline-flex;
1217
+ z-index: 20; }
1218
+ .popover__container > *:focus {
1219
+ outline: 0; }
1220
+
1221
+ .popover__container--contains-active-popover {
1222
+ z-index: 40; }
1223
+
1224
+ .popover__container--is-deactivating {
1225
+ z-index: 30; }
1226
+
1227
+ .popover__container--full-width {
1228
+ display: -webkit-box;
1229
+ display: -webkit-flex;
1230
+ display: -ms-flexbox;
1231
+ display: flex; }
1232
+
1233
+ .popover {
1234
+ position: absolute;
1235
+ left: 0;
1236
+ top: 100%;
1237
+ -webkit-transform: scale(0);
1238
+ transform: scale(0);
1239
+ display: inline-block;
1240
+ max-width: 100%;
1241
+ margin: 0.8125rem 1rem;
1242
+ background-color: white;
1243
+ border-radius: 4px;
1244
+ opacity: 0;
1245
+ box-shadow: 0 0 0 1px rgba(51, 54, 58, 0.05), 0 2px 7px 1px rgba(51, 54, 58, 0.16);
1246
+ -webkit-transition: -webkit-transform 0.35s cubic-bezier(0.27, 1.41, 0.53, 0.97), opacity 0.2s ease;
1247
+ transition: transform 0.35s cubic-bezier(0.27, 1.41, 0.53, 0.97), opacity 0.2s ease; }
1248
+
1249
+ .popover--is-active {
1250
+ -webkit-transform: scale(1);
1251
+ transform: scale(1);
1252
+ opacity: 1; }
1253
+
1254
+ .popover--is-positioned-above {
1255
+ top: auto;
1256
+ bottom: 100%; }
1257
+ .popover--is-positioned-above .popover__tooltip {
1258
+ top: 100%; }
1259
+ .popover--is-positioned-above .popover__tooltip:after {
1260
+ top: -0.3125rem; }
1261
+
1262
+ .popover__tooltip {
1263
+ position: absolute;
1264
+ left: 50%;
1265
+ top: -1.25rem;
1266
+ width: 1.25rem;
1267
+ height: 1.25rem;
1268
+ margin-left: -0.625rem;
1269
+ overflow: hidden; }
1270
+ .popover__tooltip:after {
1271
+ content: "";
1272
+ position: absolute;
1273
+ top: 0.9375rem;
1274
+ left: 50%;
1275
+ -webkit-transform: rotate(45deg);
1276
+ transform: rotate(45deg);
1277
+ margin-left: -0.3125rem;
1278
+ display: block;
1279
+ height: 0.625rem;
1280
+ width: 0.625rem;
1281
+ background-color: white;
1282
+ box-shadow: 0 0 0 1px rgba(51, 54, 58, 0.05), 0 2px 7px 1px rgba(51, 54, 58, 0.16); }
1283
+
1284
+ .popover__content-wrapper {
1285
+ display: -webkit-box;
1286
+ display: -webkit-flex;
1287
+ display: -ms-flexbox;
1288
+ display: flex;
1289
+ max-width: 25rem;
1290
+ max-height: 50rem;
1291
+ border-radius: 4px;
1292
+ overflow: hidden; }
1293
+
1294
+ .popover__content {
1295
+ -webkit-box-flex: 0;
1296
+ -webkit-flex: 0 0 auto;
1297
+ -ms-flex: 0 0 auto;
1298
+ flex: 0 0 auto;
1299
+ display: -webkit-inline-box;
1300
+ display: -webkit-inline-flex;
1301
+ display: -ms-inline-flexbox;
1302
+ display: inline-flex;
1303
+ -webkit-box-orient: vertical;
1304
+ -webkit-box-direction: normal;
1305
+ -webkit-flex-direction: column;
1306
+ -ms-flex-direction: column;
1307
+ flex-direction: column;
1308
+ max-height: 100%;
1309
+ min-width: 9.375rem; }
1310
+ .popover__content > *:first-child {
1311
+ margin-top: 0; }
1312
+ .popover__content > *:last-child {
1313
+ margin-bottom: 0; }
1314
+
1315
+ .popover__pane {
1316
+ -webkit-box-flex: 0;
1317
+ -webkit-flex: 0 1 auto;
1318
+ -ms-flex: 0 1 auto;
1319
+ flex: 0 1 auto;
1320
+ overflow: auto;
1321
+ -webkit-overflow-scrolling: touch;
1322
+ max-width: 100%; }
1323
+
1324
+ .range {
1325
+ width: 100%;
1326
+ margin: 0;
1327
+ -webkit-appearance: none;
1328
+ -moz-appearance: none;
1329
+ appearance: none;
1330
+ background-color: transparent; }
1331
+ .range:focus {
1332
+ outline: none; }
1333
+
1334
+ .range::-webkit-slider-runnable-track {
1335
+ width: 100%;
1336
+ height: 2.625rem;
1337
+ cursor: pointer;
1338
+ background-color: #d1d3d7;
1339
+ border-radius: 1.3125rem;
1340
+ padding: 0.2625rem; }
1341
+
1342
+ .range:focus::-webkit-slider-runnable-track {
1343
+ outline: none; }
1344
+
1345
+ .range::-moz-range-track {
1346
+ width: 100%;
1347
+ height: 2.625rem;
1348
+ cursor: pointer;
1349
+ background-color: #d1d3d7;
1350
+ border-radius: 1.3125rem;
1351
+ padding: 0.2625rem; }
1352
+
1353
+ .range::-ms-track {
1354
+ width: 100%;
1355
+ height: 2.625rem;
1356
+ cursor: pointer;
1357
+ background-color: #d1d3d7;
1358
+ border-radius: 1.3125rem;
1359
+ padding: 0.2625rem; }
1360
+
1361
+ .range::-webkit-slider-thumb {
1362
+ height: 2.1rem;
1363
+ width: 2.1rem;
1364
+ box-shadow: 1px 1px 3px rgba(30, 30, 31, 0.15);
1365
+ border-radius: 1.05rem;
1366
+ background: #f2f2f3;
1367
+ cursor: pointer;
1368
+ -webkit-appearance: none;
1369
+ appearance: none; }
1370
+
1371
+ .range::-moz-range-thumb {
1372
+ height: 2.1rem;
1373
+ width: 2.1rem;
1374
+ box-shadow: 1px 1px 3px rgba(30, 30, 31, 0.15);
1375
+ border-radius: 1.05rem;
1376
+ background: #f2f2f3;
1377
+ cursor: pointer;
1378
+ -webkit-appearance: none;
1379
+ -moz-appearance: none;
1380
+ appearance: none; }
1381
+
1382
+ .range::-ms-thumb {
1383
+ height: 2.1rem;
1384
+ width: 2.1rem;
1385
+ box-shadow: 1px 1px 3px rgba(30, 30, 31, 0.15);
1386
+ border-radius: 1.05rem;
1387
+ background: #f2f2f3;
1388
+ cursor: pointer;
1389
+ -webkit-appearance: none;
1390
+ appearance: none; }
1391
+
1392
+ .resizable {
1393
+ position: relative;
1394
+ margin: 0 auto;
1395
+ width: 100%;
1396
+ min-width: 19.25rem;
1397
+ border-radius: 4px;
1398
+ line-height: 0; }
1399
+ .resizable > .card {
1400
+ position: relative;
1401
+ padding-right: 1.25rem; }
1402
+ .resizable .iframe {
1403
+ width: 100%;
1404
+ min-height: 10rem;
1405
+ -webkit-transition: height 0.3s ease;
1406
+ transition: height 0.3s ease;
1407
+ overflow: hidden; }
1408
+
1409
+ .resizable--is-transitioning-width {
1410
+ -webkit-transition: width 0.3s ease;
1411
+ transition: width 0.3s ease; }
1412
+
1413
+ .resizable__handle {
1414
+ position: absolute;
1415
+ top: 0;
1416
+ right: 0;
1417
+ width: 1.25rem;
1418
+ height: 100%;
1419
+ cursor: col-resize;
1420
+ background: #d1d3d7;
1421
+ border-radius: 0 4px 4px 0; }
1422
+ .resizable__handle:hover,
1423
+ .resizable__handle:focus {
1424
+ outline: none; }
1425
+ .resizable__handle:after {
1426
+ content: "";
1427
+ position: absolute;
1428
+ top: 50%;
1429
+ left: 50%;
1430
+ display: block;
1431
+ height: 2rem;
1432
+ width: 0.4375rem;
1433
+ margin-top: -1rem;
1434
+ margin-left: -0.21875rem;
1435
+ border-right: 1px solid #9c9da5;
1436
+ border-left: 1px solid #9c9da5; }
1437
+
1438
+ .resizable__actions {
1439
+ display: -webkit-box;
1440
+ display: -webkit-flex;
1441
+ display: -ms-flexbox;
1442
+ display: flex;
1443
+ -webkit-box-pack: justify;
1444
+ -webkit-justify-content: space-between;
1445
+ -ms-flex-pack: justify;
1446
+ justify-content: space-between;
1447
+ -webkit-box-align: end;
1448
+ -webkit-align-items: flex-end;
1449
+ -ms-flex-align: end;
1450
+ align-items: flex-end;
1451
+ margin-bottom: 0.5rem; }
1452
+
1453
+ .resizable__width-indicator {
1454
+ color: #b1b1b1;
1455
+ font: 300 1rem/1 Consolas, monospace;
1456
+ opacity: 0.4;
1457
+ -webkit-transition: opacity 0.3s ease;
1458
+ transition: opacity 0.3s ease; }
1459
+
1460
+ .resizable__width-indicator--is-visible {
1461
+ opacity: 1; }
1462
+
1463
+ .resizable__size-buttons {
1464
+ display: -webkit-box;
1465
+ display: -webkit-flex;
1466
+ display: -ms-flexbox;
1467
+ display: flex; }
1468
+
1469
+ .resizable__size-button {
1470
+ position: relative;
1471
+ margin-left: 0.5rem;
1472
+ cursor: pointer;
1473
+ opacity: 0.5;
1474
+ -webkit-transition: opacity 0.3s ease;
1475
+ transition: opacity 0.3s ease; }
1476
+ .resizable__size-button > .icon {
1477
+ height: 1.8rem;
1478
+ width: 1.8rem;
1479
+ fill: #e3e4e6;
1480
+ stroke: #e3e4e6;
1481
+ -webkit-transition: fill 0.3s ease;
1482
+ transition: fill 0.3s ease; }
1483
+ .resizable__size-button:hover,
1484
+ .resizable__size-button:focus,
1485
+ .resizable__size-button:active,
1486
+ .resizable__size-button.resizable__size-button--is-active {
1487
+ outline: none; }
1488
+ .resizable__size-button:hover,
1489
+ .resizable__size-button:focus {
1490
+ opacity: 0.8; }
1491
+ .resizable__size-button.resizable__size-button--is-active,
1492
+ .resizable__size-button:active {
1493
+ opacity: 1; }
1494
+ .resizable__size-button.resizable__size-button--is-active > .icon,
1495
+ .resizable__size-button:active > .icon {
1496
+ fill: #4196df;
1497
+ stroke: #4196df; }
1498
+
1499
+ .resizable__size-button--is-hidden {
1500
+ display: none; }
1501
+
1502
+ .scroll-container {
1503
+ overflow: hidden; }
1504
+
1505
+ .section {
1506
+ margin: 2rem 0;
1507
+ padding: 1rem 0; }
1508
+ .section > *:first-child,
1509
+ .section > *:first-child > *:first-child {
1510
+ margin-top: 0; }
1511
+ .section > *:last-child,
1512
+ .section > *:last-child > *:last-child {
1513
+ margin-bottom: 0; }
1514
+
1515
+ .section--small {
1516
+ border: none;
1517
+ padding: 0;
1518
+ margin: 1rem 0; }
1519
+
1520
+ .section--subdued {
1521
+ background: #f1f1f1;
1522
+ overflow: hidden; }
1523
+ .section--subdued.section--small {
1524
+ padding: 1rem 0;
1525
+ margin: 0; }
1526
+
1527
+ .section__container > .section:first-child {
1528
+ margin-top: 2rem; }
1529
+
1530
+ .section__container > .section:last-child {
1531
+ margin-bottom: 2rem; }
1532
+
1533
+ .section__container > .section--small:first-child {
1534
+ margin-top: 1rem; }
1535
+
1536
+ .section__container > .section--small:last-child {
1537
+ margin-bottom: 1rem; }
1538
+
1539
+ .select {
1540
+ position: relative;
1541
+ display: inline-block;
1542
+ border-radius: 4px;
1543
+ background-color: #e3e4e6; }
1544
+ .select:after {
1545
+ content: "";
1546
+ position: absolute;
1547
+ right: 0.75rem;
1548
+ top: 50%;
1549
+ -webkit-transform: rotate(45deg);
1550
+ transform: rotate(45deg);
1551
+ display: block;
1552
+ height: 0.63281rem;
1553
+ width: 0.63281rem;
1554
+ margin-top: -0.47461rem;
1555
+ border: solid rgba(156, 157, 165, 0.5);
1556
+ border-width: 0 2px 2px 0;
1557
+ pointer-events: none; }
1558
+ .select + .docks-button {
1559
+ margin-left: 0.5rem; }
1560
+
1561
+ .select--is-focused {
1562
+ border-color: #4196df; }
1563
+
1564
+ .select--code > .select__input {
1565
+ font-family: Consolas, monospace; }
1566
+
1567
+ .select__input {
1568
+ -webkit-appearance: none;
1569
+ -moz-appearance: none;
1570
+ box-sizing: border-box;
1571
+ display: block;
1572
+ width: 100%;
1573
+ max-width: none;
1574
+ height: auto;
1575
+ padding: 0 2.13281rem 0 0.75rem;
1576
+ background: transparent;
1577
+ border: none;
1578
+ font-size: 1.0125rem;
1579
+ line-height: 2.125rem;
1580
+ font-family: inherit;
1581
+ color: #9c9da5; }
1582
+ .select__input:focus {
1583
+ outline: none;
1584
+ border: none; }
1585
+ .select__input > option {
1586
+ color: #33363a; }
1587
+
1588
+ _:-ms-input-placeholder, :root .select__input::-ms-expand {
1589
+ display: none; }
1590
+
1591
+ _:-ms-input-placeholder, :root .select__input:focus::-ms-value {
1592
+ background: transparent; }
1593
+
1594
+ @supports (-moz-appearance: meterbar) and (background-blend-mode: difference, normal) {
1595
+ _::-moz-progress-bar,
1596
+ body:last-child .select__input__wrapper {
1597
+ overflow: hidden; }
1598
+ _::-moz-progress-bar,
1599
+ body:last-child .select__input {
1600
+ width: calc(100% + 30px); } }
1601
+
1602
+ .select__input:-moz-focusring {
1603
+ color: transparent;
1604
+ text-shadow: 0 0 0 black; }
1605
+
1606
+ .table {
1607
+ width: 100%;
1608
+ min-width: 31.25rem;
1609
+ border-collapse: separate;
1610
+ border-spacing: 0; }
1611
+
1612
+ .table__container {
1613
+ margin: 1rem auto; }
1614
+
1615
+ .table__container--is-overflowing .table__cell:first-child {
1616
+ position: absolute;
1617
+ z-index: 20;
1618
+ left: 0;
1619
+ height: 100%;
1620
+ box-shadow: 3px 0 4px -1px rgba(30, 30, 31, 0);
1621
+ -webkit-transition: box-shadow 0.2s ease;
1622
+ transition: box-shadow 0.2s ease; }
1623
+
1624
+ .table__container--is-overflowing .table__actions {
1625
+ -webkit-transform: translateY(0);
1626
+ transform: translateY(0);
1627
+ max-height: 3rem;
1628
+ padding-bottom: 0.5rem; }
1629
+
1630
+ .table__scroller {
1631
+ max-width: 100%;
1632
+ overflow-x: auto;
1633
+ overflow-y: hidden;
1634
+ -webkit-overflow-scrolling: touch; }
1635
+
1636
+ .table__scroller--is-scrolled .table__cell:first-child {
1637
+ box-shadow: 3px 0 4px -1px rgba(30, 30, 31, 0.1); }
1638
+
1639
+ .table__backdrop {
1640
+ position: relative;
1641
+ z-index: 30;
1642
+ max-width: 100%;
1643
+ clear: both;
1644
+ overflow: hidden;
1645
+ border: 1px solid #f1f1f1;
1646
+ border-radius: 8px; }
1647
+
1648
+ .table__actions {
1649
+ -webkit-transform: translateY(140%);
1650
+ transform: translateY(140%);
1651
+ max-height: 0;
1652
+ float: right;
1653
+ -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.32, 1.44, 0.46, 0.99), max-height 0.3s ease, padding-bottom 0.3s ease;
1654
+ transition: transform 0.3s cubic-bezier(0.32, 1.44, 0.46, 0.99), max-height 0.3s ease, padding-bottom 0.3s ease; }
1655
+
1656
+ .table__header {
1657
+ font-weight: 400;
1658
+ padding: 0;
1659
+ text-align: left; }
1660
+
1661
+ .table__body > .table__row:nth-child(odd) > .table__cell {
1662
+ background-color: #f8f8f8; }
1663
+
1664
+ .table__row {
1665
+ overflow: hidden; }
1666
+
1667
+ .table__cell {
1668
+ position: relative;
1669
+ z-index: 10;
1670
+ vertical-align: top;
1671
+ padding: 0.5rem;
1672
+ background-color: white; }
1673
+
1674
+ .table__cell--centered {
1675
+ text-align: center; }
1676
+
1677
+ .tablist {
1678
+ margin: 0;
1679
+ padding: 0;
1680
+ display: -webkit-box;
1681
+ display: -webkit-flex;
1682
+ display: -ms-flexbox;
1683
+ display: flex;
1684
+ -webkit-box-pack: center;
1685
+ -webkit-justify-content: center;
1686
+ -ms-flex-pack: center;
1687
+ justify-content: center;
1688
+ padding: 0.5rem;
1689
+ margin-right: -0.5rem;
1690
+ list-style: none; }
1691
+
1692
+ .tablist--large {
1693
+ margin: 2rem 0; }
1694
+ .tablist--large > .tablist__tab {
1695
+ font-size: 1.5rem;
1696
+ line-height: 1;
1697
+ padding: 1rem 2.5rem 1.2rem;
1698
+ border: none !important;
1699
+ opacity: 1 !important; }
1700
+ .tablist--large > .tablist__tab--is-active {
1701
+ background-color: #f2f2f3; }
1702
+
1703
+ .tablist__tab {
1704
+ display: inline-block;
1705
+ padding: 0 0.75rem;
1706
+ opacity: 0.3;
1707
+ overflow: hidden;
1708
+ border: 1px solid transparent;
1709
+ border-radius: 4px;
1710
+ -webkit-transition: opacity 0.3s ease, border-color 0.3s ease;
1711
+ transition: opacity 0.3s ease, border-color 0.3s ease;
1712
+ font-size: 1.125rem;
1713
+ line-height: 2.125rem;
1714
+ color: #9c9da5;
1715
+ text-align: center;
1716
+ text-decoration: none;
1717
+ white-space: nowrap;
1718
+ text-overflow: ellipsis; }
1719
+ .tablist__tab:focus,
1720
+ .tablist__tab:hover {
1721
+ outline: none;
1722
+ opacity: 0.5; }
1723
+ .tablist__tab > .icon {
1724
+ height: 2rem;
1725
+ width: 2rem;
1726
+ fill: #d1d3d7;
1727
+ stroke: #d1d3d7;
1728
+ stroke-width: 3px; }
1729
+
1730
+ .tablist__tab--is-active, .tablist__tab--is-active:hover, .tablist__tab--is-active:focus {
1731
+ border-color: #9c9da5;
1732
+ opacity: 1; }
1733
+
1734
+ .tablist__tab__text {
1735
+ display: block; }
1736
+
1737
+ .tablist__panel {
1738
+ display: none; }
1739
+
1740
+ .tablist__panel--is-active {
1741
+ display: block; }
1742
+
1743
+ .vertical-spacer {
1744
+ margin: 0.5rem 0; }
1745
+
1746
+ .vertical-stack {
1747
+ display: -webkit-box;
1748
+ display: -webkit-flex;
1749
+ display: -ms-flexbox;
1750
+ display: flex;
1751
+ -webkit-box-orient: vertical;
1752
+ -webkit-box-direction: normal;
1753
+ -webkit-flex-direction: column;
1754
+ -ms-flex-direction: column;
1755
+ flex-direction: column;
1756
+ -webkit-align-self: stretch;
1757
+ -ms-flex-item-align: stretch;
1758
+ align-self: stretch;
1759
+ width: 100%; }
1760
+
1761
+ .vertical-stack__item {
1762
+ -webkit-box-flex: 1;
1763
+ -webkit-flex: 1 1 0px;
1764
+ -ms-flex: 1 1 0px;
1765
+ flex: 1 1 0px;
1766
+ max-width: 100%;
1767
+ overflow-x: hidden;
1768
+ overflow-y: auto;
1769
+ -webkit-overflow-scrolling: touch; }
1770
+
1771
+ .vertical-stack__item--fixed {
1772
+ -webkit-box-flex: 0;
1773
+ -webkit-flex: 0 0 auto;
1774
+ -ms-flex: 0 0 auto;
1775
+ flex: 0 0 auto;
1776
+ overflow: visible; }
1777
+
1778
+ body {
1779
+ position: relative; }
1780
+ body.x-ray__helpers--x-ray-is-active {
1781
+ overflow: hidden; }
1782
+
1783
+ .x-ray {
1784
+ background: white;
1785
+ position: absolute;
1786
+ top: 0;
1787
+ bottom: 0;
1788
+ left: 0;
1789
+ right: 0;
1790
+ z-index: -1;
1791
+ overflow-x: hidden;
1792
+ overflow-y: auto;
1793
+ opacity: 0;
1794
+ -webkit-transition: opacity 0.3s ease;
1795
+ transition: opacity 0.3s ease;
1796
+ min-height: 100%; }
1797
+ .x-ray .page-header {
1798
+ -webkit-box-flex: 0;
1799
+ -webkit-flex: 0 0 auto;
1800
+ -ms-flex: 0 0 auto;
1801
+ flex: 0 0 auto; }
1802
+
1803
+ .x-ray--is-active {
1804
+ opacity: 1;
1805
+ z-index: 1200; }
1806
+
1807
+ .x-ray__content {
1808
+ padding-bottom: 3rem; }
1809
+
1810
+ .x-ray__list {
1811
+ padding: 1rem;
1812
+ background-color: #f2f2f3; }
1813
+
1814
+ .x-ray__closer {
1815
+ background: transparent;
1816
+ border: none;
1817
+ padding: 0;
1818
+ -webkit-appearance: none;
1819
+ -moz-appearance: none;
1820
+ appearance: none; }
1821
+
1822
+ .x-ray__diagram {
1823
+ padding: 1rem 0 0;
1824
+ background: #e3e4e6; }
1825
+
1826
+ .x-ray__details {
1827
+ display: none; }
1828
+
1829
+ .x-ray__details--is-visible {
1830
+ display: block; }
1831
+
1832
+ .x-ray__details__tagname {
1833
+ display: inline-block;
1834
+ font-size: 0.75em;
1835
+ background-color: #f2f2f3;
1836
+ padding: 0.3em 0.4em 0.2em;
1837
+ border-radius: 4px;
1838
+ line-height: 1;
1839
+ color: #9c9da5;
1840
+ margin-right: 0.25rem; }
1841
+
1842
+ .x-ray__details__description {
1843
+ margin-bottom: 2rem; }
1844
+
1845
+ .sidebar {
1846
+ position: absolute;
1847
+ left: 0;
1848
+ top: 0;
1849
+ -webkit-transform: translate3d(-100%, 0, 0);
1850
+ transform: translate3d(-100%, 0, 0);
1851
+ -webkit-transition: -webkit-transform 0.2s ease;
1852
+ transition: transform 0.2s ease;
1853
+ max-width: 15rem;
1854
+ display: -webkit-box;
1855
+ display: -webkit-flex;
1856
+ display: -ms-flexbox;
1857
+ display: flex;
1858
+ height: 100vh;
1859
+ background-color: white;
1860
+ box-shadow: 0 0 4px rgba(30, 30, 31, 0.3); }
1861
+ @media screen and (min-width: 40.0625rem) {
1862
+ .sidebar {
1863
+ position: static;
1864
+ -webkit-transform: translate3d(0, 0, 0);
1865
+ transform: translate3d(0, 0, 0); } }
1866
+
1867
+ .sidebar--is-active {
1868
+ -webkit-transform: translate3d(0, 0, 0);
1869
+ transform: translate3d(0, 0, 0); }
1870
+
1871
+ .sidebar__toggler {
1872
+ background: transparent;
1873
+ padding: 0;
1874
+ margin: 0;
1875
+ -webkit-appearance: none;
1876
+ -moz-appearance: none;
1877
+ appearance: none;
1878
+ border: none; }
1879
+ .sidebar__toggler:focus {
1880
+ outline: none; }
1881
+
1882
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxpdGllcy9tZWRpYS9tZWRpYS5zY3NzIiwidXRpbGl0aWVzL2ZvdW5kYXRpb24vYTExeS5zY3NzIiwidXRpbGl0aWVzL2ZvdW5kYXRpb24vYmFzZS5zY3NzIiwidXRpbGl0aWVzL2NvbG9ycy9jb2xvcnMuc2NzcyIsInV0aWxpdGllcy9mb3VuZGF0aW9uL2ljb24uc2NzcyIsInV0aWxpdGllcy9mdW5jdGlvbnMvZnVuY3Rpb25zLnNjc3MiLCJ1dGlsaXRpZXMvZm91bmRhdGlvbi9sYXlvdXQuc2NzcyIsInV0aWxpdGllcy9kZWZhdWx0cy9kZWZhdWx0cy5zY3NzIiwidXRpbGl0aWVzL2ZvdW5kYXRpb24vcGFnZS5zY3NzIiwidXRpbGl0aWVzL3pfaW5kZXhlcy96LWluZGV4ZXMuc2NzcyIsInV0aWxpdGllcy9mb3VuZGF0aW9uL3R5cGUuc2NzcyIsInV0aWxpdGllcy9mb250X3NpemVzL2ZvbnQtc2l6ZXMuc2NzcyIsImNvbXBvbmVudHMvYXZhdGFyL2F2YXRhci5zY3NzIiwiY29tcG9uZW50cy9iYWRnZS9iYWRnZS5zY3NzIiwiY29tcG9uZW50cy9idXR0b24vYnV0dG9uLnNjc3MiLCJjb21wb25lbnRzL2NhcmQvY2FyZC5zY3NzIiwiY29tcG9uZW50cy9jb2RlX2Jsb2NrL2NvZGUtYmxvY2suc2NzcyIsImNvbXBvbmVudHMvZGVtby9kZW1vLnNjc3MiLCJjb21wb25lbnRzL2V4cGxvZGVkL2V4cGxvZGVkLnNjc3MiLCJjb21wb25lbnRzL2ZpZWxkL2ZpZWxkLnNjc3MiLCJjb21wb25lbnRzL2hlYWRlci9oZWFkZXIuc2NzcyIsImNvbXBvbmVudHMvaW5saW5lX2dyb3VwL2lubGluZS1ncm91cC5zY3NzIiwiY29tcG9uZW50cy9saXN0L2xpc3Quc2NzcyIsInV0aWxpdGllcy9taXhpbnMvbWl4aW5zLnNjc3MiLCJjb21wb25lbnRzL21vZGFsL21vZGFsLnNjc3MiLCJjb21wb25lbnRzL25vdGljZS9ub3RpY2Uuc2NzcyIsImNvbXBvbmVudHMvcG9wb3Zlci9wb3BvdmVyLnNjc3MiLCJjb21wb25lbnRzL3JhbmdlL3JhbmdlLnNjc3MiLCJjb21wb25lbnRzL3Jlc2l6YWJsZS9yZXNpemFibGUuc2NzcyIsImNvbXBvbmVudHMvc2Nyb2xsX2NvbnRhaW5lci9zY3JvbGwtY29udGFpbmVyLnNjc3MiLCJjb21wb25lbnRzL3NlY3Rpb24vc2VjdGlvbi5zY3NzIiwiY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LnNjc3MiLCJjb21wb25lbnRzL3RhYmxlL3RhYmxlLnNjc3MiLCJjb21wb25lbnRzL3RhYmxpc3QvdGFibGlzdC5zY3NzIiwiY29tcG9uZW50cy92ZXJ0aWNhbF9zcGFjZXIvdmVydGljYWwtc3BhY2VyLnNjc3MiLCJjb21wb25lbnRzL3ZlcnRpY2FsX3N0YWNrL3ZlcnRpY2FsLXN0YWNrLnNjc3MiLCJjb21wb25lbnRzL3hyYXkveHJheS5zY3NzIiwic3RydWN0dXJlcy9zaWRlYmFyL3NpZGViYXIuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1RkU7RUFzRXlDO0lBRWIsY0FBYyxFQUR4QyxFQUFBOztBQS9FRjtFQWlGQztJQUcwQixjQUFjLEVBRHZDLEVBQUE7O0FBRUQ7RUFHQyxjQUFjLEVBRGQ7RUF2RkY7SUFxRkM7TUFLMEIsZUFBZSxFQUh4QyxFQUFBOztBQS9FRjtFQXNFeUM7SUFFYixjQUFjLEVBRHhDLEVBQUE7O0FBL0VGO0VBaUZDO0lBRzBCLGNBQWMsRUFEdkMsRUFBQTs7QUFFRDtFQUdDLGNBQWMsRUFEZDtFQXZGRjtJQXFGQztNQUswQixlQUFlLEVBSHhDLEVBQUE7O0FBL0VGO0VBc0V5QztJQUViLGNBQWMsRUFEeEMsRUFBQTs7QUEvRUY7RUFpRkM7SUFHMEIsY0FBYyxFQUR2QyxFQUFBOztBQUVEO0VBR0MsY0FBYyxFQURkO0VBdkZGO0lBcUZDO01BSzBCLGVBQWUsRUFIeEMsRUFBQTs7QUN0S0o7RUFDRSxVQUFVO0VBQ1Ysb0JBQVU7RUFDVixZQUFZO0VBQ1osYUFBYTtFQUNiLGlCQUFpQjtFQUNqQixXQUFXO0VB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akI7RUFDRSxlQUFlLEVBRFk7O0FBSTdCO0VBQ0Usc0JBQXNCO0VBQ3RCLGtCQUFrQjtFQUNsQiwwQmpDaERZO0VpQ2lEWiwyQkFBMEI7RTdCakMxQixtQkFma0I7RTZCa0RsQixlQUFlO0VBQ2YsZWpDakRhO0VpQ2tEYixzQkFBc0IsRUFSRTs7QUFXMUI7RUFDRSxvQkFBaUIsRUFEVzs7QUNsRDlCO0VBRUUsbUJBQW1CO0VBQ25CLFFBQVE7RUFBRSxPQUFPO0VBQ2pCLDRDQUE4QjtFQUM5QixvQ0FBc0I7RUFDdEIsZ0RBQStCO1VBQS9CLGdDQUErQjtFQUMvQixpQkFBaUI7RUFHakIscUJBQWM7RUFBZCxzQkFBYztFQUFkLHFCQUFjO0VBQWQsY0FBYztFQUNkLGNBQWM7RUFHZCx3QmxDeEJrQjtFSW9CbEIsMENKVVUsRWtDcEJGO0VyQ3FEUjtJcUNyREY7TUFrQkksaUJBQWlCO01BQ2pCLHdDQUFzQjtjQUF0QixnQ0FBc0IsRUFuQmhCLEVBQUE7O0FBMkJWO0VBQ0Usd0NBQXNCO1VBQXRCLGdDQUFzQixFQURIOztBQVdyQjtFQUNFLHdCQUF3QjtFQUN4QixXQUFXO0VBQ1gsVUFBVTtFQUNWLHlCQUFpQjtLQUFqQixzQkFBaUI7VUFBakIsaUJBQWlCO0VBQ2pCLGFBQWEsRUFMSTtFQU9oQjtJQUNDLGNBQWMsRUFEUCIsImZpbGUiOiJwYXR0ZXJuLWxpYnJhcnkuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gICAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgIF9fX19fICAgICAgICAgICAgICAgICAgX19fXG4vLyAgICAgICAvX18vXFwgICAgICAgIC8gIC9cXCAgICAgIC8gIC86OlxcICAgICBfX18gICAgICAgIC8gIC9cXFxuLy8gICAgICB8ICB8OjpcXCAgICAgIC8gIC86L18gICAgLyAgLzovXFw6XFwgICAvICAvXFwgICAgICAvICAvOjpcXFxuLy8gICAgICB8ICB8Onw6XFwgICAgLyAgLzovIC9cXCAgLyAgLzovICBcXDpcXCAvICAvOi8gICAgIC8gIC86L1xcOlxcXG4vLyAgICBfX3xfX3w6fFxcOlxcICAvICAvOi8gLzovXy9fXy86LyBcXF9fXFw6L19fLzo6XFwgICAgLyAgLzovfi86OlxcXG4vLyAgIC9fXy86Ojo6fCBcXDpcXC9fXy86LyAvOi8gL1xcICBcXDpcXCAvICAvOnxfX1xcL1xcOlxcX18vX18vOi8gLzovXFw6XFxcbi8vICAgXFwgIFxcOlxcfn5cXF9fXFwvXFwgIFxcOlxcLzovIC86L1xcICBcXDpcXCAgLzovICAgXFwgIFxcOlxcL1xcICBcXDpcXC86L19fXFwvXG4vLyAgICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOjovIC86LyAgXFwgIFxcOlxcLzovICAgICBcXF9fXFw6Oi9cXCAgXFw6Oi9cbi8vICAgICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDo6LyAgICAgIC9fXy86LyAgXFwgIFxcOlxcXG4vLyAgICAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6Oi8gICAgICBcXF9fXFwvICAgICAgIFxcX19cXC8gICAgXFwgIFxcOlxcXG4vLyAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXF9fXFwvXG5cblxuXG4kQlJFQUtQT0lOVFM6IChcbiAgc21hbGw6IDI1cmVtLFxuICBtZWRpdW06IDM3LjVyZW0sXG4gIGxhcmdlOiA1MHJlbVxuKTtcblxuJEJSRUFLUE9JTlRfSU5DUkVNRU5UUzogKFxuICByZW06IDAuMDYyNXJlbSxcbiAgZW06IDAuMDYyNWVtLFxuICBweDogMXB4LFxuICB2dzogMXZ3XG4pO1xuXG5cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtdmFsdWUtZm9yKCRicmVha3BvaW50KSB7XG4gIEByZXR1cm4gbWFwLWdldCgkQlJFQUtQT0lOVFMsICRicmVha3BvaW50KTtcbn1cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtY2xlYW4tdmFsdWUoJHBvaW50KSB7XG4gIEBpZiB0eXBlLW9mKCRwb2ludCkgPT0gbnVtYmVyIHtcbiAgICBAcmV0dXJuICRwb2ludDtcbiAgfVxuXG4gIEByZXR1cm4gYnJlYWtwb2ludC12YWx1ZS1mb3IoJHBvaW50KTtcbn1cblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5jcmVtZW50LWZvcigkdmFsdWUpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRCUkVBS1BPSU5UX0lOQ1JFTUVOVFMsIHVuaXQoJHZhbHVlKSk7XG59XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWRlZmF1bHQtaW5jbHVzaXZpdHkoJHZhbHVlLCAkZGVmYXVsdCkge1xuICAkaW5jbHVzaXZpdHk6IG51bGw7XG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA+IDEgeyAkaW5jbHVzaXZpdHk6IG50aCgkdmFsdWUsIDIpOyB9XG5cbiAgQGlmICRpbmNsdXNpdml0eSB7XG4gICAgQHJldHVybiAkaW5jbHVzaXZpdHkgPT0gaW5jbHVzaXZlO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuICRkZWZhdWx0O1xuICB9XG59XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWFkanVzdGVkLWZvci1pbmNsdXNpdml0eSgkdmFsdWUsICRtaW4tb3ItbWF4LCAkaW5jbHVzaXZlOiBmYWxzZSkge1xuICAkdmFsdWU6IGJyZWFrcG9pbnQtY2xlYW4tdmFsdWUoJHZhbHVlKTtcblxuICBAaWYgbm90ICRpbmNsdXNpdmUge1xuICAgIEBpZiAkbWluLW9yLW1heCA9PSBtaW4ge1xuICAgICAgJHZhbHVlOiAkdmFsdWUgKyBicmVha3BvaW50LWluY3JlbWVudC1mb3IoJHZhbHVlKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR2YWx1ZTogJHZhbHVlIC0gYnJlYWtwb2ludC1pbmNyZW1lbnQtZm9yKCR2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBcIigjeyRtaW4tb3ItbWF4fS13aWR0aDogI3skdmFsdWV9KVwiO1xufVxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1yZXRpbml6ZS1tZWRpYS1xdWVyeSgkbWVkaWEtcXVlcnkpIHtcbiAgQHJldHVybiBcIiN7JG1lZGlhLXF1ZXJ5fSBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksICN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpXCI7XG59XG5cblxuXG5cblxuQG1peGluIGJyZWFrcG9pbnQtYWZ0ZXIoJHBvaW50KSB7XG4gIEBtZWRpYSBzY3JlZW4gYW5kICN7YnJlYWtwb2ludC1hZGp1c3RlZC1mb3ItaW5jbHVzaXZpdHkoJHBvaW50LCBtaW4pfSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGFmdGVyKCRwb2ludCkgeyBAaW5jbHVkZSBicmVha3BvaW50LWFmdGVyKCRwb2ludCkgeyBAY29udGVudDsgfSB9XG5cbkBtaXhpbiBicmVha3BvaW50LWJlZm9yZSgkcG9pbnQpIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgI3ticmVha3BvaW50LWFkanVzdGVkLWZvci1pbmNsdXNpdml0eSgkcG9pbnQsIG1heCl9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gYmVmb3JlKCRwb2ludCkgeyBAaW5jbHVkZSBicmVha3BvaW50LWJlZm9yZSgkcG9pbnQpIHsgQGNvbnRlbnQ7IH0gfVxuXG5AbWl4aW4gYnJlYWtwb2ludCgkYWZ0ZXI6IG51bGwsICRiZWZvcmU6IG51bGwsICRmcm9tOiBudWxsLCAkdG86IG51bGwsICR1bnRpbDogbnVsbCwgJHJldGluYTogZmFsc2UpIHtcbiAgJG1pbi13aWR0aDogbnVsbDtcbiAgJG1heC13aWR0aDogbnVsbDtcbiAgJG1pbi1pbmNsdXNpdmU6IG51bGw7XG4gICRtYXgtaW5jbHVzaXZlOiBudWxsO1xuXG4gIC8vICRhZnRlciBkZWZhdWx0cyB0byBleGNsdXNpdmVcbiAgQGlmICRhZnRlciB7XG4gICAgJG1pbi13aWR0aDogbnRoKCRhZnRlciwgMSk7XG4gICAgJG1pbi1pbmNsdXNpdmU6IGJyZWFrcG9pbnQtZGVmYXVsdC1pbmNsdXNpdml0eSgkYWZ0ZXIsIGZhbHNlKTtcbiAgfVxuXG4gIC8vICRmcm9tIGRlZmF1bHRzIHRvIGluY2x1c2l2ZVxuICBAaWYgJGZyb20ge1xuICAgICRtaW4td2lkdGg6IG50aCgkZnJvbSwgMSk7XG4gICAgJG1pbi1pbmNsdXNpdmU6IGJyZWFrcG9pbnQtZGVmYXVsdC1pbmNsdXNpdml0eSgkZnJvbSwgdHJ1ZSk7XG4gIH1cblxuICAvLyAkYmVmb3JlIGRlZmF1bHRzIHRvIGV4Y2x1c2l2ZVxuICBAaWYgJGJlZm9yZSB7XG4gICAgJG1heC13aWR0aDogbnRoKCRiZWZvcmUsIDEpO1xuICAgICRtYXgtaW5jbHVzaXZlOiBicmVha3BvaW50LWRlZmF1bHQtaW5jbHVzaXZpdHkoJGJlZm9yZSwgZmFsc2UpO1xuICB9XG5cbiAgLy8gJHRvIGRlZmF1bHRzIHRvIGluY2x1c2l2ZVxuICBAaWYgJHRvIHtcbiAgICAkbWF4LXdpZHRoOiBudGgoJHRvLCAxKTtcbiAgICAkbWF4LWluY2x1c2l2ZTogYnJlYWtwb2ludC1kZWZhdWx0LWluY2x1c2l2aXR5KCR0bywgdHJ1ZSk7XG4gIH1cblxuICAvLyAkdW50aWwgZGVmYXVsdHMgdG8gZXhjbHVzaXZlXG4gIEBpZiAkdW50aWwge1xuICAgICRtYXgtd2lkdGg6IG50aCgkdW50aWwsIDEpO1xuICAgICRtYXgtaW5jbHVzaXZlOiBicmVha3BvaW50LWRlZmF1bHQtaW5jbHVzaXZpdHkoJHVudGlsLCBmYWxzZSk7XG4gIH1cblxuICBAaWYgJG1heC13aWR0aCB7ICRtYXgtd2lkdGg6IGJyZWFrcG9pbnQtYWRqdXN0ZWQtZm9yLWluY2x1c2l2aXR5KCRtYXgtd2lkdGgsIG1heCwgJG1heC1pbmNsdXNpdmUpOyB9XG4gIEBpZiAkbWluLXdpZHRoIHsgJG1pbi13aWR0aDogYnJlYWtwb2ludC1hZGp1c3RlZC1mb3ItaW5jbHVzaXZpdHkoJG1pbi13aWR0aCwgbWluLCAkbWluLWluY2x1c2l2ZSk7IH1cblxuICAkbWVkaWEtcXVlcnk6IFwic2NyZWVuXCI7XG4gIEBpZiAkbWluLXdpZHRoIHsgJG1lZGlhLXF1ZXJ5OiAkbWVkaWEtcXVlcnkgKyBcIiBhbmQgI3skbWluLXdpZHRofVwiOyB9XG4gIEBpZiAkbWF4LXdpZHRoIHsgJG1lZGlhLXF1ZXJ5OiAkbWVkaWEtcXVlcnkgKyBcIiBhbmQgI3skbWF4LXdpZHRofVwiOyB9XG4gIEBpZiAkcmV0aW5hIHsgJG1lZGlhLXF1ZXJ5OiBicmVha3BvaW50LXJldGluaXplLW1lZGlhLXF1ZXJ5KCRtZWRpYS1xdWVyeSk7IH1cblxuICBAbWVkaWEgI3skbWVkaWEtcXVlcnl9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5cblxuQG1peGluIHByaW50KCkge1xuICBAbWVkaWEgcHJpbnQgeyBAY29udGVudDsgfVxufVxuXG5cblxuQG1peGluIHJldGluYSgpIHtcbiAgQG1lZGlhICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLXJlc29sdXRpb246IDE5MmRwaSkgeyBAY29udGVudDsgfVxufVxuXG5cblxuQGVhY2ggJGJyZWFrcG9pbnQsICR3aWR0aCBpbiAkQlJFQUtQT0lOVFMge1xuICAubWVkaWFfX2hlbHBlcnMtLWhpZGUtYmVmb3JlLSN7JGJyZWFrcG9pbnR9IHtcbiAgICBAaW5jbHVkZSBiZWZvcmUoJHdpZHRoKSB7IGRpc3BsYXk6IG5vbmU7IH1cbiAgfVxuXG4gIC5tZWRpYV9faGVscGVycy0taGlkZS1hZnRlci0jeyRicmVha3BvaW50fSB7XG4gICAgQGluY2x1ZGUgYWZ0ZXIoJHdpZHRoKSB7IGRpc3BsYXk6IG5vbmU7IH1cbiAgfVxuXG4gIC5tZWRpYV9faGVscGVycy0tc2hvdy1hZnRlci0jeyRicmVha3BvaW50fSB7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIEBpbmNsdWRlIGFmdGVyKCR3aWR0aCkgeyBkaXNwbGF5OiBibG9jazsgfVxuICB9XG59XG4iLCIuaGVscGVyLS12aXN1YWxseS1oaWRkZW4ge1xuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbn1cbiIsIi8vICAgICAgICAgICAgICAgICAgICBfX18gICAgICAgICAgX19fICAgICAgICAgIF9fX1xuLy8gICAgICAgX19fX18gICAgICAgLyAgL1xcICAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXFxuLy8gICAgICAvICAvOjpcXCAgICAgLyAgLzo6XFwgICAgICAvICAvOi9fICAgICAgLyAgLzovX1xuLy8gICAgIC8gIC86L1xcOlxcICAgLyAgLzovXFw6XFwgICAgLyAgLzovIC9cXCAgICAvICAvOi8gL1xcXG4vLyAgICAvICAvOi9+Lzo6XFwgLyAgLzovfi86OlxcICAvICAvOi8gLzo6XFwgIC8gIC86LyAvOi9fXG4vLyAgIC9fXy86LyAvOi9cXDovX18vOi8gLzovXFw6XFwvX18vOi8gLzovXFw6XFwvX18vOi8gLzovIC9cXFxuLy8gICBcXCAgXFw6XFwvOi9+Lzp8ICBcXDpcXC86L19fXFwvXFwgIFxcOlxcLzovfi86L1xcICBcXDpcXC86LyAvOi9cbi8vICAgIFxcICBcXDo6LyAvOi8gXFwgIFxcOjovICAgICAgXFwgIFxcOjovIC86LyAgXFwgIFxcOjovIC86L1xuLy8gICAgIFxcICBcXDpcXC86LyAgIFxcICBcXDpcXCAgICAgICBcXF9fXFwvIC86LyAgICBcXCAgXFw6XFwvOi9cbi8vICAgICAgXFwgIFxcOjovICAgICBcXCAgXFw6XFwgICAgICAgIC9fXy86LyAgICAgIFxcICBcXDo6L1xuLy8gICAgICAgXFxfX1xcLyAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvXG5cbmh0bWwgeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG5cbiosXG4qOmJlZm9yZSxcbio6YWZ0ZXIgeyBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKHdoaXRlKTtcbiAgbWluLWhlaWdodDogMTAwdmg7XG59XG5cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7XG59XG4iLCIvLypcbi8vIEBwYXR0ZXJuIENvbG9yc1xuLy8gQGdyb3VwIEhlbHBlclxuLy9cbi8vIFRoaXMgc3R5bGVzaGVldCBwcm92aWRlcyBhIGNlbnRyYWxpemVkIGxvY2F0aW9uIHRvIG1hbmFnZSBjb2xvcnMuIENvbG9yc1xuLy8gc2hvdWxkICoqbmV2ZXIqKiBiZSBkZWNsYXJlZCBpbiBDU1MgZGlyZWN0bHk7IGluc3RlYWQsIGFkZCB0aGUgY29sb3IgdG8gdGhlXG4vLyBgJENPTE9SU2AgbWFwIChmb2xsb3dpbmcgdGhlIFwiY29sb3ItbW9kaWZpZXJcIiBuYW1pbmcgY29udmVudGlvbikgYW5kXG4vLyB0aGVuIGluY2x1ZGUgaXQgYXMgcmVxdWlyZWQgdXNpbmcgdGhlIGBjb2xvcigpYCBmdW5jdGlvbiBkZXNjcmliZWQgYmVsb3cuXG4vL1xuLy8gVGhlIGNvbG9yIGNvbXBvbmVudCBhbHNvIHByb3ZpZGVzIHNvbWUgdXRpbGl0eSBtZXRob2RzIHRvIGRhcmtlbiAoYHNoYWRlKClgKVxuLy8gYW5kIGxpZ2h0ZW4gKGB0aW50KClgKSBjb2xvcnMg4oCUwqB1c2UgdGhlc2Ugb25seSBmb3Igb25lLW9mZnMgdGhhdCBhcmUgZGVlbWVkXG4vLyBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4gRm9yIHZhcmlhdGlvbnMgdGhhdCBhcmUgdXNlZCBpbiBtdWx0aXBsZSBwbGFjZXMsIGFkZFxuLy8gYSBuZXcgdmFyaWF0aW9uIHRvIHRoZSBgJENPTE9SU2AgbWFwLlxuXG5cbiRVSV9DT0xPUlM6IChcbiAgd2hpdGU6ICggYmFzZTogcmdiKDI1NSwgMjU1LCAyNTUpICksXG4gIGJsYWNrOiAoIGJhc2U6IHJnYigzMCwgMzAsIDMxKSApLFxuXG4gIGdyYXk6IChcbiAgICBsaWdodDogcmdiKDI0MiwgMjQyLCAyNDMpLFxuICAgIGJhc2U6IHJnYigyMjcsIDIyOCwgMjMwKSxcbiAgICBkYXJrOiByZ2IoMjA5LCAyMTEsIDIxNSksXG4gICAgZGFya2VyOiByZ2IoMTU2LCAxNTcsIDE2NSksXG4gICAgZGFya2VzdDogcmdiKDExMCwgMTExLCAxMjIpXG4gICksXG5cbiAgeWVsbG93OiAoXG4gICAgYmFzZTogcmdiKDI1MywgMjQ3LCAxNzUpLFxuICAgIGRhcms6IHJnYigxMzMsIDEyNiwgNTApXG4gICksXG5cbiAgYmx1ZTogKFxuICAgIGJhc2U6IHJnYigxODMsIDIxNCwgMjQ2KSxcbiAgICBkYXJrOiByZ2IoMTQwLCAxOTQsIDI1MSksXG4gICAgZGFya2VyOiByZ2IoOTgsIDEyMSwgMTQ0KVxuICApXG4pO1xuXG5AZnVuY3Rpb24gdWktY29sb3IoJGNvbG9yLCAkc2hhZGU6IGJhc2UpIHtcbiAgQHJldHVybiBtYXAtZ2V0KG1hcC1nZXQoJFVJX0NPTE9SUywgJGNvbG9yKSwgJHNoYWRlKTtcbn1cblxuXG4kQ09MT1JTOiAoXG4gIHdoaXRlOiByZ2IoMjU1LCAyNTUsIDI1NSksXG4gIGJsYWNrOiByZ2IoMzAsIDMwLCAzMSksXG5cbiAgYmx1ZS1saWdodDogcmdiKDEzNSwgMTk0LCAyMzUpLFxuICBibHVlOiByZ2IoNjUsIDE1MCwgMjIzKSxcbiAgYmx1ZS1kYXJrOiByZ2IoNDAsIDEzNCwgMjE0KSxcbiAgYmx1ZS1kYXJrZXI6IHJnYigyNiwgOTIsIDE3MSksXG5cbiAgeWVsbG93OiByZ2IoMjUyLCAyNDYsIDE2MSksXG4gIHllbGxvdy1kYXJrOiByZ2IoMTM5LCAxMzQsIDcyKSxcblxuICBzbGF0ZS1saWdodDogcmdiKDU1LCA1NywgNjApLFxuICBzbGF0ZTogcmdiKDUxLCA1NCwgNTgpLFxuXG4gIGdyYXktbGlnaHRlcjogcmdiKDI0OCwgMjQ4LCAyNDgpLFxuICBncmF5LWxpZ2h0OiByZ2IoMjQxLCAyNDEsIDI0MSksXG4gIGdyYXk6IHJnYigyMDcsIDIwNywgMjA3KSxcbiAgZ3JheS1kYXJrOiByZ2IoMTc3LCAxNzcsIDE3NyksXG4gIGdyYXktZGFya2VyOiByZ2IoNzQsIDc0LCA3NClcbik7XG5cblxuLy8qXG4vLyBSZXR1cm5zIHRoZSBjb2xvciBhc3NvY2lhdGVkIHdpdGggdGhlIHBhc3NlZCBpZGVudGlmaWVyLlxuLy9cbi8vIEBhdXRob3IgQ2hyaXMgU2F1dmUgKGdpdGh1YjogbGVtb25tYWRlKVxuLy9cbi8vIEBwYXJhbSB7U3RyaW5nfSAkY29sb3IgLSBUaGUgY29sb3IgKG9yIG90aGVyIGlkZW50aWZpZXIgdGhhdFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHMgdG8gYSBjb2xvcikgdG8gc2VhcmNoIGZvciBpbiB0aGVcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwgYCRDT0xPUlNgIG1hcC5cbi8vXG4vLyBAZXhhbXBsZSBzY3NzXG4vLyAuZm9vIHtcbi8vICAgYmFja2dyb3VuZDogY29sb3IocmVkKTsgLy8gPT4gYmFja2dyb3VuZDogcmdiKDI0NSwgNzksIDg0KTtcbi8vIH1cbi8vXG4vLyBAcmV0dXJucyB7Q29sb3J9XG5cbkBmdW5jdGlvbiBjb2xvcigkY29sb3IpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRDT0xPUlMsICRjb2xvcik7XG59XG5cblxuLy8qXG4vLyBTbGlnaHRseSBsaWdodGVuIGEgY29sb3IuXG4vL1xuLy8gQHBhcmFtIHtDb2xvcn0gJGNvbG9yIC0gVGhlIGNvbG9yIHRvIHRpbnQuXG4vLyBAcGFyYW0ge051bWJlcn0gJHBlcmNlbnRhZ2UgLSBQZXJjZW50YWdlIG9mIGAkY29sb3JgIGluIHRoZSByZXR1cm5lZCBjb2xvci5cbi8vXG4vLyBAcmV0dXJucyB7Q29sb3J9XG5cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgoJGNvbG9yLCBjb2xvcih3aGl0ZSksICRwZXJjZW50YWdlKTtcbn1cblxuXG4vLypcbi8vIFNsaWdodGx5IGRhcmtlbiBhIGNvbG9yLlxuLy9cbi8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvciAtIFRoZSBjb2xvciB0byBzaGFkZS5cbi8vIEBwYXJhbSB7TnVtYmVyfSAkcGVyY2VudGFnZSAtIFBlcmNlbnRhZ2Ugb2YgYCRjb2xvcmAgaW4gdGhlIHJldHVybmVkIGNvbG9yLlxuLy9cbi8vIEByZXR1cm5zIHtDb2xvcn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgoJGNvbG9yLCBjb2xvcihibGFjayksICRwZXJjZW50YWdlKTtcbn1cbiIsIkBtaXhpbiBpY29uLS1yZWNvbG9yKCRjb2xvciwgJHZhcmlhbnQ6IGJhc2UpIHtcbiAgZmlsbDogdWktY29sb3IoJGNvbG9yLCAkdmFyaWFudCk7XG4gIHN0cm9rZTogdWktY29sb3IoJGNvbG9yLCAkdmFyaWFudCk7XG59XG5cblxuLmljb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHN0cm9rZS13aWR0aDogMjtcbn1cblxuJGljb24tLXNpemUtbWVkaXVtOiByZW0oMjQpO1xuJGljb24tLXNpemUtbGFyZ2U6IHJlbSgyOCk7XG5cbi5pY29uLS1tZWRpdW0ge1xuICBoZWlnaHQ6ICRpY29uLS1zaXplLW1lZGl1bTtcbiAgd2lkdGg6ICRpY29uLS1zaXplLW1lZGl1bTtcbn1cblxuLmljb24tLWxhcmdlIHtcbiAgaGVpZ2h0OiAkaWNvbi0tc2l6ZS1sYXJnZTtcbiAgd2lkdGg6ICRpY29uLS1zaXplLWxhcmdlO1xufVxuXG5cbiRpY29uLWFjdGlvbi0tc2l6ZTogMS42NXJlbTtcblxuLmljb24tLWFjdGlvbiB7XG4gIGhlaWdodDogJGljb24tYWN0aW9uLS1zaXplO1xuICB3aWR0aDogJGljb24tYWN0aW9uLS1zaXplO1xufVxuXG4kaWNvbi1oYW1idXJnZXItLXdpZHRoOiAycmVtO1xuJGljb24taGFtYnVyZ2VyLS1zbGljZS1oZWlnaHQ6IDRweDtcblxuLmljb24tLWhhbWJ1cmdlciB7XG4gIGhlaWdodDogJGljb24tYWN0aW9uLS1zaXplO1xuICB3aWR0aDogJGljb24taGFtYnVyZ2VyLS13aWR0aDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG9wYWNpdHk6IDAuNjtcbiAgdG9wOiAwLjJlbTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7XG5cbiAgJjpob3ZlciB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6ICRpY29uLWhhbWJ1cmdlci0tc2xpY2UtaGVpZ2h0O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1yYWRpdXM6ICgkaWNvbi1oYW1idXJnZXItLXNsaWNlLWhlaWdodCAvIDIpO1xuICAgIGJhY2tncm91bmQ6IHVpLWNvbG9yKGdyYXksIGRhcmtlc3QpO1xuICB9XG5cbiAgJjpiZWZvcmUgeyB0b3A6IDA7IH1cbiAgJjphZnRlciB7IGJvdHRvbTogMDsgfVxufVxuXG4uaWNvbi0taGFtYnVyZ2VyX19zbGljZSB7XG4gIGhlaWdodDogJGljb24taGFtYnVyZ2VyLS1zbGljZS1oZWlnaHQ7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItcmFkaXVzOiAoJGljb24taGFtYnVyZ2VyLS1zbGljZS1oZWlnaHQgLyAyKTtcbiAgYmFja2dyb3VuZDogdWktY29sb3IoZ3JheSwgZGFya2VzdCk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7IGxlZnQ6IDA7XG4gIG1hcmdpbi10b3A6ICgtMC41ICogJGljb24taGFtYnVyZ2VyLS1zbGljZS1oZWlnaHQpO1xufVxuXG4uaWNvbi0tZ3JheS1kYXJrZXIge1xuICBAaW5jbHVkZSBpY29uLS1yZWNvbG9yKGdyYXksIGRhcmtlcik7XG59XG5cbi5pY29uLS1jbG9zZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3BhY2l0eTogMC42O1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICY6aG92ZXIge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaGVpZ2h0OiAkaWNvbi1oYW1idXJnZXItLXNsaWNlLWhlaWdodDtcbiAgICB3aWR0aDogMTQwJTtcbiAgICBib3JkZXItcmFkaXVzOiAoJGljb24taGFtYnVyZ2VyLS1zbGljZS1oZWlnaHQgLyAyKTtcbiAgICBiYWNrZ3JvdW5kOiB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IC03MCU7XG4gICAgbWFyZ2luLXRvcDogKCRpY29uLWhhbWJ1cmdlci0tc2xpY2UtaGVpZ2h0IC8gLTIpO1xuICB9XG5cbiAgJjpiZWZvcmUgeyB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7IH1cbiAgJjphZnRlciB7IHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7IH1cbn1cblxuLmljb24tLWRpc2Nsb3N1cmUge1xuICBoZWlnaHQ6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG4gIHdpZHRoOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlWSgtNTAlKTtcbiAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgdWktY29sb3IoZ3JheSwgZGFya2VzdCk7XG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgbWFyZ2luLWxlZnQ6IHF1YXJ0ZXIoZGVmYXVsdChzcGFjaW5nKSk7XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICAvICAvXFwgICAgL19fL1xcICAgICAgICAvX18vXFwgICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcXG4vLyAgICAgIC8gIC86L18gICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcICAgICAgLyAgLzovICAgICAgIC8gIC86L19cbi8vICAgICAvICAvOi8gL1xcICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDpcXCAgICAvICAvOi8gICAgICAgLyAgLzovIC9cXFxuLy8gICAgLyAgLzovIC86L19fICBcXCAgXFw6XFwgIF9fX19fXFxfX1xcOlxcICAvICAvOi8gIF9fXyAgLyAgLzovIC86OlxcXG4vLyAgIC9fXy86LyAvOi9fXy9cXCAgXFxfX1xcOlxcL19fLzo6Ojo6Ojo6XFwvX18vOi8gIC8gIC9cXC9fXy86LyAvOi9cXDpcXFxuLy8gICBcXCAgXFw6XFwvOi9cXCAgXFw6XFwgLyAgLzovXFwgIFxcOlxcfn5cXH5+XFwvXFwgIFxcOlxcIC8gIC86L1xcICBcXDpcXC86L34vOi9cbi8vICAgIFxcICBcXDo6LyAgXFwgIFxcOlxcICAvOi8gIFxcICBcXDpcXCAgfn5+ICBcXCAgXFw6XFwgIC86LyAgXFwgIFxcOjovIC86L1xuLy8gICAgIFxcICBcXDpcXCAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcLzovICAgIFxcX19cXC8gLzovXG4vLyAgICAgIFxcICBcXDpcXCAgIFxcICBcXDo6LyAgICAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6Oi8gICAgICAgL19fLzovXG4vLyAgICAgICBcXF9fXFwvICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC9cbi8vXG4vLypcbi8vIEBwYXR0ZXJuIEZ1bmN0aW9uc1xuLy8gQGdyb3VwIEhlbHBlclxuLy8gQGF1dGhvciBDaHJpcyBTYXV2ZSAoZ2l0aHViOiBsZW1vbm1hZGUpXG4vL1xuLy8gRnVuY3Rpb25zIHNpbXBseSByZXR1cm4gYSB2YWx1ZTogdGhleSBkb24ndCBhY3R1YWxseSBhZGQgYSBhbnkgc3R5bGVzIHRvXG4vLyB0aGUgY29tcGlsZWQgc3R5bGVzaGVldC4gVXNlIHRoZXNlIHRvIHByb3ZpZGUgc29sdXRpb25zIHRvIGNvbW1vbiBjYWxjdWxhdGlvbnNcbi8vIG9yIFNhc3Mgb3BlcmF0aW9ucy5cblxuXG5cbi8vKlxuLy8gUmVtb3ZlcyB0aGUgdW5pdHMgZnJvbSBhIG51bWJlci5cbi8vXG4vLyBAZGVwcmVjYXRlZCAyLjEuMFxuLy8gQHByaXZhdGVcbi8vXG4vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gVGhlIG51bWJlciAodXN1YWxseSBhIG1lYXN1cmVtZW50KSB0aGF0IHlvdSB3b3VsZFxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgIGxpa2UgdG8gcmVtb3ZlIHVuaXRzIGZyb20uXG4vLyBAcmV0dXJucyB7TnVtYmVyfVxuLy9cbi8vIEBleGFtcGxlXG4vLyAkZm9vOiBzdHJpcC11bml0cyg0cmVtKTsgLy8gPT4gNFxuLy8gJGJhcjogc3RyaXAtdW5pdHMoMzAlKTsgLy8gPT4gMzBcblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXRzKCR2YWx1ZSkge1xuICBAcmV0dXJuICgkdmFsdWUgLyAoJHZhbHVlKjAgKyAxKSk7XG59XG5cbi8vKlxuLy8gQ29udmVydHMgdGhlIHBhc3NlZCB2YWx1ZSAoYXNzdW1lZCB0byBiZSBpbiBwaXhlbHMpIHRvIHRoZSBjb3JyZXNwb25kaW5nIGByZW1gXG4vLyB2YWx1ZS4gVGhpcyBjb252ZXJzaW9uIGFzc3VtZXMgYSBiYXNlIGZvbnQgc2l6ZSBvZiBgMTZweGAuXG4vL1xuLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFRoZSBwaXhlbCB2YWx1ZSB0byBjb252ZXJ0LlxuLy8gQHJldHVybnMge051bWJlcn1cblxuQGZ1bmN0aW9uIHJlbSgkdmFsdWUpIHtcbiAgQHJldHVybiAoc3RyaXAtdW5pdHMoJHZhbHVlKSAvIDE2ICogMXJlbSk7XG59XG5cbi8vKlxuLy8gSGFsdmVzIGEgZ2l2ZW4gbWVhc3VyZW1lbnQuXG4vL1xuLy8gQHBhcmFtIHtOdW1iZXJ9ICRtZWFzdXJlbWVudCAtIFRoZSBtZWFzdXJlbWVudCB0byBoYWx2ZS5cbi8vIEByZXR1cm5zIHtOdW1iZXJ9XG4vLyBAYWxpYXMgaGFsZlxuLy9cbi8vIEBleGFtcGxlXG4vLyAkZm9vOiBoYWx2ZSg0cmVtKTsgLy8gPT4gMnJlbVxuLy8gJGJhcjogaGFsZigzNik7IC8vID0+IDE4XG5cbkBmdW5jdGlvbiBoYWx2ZSgkbWVhc3VyZW1lbnQpIHtcbiAgQHJldHVybiAoJG1lYXN1cmVtZW50IC8gMik7XG59XG5cbkBmdW5jdGlvbiBoYWxmKCRtZWFzdXJlbWVudCkge1xuICBAcmV0dXJuIGhhbHZlKCRtZWFzdXJlbWVudCk7XG59XG5cbi8vKlxuLy8gUXVhcnRlcnMgYSBnaXZlbiBtZWFzdXJlbWVudC5cbi8vXG4vLyBAcGFyYW0ge051bWJlcn0gJG1lYXN1cmVtZW50IC0gVGhlIG1lYXN1cmVtZW50IHRvIHF1YXJ0ZXIuXG4vLyBAcmV0dXJucyB7TnVtYmVyfVxuLy9cbi8vIEBleGFtcGxlXG4vLyAkZm9vOiBxdWFydGVyKDRyZW0pOyAvLyA9PiAxcmVtXG5cbkBmdW5jdGlvbiBxdWFydGVyKCRtZWFzdXJlbWVudCkge1xuICBAcmV0dXJuICgkbWVhc3VyZW1lbnQgLyA0KTtcbn1cblxuLy8qXG4vLyBEb3VibGVzIGEgZ2l2ZW4gbWVhc3VyZW1lbnQuXG4vL1xuLy8gQHBhcmFtIHtOdW1iZXJ9ICRtZWFzdXJlbWVudCAtIFRoZSBtZWFzdXJlbWVudCB0byBkb3VibGUuXG4vLyBAcmV0dXJucyB7TnVtYmVyfVxuLy9cbi8vIEBleGFtcGxlXG4vLyAkZm9vOiBkb3VibGUoNHJlbSk7IC8vID0+IDhyZW1cblxuQGZ1bmN0aW9uIGRvdWJsZSgkbWVhc3VyZW1lbnQpIHtcbiAgQHJldHVybiAoJG1lYXN1cmVtZW50ICogMik7XG59XG5cbi8vKlxuLy8gTmVnYXRlcyBhIGdpdmVuIG1lYXN1cmVtZW50LlxuLy9cbi8vIEBwYXJhbSB7TnVtYmVyfSAkbWVhc3VyZW1lbnQgLSBUaGUgbWVhc3VyZW1lbnQgdG8gbmVnYXRlLlxuLy8gQHJldHVybnMge051bWJlcn1cbi8vXG4vLyBAZXhhbXBsZVxuLy8gJGZvbzogbmVnYXRpdmUoNHJlbSk7IC8vID0+IC00cmVtXG4vLyAkYmFyOiBuZWdhdGl2ZSgtNHJlbSk7IC8vID0+IDRyZW1cblxuQGZ1bmN0aW9uIG5lZ2F0aXZlKCRtZWFzdXJlbWVudCkge1xuICBAcmV0dXJuICgkbWVhc3VyZW1lbnQgKiAtMSk7XG59XG5cbi8vKlxuLy8gTXVsdGlwbGVzIGEgZ2l2ZW4gbWVhc3VyZW1lbnQgYnkgdGhlIHByb3ZpZGVkIGZhY3Rvci4gVXNlIHRoaXMgaW4gdGhvc2Vcbi8vIChyYXJlKSBpbnN0YW5jZXMgd2hlcmUgeW91IG5lZWQgYSBmYWN0b3IgdGhhdCBpcyBub3QgYDJgLCBgMC41YCwgYDAuMjVgLCBvclxuLy8gYC0xYCAoaW4gd2hpY2ggY2FzZSwgdXNlIHRoZSByZWxldmFudCBtdWx0aXBsaWNhdGlvbiBmdW5jdGlvbiBkaXJlY3RseSkuXG4vL1xuLy8gQHBhcmFtIHtOdW1iZXJ9ICRtZWFzdXJlbWVudCAtIFRoZSBtZWFzdXJlbWVudCB0byBtdWx0aXBsZS5cbi8vIEBwYXJhbSB7TnVtYmVyfSAkZmFjdG9yICAgICAgLSBUaGUgbXVsdGlwbGljYXRpb24gZmFjdG9yLlxuLy8gQHJldHVybnMge051bWJlcn1cbi8vXG4vLyBAZXhhbXBsZVxuLy8gJGZvbzogbXVsdGlwbHkoNHJlbSwgMyk7IC8vID0+IDEycmVtXG4vLyAkYmFyOiBtdWx0aXBseSg0cmVtLCAyKTsgLy8gPT4gOHJlbSBCVVQgZG9uJ3QgZG8gdGhpcyDigJTCoHVzZSBkb3VibGUoNHJlbSkgaW5zdGVhZFxuXG5AZnVuY3Rpb24gbXVsdGlwbHkoJG1lYXN1cmVtZW50LCAkZmFjdG9yKSB7XG4gIEByZXR1cm4gKCRtZWFzdXJlbWVudCAqICRmYWN0b3IpO1xufVxuIiwiLy8gICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgX19fICAgICAgICAgIF9fX1xuLy8gICAgICAgICAgICAgICAgICAgLyAgL1xcICAgICAgICBfX18gICAgLyAgL1xcICAgICAgICAvX18vXFwgICAgICAgIF9fX1xuLy8gICAgICAgICAgICAgICAgICAvICAvOjpcXCAgICAgIC9fXy98ICAvICAvOjpcXCAgICAgICBcXCAgXFw6XFwgICAgICAvICAvXFxcbi8vICAgIF9fXyAgICAgX19fICAvICAvOi9cXDpcXCAgICB8ICB8OnwgLyAgLzovXFw6XFwgICAgICAgXFwgIFxcOlxcICAgIC8gIC86L1xuLy8gICAvX18vXFwgICAvICAvXFwvICAvOi9+Lzo6XFwgICB8ICB8OnwvICAvOi8gIFxcOlxcICBfX18gIFxcICBcXDpcXCAgLyAgLzovXG4vLyAgIFxcICBcXDpcXCAvICAvOi9fXy86LyAvOi9cXDpcXF9ffF9ffDovX18vOi8gXFxfX1xcOlxcL19fL1xcICBcXF9fXFw6XFwvICAvOjpcXFxuLy8gICAgXFwgIFxcOlxcICAvOi9cXCAgXFw6XFwvOi9fX1xcL19fLzo6OjpcXCAgXFw6XFwgLyAgLzovXFwgIFxcOlxcIC8gIC86L19fLzovXFw6XFxcbi8vICAgICBcXCAgXFw6XFwvOi8gIFxcICBcXDo6LyAgICAgICB+XFx+flxcOlxcICBcXDpcXCAgLzovICBcXCAgXFw6XFwgIC86L1xcX19cXC8gIFxcOlxcXG4vLyAgICAgIFxcICBcXDo6LyAgICBcXCAgXFw6XFwgICAgICAgICBcXCAgXFw6XFwgIFxcOlxcLzovICAgIFxcICBcXDpcXC86LyAgICAgIFxcICBcXDpcXFxuLy8gICAgICAgXFxfX1xcLyAgICAgIFxcICBcXDpcXCAgICAgICAgIFxcX19cXC9cXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi8gICAgICAgIFxcX19cXC9cbi8vICAgICAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvXG5cbi5ncmlkIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLmdyaWQtLXZlcnRpY2FsbHktY2VudGVyZWQge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uZ3JpZC0tYWxpZ24tcmlnaHQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG4uZ3JpZC0tb3V0c2lkZS1zcGFjaW5nIHtcbiAgbWFyZ2luOiBkZWZhdWx0KHNwYWNpbmcpIDA7XG4gIHBhZGRpbmc6IDAgZGVmYXVsdChzcGFjaW5nKTtcbn1cblxuLmdyaWQtLXNwYWNlLWJldHdlZW4ge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgPiAuZ3JpZF9faXRlbSB7XG4gICAgZmxleDogMCAxIGF1dG87XG4gIH1cbn1cblxuLmdyaWRfX2l0ZW0ge1xuICBwYWRkaW5nOiAwIChkZWZhdWx0KHNwYWNpbmcpIC8gMik7XG4gIGZsZXg6IDEgMSAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAmOmZpcnN0LWNoaWxkIHsgcGFkZGluZy1sZWZ0OiAwOyB9XG4gICY6bGFzdC1jaGlsZCB7IHBhZGRpbmctcmlnaHQ6IDA7IH1cbn1cblxuLmdyaWRfX2l0ZW0tLW5vLWZsZXgge1xuICBmbGV4OiAwIDAgYXV0bztcbn1cblxuLmdyaWRfX2l0ZW0tLWhhbGYge1xuICBmbGV4OiAwIDAgNTAlO1xufVxuXG5cblxuXG5cbi5jb250ZW50IHtcbiAgcGFkZGluZzogMCBkZWZhdWx0KHNwYWNpbmcpO1xuICBtYXJnaW46IGRlZmF1bHQoc3BhY2luZykgMDtcbn1cblxuLmNvbnRlbnQtLWV4dHJhLXZlcnRpY2FsLXNwYWNpbmcge1xuICBtYXJnaW46IG11bHRpcGx5KGRlZmF1bHQoc3BhY2luZyksIDMpIDA7XG59XG4iLCIvLyAgICBfX18gIF9fXyBfX18gXyAgXyAgIF8gXyAgX19fX18gX19fXG4vLyAgIHwgICBcXHwgX198IF9fL19cXHwgfCB8IHwgfHxfICAgXy8gX198XG4vLyAgIHwgfCkgfCBffHwgXy8gXyBcXCB8X3wgfCB8X198IHwgXFxfXyBcXFxuLy8gICB8X19fL3xfX198Xy9fLyBcXF9cXF9fXy98X19fX3xffCB8X19fL1xuLy9cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy9cbi8vIFRoaXMgc3R5bGVzaGVldCBkZWNhbHJlcyBkZWZhdWx0IHZhbHVlcyBmb3IgY29tbW9uIHZpc3VhbCBlbGVtZW50cy4gVXNlIHRoaXNcbi8vIG1hcCBpbiBwbGFjZSBvZiBkZWNsYXJpbmcgdmFyaWFibGVzLCB3aGljaCBjb3VsZCBiZSBzbGlnaHRseSBoYXJkZXIgdG8gcmVtZW1iZXJcbi8vIHRoZSBuYW1lIG9mIGFuZCBwcmVzZW50IG1vcmUgb2YgYSByaXNrIG9mIG5hbWluZyBjb25mbGljdHMuIFRvIGFkZCBhIGRlZmF1bHQsXG4vLyBhZGQgYSBkZXNjcmlwdGl2ZSBrZXkgbmFtZSB0byB0aGUgbWFwIHRoYXQgcmVmZXJlbmNlcyBhIG1hcCB0aGF0IGhhcyBhbiBgaW9zYFxuLy8gYW5kIGFuIGBhbmRyb2lkYCBrZXkuIFRoZW4sIHJldHJpZXZlIHRoZSB2YWx1ZSB1c2luZyBgZGVmYXVsdCgkcHJvcGVydHksICRwbGF0Zm9ybSlgLFxuLy8gd2hlcmUgcGxhdGZvcm0gZGVmYXVsdHMgdG8gaU9TLiBJZiB0aGUgcHJvcGVydHkgeW91IGFyZSBhZGRpbmcgaXMgYWxzbyBhIHZhbGlkXG4vLyBDU1MgcHJvcGVydHkgKGkuZS4sIGRlZmF1bHQgYm9yZGVycyBvciBib3JkZXIgcmFkaWkpLCB5b3UgY2FuIGRpcmVjdGx5IGluY2x1ZGVcbi8vIHRoYXQgZGVjbGFyYXRpb24gaW4gQ1NTIHVzaW5nIHRoZSBtaXhpbiB2ZXJzaW9uIG9mIGBkZWZhdWx0KClgLlxuXG5cblxuJERFRkFVTFRTOiAoXG4gIHNwYWNpbmc6IDFyZW0sXG4gIGJvcmRlci1yYWRpdXM6IDRweCxcbiAgbGluZS1oZWlnaHQ6IDEuMyxcbiAgY29udHJvbC1zaXplOiByZW0oMzQpLFxuICBjb250cm9sLXNpemUtLWxhcmdlOiByZW0oNDIpLFxuICBjb250cm9sLXBhZGRpbmc6IDAuNzVyZW0sXG4gIGJveC1zaGFkb3c6IDAgMCA0cHggcmdiYShjb2xvcihibGFjayksIDAuMylcbik7XG5cblxuXG5AZnVuY3Rpb24gZGVmYXVsdCgkcHJvcGVydHkpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRERUZBVUxUUywgJHByb3BlcnR5KTtcbn1cblxuQG1peGluIGRlZmF1bHQoJHByb3BlcnR5KSB7XG4gICN7JHByb3BlcnR5fTogZGVmYXVsdCgkcHJvcGVydHkpO1xufVxuIiwiJGNvbnRleHQ6IHotaW5kZXgtc3RhY2tpbmctY29udGV4dChnbG9iYWwsXG4gIChcbiAgICBjb250ZW50OiAxMCxcbiAgICBzaWRlYmFyOiAyMFxuICApXG4pO1xuXG5ib2R5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSk7XG59XG5cbi5wYWdlIHtcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgbWF4LWhlaWdodDogMTAwdmg7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbi5wYWdlX19jb250ZW50LFxuLnBhZ2VfX3NpZGViYXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5wYWdlX19jb250ZW50IHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleDogMSAxIDBweDtcbiAgQGluY2x1ZGUgei1pbmRleChjb250ZW50LCBnbG9iYWwpO1xuICBiYWNrZ3JvdW5kOiBjb2xvcih3aGl0ZSk7XG5cbiAgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgfVxufVxuXG4ucGFnZV9fc2lkZWJhciB7XG4gIEBpbmNsdWRlIHotaW5kZXgoc2lkZWJhciwgZ2xvYmFsKTtcbiAgZmxleDogMCAwIGF1dG87XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgICAgICAgICAgICAgICAgX19fICAgICAgICAgX19fX18gICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICAvICAvXFwgICAgICAgX19fICAgICAgICAgL19fL1xcICAgICAgIC8gIC86OlxcICAgICAgIC8gIC9cXCAgICAgICAgL19fL3xcbi8vICAgICAgLyAgLzo6fCAgICAgLyAgL1xcICAgICAgICBcXCAgXFw6XFwgICAgIC8gIC86L1xcOlxcICAgICAvICAvOi9fICAgICAgfCAgfDp8XG4vLyAgICAgLyAgLzovOnwgICAgLyAgLzovICAgICAgICAgXFwgIFxcOlxcICAgLyAgLzovICBcXDpcXCAgIC8gIC86LyAvXFwgICAgIHwgIHw6fFxuLy8gICAgLyAgLzovfDp8X18gL19fLzo6XFwgICAgIF9fX19fXFxfX1xcOlxcIC9fXy86LyBcXF9fXFw6fCAvICAvOi8gLzovXyAgX198X198Onxcbi8vICAgL19fLzovIHw6fCAvXFxcXF9fXFwvXFw6XFxfXyAvX18vOjo6Ojo6OjpcXFxcICBcXDpcXCAvICAvOi8vX18vOi8gLzovIC9cXC9fXy86Ojo6XFxfX19fXG4vLyAgIFxcX19cXC8gIHw6fC86LyAgIFxcICBcXDpcXC9cXFxcICBcXDpcXH5+XFx+flxcLyBcXCAgXFw6XFwgIC86LyBcXCAgXFw6XFwvOi8gLzovICAgflxcfn5cXDo6OjovXG4vLyAgICAgICB8ICB8Oi86LyAgICAgXFxfX1xcOjovIFxcICBcXDpcXCAgfn5+ICAgXFwgIFxcOlxcLzovICAgXFwgIFxcOjovIC86LyAgICAgfH5+fDp8fn5cbi8vICAgICAgIHwgIHw6Oi8gICAgICAvX18vOi8gICBcXCAgXFw6XFwgICAgICAgIFxcICBcXDo6LyAgICAgXFwgIFxcOlxcLzovICAgICAgfCAgfDp8XG4vLyAgICAgICB8ICB8Oi8gICAgICAgXFxfX1xcLyAgICAgXFwgIFxcOlxcICAgICAgICBcXF9fXFwvICAgICAgIFxcICBcXDo6LyAgICAgICB8ICB8Onxcbi8vICAgICAgIHxfX3wvICAgICAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICB8X198L1xuLy9cbi8vKlxuLy8gQHBhdHRlcm4gWi1JbmRleFxuLy8gQHRhZ2xpbmUgU3RhY2sgaXQgdXAhXG4vLyBAZ3JvdXAgSGVscGVyXG4vL1xuLy8gYHotaW5kZXhgIGlzIG1hbmFnZWQgaW4gdGhpcyBjZW50cmFsaXplZCBzdHlsZXNoZWV0IHRvIGNyZWF0ZSBhIG1hbmFnZWFibGVcbi8vIGFuZCBzZWxmLWRvY3VtZW50aW5nIHN5c3RlbS4gVGhlIHByb2Nlc3MgdG8gYWRkIHotaW5kZXhlcyBpcyBhcyBmb2xsb3dzOlxuLy9cbi8vIDEuIEZvciBlYWNoIHN0YWNraW5nIGNvbnRleHQgKGEgc2V0IG9mIGVsZW1lbnRzIGZvciB3aGljaCB5b3Ugd291bGQgbGlrZVxuLy8gICAgdG8gbWFpbnRhaW4gdGhlIHN0YWNraW5nIG9yZGVyKSwgY3JlYXRlIGEgbmV3IG1hcCB3aXRoIGEgZGVzY3JpcHRpdmVcbi8vICAgIHZhcmlhYmxlIG5hbWUuXG4vL1xuLy8gMi4gQWRkIGVudHJpZXMgdG8gdGhlIG1hcCBmb3IgZWFjaCBlbGVtZW50IHRoYXQgeW91IHdvdWxkIGxpa2UgdG8gY29udHJvbCB0aGVcbi8vICAgIHN0YWNraW5nIGNvbnRleHQgb2YuIFRoZSBkZWx0YSBiZXR3ZWVuIGVsZW1lbnRzIHNob3VsZCBub3QgbWF0dGVyLCBvbmx5XG4vLyAgICB0aGUgbnVtZXJpYyBvcmRlci4gRWxlbWVudHMgd2l0aCBoaWdoZXIgbnVtYmVycyB3aWxsIHN0YWNrIG9uIHRvcCBvZlxuLy8gICAgZWxlbWVudHMgd2l0aCBsb3dlciB6LWluZGV4ZXMuXG4vL1xuLy8gMy4gYEBpbmNsdWRlIHotaW5kZXhgIGluIHlvdXIgc3R5bGVzaGVldCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQgeW91IGFyZVxuLy8gICAgc2V0dGluZyB6LWluZGV4IGZvciBhbmQgdGhlIG1hcCBuYW1lIGRlZmluZWQgaW4gc3RlcCAxLlxuLy9cbi8vIDQuIFByb2ZpdC5cblxuXG5cbiRaX0lOREVYRVM6IChcbiAgZ2xvYmFsOiAoXG4gICAgY29udGVudDogMTAsXG4gICAgc2lkZWJhcjogMjBcbiAgKSxcblxuICBwYWdlOiAoXG4gICAgYXZhdGFyOiAxMCxcbiAgICBwb3BvdmVyLXJlc3Rpbmc6IDIwLFxuICAgIHBvcG92ZXItZGVhY3RpdmF0aW5nOiAzMCxcbiAgICBwb3BvdmVyLWFjdGl2ZTogNDBcbiAgKSxcblxuICBhdmF0YXI6IChcbiAgICBpbml0aWFsczogMTAsXG4gICAgaW1hZ2U6IDIwXG4gICksXG5cbiAgdGFibGU6IChcbiAgICBjZWxsOiAxMCxcbiAgICBjZWxsLXBlcnNpc3RhbnQ6IDIwLFxuICAgIGJhY2tkcm9wOiAzMFxuICApXG4pO1xuXG5cblxuLy8qXG4vLyBUaGlzIG1peGluIGNyZWF0ZXMgYSB6LWluZGV4IGRlY2xhcmF0aW9uIGJhc2VkIG9uIHRoZSBlbGVtZW50IGFuZCBjb250ZXh0XG4vLyBwYXNzZWQgaW4uIFRoZSBtaXhpbiB3aWxsIGF0dGVtcHQgdG8gcmV0cmlldmUgdGhlIGAkY29udGV4dGAgYXMgYSBrZXkgZnJvbVxuLy8gdGhlIGdsb2JhbCBgJFotSU5ERVhFU2AgbWFwLCBhbmQgd2lsbCB0aGVuIHRyeSB0byByZXRyaWV2ZSB0aGUgYCRlbGVtZW50YFxuLy8gZnJvbSB0aGF0IG1hcC4gSWYgdGhpcyBpcyBzdWNjZXNzZnVsLCB0aGUgei1pbmRleCBkZWNsYXJhdGlvbiBpcyBpbmNsdWRlZC5cbi8vXG4vLyBAcGFyYW0ge1N0cmluZ30gJGVsZW1lbnQgLSBUaGUgZWxlbWVudCB3aXRoaW4gdGhlIHN0YWNraW5nIGNvbnRleHQgeW91IGFyZVxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaW5nIHRoZSBydWxlIGZvci5cbi8vIEBwYXJhbSB7U3RyaW5nfSAkY29udGV4dCAtIFRoZSBzdGFja2luZyBjb250ZXh0IHlvdSB3YW50IHRvIHNlYXJjaCBpbiBmb3Jcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAkZWxlbWVudGAuXG5cbkBtaXhpbiB6LWluZGV4KCRlbGVtZW50LCAkY29udGV4dCkge1xuICAkaW5kZXg6IG1hcC1nZXQobWFwLWdldCgkWl9JTkRFWEVTLCAkY29udGV4dCksICRlbGVtZW50KTtcblxuICBAaWYgJGluZGV4IHtcbiAgICB6LWluZGV4OiAkaW5kZXg7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHotaW5kZXgtc3RhY2tpbmctY29udGV4dCgkbmFtZSwgJHN0YWNrLW9yZGVyKSB7XG4gICRuZXctc3RhY2stb3JkZXI6ICggJG5hbWU6ICRzdGFjay1vcmRlciApO1xuICAkWl9JTkRFWEVTOiBtYXAtbWVyZ2UoJFpfSU5ERVhFUywgJG5ldy1zdGFjay1vcmRlcik7XG5cbiAgQHJldHVybiB0cnVlO1xufVxuIiwiLy8gICAgICAgIF9fXyAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgICAgICAgICAgIF9fX1xuLy8gICAgICAgLyAgL1xcICAgIC8gIC9cXCAgICAgICAgL19fL1xcICAgICAgICBfX18gICAgLyAgL1xcXG4vLyAgICAgIC8gIC86L18gIC8gIC86OlxcICAgICAgIFxcICBcXDpcXCAgICAgIC8gIC9cXCAgLyAgLzovX1xuLy8gICAgIC8gIC86LyAvXFwvICAvOi9cXDpcXCAgICAgICBcXCAgXFw6XFwgICAgLyAgLzovIC8gIC86LyAvXFxcbi8vICAgIC8gIC86LyAvOi8gIC86LyAgXFw6XFwgIF9fX19fXFxfX1xcOlxcICAvICAvOi8gLyAgLzovIC86OlxcXG4vLyAgIC9fXy86LyAvOi9fXy86LyBcXF9fXFw6XFwvX18vOjo6Ojo6OjpcXC8gIC86OlxcL19fLzovIC86L1xcOlxcXG4vLyAgIFxcICBcXDpcXC86L1xcICBcXDpcXCAvICAvOi9cXCAgXFw6XFx+flxcfn5cXC9fXy86L1xcOlxcICBcXDpcXC86L34vOi9cbi8vICAgIFxcICBcXDo6LyAgXFwgIFxcOlxcICAvOi8gIFxcICBcXDpcXCAgfn5+XFxfX1xcLyAgXFw6XFwgIFxcOjovIC86L1xuLy8gICAgIFxcICBcXDpcXCAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6XFwgICAgICAgICBcXCAgXFw6XFxfX1xcLyAvOi9cbi8vICAgICAgXFwgIFxcOlxcICAgXFwgIFxcOjovICAgICAgXFwgIFxcOlxcICAgICAgICAgXFxfX1xcLyAvX18vOi9cbi8vICAgICAgIFxcX19cXC8gICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgIFxcX19cXC9cblxuQG1peGluIHR5cGUtLWRlZmF1bHQtZm9udC1mYW1pbHkge1xuICBmb250LWZhbWlseTogU291cmNlIFNhbnMgUHJvLCBIZWx2ZXRpY2EgTmV1ZSwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cblxuQG1peGluIHR5cGUtLW1vbm9zcGFjZS1mb250LWZhbWlseSB7XG4gIGZvbnQtZmFtaWx5OiBDb25zb2xhcywgbW9ub3NwYWNlO1xufVxuXG5ib2R5IHtcbiAgdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgY29sb3I6IGNvbG9yKHNsYXRlKTtcbiAgQGluY2x1ZGUgdHlwZS0tZGVmYXVsdC1mb250LWZhbWlseTtcbn1cblxuYnV0dG9uLFxuaW5wdXQge1xuICBAaW5jbHVkZSB0eXBlLS1kZWZhdWx0LWZvbnQtZmFtaWx5O1xufVxuXG5cblxuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCAudHlwZSB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xufVxuXG5AbWl4aW4gdHlwZS0taGVhZGluZy0xIHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKGhlYWRpbmctMSk7XG59XG5cbkBtaXhpbiB0eXBlLS1oZWFkaW5nLTIge1xuICBmb250LXdlaWdodDogNDAwO1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VzdCk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShoZWFkaW5nLTIpO1xufVxuXG5AbWl4aW4gdHlwZS0taGVhZGluZy0zIHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgQGluY2x1ZGUgZm9udC1zaXplKGhlYWRpbmctMyk7XG59XG5cbkBtaXhpbiB0eXBlLS1oZWFkaW5nLTQge1xuICBtYXJnaW46IGRlZmF1bHQoc3BhY2luZykgYXV0byBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuICBmb250LXdlaWdodDogNjAwO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFyayk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShoZWFkaW5nLTQpO1xufVxuXG5AbWl4aW4gdHlwZS0taGVhZGluZy01IHtcbiAgbWFyZ2luOiBkZWZhdWx0KHNwYWNpbmcpIGF1dG8gaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlc3QpO1xuICBAaW5jbHVkZSBmb250LXNpemUoaGVhZGluZy01KTtcbn1cblxuQG1peGluIHR5cGUtLXBhcmFncmFwaCB7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShwYXJhZ3JhcGgpO1xuICBAaW5jbHVkZSBkZWZhdWx0KGxpbmUtaGVpZ2h0KTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgY29sb3I6IHVpLWNvbG9yKGJsYWNrKTtcblxuICArIHAge1xuICAgIG1hcmdpbi10b3A6ICgwLjc1ICogZGVmYXVsdChzcGFjaW5nKSk7XG4gIH1cblxuICA+IGEge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6IHVpLWNvbG9yKGJsdWUsIGRhcmtlcik7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcblxuICAgID4gc3BhbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdWktY29sb3IoYmx1ZSwgZGFyayk7XG4gICAgfVxuXG4gICAgPiBjb2RlIHtcbiAgICAgIGNvbG9yOiB1aS1jb2xvcihibHVlLCBkYXJrZXIpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWl4KHVpLWNvbG9yKGdyYXksIGxpZ2h0KSwgdWktY29sb3IoYmx1ZSksIDgwJSk7XG4gICAgICBib3JkZXItY29sb3I6IHJnYmEodWktY29sb3IoYmx1ZSwgZGFya2VyKSwgMC4xNSk7XG4gICAgfVxuICB9XG5cbiAgY29kZSB7XG4gICAgQGluY2x1ZGUgdHlwZS0tbW9ub3NwYWNlLWZvbnQtZmFtaWx5O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiAwLjA1ZW0gMC4yNWVtO1xuICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSwgbGlnaHQpO1xuICAgIGNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB1aS1jb2xvcihncmF5KTtcbiAgICBAaW5jbHVkZSBkZWZhdWx0KGJvcmRlci1yYWRpdXMpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBlLS1wYXJhZ3JhcGgtc21hbGwge1xuICBAaW5jbHVkZSBmb250LXNpemUocGFyYWdyYXBoLXNtYWxsKTtcbn1cblxuQG1peGluIHR5cGUtLWFmdGVyLXBhcmFncmFwaCB7XG4gIC50eXBlLS1wYXJhZ3JhcGggKyAmLFxuICAudXNlci10eXBlICsgJiB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuXG5cbi50eXBlLS1oZWFkaW5nLTEgeyBAaW5jbHVkZSB0eXBlLS1oZWFkaW5nLTE7IH1cbi50eXBlLS1oZWFkaW5nLTIgeyBAaW5jbHVkZSB0eXBlLS1oZWFkaW5nLTI7IH1cbi50eXBlLS1oZWFkaW5nLTMgeyBAaW5jbHVkZSB0eXBlLS1oZWFkaW5nLTM7IH1cbi50eXBlLS1oZWFkaW5nLTQge1xuICBAaW5jbHVkZSB0eXBlLS1oZWFkaW5nLTQ7XG59XG5cbi50eXBlLS1oZWFkaW5nLTUge1xuICBAaW5jbHVkZSB0eXBlLS1oZWFkaW5nLTU7XG5cbiAgLnR5cGUtLWhlYWRpbmctNCArICYge1xuICAgIG1hcmdpbi10b3A6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG4gIH1cblxuICBAaW5jbHVkZSB0eXBlLS1hZnRlci1wYXJhZ3JhcGgge1xuICAgIG1hcmdpbi10b3A6ICgxLjUgKiBkZWZhdWx0KHNwYWNpbmcpKTtcbiAgfVxufVxuXG4udHlwZS0taGVhZGluZy1ib3JkZXJlZCB7XG4gIHBhZGRpbmctYm90dG9tOiBkZWZhdWx0KHNwYWNpbmcpO1xuICBtYXJnaW4tYm90dG9tOiBtdWx0aXBseShkZWZhdWx0KHNwYWNpbmcpLCAxLjMpO1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgdWktY29sb3IoZ3JheSk7XG5cbiAgKyAuc2VjdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogbmVnYXRpdmUoZGVmYXVsdChzcGFjaW5nKSk7XG4gIH1cbn1cblxuLnR5cGUtLXBhcmFncmFwaCB7IEBpbmNsdWRlIHR5cGUtLXBhcmFncmFwaDsgfVxuLnR5cGUtLXBhcmFncmFwaC1zbWFsbCB7IEBpbmNsdWRlIHR5cGUtLXBhcmFncmFwaC1zbWFsbDsgfVxuXG4udHlwZS1jb250YWluZXIge1xuICBoMSB7IEBpbmNsdWRlIHR5cGUtLWhlYWRpbmctMTsgfVxuICBoMiB7IEBpbmNsdWRlIHR5cGUtLWhlYWRpbmctMjsgfVxuICBoMyB7IEBpbmNsdWRlIHR5cGUtLWhlYWRpbmctMzsgfVxuICBoNCB7IEBpbmNsdWRlIHR5cGUtLWhlYWRpbmctNDsgfVxuICBoNSB7IEBpbmNsdWRlIHR5cGUtLWhlYWRpbmctNTsgfVxuXG4gIHAgeyBAaW5jbHVkZSB0eXBlLS1wYXJhZ3JhcGg7IH1cbn1cblxuLnR5cGUtY29udGFpbmVyLS1zbWFsbCB7XG4gIHAgeyBAaW5jbHVkZSB0eXBlLS1wYXJhZ3JhcGgtc21hbGw7IH1cbn1cblxuXG5cbi50eXBlLS1kaXNwbGF5IHtcbiAgZm9udC1zaXplOiAxLjNyZW07XG4gIG1hcmdpbi10b3A6IDA7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4udHlwZS0tbWFyZ2luLWJvdHRvbSB7XG4gIG1hcmdpbi1ib3R0b206IGRlZmF1bHQoc3BhY2luZyk7XG59XG5cbi50eXBlLS1zdWJkdWVkIHtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmspO1xufVxuXG5cblxuXG5cblxuXG5cblxuXG5cbi50eXBlLS1jb2RlIHtcbiAgQGluY2x1ZGUgdHlwZS0tbW9ub3NwYWNlLWZvbnQtZmFtaWx5O1xuICBmb250LXNpemU6IDAuOTVlbTtcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xufVxuXG46OnNlbGVjdGlvbiB7XG4gIGJhY2tncm91bmQ6IHVpLWNvbG9yKGJsdWUpO1xufVxuIiwiLy8gICAgICAgIF9fXyAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICAvICAvXFwgICAgLyAgL1xcICAgICAgICAvX18vXFwgICAgICAgIF9fXyAgICAgICAgICAgICAgICAvICAvXFwgICAgICBfX18gICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcXG4vLyAgICAgIC8gIC86L18gIC8gIC86OlxcICAgICAgIFxcICBcXDpcXCAgICAgIC8gIC9cXCAgICAgICAgICAgICAgLyAgLzovXyAgICAvICAvXFwgICAgICAvICAvOjp8ICAgICAgLyAgLzovX1xuLy8gICAgIC8gIC86LyAvXFwvICAvOi9cXDpcXCAgICAgICBcXCAgXFw6XFwgICAgLyAgLzovICAgICAgICAgICAgIC8gIC86LyAvXFwgIC8gIC86LyAgICAgLyAgLzovOnwgICAgIC8gIC86LyAvXFxcbi8vICAgIC8gIC86LyAvOi8gIC86LyAgXFw6XFwgIF9fX19fXFxfX1xcOlxcICAvICAvOi8gICAgICAgICAgICAgLyAgLzovIC86OlxcL19fLzo6XFwgICAgLyAgLzovfDp8X18gIC8gIC86LyAvOi9fXG4vLyAgIC9fXy86LyAvOi9fXy86LyBcXF9fXFw6XFwvX18vOjo6Ojo6OjpcXC8gIC86OlxcICAgICAgICAgICAgL19fLzovIC86L1xcOlxcX19cXC9cXDpcXF9fL19fLzovIHw6fCAvXFwvX18vOi8gLzovIC9cXFxuLy8gICBcXCAgXFw6XFwvOi9cXCAgXFw6XFwgLyAgLzovXFwgIFxcOlxcfn5cXH5+XFwvX18vOi9cXDpcXCAgICAgICAgICAgXFwgIFxcOlxcLzovfi86LyAgXFwgIFxcOlxcL1xcX19cXC8gIHw6fC86L1xcICBcXDpcXC86LyAvOi9cbi8vICAgIFxcICBcXDo6LyAgXFwgIFxcOlxcICAvOi8gIFxcICBcXDpcXCAgfn5+XFxfX1xcLyAgXFw6XFwgICAgICAgICAgIFxcICBcXDo6LyAvOi8gICAgXFxfX1xcOjovICAgfCAgfDovOi8gIFxcICBcXDo6LyAvOi9cbi8vICAgICBcXCAgXFw6XFwgICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOlxcICAgICAgICAgXFwgIFxcOlxcICAgICAgICAgICBcXF9fXFwvIC86LyAgICAgL19fLzovICAgIHwgIHw6Oi8gICAgXFwgIFxcOlxcLzovXG4vLyAgICAgIFxcICBcXDpcXCAgIFxcICBcXDo6LyAgICAgIFxcICBcXDpcXCAgICAgICAgIFxcX19cXC8gICAgICAgICAgICAgL19fLzovICAgICAgXFxfX1xcLyAgICAgfCAgfDovICAgICAgXFwgIFxcOjovXG4vLyAgICAgICBcXF9fXFwvICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgICB8X198LyAgICAgICAgXFxfX1xcL1xuLy9cbi8vKlxuLy8gQHBhdHRlcm4gRm9udCBTaXplc1xuLy8gQGdyb3VwIEhlbHBlclxuLy9cbi8vIFRoZSBzdHlsZXNoZWV0IGV4aXN0cyBhcyBhIHNpbmdsZSBwbGFjZSB0byBtYW5hZ2UgYWxsIGZvbnQgc2l6ZXMuIFRvIHVzZVxuLy8gYSBmb250IHNpemUgaW4geW91ciBzdHlsZXNoZWV0LCBmb2xsb3cgdGhpcyBwcm9jZWR1cmU6XG4vL1xuLy8gMS4gQWRkIGEgd2VsbC1uYW1lZCBlbnRyeSB0byB0aGUgYCRGT05ULVNJWkVTYCBtYXAgd2l0aCB0aGUgdmFsdWUgc2V0IHRvXG4vLyAgICB0aGUgZm9udCBzaXplIGZvciB0aGF0IGVsZW1lbnQuXG4vL1xuLy8gMi4gSWYgeW91IHdpc2ggdG8gaW5jbHVkZSBhIGBmb250LXNpemVgIGRlY2xhcmF0aW9uIGluIHlvdXIgc3R5bGVzaGVldCxcbi8vICAgIGBAaW5jbHVkZSBmb250LXNpemUoKWAsIHBhc3NpbmcgaXQgdGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudCB0byByZXRyaWV2ZVxuLy8gICAgdGhlIGZvbnQtc2l6ZSBmb3IuXG4vL1xuLy8gMy4gUmV0cmlldmluZyB0aGUgYWN0dWFsIGZvbnQtc2l6ZSBkaW1lbnNpb24gKGZvciBleGFtcGxlLCB0byBiZSB1c2VkIGluIGFcbi8vICAgIGNhbGN1bGF0aW9uIHRvIGRldGVybWluZSBuZWNlc3NhcnkgcGFkZGluZykgc2hvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGVcbi8vICAgIHNhbWUgYXJndW1lbnQgZGlzY3Vzc2VkIGFib3ZlIHRvIHRoZSBgZm9udC1zaXplYCAqZnVuY3Rpb24qLlxuXG5cblxuJEZPTlRfU0laRVM6IChcbiAgaGVhZGluZy0xOiByZW0oMzYpLFxuICBoZWFkaW5nLTI6IHJlbSgzMCksXG4gIGhlYWRpbmctMzogcmVtKDI0KSxcbiAgaGVhZGluZy00OiByZW0oMTQpLFxuICBoZWFkaW5nLTU6IHJlbSgyMCksXG4gIGxhYmVsOiByZW0oMTYpLFxuICBwYXJhZ3JhcGg6IHJlbSgyMCksXG4gIHBhcmFncmFwaC1zbWFsbDogcmVtKDE4KSxcbiAgYXZhdGFyOiByZW0oMjApLFxuICBiYWRnZTogMC43NWVtLFxuICBiYWRnZS0tc3RhbmRhbG9uZTogcmVtKDE2KSxcbiAgY29kZS1ibG9jazogcmVtKDE2KSxcbiAgY29kZS1ibG9jay0tY29uZGVuc2VkOiByZW0oMTQpLFxuICBsaXN0LWhlYWRpbmc6IHJlbSgyMCksXG4gIHNlbGVjdDogcmVtKDE2KSxcbiAgdGFibGlzdDogcmVtKDE2KSxcbiAgdGFibGlzdC0tbGFyZ2U6IHJlbSgyNCksXG4gIGNvbnRyb2w6IHJlbSgxOClcbik7XG5cblxuXG4vLypcbi8vIFJldHJpdmVzIHRoZSBmb250LXNpemUgZm9yIGFuIGVsZW1lbnQgZGVjbGFyZWQgaW4gdGhlIGdsb2JhbFxuLy8gYCRGT05UX1NJWkVTYCBtYXAuIFRoaXMgd2lsbCBub3QgYWN0dWFsbHkgYWRkIGEgQ1NTIHJ1bGUg4oCUwqBpZiB5b3Vcbi8vIHdvdWxkIGxpa2UgdGhlIGFjdHVhbCBgZm9udC1zaXplYCBydWxlIHRvIGJlIHByaW50ZWQsIHVzZSB0aGVcbi8vIGBAbWl4aW5gIHZlcnNpb24uIFVzZSB0aGlzIGZ1bmN0aW9uIHdoZW4geW91IHdhbnQgdG8gcmV0cml2ZSB0aGUgZm9udFxuLy8gc2l6ZSBmb3IgdXNlIGluIG90aGVyIGNhbGN1bGF0aW9ucy5cbi8vXG4vLyBAcGFyYW0ge1N0cmluZ30gJGVsZW1lbnQgLSBUaGUgZWxlbWVudCB3aG9zZSBmb250LXNpemUgc2hvdWxkIGJlIHJldHJpZXZlZC5cbi8vIEByZXR1cm5zIHtOdW1iZXJ9XG5cbkBmdW5jdGlvbiBmb250LXNpemUoJGVsZW1lbnQpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRGT05ULVNJWkVTLCAkZWxlbWVudCk7XG59XG5cblxuXG4vLypcbi8vIFJldHJpdmVzIHRoZSBmb250LXNpemUgZm9yIGFuIGVsZW1lbnQgZGVjbGFyZWQgaW4gdGhlIGdsb2JhbFxuLy8gYCRGT05UX1NJWkVTYCBtYXAgKiphbmQqKiBwcmludHMgdGhlIGBmb250LXNpemVgIHJ1bGUuXG4vL1xuLy8gQHBhcmFtIHtTdHJpbmd9ICRlbGVtZW50IC0gVGhlIGVsZW1lbnQgd2hvc2UgZm9udC1zaXplIHNob3VsZCBiZSByZXRyaWV2ZWQuXG4vL1xuLy8gQGV4YW1wbGVcbi8vIC50eXBlLS1oZWFkaW5nLTEge1xuLy8gICBAaW5jbHVkZSBmb250LXNpemUoaGVhZGluZy0xKTsgLy8gPT4gZm9udC1zaXplOiAycmVtO1xuLy8gfVxuXG5AbWl4aW4gZm9udC1zaXplKCRlbGVtZW50KSB7XG4gIGZvbnQtc2l6ZTogZm9udC1zaXplKCRlbGVtZW50KTtcbn1cbiIsIi8vICAgICAgICBfX18gICAgICAgICAgICAgICAgICAgICBfX18gICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICBfX19cbi8vICAgICAgIC8gIC9cXCAgICAgICAgX19fICAgICAgICAvICAvXFwgICAgICAgIF9fXyAgICAvICAvXFwgICAgICAgIC8gIC9cXFxuLy8gICAgICAvICAvOjpcXCAgICAgIC9fXy9cXCAgICAgIC8gIC86OlxcICAgICAgLyAgL1xcICAvICAvOjpcXCAgICAgIC8gIC86OlxcXG4vLyAgICAgLyAgLzovXFw6XFwgICAgIFxcICBcXDpcXCAgICAvICAvOi9cXDpcXCAgICAvICAvOi8gLyAgLzovXFw6XFwgICAgLyAgLzovXFw6XFxcbi8vICAgIC8gIC86L34vOjpcXCAgICAgXFwgIFxcOlxcICAvICAvOi9+Lzo6XFwgIC8gIC86LyAvICAvOi9+Lzo6XFwgIC8gIC86L34vOi9cbi8vICAgL19fLzovIC86L1xcOlxcX19fICBcXF9fXFw6XFwvX18vOi8gLzovXFw6XFwvICAvOjpcXC9fXy86LyAvOi9cXDpcXC9fXy86LyAvOi9fX19cbi8vICAgXFwgIFxcOlxcLzovX19cXC9fXy9cXCB8ICB8OnxcXCAgXFw6XFwvOi9fX1xcL19fLzovXFw6XFwgIFxcOlxcLzovX19cXC9cXCAgXFw6XFwvOjo6OjovXG4vLyAgICBcXCAgXFw6Oi8gICAgXFwgIFxcOlxcfCAgfDp8IFxcICBcXDo6LyAgICBcXF9fXFwvICBcXDpcXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi9+fn5+XG4vLyAgICAgXFwgIFxcOlxcICAgICBcXCAgXFw6XFxfX3w6fCAgXFwgIFxcOlxcICAgICAgICAgXFwgIFxcOlxcICBcXDpcXCAgICAgICBcXCAgXFw6XFxcbi8vICAgICAgXFwgIFxcOlxcICAgICBcXF9fXFw6Ojo6LyAgICBcXCAgXFw6XFwgICAgICAgICBcXF9fXFwvXFwgIFxcOlxcICAgICAgIFxcICBcXDpcXFxuLy8gICAgICAgXFxfX1xcLyAgICAgICAgIH5+fn4gICAgICBcXF9fXFwvICAgICAgICAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcL1xuXG4vLypcbi8vIEBwYXR0ZXJuIEF2YXRhclxuLy9cbi8vIEEgc21hbGwgaW1hZ2UgcmVwcmVzZW50aW5nIHNvbWVvbmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcHJvamVjdC4gVGhlIHNjcmlwdFxuLy8gcGFydCBvZiB0aGlzIGNvbXBvbmVudCBhbGxvd3MgaXQgdG8gZmV0Y2ggYXZhdGFyIGltYWdlcyBmcm9tIEdpdGh1YiwgVHdpdHRlcixcbi8vIG9yIEdyYXZhdGFyLCBkZXBlbmRpbmcgb24gdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkLiBJZiBubyBpbWFnZXMgYXJlIGZvdW5kXG4vLyBmb3IgdGhlIGF2YXRhciwgaXQgd2lsbCBmYWxsIGJhY2sgdG8gZGlzcGxheWluZyB0aGVpciBpbml0aWFscy5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuLy8qXG4vLyBUaGUgc2l6ZSAoaGVpZ2h0IGFuZCB3aWR0aCkgb2YgYW4gYGF2YXRhcmAuXG4vLyBAdHlwZSBMZW5ndGhcblxuJGF2YXRhci0tc2l6ZTogM3JlbTtcblxuLy8qXG4vLyBUaGUgbWFyZ2luIHRoYXQgc2hvdWxkIGFwcGVhciBiZXR3ZWVuIHR3byBgYXZhdGFyYHMgKGluY2x1ZGluZyB0aG9zZSBvbiBhXG4vLyBuZXcgbGluZSkuXG4vLyBAdHlwZSBMZW5ndGhcblxuJGF2YXRhci0tc3BhY2luZzogaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcblxuLy8qXG4vLyBUaGUgY29yZSBjb250YWluZXIgZm9yIGEgc2luZ2xlIGF2YXRhci4gQW4gYXZhdGFyIHN1cHBvcnRzIGZldGNoaW5nIG9mIHRoZVxuLy8gYmFja2dyb3VuZCBpbWFnZSB0aHJvdWdoIGVpdGhlciBhIFtHaXRodWJdKGh0dHA6Ly9naXRodWIuY29tKSBwcm9maWxlIG5hbWUsXG4vLyBhIFtUd2l0dGVyXShodHRwOi8vdHdpdHRlci5jb20pIHVzZXJuYW1lLCBvciBhbiBlbWFpbCBhZGRyZXNzIHRoYXQgaXNcbi8vIGFzc29jaWF0ZWQgd2l0aCBhIFtHcmF2YXRhcl0oaHR0cDovL2dyYXZhdGFyLmNvbSkgYWNjb3VudC4gSWYgYW55IG9mIHRoZVxuLy8gYWJvdmUgYXJlIGdpdmVuLCBjbGlja2luZyBvbiB0aGUgYXZhdGFyIHdpbGwgb3BlbiBhIHRhYiB3aXRoIHRoZSByZWxldmFudFxuLy8gcHJvZmlsZSBwYWdlIG9wZW4gKG9yLCBjb21wb3NlIGEgbmV3IGVtYWlsIGlmIGVtYWlsIHdhcyB0aGUgcHJvdmlkZWRcbi8vIGlkZW50aWZpZXIpLiBJZiBub25lIG9mIHRoZSBhYm92ZSBhcmUgZ2l2ZW4sIHRoZSBpbml0aWFscyBvZiB0aGUgdXNlcidzIG5hbWVcbi8vIHdpbGwgYmUgc2hvd24uXG4vL1xuLy8gQGhlbHBlclxuLy8gPCUgZG9ja3NfY29tcG9uZW50KFwiYXZhdGFyOmNvbnRhaW5lclwiKSBkbyAlPlxuLy8gICA8JT0gZG9ja3NfY29tcG9uZW50KFwiYXZhdGFyXCIsIGF1dGhvcjogT3BlblN0cnVjdC5uZXcobmFtZTogXCJDaHJpcyBTYXV2ZVwiLCBnaXRodWI6IFwibGVtb25tYWRlXCIpKSAlPlxuLy8gPCUgZW5kICU+XG5cbi5hdmF0YXIge1xuICAvLyBwb3NpdGlvblxuICBAaW5jbHVkZSB6LWluZGV4KGF2YXRhciwgcGFnZSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBib3ggbW9kZWxcbiAgZmxleDogMCAwIGF1dG87XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAvLyBiYWNrZHJvcFxuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcihncmF5LWxpZ2h0KTtcbiAgYm9yZGVyLXJhZGl1czogZGVmYXVsdChib3JkZXItcmFkaXVzKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvLyB0eXBlXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShhdmF0YXIpO1xufVxuXG4vLypcbi8vIEEgY29udGFpbmVyIHRoYXQgc2hvd3MgdGhlIGluaXRhbHMgb2YgdGhlIHVzZXIuIFRoaXMgd2lsbCBhbHdheXMgYmUgcHJlc2VudFxuLy8gc28gdGhhdCBpdCBpcyB2aXNpYmxlIGltbWVkaWF0ZWx5IG9uIHBhZ2UgbG9hZC4gVGhlIGF2YXRhciBpbWFnZSwgd2hpY2ggaXNcbi8vIGZldGNoZWQgYnkgSmF2YVNjcmlwdCwgd2lsbCBiZSBmYWRlZCBpbiBvdmVyIHRvcCBvZiB0aGlzIHN1YmNvbXBvbmVudCwgaWZcbi8vIGF2YWlsYWJsZS5cbi8vXG4vLyBFdmVyeSBpbml0aWFsIG9mIHRoZSBwYXNzZWQgbmFtZSB3aWxsIGJlIHNob3duLiBUaGVyZSBpcyBlbm91Z2ggc3BhY2UgZm9yXG4vLyAy4oCTMyBpbml0aWFscywgYnV0IGFueSBtb3JlIHRoYW4gdGhpcyB3aWxsIG92ZXJmbG93IHRoZSBhdmF0YXIuIEFzIHN1Y2gsXG4vLyBwbGVhc2UgcmVzdHJpY3QgbmFtZXMgdG8gZmlyc3QgYW5kIGxhc3Qgb3IgZmlyc3QsIG1pZGRsZSwgYW5kIGxhc3QuXG5cbi5hdmF0YXJfX2luaXRpYWxzIHtcbiAgLy8gcG9zaXRpb25cbiAgQGluY2x1ZGUgei1pbmRleChpbml0aWFscywgYXZhdGFyKTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTsgbGVmdDogMDtcblxuICAvLyBib3ggbW9kZWxcbiAgd2lkdGg6IDEwMCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblxuICAvLyBiYWNrZHJvcFxuICBjb2xvcjogY29sb3IoZ3JheSk7XG5cbiAgLy8gdHlwZVxuICBmb250LXNpemU6IDFlbTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLy8qXG4vLyBUaGUgY29udGFpbmVyIGZvciB0aGUgYXZhdGFyIGltYWdlLiBUaGUgaW1hZ2Ugd2lsbCBiZSBzZXQgYnkgSmF2YVNjcmlwdCBhc1xuLy8gYSBiYWNrZ3JvdW5kIGltYWdlIG9uIHRoaXMgc3ViY29tcG9uZW50LCBzbyBpZiBubyBpbWFnZSBpcyBwcm92aWRlZCB0aGlzXG4vLyBjb250YWluZXIgd2lsbCBlZmZlY3RpdmVseSBiZSBpbnZpc2libGUuIE9uY2UgdGhlIGJhY2tncm91bmQgaW1hZ2UgaXNcbi8vIGZldGNoZWQgKHdoaWNoIHdpbGwgYmUgZG9uZSB3aXRoIGEgc2xpZ2h0IGRlbGF5IHRvIHByZXZlbnQgdG9vIG11Y2ggZnJvbVxuLy8gaGFwcGVuaW5nIG9uIHBhZ2UgbG9hZCksIGl0IGlzIGZhZGVkIGludG8gcGxhY2UgdXNpbmcgdGhlXG4vLyBgYXZhdGFyX19pbWFnZS0taXMtdmlzaWJsZWAgc3RhdGUuXG5cbi5hdmF0YXJfX2ltYWdlIHtcbiAgLy8gcG9zaXRpb25cbiAgQGluY2x1ZGUgei1pbmRleChpbWFnZSwgYXZhdGFyKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIGJveCBtb2RlbFxuICBoZWlnaHQ6ICRhdmF0YXItLXNpemU7XG4gIHdpZHRoOiAkYXZhdGFyLS1zaXplO1xuXG4gIC8vIGJhY2tkcm9wXG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLypcbi8vIFRoZSB2YXJpYXRpb24gdGhhdCBjYXVzZXMgdGhlIGltYWdlIHRvIGJlIGZhZGVkIGludG8gdmlldy5cbi8vXG4vLyBAZGVtb190eXBlIG5vbmVcbi8vIEBzZXRfYnkgQXZhdGFyI3Nob3dfaW1hZ2VcblxuLmF2YXRhcl9faW1hZ2UtLWlzLXZpc2libGUge1xuICBvcGFjaXR5OiAxO1xufVxuXG4vLypcbi8vIENyZWF0ZXMgdGhlIHJ1bGVzIHRoYXQgYXJlIHJlcXVpcmVkIHRvIHJlc3RyaWN0IGFuIGBhdmF0YXJfX2NvbnRhaW5lcmAgdG9cbi8vIGEgcGFydGljdWxhciBudW1iZXIgb2YgYGF2YXRhcmBzIHBlciBsaW5lLlxuLy9cbi8vIEBwYXJhbSB7TnVtYmVyfSAkbiAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBgYXZhdGFyYHMgYWxsb3dlZCBwZXIgbGluZS5cblxuQG1peGluIGF2YXRhci0tcmVzdHJpY3QtdG8tbi1hdmF0YXJzKCRuKSB7XG4gIG1heC13aWR0aDogKCgkbiAqICRhdmF0YXItLXNpemUpICsgKCRuICogJGF2YXRhci0tc3BhY2luZykpO1xufVxuXG4vLypcbi8vIFRoZSBjb250YWluZXIgYXJvdW5kIGEgc2V0IG9mIGF2YXRhcnMuIFRoaXMgY29udGFpbmVyIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0XG4vLyBlbGltaW5hdGVzIHRoZSBleGNlc3MgbWFyZ2luIGJlbG93IGFuZCB0byB0aGUgcmlnaHQgb2YgYGF2YXRhcmBzIG9uIHRoZVxuLy8gb3V0c2lkZSBlZGdlcyBvZiB0aGUgY29udGFpbmVyLCBidXQgc3RpbGwgYWxsb3dzIHRoZW0gdG8gYmUgcHJvcGVybHkgc3BhY2VkXG4vLyBvdXQgaG9yaXpvbnRhbGx5IGFuZCB2ZXJ0aWNhbGx5LiBUaGlzIGlzIGFjY29tcGxpc2hlZCB1c2luZyBuZWdhdGl2ZSBtYXJnaW5cbi8vIG9uIHRoZSBib3R0b20gYW5kIHJpZ2h0IHRvIG9mZnNldCB0aGUgbWFyZ2luIG9mIHRoZSBjb250YWluZWQgYGF2YXRhcmBzLlxuLy9cbi8vIFRoaXMgY29udGFpbmVyIGFsbG93cyB0aHJlZSBhdmF0YXJzIHNpZGUtYnktc2lkZSwgd2l0aCBhZGRpdGlvbmFsIGF2YXRhcnNcbi8vIGJyZWFraW5nIG9udG8gYSBuZXcgbGluZS4gSWYgeW91IG9ubHkgbmVlZCBhIHNpbmdsZSBhdmF0YXIsIHRoaXMgY29udGFpbmVyXG4vLyBpcyBub3QgbmVjZXNzYXJ5LlxuLy9cbi8vIFlvdSBjYW4gY3JlYXRlIHRoaXMgY29tcG9uZW50IHVzaW5nIHRoZSBgXCJhdmF0YXI6Y29udGFpbmVyXCJgIGhlbHBlci4gdGhpc1xuLy8gaGVscGVyIGFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgc2l6ZSBvZiB0aGUgY29udGFpbmVyOlxuLy9cbi8vIGBgYGVyYl9kZW1vXG4vLyA8ZGl2PlxuLy8gICA8JSBkb2Nrc19jb21wb25lbnQoXCJhdmF0YXI6Y29udGFpbmVyXCIpIGRvICU+XG4vLyAgICAgPCUgNC50aW1lcyBkbyAlPlxuLy8gICAgICAgPCU9IGRvY2tzX2NvbXBvbmVudChcImF2YXRhclwiLCBhdXRob3I6IE9wZW5TdHJ1Y3QubmV3KG5hbWU6IFwiQ2hyaXMgU2F1dmVcIiwgZ2l0aHViOiBcImxlbW9ubWFkZVwiKSkgJT5cbi8vICAgICA8JSBlbmQgJT5cbi8vICAgPCUgZW5kICU+XG4vLyA8L2Rpdj5cbi8vXG4vLyA8ZGl2PlxuLy8gICA8JSBkb2Nrc19jb21wb25lbnQoXCJhdmF0YXI6Y29udGFpbmVyXCIsIHNpemU6IDpsYXJnZSkgZG8gJT5cbi8vICAgICA8JSA0LnRpbWVzIGRvICU+XG4vLyAgICAgICA8JT0gZG9ja3NfY29tcG9uZW50KFwiYXZhdGFyXCIsIGF1dGhvcjogT3BlblN0cnVjdC5uZXcobmFtZTogXCJDaHJpcyBTYXV2ZVwiLCBnaXRodWI6IFwibGVtb25tYWRlXCIpKSAlPlxuLy8gICAgIDwlIGVuZCAlPlxuLy8gICA8JSBlbmQgJT5cbi8vIDwvZGl2PlxuLy8gYGBgXG5cbi5hdmF0YXJfX2NvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1hcmdpbi1yaWdodDogbmVnYXRpdmUoJGF2YXRhci0tc3BhY2luZykgIWltcG9ydGFudDtcbiAgbWFyZ2luLWJvdHRvbTogbmVnYXRpdmUoJGF2YXRhci0tc3BhY2luZykgIWltcG9ydGFudDtcbiAgQGluY2x1ZGUgYXZhdGFyLS1yZXN0cmljdC10by1uLWF2YXRhcnMoMyk7XG5cbiAgPiAuYXZhdGFyIHtcbiAgICBtYXJnaW4tcmlnaHQ6ICRhdmF0YXItLXNwYWNpbmc7XG4gICAgbWFyZ2luLWJvdHRvbTogJGF2YXRhci0tc3BhY2luZztcbiAgfVxufVxuXG4vLypcbi8vIEEgY29udGFpbmVyIHRoYXQgY2FuIGhvbGQgbW9yZSBgYXZhdGFyYHMgb24gYSBzaW5nbGUgbGluZSAoZm91ciwgaW5zdGVhZCBvZlxuLy8gdGhlIGJhc2UgdGhyZWUpLiBVc2UgdGhpcyBmb3Igc2l0dWF0aW9ucyBpbiB3aGljaCB5b3UgaGF2ZSBtb3JlIHJvb21cbi8vIGF2YWlsYWJsZSBmb3IgYW5jaWxsYXJ5IGluZm9ybWF0aW9uIGxpa2UgY29udHJpYnV0b3IgaW5mb3JtYXRpb24uXG4vL1xuLy8gQHNldF9ieSA6c2l6ZSAoOmxhcmdlKVxuXG4uYXZhdGFyX19jb250YWluZXItLWxhcmdlIHtcbiAgQGluY2x1ZGUgYXZhdGFyLS1yZXN0cmljdC10by1uLWF2YXRhcnMoNCk7XG59XG4iLCIvLyAgICAgICAgICAgICAgICAgICAgX19fICAgICAgICBfX19fXyAgICAgICAgX19fICAgICAgICAgIF9fX1xuLy8gICAgICAgX19fX18gICAgICAgLyAgL1xcICAgICAgLyAgLzo6XFwgICAgICAvICAvXFwgICAgICAgIC8gIC9cXFxuLy8gICAgICAvICAvOjpcXCAgICAgLyAgLzo6XFwgICAgLyAgLzovXFw6XFwgICAgLyAgLzovXyAgICAgIC8gIC86L19cbi8vICAgICAvICAvOi9cXDpcXCAgIC8gIC86L1xcOlxcICAvICAvOi8gIFxcOlxcICAvICAvOi8gL1xcICAgIC8gIC86LyAvXFxcbi8vICAgIC8gIC86L34vOjpcXCAvICAvOi9+Lzo6XFwvX18vOi8gXFxfX1xcOnwvICAvOi9fLzo6XFwgIC8gIC86LyAvOi9fXG4vLyAgIC9fXy86LyAvOi9cXDovX18vOi8gLzovXFw6XFwgIFxcOlxcIC8gIC86L19fLzovX19cXC9cXDpcXC9fXy86LyAvOi8gL1xcXG4vLyAgIFxcICBcXDpcXC86L34vOnwgIFxcOlxcLzovX19cXC9cXCAgXFw6XFwgIC86L1xcICBcXDpcXCAvfn4vOi9cXCAgXFw6XFwvOi8gLzovXG4vLyAgICBcXCAgXFw6Oi8gLzovIFxcICBcXDo6LyAgICAgIFxcICBcXDpcXC86LyAgXFwgIFxcOlxcICAvOi8gIFxcICBcXDo6LyAvOi9cbi8vICAgICBcXCAgXFw6XFwvOi8gICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOjovICAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6XFwvOi9cbi8vICAgICAgXFwgIFxcOjovICAgICBcXCAgXFw6XFwgICAgICAgXFxfX1xcLyAgICAgIFxcICBcXDo6LyAgICAgIFxcICBcXDo6L1xuLy8gICAgICAgXFxfX1xcLyAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC9cblxuLy8qXG4vLyBAcGF0dGVybiBCYWRnZVxuLy9cbi8vIEEgYmFkZ2UgaXMgYSBzbWFsbCBjaHVuayBvZiB0ZXh0IGluIGEgY29sb3JlZCBib3ggdGhhdCBkZW5vdGVzIGEgcGFydGljdWxhclxuLy8gYXR0cmlidXRlIGFib3V0IHRoZSBpbnRlcmZhY2UgZWxlbWVudCB0byB3aGljaCBpdCBpcyBhdHRhY2hlZC4gV2hlblxuLy8gYWRkaXRpb25hbCBleHBsYW5hdG9yeSB0ZXh0IGlzIHJlcXVpcmVkLCB1c2UgYSBgbm90aWNlYCBpbnN0ZWFkIOKAlMKgYmFkZ2VzXG4vLyBzaG91bGQgb25seSBldmVyIGJlIG9uZSB3b3JkIGluIGxlbmd0aC4gSXQgaXMgYXBwcm9wcmlhdGUgdG8gaGF2ZSBtdWx0aXBsZVxuLy8gYmFkZ2VzIGF0dGFjaGVkIHRvIGEgc2luZ2xlIGVsZW1lbnQgaWYgYWRkaXRpb25hbCBkZXRhaWxzIGFib3V0IHRoYXRcbi8vIGVsZW1lbnQgbmVlZCB0byBiZSBpbmRpY2F0ZWQuXG4vL1xuLy8gQHNpbmNlIDEuMC4wXG5cblxuJGJhZGdlLS1zcGFjaW5nOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuXG5cblxuLy8qXG4vLyBUaGUgYWN0dWFsIGJhZGdlLiBFYWNoIGJhZGdlIHByb3ZpZGVzIHNwYWNpbmcgYmV0d2VlbiBpdHNlbGYgYW5kIGJhZGdlcyBpdFxuLy8gaXMgbmV4dCB0bywgc28gdGhleSBtdXN0IGJlIHdyYXBwZWQgaW4gYSBgYmFkZ2VfX2NvbnRhaW5lcmAgdG8gcmVtb3ZlIGFueVxuLy8gZXhjZXNzIG91dHNpZGUgc3BhY2luZyBpZiB5b3UgaW5jbHVkZSBtb3JlIHRoYW4gYSBzaW5nbGUgYmFkZ2UuXG4vL1xuLy8gQmVjYXVzZSBiYWRnZXMgbW9zdCBvZnRlbiBzaXQgYWxsb25nc2lkZSBvdGhlciB0ZXh0LCB0aGV5IGFyZSBkZXNpZ25lZCB0b1xuLy8gc2NhbGUgd2l0aCB0aGUgc2l6ZSBvZiB3aGF0ZXZlciBjb250YWluZXIgdGhleSBhcmUgaW4uIFRoZXkgd2lsbCBhbHdheXMgYmVcbi8vIHNsaWdodGx5IHNtYWxsZXIgdGhhbiB0aGUgdGV4dCBzaXplIG9mIHRoZSBjb250ZW50IHRvIHdoaWNoIHRoZXkgYXJlXG4vLyBhdHRhY2hlZCBzdWNoIHRoYXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIHRoZSBiYWRnZSBhcHByb3hpbWF0ZWx5IG1hdGNoIHRoZVxuLy8gYXNjZW5kZXJzLyBkZXNjZW5kZXJzIG9mIHRoZSB0ZXh0LlxuLy9cbi8vIEBtYXJrdXBcbi8vIDxkaXYgY2xhc3M9XCJiYWRnZV9fY29udGFpbmVyXCI+XG4vLyAgIDwlIDUudGltZXMgZG8gfGl8ICU+XG4vLyAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCI+QmFkZ2UgPCU9IGkgKyAxICU+PC9kaXY+XG4vLyAgIDwlIGVuZCAlPlxuLy8gPC9kaXY+XG5cbi5iYWRnZSB7XG4gIC8vIHBvc2l0aW9uXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBib3ggbW9kZWxcbiAgZmxleDogMCAwIGF1dG87XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgLy8gQSBsaXR0bGUgZXh0cmEgYm90dG9tIHBhZGRpbmcgdG8gbWFrZSBpdCBsb29rIGNlbnRlcmVkLlxuICBwYWRkaW5nOiAwLjE1ZW0gMC41ZW0gMC4yNWVtO1xuXG4gIC8vIGJhY2tkcm9wXG4gIEBpbmNsdWRlIGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXksIGxpZ2h0KTtcblxuICAvLyB0eXBlXG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShiYWRnZSk7XG4gIGxpbmUtaGVpZ2h0OiBkZWZhdWx0KGxpbmUtaGVpZ2h0KTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlcik7XG59XG5cbi8vKlxuLy8gVXNlIHRoaXMgYmFkZ2UgdmFyaWF0aW9uIHdoZW4geW91IGFyZSB0cnlpbmcgdG8gaW5kaWNhdGUgc29tZSBzb3J0IG9mXG4vLyB3YXJuaW5nIHRvIHRoZSB1c2VyIOKAlMKgZm9yIGV4YW1wbGUsIHdoZW4gdGhlIGNvbnRlbnQgdG8gd2hpY2ggdGhpcyBiYWRnZSBpc1xuLy8gYXR0YWNoZWQgaGFzIGJlZW4gZGVwcmVjYXRlZCBvciBoYXMgYSBjb21tb24gcGl0ZmFsbC5cbi8vXG4vLyBAZGVtb190eXBlIGpvaW50XG5cbi5iYWRnZS0td2FybmluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKHllbGxvdyk7XG4gIGNvbG9yOiB1aS1jb2xvcih5ZWxsb3csIGRhcmspO1xufVxuXG4vLypcbi8vIFVzZSB0aGlzIGJhZGdlIHZhcmlhdGlvbiB3aGVuIHlvdSBhcmUgdHJ5aW5nIHRvIGluZGljYXRlIGEgbmV3IG9yIHVwZGF0ZWRcbi8vIHN0YXR1cyBmb3IgdGhlIGF0dGFjaGVkIGNvbnRlbnQuIEZvciBleGFtcGxlLCB0aGlzIGJhZGdlIG1pZ2h0IGJlIHVzZWQgdG9cbi8vIGluZGljYXRlIHNvbWV0aGluZyBpcyBpbiBiZXRhIG9yIGhhcyByZWNlbnRseSBiZWVuIHVwZ3JhZGVkIG9yIHJlbGVhc2VkLlxuLy9cbi8vIEBkZW1vX3R5cGUgam9pbnRcblxuLmJhZGdlLS1uZXcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihibHVlKTtcbiAgY29sb3I6IHVpLWNvbG9yKGJsdWUsIGRhcmtlcik7XG59XG5cbi8vKlxuLy8gVXNlIHRoaXMgYmFkZ2UgdmFyaWF0aW9uIHdoZW4gdGhlIGF0dGFjaGVkIGNvbnRlbnQgaXMgbWVhbnQgdG8gYmVcbi8vIGNvbmNlYWxlZCwgc2VjcmV0LCBvciBpbiBzb21lIG90aGVyIHdheSBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB0aGVcbi8vIGF2ZXJhZ2UgY2FzZS4gRm9yIGV4YW1wbGUsIHRoaXMgYmFkZ2UgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdFxuLy8gc29tZXRoaW5nIGlzIHByaXZhdGUvIGZvciBpbnRlcm5hbCB1c2Ugb25seS5cbi8vXG4vLyBAZGVtb190eXBlIGpvaW50XG5cbi5iYWRnZS0tc2VjcmV0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VzdCk7XG4gIGNvbG9yOiB1aS1jb2xvcihncmF5KTtcbn1cblxuLy8qXG4vLyBUaGlzIHZhcmlhdGlvbiBpcyB1c2VkIHRvIGZpeCB0aGUgdmVydGljYWwgcGFkZGluZyBvbiBiYWRnZXMgdGhhdCBhcmUgbWVhbnRcbi8vIHRvIGNvbnRhaW4gY29udGVudCBzdHlsZWQgYXMgY29kZS4gQmVjYXVzZSB0aGUgbW9ub3NwYWNlIGZvbnQgZmFtaWx5IGhhc1xuLy8gZGlmZmVyZW50IGZvbnQgcHJvcGVydGllcywgbGVhdmluZyB0aGUgZXhpc3RpbmcgYHBhZGRpbmdgLyBgbGluZS1oZWlnaHRgXG4vLyBhbG9uZyByZXN1bHRzIGluIHRoZSB0ZXh0IHNpdHRpbmcgdG9vIGNsb3NlbHkgdG8gdGhlIHRvcCBvZiB0aGUgYmFkZ2UuIFRoaXNcbi8vIGZpeGVzIHRoZSBwcm9ibGVtIHVzaW5nIGEgdmVyeSB1bi1zY2llbnRpZmljIHJlZGlzdHJpYnV0aW9uIG9mIHRoZVxuLy8gYXZhaWxhYmxlIHBhZGRpbmcuXG4vL1xuLy8gTm90ZSB0aGF0LCBiZWNhdXNlIHRoZSBtb25vc3BhY2UgZm9udCBoYXMgbW9yZSBzcGFjZSBhbGxvY2F0ZWQgZm9yIGVhY2hcbi8vIGNoYXJhY3RlciwgYSBiYWRnZSB3aXRoIHRoaXMgdmFyaWFudCB3aWxsIGJlIHdpZGVyIHRoYW4gb25lIHdpdGhvdXQgaXQsXG4vLyBldmVuIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSBjb250ZW50LlxuLy9cbi8vIEBkZW1vX3R5cGUgc2VsZWN0XG5cbi5iYWRnZS0tY29kZSB7XG4gIC8vIEBpbmNsdWRlIHR5cGUtLW1vbm9zcGFjZS1mb250LWZhbWlseTtcbiAgcGFkZGluZy1ib3R0b206IDA7XG4gIHBhZGRpbmctdG9wOiAwLjJlbTtcbn1cblxuLy8qXG4vLyBBIGJhZGdlIHRoYXQgaXMgdXNlZCBvbiBpdHMgb3duICh0aGF0IGlzLCBub3QgYmVzaWRlIG90aGVyIHRleHQsIGJ1dCBtYXkgYmVcbi8vIGJlc2lkZSBvdGhlciBidXR0b25zKS5cbi8vXG4vLyBAZGVtb190eXBlIHNlbGVjdFxuXG4uYmFkZ2UtLXN0YW5kYWxvbmUge1xuICBAaW5jbHVkZSBmb250LXNpemUoYmFkZ2UtLXN0YW5kYWxvbmUpO1xufVxuXG5cblxuLy8qXG4vLyBUaGlzIGNvbnRhaW5lciBzaG91bGQgYWx3YXlzIGJlIHdyYXBwZWQgYXJvdW5kIGEgc2V0IG9mIGJhZGdlcy4gSXQgcmVtb3Zlc1xuLy8gYW55IGV4Y2VzcyByaWdodCBhbmQgYm90dG9tIG1hcmdpbiAod2hpY2ggZXZlcnkgY29udGFpbmVkIGJhZGdlIGhhcyB0b1xuLy8gYWxsb3cgZm9yIHNwYWNpbmcgYmV0d2VlbiByb3dzIGFuZCBjb2x1bW5zIG9mIGJhZGdlcyksIHdoaWxlIHN0aWxsIGFsbG93aW5nXG4vLyB0aGUgYmFkZ2VzIHRvIGJyZWFrIG9udG8gYSBuZXcgbGluZSBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIHRvIGNvbnRhaW5cbi8vIHRoZW0gYWxsIG9uIGEgc2luZ2xlIGxpbmUuXG4vL1xuLy8gSWYgb25seSBhIHNpbmdsZSBiYWRnZSBleGlzdHMsIHRoaXMgY29udGFpbmVyIGNhbiBiZSBvbWl0dGVkLlxuXG4uYmFkZ2VfX2NvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1hcmdpbi1yaWdodDogbmVnYXRpdmUoJGJhZGdlLS1zcGFjaW5nKSAhaW1wb3J0YW50O1xuICBtYXJnaW4tYm90dG9tOiBuZWdhdGl2ZSgkYmFkZ2UtLXNwYWNpbmcpICFpbXBvcnRhbnQ7XG5cbiAgPiAuYmFkZ2Uge1xuICAgIG1hcmdpbi1yaWdodDogJGJhZGdlLS1zcGFjaW5nO1xuICAgIG1hcmdpbi1ib3R0b206ICRiYWRnZS0tc3BhY2luZztcbiAgfVxufVxuIiwiLy8gICAgICAgICAgICAgICAgICAgICBfX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICBfX19cbi8vICAgICAgIF9fX19fICAgICAgICAvX18vXFwgICAgICAgICBfX18gICAgICAgX19fICAgICAvICAvXFwgICAgICAgIC9fXy9cXFxuLy8gICAgICAvICAvOjpcXCAgICAgICBcXCAgXFw6XFwgICAgICAgLyAgL1xcICAgICAvICAvXFwgICAvICAvOjpcXCAgICAgICBcXCAgXFw6XFxcbi8vICAgICAvICAvOi9cXDpcXCAgICAgICBcXCAgXFw6XFwgICAgIC8gIC86LyAgICAvICAvOi8gIC8gIC86L1xcOlxcICAgICAgIFxcICBcXDpcXFxuLy8gICAgLyAgLzovfi86OlxcICBfX18gIFxcICBcXDpcXCAgIC8gIC86LyAgICAvICAvOi8gIC8gIC86LyAgXFw6XFwgIF9fX19fXFxfX1xcOlxcXG4vLyAgIC9fXy86LyAvOi9cXDp8L19fL1xcICBcXF9fXFw6XFwgLyAgLzo6XFwgICAvICAvOjpcXCAvX18vOi8gXFxfX1xcOlxcL19fLzo6Ojo6Ojo6XFxcbi8vICAgXFwgIFxcOlxcLzovfi86L1xcICBcXDpcXCAvICAvOi8vX18vOi9cXDpcXCAvX18vOi9cXDpcXFxcICBcXDpcXCAvICAvOi9cXCAgXFw6XFx+flxcfn5cXC9cbi8vICAgIFxcICBcXDo6LyAvOi8gIFxcICBcXDpcXCAgLzovIFxcX19cXC8gIFxcOlxcXFxfX1xcLyAgXFw6XFxcXCAgXFw6XFwgIC86LyAgXFwgIFxcOlxcICB+fn5cbi8vICAgICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOlxcLzovICAgICAgIFxcICBcXDpcXCAgICBcXCAgXFw6XFxcXCAgXFw6XFwvOi8gICAgXFwgIFxcOlxcXG4vLyAgICAgIFxcICBcXDo6LyAgICAgIFxcICBcXDo6LyAgICAgICAgIFxcX19cXC8gICAgIFxcX19cXC8gXFwgIFxcOjovICAgICAgXFwgIFxcOlxcXG4vLyAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcL1xuLy9cbi8vKlxuLy8gQHBhdHRlcm4gQnV0dG9uc1xuLy8gQHRhZ2xpbmUgQ2FwdHVyZSBhbGwgdGhlIGNsaWNrcy5cbi8vXG4vLyBCdXR0b25zIGFyZSB3aGF0IHRoZSB1c2VyIHNob3VsZCBwcmVzcyB0byBpbml0aWF0ZSBtb3N0IGFjdGlvbnMuIEFjdGlvbnNcbi8vIG1heSB0YWtlIHBsYWNlIG9uIHRoZSBwYWdlIChmb3IgZXhhbXBsZSwgYnkgYWN0aXZhdGluZyBhIHBvcG92ZXIgb3IgeC1yYXlcbi8vIG1vZGUpwqBvciBtYXkgc2VuZCB0aGUgdXNlciB0byBhbm90aGVyIHNpdGUgdG8gcGVyZm9ybSBhbiBhY3Rpb24gKHRoZSBtb3N0XG4vLyBub3RhYmxlIGV4YW1wbGUgb2YgdGhpcyBhcmUgdGhlIGJ1dHRvbnMgdGhhdCBzZW5kIHRoZSB1c2VyIHRvIEdpdGh1YikuIFRoZVxuLy8gZWxlbWVudCBvbiB3aGljaCB0byBhcHBseSB0aGVzZSBjbGFzc2VzIHdpbGwgZGVwZW5kIG9uIHdoZXRoZXIgdGhlIGFjdGlvblxuLy8gaXMgaW50ZXJuYWwgb3IgZXh0ZXJuYWwgdG8gdGhlIHBhZ2UuXG4vL1xuLy8gQHNpbmNlIDEuMC4wXG5cblxuXG4kYnV0dG9uLS1zcGFjaW5nOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuXG5cblxuLy8qXG4vLyBAdGl0bGUgU3RhbmRhcmQgQnV0dG9uc1xuLy9cbi8vIEEgc3RhbmRhcmQgYnV0dG9uLiBUaGlzIGNvbXBvbmVudCBub3JtYWxpemVzIHRoZSBzdHlsZXMgb2YgYm90aCBgYnV0dG9uYCBhbmRcbi8vIGBhYCBlbGVtZW50cyBzbyB0aGF0IHRoZXNlIGNsYXNzZXMgY2FuIGJlIHBsYWNlZCBvbiBlaXRoZXIgb25lLiBJZiB0aGUgYWN0aW9uXG4vLyBpcyBpbnRlcm5hbCAoaS5lLiwgZG9lc24ndCByZXF1aXJlIGEgYEdFVGAgcmVxdWVzdCksIHVzZSBhIGBidXR0b25gLiBJZiB0aGVcbi8vIGFjdGlvbiBkb2VzIHJlcXVpcmUgYSBgR0VUYCwgdXNlIGEgVVJMLiBOZXZlciB1c2UgYW4gYGFgIHRhZyB3aXRoIGEgYmxhbmtcbi8vIChvciBgXCIjXCJgKSBgaHJlZmAgYXR0cmlidXRlLlxuLy9cbi8vIEFueSB2YXJpYXRpb25zIG9uIHRoaXMgYnV0dG9uIHNob3VsZCBlbnN1cmUgdGhhdCB0aGV5IGRlc2lnbiBhbmQgaW1wbGVtZW50XG4vLyBkZXNpZ25zIGZvciB0aGUgYDpmb2N1c2Agc3RhdGUsIGA6YWN0aXZlYCBzdGF0ZSwgYDpob3ZlcmAgc3RhdGUgKG9wdGlvbmFsKSxcbi8vIGFuZCBmb3IgaWNvbnMgd2l0aCBidXR0b25zICh1c2luZyBhIGNoaWxkIHNlbGVjdG9yIHRvIHRoZSBgaWNvbmAgY29tcG9uZW50KSxcbi8vIGlmIGFkanVzdG1lbnRzIHRvIHRoZSBjb250YWluZWQgaWNvbnMgYXJlIHJlcXVpcmVkLlxuLy9cbi8vIEEgc2luZ2xlIGJ1dHRvbiBjYW4gYmUgaW5jbHVkZWQgb24gaXRzIG93biwgd2l0aG91dCBhbnkgY29udGFpbmVyLiBJZlxuLy8gbXVsdGlwbGUgYnV0dG9ucyBoYXZlIHRvIGJlIHBsYWNlZCBiZXNpZGUgZWFjaCBvdGhlciwgd3JhcCBhbGwgb2YgdGhlIGJ1dHRvbnNcbi8vIGluIGEgYGRvY2tzLWJ1dHRvbl9fY29udGFpbmVyYC5cbi8vXG4vLyBAbWFya3VwXG4vLyA8ZGl2IGNsYXNzPVwiZG9ja3MtYnV0dG9uX19jb250YWluZXJcIj5cbi8vICAgPGJ1dHRvbiBjbGFzcz1cImRvY2tzLWJ1dHRvblwiPmJ1dHRvbiE8L2J1dHRvbj5cbi8vXG4vLyAgIDxidXR0b24gY2xhc3M9XCJkb2Nrcy1idXR0b25cIj5cbi8vICAgICA8JT0gZG9ja3NfaWNvbiA6Z2l0aHViLCBzaXplOiA6bWVkaXVtICU+XG4vLyAgICAgPHNwYW4gY2xhc3M9XCJkb2Nrcy1idXR0b25fX3RleHRcIj5pY29uICsgdGV4dDwvc3Bhbj5cbi8vICAgPC9idXR0b24+XG4vL1xuLy8gICA8YnV0dG9uIGNsYXNzPVwiZG9ja3MtYnV0dG9uXCI+XG4vLyAgICAgPHNwYW4gY2xhc3M9XCJkb2Nrcy1idXR0b25fX3RleHRcIj50ZXh0ICsgaWNvbjwvc3Bhbj5cbi8vICAgICA8JT0gZG9ja3NfaWNvbiA6Z2l0aHViLCBzaXplOiA6bWVkaXVtICU+XG4vLyAgIDwvYnV0dG9uPlxuLy9cbi8vICAgPGRpdiBjbGFzcz1cImRvY2tzLWJ1dHRvbl9fc2VnbWVudGVkLWNvbnRhaW5lclwiPlxuLy8gICAgIDxidXR0b24gY2xhc3M9XCJkb2Nrcy1idXR0b25cIj5TZWdtZW50IDE8L2J1dHRvbj5cbi8vICAgICA8YnV0dG9uIGNsYXNzPVwiZG9ja3MtYnV0dG9uXCI+U2VnbWVudCAyPC9idXR0b24+XG4vLyAgIDwvZGl2PlxuLy8gPC9kaXY+XG5cbi5kb2Nrcy1idXR0b24ge1xuICAvLyBib3ggbW9kZWxcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiAwIGRlZmF1bHQoY29udHJvbC1wYWRkaW5nKTtcblxuICAvLyBiYWNrZHJvcFxuICBAaW5jbHVkZSBkZWZhdWx0KGJvcmRlci1yYWRpdXMpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5LCBsaWdodCk7XG4gIGJvcmRlcjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcblxuICAvLyB0eXBlXG4gIC8vIEBpbmNsdWRlIHR5cGUtLWRlZmF1bHQtZm9udC1mYW1pbHk7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZShjb250cm9sKTtcbiAgbGluZS1oZWlnaHQ6IGRlZmF1bHQoY29udHJvbC1zaXplKTtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlcik7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAmOmZvY3VzLFxuICAmOmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSk7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gID4gKjpmaXJzdC1jaGlsZCB7IG1hcmdpbi1yaWdodDogJGJ1dHRvbi0tc3BhY2luZzsgfVxufVxuXG4vLypcbi8vIEEgc2xpZ2h0ZXIgZGFyayB2YXJpYXRpb24uXG5cbi5kb2Nrcy1idXR0b24tLWRhcmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrKTtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlc3QpO1xuXG4gICY6Zm9jdXMsXG4gICY6YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrKTtcbiAgICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VzdCk7XG4gIH1cbn1cblxuLy8qXG4vLyBBIGJ1dHRvbiB0aGF0IGNhbiBubyBsb25nZXIgYmUgcHJlc3NlZC4gTWFrZSBzdXJlIHRvIGFsd2F5cyBhbHNvIGluY2x1ZGUgdGhlXG4vLyBgZGlzYWJsZWRgIGF0dHJpYnV0ZSBvbiB0aGUgYWN0dWFsIGBidXR0b25gIOKAlMKgdGhpcyBpbXByb3ZlcyB1c2FiaWxpdHkgYnlcbi8vIHByZXZlbnRpbmcgdGhlIGJ1dHRvbiBmcm9tIGJlaW5nIHRhYmJlZCB0bywgYW5kIHByZXZlbnRzIGFueSBldmVudCBoYW5kbGVyc1xuLy8gb24gdGhlIGBidXR0b25gIGZyb20gcnVubmluZy5cbi8vXG4vLyBAamF2YXNjcmlwdF9hY3Rpb24gdGhpcy5jbGFzc0xpc3QuYWRkKFwiZG9ja3MtYnV0dG9uLS1pcy1kaXNhYmxlZFwiKTsgdGhpcy5kaXNhYmxlZCA9IHRydWVcblxuLmRvY2tzLWJ1dHRvbi0taXMtZGlzYWJsZWQge1xuICBvcGFjaXR5OiAwLjM7XG59XG5cblxuXG4vLypcbi8vIEEgY29udGFpbmVyIGZvciBhIGNvbGxlY3Rpb24gb2YgYnV0dG9ucyB0aGF0IG5vcm1hbGl6ZXMgdGhlIG1hcmdpbiBvbiB0aGVcbi8vIG91dHNpZGUuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgZWFjaCBidXR0b24gaW5zaWRlIHRoZSBjb250YWluZXIgaGFzXG4vLyByaWdodCBhbmQgYm90dG9tIG1hcmdpbiBzbyB0aGF0IHRoZXJlIGlzIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNwYWNlXG4vLyBiZXR3ZWVuIGVhY2ggb2YgYW55IG51bWJlciBvZiBidXR0b25zLlxuXG4uZG9ja3MtYnV0dG9uX19jb250YWluZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBtYXJnaW4tcmlnaHQ6IG5lZ2F0aXZlKCRidXR0b24tLXNwYWNpbmcpICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1ib3R0b206IG5lZ2F0aXZlKCRidXR0b24tLXNwYWNpbmcpICFpbXBvcnRhbnQ7XG5cbiAgLy8gUHJldmVudHMgbWFyZ2luIGZyb20gY29sbGFwc2luZyB3aGlsZSBzdGlsbCBhbGxvd2luZyBvdmVyZmxvdy9cblxuICAmOmFmdGVyIHsgY29udGVudDogXCJcIjsgZGlzcGxheTogdGFibGU7IH1cblxuICAvLyBBbGxvdyBmb3IgYW55dGhpbmcgaW5zaWRlIHRoZSBjb250YWluZXIg4oCUwqB0aGlzIGlzIHVzZWZ1bCBmb3IsIGZvciBleGFtcGxlLFxuICAvLyBjb250YWluZWQgYnV0dG9ucyB0aGF0IGFjdGl2YXRlIHBvcG92ZXJzIGFuZCB0aHVzIGhhdmUgcG9wb3ZlciBjb250YWluZXJzXG4gIC8vIGFyb3VuZCB0aGVtLlxuXG4gID4gKiB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiAkYnV0dG9uLS1zcGFjaW5nO1xuICAgIG1hcmdpbi1ib3R0b206ICRidXR0b24tLXNwYWNpbmc7XG4gIH1cbn1cblxuLy8qXG4vLyBVc2UgdGhpcyBjb250YWluZXIgdmFyaWF0aW9uIHdoZW4geW91IHdhbnQgYWxsIG9mIHRoZSBidXR0b25zIGluc2lkZSB0aGVcbi8vIGNvbnRhaW5lciB0byBjb25zdW1lIGFuIGVxdWFsIHBhcnQgb2YgdGhlIHRvdGFsIHdpZHRoIGF2YWlsYWJsZSB0byB0aGVcbi8vIGNvbnRhaW5lci4gTm90ZSB0aGF0IHBvdGVudGlhbGx5LXVuZXhwZWN0ZWQgYmVoYXZpb3IgbWF5IG9jY3VyIHdoZW4gdGhlXG4vLyBidXR0b25zIGluIHRoaXMgYnV0dG9uIGdyb3VwIGhhdmUgYSB0b3RhbCBpbnRyaW5zaWMgbWluaW11bSB3aWR0aCBncmVhdGVyXG4vLyB0aGFuIHRoYXQgb2YgdGhlIGNvbnRhaW5lciDigJQgYnV0dG9ucyB3aXRoIHNtYWxsZXIgaW50cmluc2ljIHdpZHRocyBpbiB0aGVcbi8vIGdyb3VwIHdpbGwgc2hyaW5rIGFzIG11Y2ggYXMgcG9zc2libGUsIGFuZCB0aGVuIGJ1dHRvbnMgd2lsbCBzdGFydCwgb25lLWJ5LW9uZVxuLy8gYXMgcmVxdWlyZWQsIGJyZWFraW5nIG9udG8gYWRkaXRpb25hbCBsaW5lcyAoYW5kIGZpbGxpbmcgdGhlbSBjb21wbGV0ZWx5LFxuLy8gcmVzdWx0aW5nIGluIHNvbWUgYnV0dG9ucyBsaWtlbHkgYmVpbmcgbGFyZ2VyIHRoYW4gb3RoZXJzKS5cbi8vXG4vLyBGb3IgdGhlIGJlc3QgcmVzdWx0cywgdHJ5IHRvIGhhdmUgb25seSB0d28gYnV0dG9ucyBzaWRlLWJ5LXNpZGUgaW4gYVxuLy8gY29udGFpbmVyIHVzaW5nIHRoaXMgdmFyaWFudC5cblxuLmRvY2tzLWJ1dHRvbl9fY29udGFpbmVyLS1maWxsLXdpZHRoIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblxuICAvLyBGb3IgYm90aCBidXR0b25zIGFuZCBub24tYnV0dG9uLWV5IHRoaW5ncyBpbiBidXR0b24gZ3JvdXBzLCBsaWtlIHBvcG92ZXJcbiAgLy8gY29udGFpbmVycy5cblxuICAuZG9ja3MtYnV0dG9uLFxuICA+ICo6bm90KC5kb2Nrcy1idXR0b24pIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXg6IDEgMCAwJTtcbiAgICBtaW4td2lkdGg6IC13ZWJraXQtbWluLWNvbnRlbnQ7XG4gICAgbWluLXdpZHRoOiAtbW96LW1pbi1jb250ZW50O1xuICAgIG1pbi13aWR0aDogbWluLWNvbnRlbnQ7XG4gIH1cbn1cblxuXG5cbi8vKlxuLy8gVGhlIHRleHQgZm9yIGEgYnV0dG9uLiBUaGlzIGNvbnRhaW5lciBpcyBub3QgbmVjZXNzYXJ5IHVubGVzcyB0aGVyZSBpcyBhbHNvXG4vLyBhbiBpY29uIGluIHRoZSBidXR0b24uXG5cbi5kb2Nrcy1idXR0b25fX3RleHQge31cblxuXG5cbi8vKlxuLy8gQSB3cmFwcGVyIGFyb3VuZCBidXR0b25zIHRoYXQgY2F1c2VzIHRoZW0gdG8gbG9vayBsaWtlIG9uZSBidXR0b24gc2VnbWVudGVkXG4vLyBpbnRvIHBpZWNlcy5cblxuLmRvY2tzLWJ1dHRvbl9fc2VnbWVudGVkLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXG4gID4gLmRvY2tzLWJ1dHRvbiB7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcblxuICAgICY6bm90KDpmaXJzdC1jaGlsZCkgeyBib3JkZXItbGVmdDogbm9uZTsgfVxuICAgICY6Zmlyc3QtY2hpbGQgeyBib3JkZXItcmFkaXVzOiBkZWZhdWx0KGJvcmRlci1yYWRpdXMpIDAgMCBkZWZhdWx0KGJvcmRlci1yYWRpdXMpOyB9XG4gICAgJjpsYXN0LWNoaWxkIHsgYm9yZGVyLXJhZGl1czogMCBkZWZhdWx0KGJvcmRlci1yYWRpdXMpIGRlZmF1bHQoYm9yZGVyLXJhZGl1cykgMDsgfVxuICB9XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgIF9fX19fXG4vLyAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcICAgICAgLyAgLzo6XFxcbi8vICAgICAgLyAgLzovICAgICAgIC8gIC86OlxcICAgICAgLyAgLzo6XFwgICAgLyAgLzovXFw6XFxcbi8vICAgICAvICAvOi8gICAgICAgLyAgLzovXFw6XFwgICAgLyAgLzovXFw6XFwgIC8gIC86LyAgXFw6XFxcbi8vICAgIC8gIC86LyAgX19fICAvICAvOi9+Lzo6XFwgIC8gIC86L34vOi8gL19fLzovIFxcX19cXDp8XG4vLyAgIC9fXy86LyAgLyAgL1xcL19fLzovIC86L1xcOlxcL19fLzovIC86L19fXFwgIFxcOlxcIC8gIC86L1xuLy8gICBcXCAgXFw6XFwgLyAgLzovXFwgIFxcOlxcLzovX19cXC9cXCAgXFw6XFwvOjo6OjovXFwgIFxcOlxcICAvOi9cbi8vICAgIFxcICBcXDpcXCAgLzovICBcXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi9+fn5+ICBcXCAgXFw6XFwvOi9cbi8vICAgICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6Oi9cbi8vICAgICAgXFwgIFxcOjovICAgICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDpcXCAgICAgICBcXF9fXFwvXG4vLyAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvXG4vL1xuLy8qXG4vLyBAcGF0dGVybiBDYXJkXG4vL1xuLy8gQSBzaW1wbGUsIGNsZWFuIGNvbnRhaW5lciBmb3IgY29udGVudCB0aGF0IGlzIHRvIGFwcGVhciBvbiBhbiBhcmVhIHdpdGggYVxuLy8gY29sb3JlZCBiYWNrZ3JvdW5kIGJ1dCB0aGF0IHJlcXVpcmVzIGEgY29tcGxldGVseSBuZXV0cmFsIGJhY2tncm91bmQgdG9cbi8vIGFwcGVhciBwcm9wZXJseS5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuLy8qXG4vLyBAbWFya3VwXG4vLyA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuLy8gICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAxcmVtOyB3aWR0aDogMXJlbTsgbWFyZ2luOiAycmVtIGF1dG87XCI+PC9kaXY+XG4vLyA8L2Rpdj5cblxuLmNhcmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcih3aGl0ZSk7XG4gIGJvcmRlci1yYWRpdXM6IGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgX19fX18gICAgICAgIF9fX1xuLy8gICAgICAgLyAgL1xcICAgICAgICAvICAvXFwgICAgICAvICAvOjpcXCAgICAgIC8gIC9cXFxuLy8gICAgICAvICAvOi8gICAgICAgLyAgLzo6XFwgICAgLyAgLzovXFw6XFwgICAgLyAgLzovX1xuLy8gICAgIC8gIC86LyAgICAgICAvICAvOi9cXDpcXCAgLyAgLzovICBcXDpcXCAgLyAgLzovIC9cXFxuLy8gICAgLyAgLzovICBfX18gIC8gIC86LyAgXFw6XFwvX18vOi8gXFxfX1xcOnwvICAvOi8gLzovX1xuLy8gICAvX18vOi8gIC8gIC9cXC9fXy86LyBcXF9fXFw6XFwgIFxcOlxcIC8gIC86L19fLzovIC86LyAvXFxcbi8vICAgXFwgIFxcOlxcIC8gIC86L1xcICBcXDpcXCAvICAvOi9cXCAgXFw6XFwgIC86L1xcICBcXDpcXC86LyAvOi9cbi8vICAgIFxcICBcXDpcXCAgLzovICBcXCAgXFw6XFwgIC86LyAgXFwgIFxcOlxcLzovICBcXCAgXFw6Oi8gLzovXG4vLyAgICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6Oi8gICAgXFwgIFxcOlxcLzovXG4vLyAgICAgIFxcICBcXDo6LyAgICAgIFxcICBcXDo6LyAgICAgIFxcX19cXC8gICAgICBcXCAgXFw6Oi9cbi8vICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgXFxfX1xcL1xuXG4vLypcbi8vIEBwYXR0ZXJuIENvZGUgQmxvY2tcbi8vXG4vLyBUaGlzIGNvbXBvbmVudCBwcm92aWRlcyBhIGZ1bGwtZmVhdHVyZWQgY29udGFpbmVyIGZvciBjb2RlIGRlbW9zLCBpbmNsdWRpbmdcbi8vIHN1cHBvcnQgZm9yIG11bHRpcGxlIGxhbmd1YWdlcyBiZWluZyBzaG93biBpbiBhIHNpbmdsZSBjb2RlIGJsb2NrLCBhXG4vLyByZW5kZXJlZCBkZW1vIG9mIHRoZSBjb2RlIGluIHRoZSBjb2RlIGJsb2NrLCBoaWRpbmcgdGhlIG1hcmt1cCwgYW5kXG4vLyBzd2l0Y2hpbmcgYmV0d2VlbiBkaWZmZXJlbnQgY29tcG9uZW50cy4gVGhlIGNvbXBvbmVudCBjYW4gYmUgc2NhbGVkIHRvXG4vLyBpbmNsdWRlIGFzIG11Y2ggb3IgYXMgbGl0dGxlIG9mIHRoZXNlIGZlYXR1cmVzIGFzIGRlc2lyZWQuXG4vL1xuLy8gVGhpcyB0aGluZyBuZWVkcyBoZSBmb2xsb3dpbmcgY29tcG9uZW50czpcbi8vXG4vLyAtIFtgYnV0dG9uYF0oQGxpbmspXG4vL1xuLy8gLSBbYHJlc2l6YWJsZTo6Zm9jdXNfc2l6ZV9idXR0b25gXShAbGluaylcbi8vXG4vLyAtIFtgZXhwbG9kZWQ6OkV4cGxvZGVkI3NldF9tYXJrdXBgXShAbGluaylcbi8vXG4vLyBUaGUgSmF2YVNjcmlwdCBwYXJ0IG9mIHRoaXMgY29tcG9uZW50IGFsc28gc3VwcG9ydHMgY29tbXVuaWNhdGlvbiB3aXRoIGFuXG4vLyBgaWZyYW1lYGVkIGRlbW8sIGluLXBsYWNlIHVwZGF0aW5nIG9mIGhlbHBlciBhbmQgcmVuZGVyZWQgbWFya3VwIGZvclxuLy8gY29tcG9uZW50cywgYW5kLCB0aHJvdWdoIFtoaWdobGlnaHQuanNdKGh0dHBzOi8vaGlnaGxpZ2h0anMub3JnLyksIHN5bnRheFxuLy8gaGlnaGxpZ2h0aW5nIG9mIG1hbnkgY29tbW9uIGxhbmd1YWdlcy5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbi8vKlxuLy8gQHRpdGxlIENvZGUgQmxvY2tcbi8vXG4vLyBUaGlzIGlzIGhlIG92ZXJhbGwgY29udGFpbmVyIGZvciB0aGUgY29kZSBibG9jay4gSXQncyBwcmltYXJ5IHB1cnBvc2UgaXMgdG9cbi8vIHByb3ZpZGUgbWFyZ2luIGFib3ZlIGFuZCBiZWxvdyB0aGUgY29kZSBibG9jaywgYW5kIHRvIHByb3ZpZGUgYSBob29rIHRvXG4vLyBtYWtlIGFkanVzdG1lbnRzIHRvIG1hbnkgc3ViY29tcG9uZW50cyB0aHJvdWdoIHZhcmlhdGlvbnMgc3VjaCBhc1xuLy8gYGNvZGUtYmxvY2stLWNvbmRlbnNlZGAgYW5kIGBjb2RlLWJsb2NrLS1oaWRkZW5gLlxuLy9cbi8vIENvZGUgYmxvY2tzIGNhbiBnbyBmcm9tIHRoZSBpbmNyZWRpYmx5IGNvbXBsZXggKHNlZSB0aGUgZGVtbyBhYm92ZSksIHRvXG4vLyBtb3JlIG1vZGVyYXRlIGxldmVscyBvZiBkZXRhaWwg4oCUwqBzdWNoIGFzIGEgY29kZSBibG9jayB0aGF0IGdldHMgcmVuZGVyZWRcbi8vIGlubGluZSBiYXNlZCBvbiBhIHRlbXBsYXRpbmcgbGFuZ3VhZ2UgYW5kIGEgc3R1YiwgYW5kIHRoYXQgb3V0cHV0cyBhblxuLy8gYXR0YWNoZWQgZGVtbzpcbi8vXG4vLyBgYGBlcmJfZGVtb1xuLy8gPCU9IGRvY2tzX2NvZGVfYmxvY2sgY29kZTogXCI8cCBzdHlsZT0nY29sb3I6IGdyYXk7Jz5IZWxsbyB3b3JsZCE8L3A+XCIsXG4vLyAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogXCJlcmJcIixcbi8vICAgICAgICAgICAgICAgICAgICAgIGRlbW8/OiB0cnVlLFxuLy8gICAgICAgICAgICAgICAgICAgICAgaGlkZGVuPzogdHJ1ZSAlPlxuLy8gYGBgXG4vL1xuLy8gQWxsIHRoZSB3YXkgdG8gYW4gaW5jcmVkaWJseSBzaW1wbGUgY29kZSBibG9jazpcbi8vXG4vLyBgYGBlcmJfZGVtb1xuLy8gPCU9IGRvY2tzX2NvZGVfYmxvY2sgY29kZTogXCI8cCBjbGFzcz0ndHlwZSB0eXBlLS1wYXJhZ3JhcGgnPkhlbGxvIHdvcmxkITwvcD5cIiAlPlxuLy8gYGBgXG4vL1xuLy8gQGhlbHBlclxuLy8gPCU9IGRvY2tzX2NvZGVfYmxvY2sgY29kZTogXCI8cCBzdHlsZT0nY29sb3I6IGdyYXk7Jz5IZWxsbyB3b3JsZCE8L3A+XCIsXG4vLyAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZTogXCJlcmJcIixcbi8vICAgICAgICAgICAgICAgICAgICAgIGRlbW8/OiB0cnVlLFxuLy8gICAgICAgICAgICAgICAgICAgICAgaGlkZGVuPzogdHJ1ZSAlPlxuXG4uY29kZS1ibG9jayB7XG4gIG1hcmdpbjogZGVmYXVsdChzcGFjaW5nKSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBiYWNrZ3JvdW5kOiB1aS1jb2xvcihncmF5LCBsaWdodCk7XG4gIEBpbmNsdWRlIGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG5cbiAgLmRvY2tzLWJ1dHRvbiB7IGRpc3BsYXk6IG5vbmU7IH1cbn1cblxuXG4vLypcbi8vIEEgY29kZSBibG9jayB3aXRoIGxlc3MgaW50ZXJuYWwgcGFkZGluZyBhbmQgYSBzbWFsbGVyIGZvbnQgc2l6ZS4gVXNlIHRoaXNcbi8vIHZhcmlhbnQgZm9yIHNpdHVhdGlvbnMgaW4gd2hpY2ggdGhlIGNvZGUgaXMgc2Vjb25kYXJ5IG9yIHdvdWxkIGNsYXNoIHdpdGhcbi8vIGEgbW9yZSBpbXBvcnRhbnQgY29kZSBibG9jay5cbi8vXG4vLyBAc2V0X2J5IDpjb25kZW5zZWQ/XG5cbi5jb2RlLWJsb2NrLS1jb25kZW5zZWQge1xuICBtYXJnaW4tdG9wOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuXG4gIC5jb2RlLWJsb2NrX19jb2RlIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoY29kZS1ibG9jay0tY29uZGVuc2VkKTtcbiAgfVxuXG4gICY6bm90KC5jb2RlLWJsb2NrLS13aXRoLWhlYWRlcikge1xuICAgIC5jb2RlLWJsb2NrX19jb2RlIHtcbiAgICAgIHBhZGRpbmctdG9wOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuICAgIH1cbiAgfVxufVxuXG4vLypcbi8vIEEgY29kZSBibG9jayB0aGF0IGlzIGZ1bGwtYmxlZWQgd2l0aGluIHRoZSB2aWV3cG9ydC4gVGhpcyB3aWxsIHJlbW92ZSBhbnlcbi8vIHVubmVjZXNzYXJ5IGJvcmRlciByYWRpdXMgYW5kIHNpZGUgcGFkZGluZy8gYm9yZGVycy5cbi8vXG4vLyBAc2V0X2J5IDpmdWxsX3dpZHRoP1xuXG4uY29kZS1ibG9jay0tZnVsbC13aWR0aCB7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgLmNvbnRlbnQgJiB7XG4gICAgbWFyZ2luLWxlZnQ6IG5lZ2F0aXZlKGRlZmF1bHQoc3BhY2luZykpO1xuICAgIG1hcmdpbi1yaWdodDogbmVnYXRpdmUoZGVmYXVsdChzcGFjaW5nKSk7XG4gIH1cbn1cblxuLy8qXG4vLyBBIGNvZGUgYmxvY2sgdGhhdCBoYXMgaGlkZGVuIHRoZSBjb250YWluZWQgbWFya3VwIGFuZCBtb3N0IG9mIGl0cyBVSS4gVXNlXG4vLyB0aGlzIGZvciB0aGUgaW5pdGlhbCBzdGF0ZSBvZiBhIGNvZGUgYmxvY2sgb25seSB3aGVuIGl0IGhhcyBhIGRlbW8gYXR0YWNoZWRcbi8vIHRvIGl0LCBvdGhlcndpc2UgdGhlIGNvZGUgYmxvY2sgd2lsbCBhcHBlYXIgYXMgYSBzdHJhbmdlIHN0cmlwIG9mIGNvbG9yXG4vLyB3aXRoIG5vIGluZGljYXRpb24gb2YgaXRzIHB1cnBvc2UuIEhpZGVhYmxlIGNvZGUgYmxvY2tzIChhcyBzZXQgYnlcbi8vIGA6aGlkZWFibGU/YCkgY2FuIGhhdmUgdGhpcyBzdGF0ZSB0b2dnbGVkIGJ5IGNsaWNraW5nIG9uIHRoZSBjb250YWluZWRcbi8vIGJ1dHRvbi5cbi8vXG4vLyBXaGVuIHRoZSBjb2RlIGJsb2NrIGlzIGhpZGRlbiwgYWxsIG9mIHRoZSBVSSBpbiB0aGUgaGVhZGVyIGV4Y2VwdCBmb3IgdGhlXG4vLyBidXR0b24gdG8gdG9nZ2xlIHZpc2liaWxpdHkgaXMgaGlkZGVuICh0aGF0IGlzLCB0YWJzIHRvIHN3aXRjaCBiZXR3ZWVuXG4vLyBsYW5ndWFnZXMgYW5kIHRoZSBgc2VsZWN0YCB0byBzd2l0Y2ggYmV0d2VlbiBkZW1vcywgaWYgdGhleSBleGlzdCkuXG4vL1xuLy8gQHNldF9ieSA6aGlkZGVuPywgQ29kZUJsb2NrI3RvZ2dsZVxuLy8gQGphdmFzY3JpcHRfYWN0aW9uIERvY2tzLkNvZGVCbG9jay5mb3IodGhpcykudG9nZ2xlKClcblxuLmNvZGUtYmxvY2stLWlzLWhpZGRlbiB7XG4gICY6bm90KC5jb2RlLWJsb2NrLS13aXRoLWRlbW8pIHtcbiAgICAuY29kZS1ibG9ja19fdG9nZ2xlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5LCBsaWdodCk7XG4gICAgfVxuICB9XG5cbiAgLmNvZGUtYmxvY2tfX2NvbnRlbnQge1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBUaGlzIGNvbXBvbmVudCBzaXRzIGluIHRoZSBgY29kZS1ibG9ja19faGVhZGVyYCBhbmQgd3JhcHMgYXJvdW5kIGJvdGggdGhlXG4vLyBidXR0b24gdG8gaGlkZSB0aGUgY29kZSBibG9jayBhbmQgYSBgc2VsZWN0YCB0byBzd2l0Y2ggYmV0d2VlbiBzZXRzIG9mXG4vLyBjb2RlIHRoYXQgbWF5IGJlIHNob3duIGluIHRoaXMgY29kZSBibG9jaywgaWYgZWl0aGVyIG9yIGJvdGggYXJlIHJlcXVpcmVkLlxuXG4uY29kZS1ibG9ja19fYWN0aW9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cblxuXG4vLypcbi8vIFRoZSBjb250YWluZXIgZm9yIGFsbCBhY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIGJsb2NrLiBJZiB0aGUgY29kZSBibG9ja1xuLy8gaW5jbHVkZXMgYm90aCBoZWxwZXIgYW5kIGNvbXBpbGVkIG1hcmt1cCwgdGhlIGhlYWRlciB3aWxsIGNvbnRhaW4gdGhlXG4vLyB0YWJsaXN0IHJlcXVpcmVkIHRvIHN3aXRjaCBiZXR3ZWVuIHRoZW0uIElmIHRoZSBjb2RlIGJsb2NrIGlzIGhpZGVhYmxlLFxuLy8gdGhlIGhlYWRlciB3aWxsIGFsc28gaW5jbHVkZSBhIGJ1dHRvbiB0byBoaWRlIGl0LiBGaW5hbGx5LCBpZiB0aGVyZSBhcmVcbi8vIG11bHRpcGxlIHNldHMgb2YgY29kZSB0aGF0IG1heSBiZSBzaG93biBpbiB0aGlzIGNvZGUgYmxvY2ssIHRoZSBoZWFkZXIgd2lsbFxuLy8gY29udGFpbiBhIGBzZWxlY3RgIHRvIHN3aXRjaCBiZXR3ZWVuIHRoZW0uXG5cbi5jb2RlLWJsb2NrX19oZWFkZXIge1xuICAvLyBib3ggbW9kZWxcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpIGRlZmF1bHQoc3BhY2luZyk7XG4gIGZsZXg6IDAgMCBhdXRvICFpbXBvcnRhbnQ7XG5cbiAgLy8gYmFja2Ryb3BcbiAgYmFja2dyb3VuZDogdWktY29sb3IoZ3JheSwgbGlnaHQpO1xuXG4gIC5zZWxlY3QsXG4gIC50YWJsaXN0IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlXG4gIH1cblxuICAudGFibGlzdCB7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBUaGlzIGNvbXBvbmVudCBhbGxvd3MgdGhlIGNvZGUgdG8gc2Nyb2xsIGJvdGggdmVydGljYWxseSBhbmQgaG9yaXpvbnRhbGx5LlxuXG4uY29kZS1ibG9ja19fY29kZS1jb250YWluZXIge1xuICBvdmVyZmxvdzogYXV0bztcbiAgbWF4LWhlaWdodDogMTAwJTtcbn1cblxuXG4vLypcbi8vIFRoZSB0aGluZyB0aGF0IHRvZ2dsZXMuXG5cbi5jb2RlLWJsb2NrX190b2dnbGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSk7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXI6IG5vbmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBAaW5jbHVkZSBmb250LXNpemUoY29udHJvbCk7XG4gIHBhZGRpbmc6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSkgMDtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlcik7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycyBlYXNlO1xuXG4gICY6Zm9jdXMsXG4gICY6YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5KTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgPiAuaWNvbiB7XG4gICAgLy8gQGluY2x1ZGUgaWNvbi0tcmVjb2xvcihncmF5LCBkYXJrZXIpO1xuICAgIG1hcmdpbi1yaWdodDogaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbiAgICBvcGFjaXR5OiAwLjU7XG4gIH1cbn1cblxuLy8qXG4vLyBDb250YWluZXIgYXJvdW5kIHRoZSBjb2RlIGFuZCBoZWFkZXIuXG5cbi5jb2RlLWJsb2NrX19jb250ZW50IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuM3MgZWFzZTtcbiAgbWF4LWhlaWdodDogMTVyZW07XG59XG5cblxuXG4vLypcbi8vIFRoZSBhY3R1YWwgY29kZSBmb3IgdGhlIGFzc29jaWF0ZWQgZGVtby4gVGhpcyBpcyB3aGVyZSBhbGwgb2YgdGhlIHN0eWxlc1xuLy8gZm9yIHRoZSBzeW50YXggaGlnaGxpZ2h0aW5nIHNob3VsZCBnby4gVGhpcyBzdWJjb21wb25lbnQgd3JhcHMgYXJvdW5kIHRoZVxuLy8gY29kZSBhbmQgcHJvdmlkZXMgdGhlIHJlcXVpcmVkIHNpZGUgcGFkZGluZyBzbyB0aGF0IHRoZSBjb2RlIGlzIHNjcm9sbGFibGVcbi8vIHdoZW4gaXQgb3ZlcmZsb3dzLlxuXG4uY29kZS1ibG9ja19fY29kZSB7XG4gIC8vIGJveCBtb2RlbFxuICBtYXJnaW46IDA7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICAvLyBPbmx5IHByb3ZpZGUgaGFsZiBzcGFjaW5nIG9uIHRoZSB0b3AgKHdpdGggbWF0Y2hpbmcgaGFsZiBzcGFjaW5nIG9uIHRoZVxuICAvLyBib3R0b20gb2YgdGhlIGhlYWRlcikuXG4gIHBhZGRpbmc6IGhhbGYoZGVmYXVsdChzcGFjaW5nKSkgZGVmYXVsdChzcGFjaW5nKSBkZWZhdWx0KHNwYWNpbmcpO1xuXG4gIC8vIHR5cGVcbiAgQGluY2x1ZGUgZm9udC1zaXplKGNvZGUtYmxvY2spO1xuICBsaW5lLWhlaWdodDogMS4zO1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAvLyBOZWVkcyBmdWxsIHBhZGRpbmcgdG9wIHdoZW4gdGhlcmUgaXMgbm8gaGVhZGVyLlxuICAuY29kZS1ibG9jazpub3QoLmNvZGUtYmxvY2stLXdpdGgtaGVhZGVyKTpub3QoLmNvZGUtYmxvY2stLWNvbmRlbnNlZCk6bm90KC5jb2RlLWJsb2NrLS13aXRoLWRlbW8pICYge1xuICAgIHBhZGRpbmctdG9wOiBkZWZhdWx0KHNwYWNpbmcpO1xuICB9XG5cbiAgLmNvZGUtYmxvY2stLXdpdGgtZGVtbzpub3QoLmNvZGUtYmxvY2stLXdpdGgtaGVhZGVyKSAmIHtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgfVxuXG4gIC8vIEVuc3VyZSB2ZXJ5IGJhc2ljIHN0eWxlcyBmb3IgY29kZS5cbiAgPiBjb2RlIHtcbiAgICBAaW5jbHVkZSB0eXBlLS1tb25vc3BhY2UtZm9udC1mYW1pbHk7XG4gICAgcGFkZGluZzogMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBmb250LXNpemU6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cbn1cblxuXG5cbi8vIFN5bnRheCBoaWdobGlnaHRpbmcgc3R5bGVzLlxuXG4uaGxqcy12YWx1ZSxcbi5obGpzLXN0cmluZyxcbi5obGpzLXByZXByb2Nlc3NvciB7XG4gIGNvbG9yOiBjb2xvcihibHVlKVxufVxuXG4uaGxqcy1zeW1ib2wge1xuICBjb2xvcjogY29sb3IoYmx1ZS1kYXJrZXIpO1xufVxuXG4uaGxqcy1hdF9ydWxlLFxuLmhsanMtYXR0cmlidXRlLFxuLmhsanMta2V5d29yZCB7XG4gIGNvbG9yOiBjb2xvcihncmF5LWRhcmtlcik7XG59XG5cbi5obGpzLWNvbW1lbnQge1xuICBjb2xvcjogcmdiYShjb2xvcihncmF5LWRhcmspLCAwLjUpO1xuICBmb250LXN0eWxlOiBpdGFsaWNcbn1cblxuLmhsanMtdGFnLFxuLmhsanMtdmFyaWFibGUge1xuICBjb2xvcjogY29sb3IoZ3JheS1kYXJrKTtcbn1cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4uY29kZS1ibG9jay0td2l0aC1kZW1vIHtcbiAgLmNvZGUtYmxvY2tfX2NvbnRlbnQge1xuICAgIHBhZGRpbmctdG9wOiAwO1xuXG4gICAgPiAuY29kZS1ibG9ja19faGVhZGVyIHtcbiAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIH1cbiAgfVxufVxuXG4uY29kZS1ibG9ja19fZGVtbyB7XG4gIHBhZGRpbmc6IGRlZmF1bHQoc3BhY2luZyk7XG59XG5cbi5jb2RlLWJsb2NrX19kZW1vX19jb250ZW50IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmNvZGUtYmxvY2tfX2lmcmFtZSB7XG4gIGhlaWdodDogMTBlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogY29sb3Iod2hpdGUpO1xuICBib3JkZXI6IG5vbmU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIEBpbmNsdWRlIGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG59XG4iLCIvLyAgICAgICBfX19fXyAgICAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgIC8gIC86OlxcICAgICAgIC8gIC9cXCAgICAgICAgL19fL1xcICAgICAgICAvICAvXFxcbi8vICAgICAvICAvOi9cXDpcXCAgICAgLyAgLzovXyAgICAgIHwgIHw6OlxcICAgICAgLyAgLzo6XFxcbi8vICAgIC8gIC86LyAgXFw6XFwgICAvICAvOi8gL1xcICAgICB8ICB8Onw6XFwgICAgLyAgLzovXFw6XFxcbi8vICAgL19fLzovIFxcX19cXDp8IC8gIC86LyAvOi9fICBfX3xfX3w6fFxcOlxcICAvICAvOi8gIFxcOlxcXG4vLyAgIFxcICBcXDpcXCAvICAvOi8vX18vOi8gLzovIC9cXC9fXy86Ojo6fCBcXDpcXC9fXy86LyBcXF9fXFw6XFxcbi8vICAgIFxcICBcXDpcXCAgLzovIFxcICBcXDpcXC86LyAvOi9cXCAgXFw6XFx+flxcX19cXC9cXCAgXFw6XFwgLyAgLzovXG4vLyAgICAgXFwgIFxcOlxcLzovICAgXFwgIFxcOjovIC86LyAgXFwgIFxcOlxcICAgICAgIFxcICBcXDpcXCAgLzovXG4vLyAgICAgIFxcICBcXDo6LyAgICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6XFwvOi9cbi8vICAgICAgIFxcX19cXC8gICAgICAgXFwgIFxcOjovICAgICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDo6L1xuLy8gICAgICAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC9cbi8vXG4vLypcbi8vIEBwYXR0ZXJuIERlbW9cbi8vXG4vLyBBIGNvbnRhaW5lciBhcm91bmQgYSBkZW1vIChvciBzZXQgb2YgZGVtb3MpIG9mIGEgY29tcG9uZW50LiBUaGUgc3R5bGVzIGZvclxuLy8gdGhpcyBjb21wb25lbnQgYXJlIHZlcnkgbGlnaHQg4oCUwqB0aGV5IGFyZSBtZWFudCBub3QgdG8gaW50ZXJmZXJlIHdpdGggdGhlXG4vLyBjb21wb25lbnRzIGJlaW5nIGRlbW9uc3RyYXRlZC4gVGhlIEphdmFTY3JpcHQgY29tcG9uZW50LCBob3dldmVyLCBjb250cm9sc1xuLy8gbXVjaCBvZiB0aGUgY2hpbGQtYGlmcmFtZWAtc2lkZSBjb21tdW5pY2F0aW9uLCBpbmNsdWRpbmcgY29tbXVuaWNhdGluZ1xuLy8gaGVpZ2h0IGNoYW5nZXMsIHVwZGF0aW5nIGNsYXNzZXMsIHNlbmRpbmcgbWFya3VwLCBhbmQgcnVubmluZyByZWdpc3RlcmVkXG4vLyBldmVudCBoYW5kbGVycy5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbiRkZW1vLS1taW4taGVpZ2h0OiByZW0oMTYwKTtcblxuXG5cbi8vKlxuLy8gQSBjb250YWluZXIgZm9yIGEgZGVtbyBvZiBhIGNvbXBvbmVudCBhbmQsIG9wdGlvbmFsbHksIHZhcmlhdGlvbnMgb24gdGhhdFxuLy8gY29tcG9uZW50IHRoYXQgdGhlIGRldmVsb3BlciBoYXMgc3BlY2lmaWVkIHRvIGRpc3BsYXkgam9pbnRseS5cbi8vXG4vLyBAaGVscGVyXG4vLyA8JSBtYXJrdXAgPSBcIjxkaXYgY2xhc3M9J2Zvbycgc3R5bGU9J2hlaWdodDogMnJlbTsnPjwvZGl2PlwiICU+XG4vLyA8JT0gZG9ja3NfZGVtbyA6Ok9wZW5TdHJ1Y3QubmV3KFxuLy8gICBuYW1lOiBcImZvb1wiLFxuLy8gICBjb21wb25lbnQ6IDo6T3BlblN0cnVjdC5uZXcobmFtZTogXCJmb29cIiwgbWFya3VwOiBtYXJrdXApLFxuLy8gICBqb2ludF92YXJpYXRpb25zOiBbXG4vLyAgICAgOjpPcGVuU3RydWN0Lm5ldyhuYW1lOiBcImZvby0tYmFyXCIsIG1hcmt1cDogbWFya3VwKSxcbi8vICAgICA6Ok9wZW5TdHJ1Y3QubmV3KG5hbWU6IFwiZm9vLS1iYXpcIiwgbWFya3VwOiBtYXJrdXApXG4vLyAgIF1cbi8vICkgJT5cblxuLmRlbW8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcih3aGl0ZSk7XG4gIG1pbi1oZWlnaHQ6ICRkZW1vLS1taW4taGVpZ2h0O1xufVxuXG5cblxuLy8qXG4vLyBBIHNpbmdsZSBkZW1vIHdpdGhpbiB0aGUgcmVzaXphYmxlIGlmcmFtZS4gU3BhY2luZyBzdHlsZXMgYXJlIG9ubHkgYXBwbGllZCB0b1xuLy8gc2libGluZ3Mgb2YgYW5vdGhlciBkZW1vIHNlY3Rpb24gc28gdGhhdCB0aGUgc2VwYXJhdGlvbiBvbmx5IGFwcGxpZXMgdG8gdGhlXG4vLyBzZWNvbmQgdGhyb3VnaCBsYXN0IGVsZW1lbnQgb2YgYSBqb2ludCBkZW1vLlxuLy9cbi8vIFRoZSBKYXZhU2NyaXB0IGNvbXBvbmVudCB3aWxsIGVuc3VyZSB0aGF0IHRoZSBtaW5pbXVtIGhlaWdodCBub3RlZCBhYm92ZVxuLy8gd2lsbCBiZSBldmVubHkgYWxsb2NhdGVkIGFtb25nIHRoZSBgZGVtb19fc2VjdGlvbmBzIHdpdGhpbiBhIGBkZW1vYC5cbi8vXG4vLyBZb3UgY2FuIG1ha2UgdXNlIG9mIHRoZSBoZWxwZXJzIGluIGBkZW1vLWhlbHBlcnMuc2Nzc2AgdG8gcHJvdmlkZSBjdXN0b21cbi8vIHN0eWxlcyBmb3Igc2VjdGlvbnMgY29udGFpbmluZyBnaXZlbiBjb21wb25lbnRzLiBUaGUgSmF2YVNjcmlwdCBjb21wb25lbnRcbi8vIHdpbGwgZmluZCB0aGUgbGFzdCBzZWN0aW9uIGFuZCBhc3NpZ24gaXRzIGJhY2tncm91bmQgY29sb3IgdG8gdGhlXG4vLyBiYWNrZ3JvdW5kIG9mIHRoZSBlbnRpcmUgZGVtbyBzbyB0aGF0IHRoZXJlIGlzIG5vIGZsYXNoIG9mIHdoaXRlIG9uIHRoZVxuLy8gYm90dG9tIG9mIHRoZSBkZW1vIGR1cmluZyByZXNpemVzLlxuXG4uZGVtb19fc2VjdGlvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2dyb3VuZC1jb2xvcjogY29sb3Iod2hpdGUpO1xuXG4gIH4gLmRlbW9fX3NlY3Rpb24ge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBjb2xvcihncmF5LWxpZ2h0KTtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBBIGRlc2NyaXB0b3IgZm9yIHRoZSBjdXJyZW50IHNlY3Rpb24ncyBkZW1vLiBUaGlzIGlzIHByb3ZpZGVkIGluIG9yZGVyIHRvXG4vLyBkaXN0aW5ndWlzaCB2YXJpYW50cyB3aXRoaW4gYSBqb2ludCBkZW1vLlxuXG4uZGVtb19faGVhZGVyIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWFyZ2luLXJpZ2h0OiBuZWdhdGl2ZShoYWxmKGRlZmF1bHQoc3BhY2luZykpKTtcbiAgcGFkZGluZzogaGFsZihkZWZhdWx0KHNwYWNpbmcpKSBkZWZhdWx0KHNwYWNpbmcpIDA7XG5cbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICBfX18gICAgICAgIF9fX19fICAgICAgICBfX18gICAgICAgIF9fX19fXG4vLyAgICAgICAvICAvXFwgICAgICAgIC9fXy98ICAgICAgIC8gIC9cXCAgICAgICAgICAgICAgICAgLyAgL1xcICAgICAgLyAgLzo6XFwgICAgICAvICAvXFwgICAgICAvICAvOjpcXFxuLy8gICAgICAvICAvOi9fICAgICAgfCAgfDp8ICAgICAgLyAgLzo6XFwgICAgICAgICAgICAgICAvICAvOjpcXCAgICAvICAvOi9cXDpcXCAgICAvICAvOi9fICAgIC8gIC86L1xcOlxcXG4vLyAgICAgLyAgLzovIC9cXCAgICAgfCAgfDp8ICAgICAvICAvOi9cXDpcXF9fXyAgICAgX19fICAvICAvOi9cXDpcXCAgLyAgLzovICBcXDpcXCAgLyAgLzovIC9cXCAgLyAgLzovICBcXDpcXFxuLy8gICAgLyAgLzovIC86L18gIF9ffF9ffDp8ICAgIC8gIC86L34vOi9fXy9cXCAgIC8gIC9cXC8gIC86LyAgXFw6XFwvX18vOi8gXFxfX1xcOnwvICAvOi8gLzovXy9fXy86LyBcXF9fXFw6fFxuLy8gICAvX18vOi8gLzovIC9cXC9fXy86Ojo6XFxfX18vX18vOi8gLzovXFwgIFxcOlxcIC8gIC86L19fLzovIFxcX19cXDpcXCAgXFw6XFwgLyAgLzovX18vOi8gLzovIC9cXCAgXFw6XFwgLyAgLzovXG4vLyAgIFxcICBcXDpcXC86LyAvOi8gICB+XFx+flxcOjo6OnwgIFxcOlxcLzovICBcXCAgXFw6XFwgIC86L1xcICBcXDpcXCAvICAvOi9cXCAgXFw6XFwgIC86L1xcICBcXDpcXC86LyAvOi9cXCAgXFw6XFwgIC86L1xuLy8gICAgXFwgIFxcOjovIC86LyAgICAgfH5+fDp8fn4gXFwgIFxcOjovICAgIFxcICBcXDpcXC86LyAgXFwgIFxcOlxcICAvOi8gIFxcICBcXDpcXC86LyAgXFwgIFxcOjovIC86LyAgXFwgIFxcOlxcLzovXG4vLyAgICAgXFwgIFxcOlxcLzovICAgICAgfCAgfDp8ICAgIFxcICBcXDpcXCAgICAgXFwgIFxcOjovICAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6Oi8gICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDo6L1xuLy8gICAgICBcXCAgXFw6Oi8gICAgICAgfCAgfDp8ICAgICBcXCAgXFw6XFwgICAgIFxcX19cXC8gICAgICBcXCAgXFw6Oi8gICAgICBcXF9fXFwvICAgICAgXFwgIFxcOjovICAgICAgXFxfX1xcL1xuLy8gICAgICAgXFxfX1xcLyAgICAgICAgfF9ffC8gICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgICAgICBcXF9fXFwvXG5cbi8vKlxuLy8gQHBhdHRlcm4gRXhwbG9kZWRcbi8vXG4vLyBBbiBleHBsb2RlZCB2aWV3IG9mIGEgZ2l2ZW4gRE9NIHN0cnVjdHVyZSB0aGF0IGNhbiBiZSBmcmVlbHkgcm90YXRlZC4gSXRcbi8vIGFsbG93cyB0aGUgdXNlciB0byBzZWUgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29tcG9uZW50IGFzIGl0IGlzIHJlbmRlcmVkLFxuLy8gaGVscGluZyB0aGVtIGxlYXJuIGFib3V0IHN1YmNvbXBvbmVudHMgdGhhdCBtYWtlIHVwIHRoZSBvdmVyYWxsIHN0cnVjdHVyZS5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbi8vKlxuLy8gVGhpcyBpcyB0aGUgYmFzZSBjb21wb25lbnQgZm9yIGFuIGV4cGxvc2lvbi4gSXQgY29udGFpbnMgdGhlIHNvdXJjZSBtYXJrdXBcbi8vIGFuZCB0aGUgZXhwbG9kZWQgcmVwcmVzZW50YXRpb24sIGFzIHdlbGwgYXMgY29tbXVuaWNhdGVzIG92ZXJhbGwgc3RhdGVzIG9mXG4vLyB0aGUgY29tcG9uZW50IHRvIHN1YmNvbXBvbmVudHMuXG4vL1xuLy8gQGhlbHBlclxuLy8gPCU9IGRvY2tzX2V4cGxvZGVkIG1hcmt1cDogJVEoXG4vLyAgIDxkaXYgY2xhc3M9XCJmb29cIiBzdHlsZT1cInBhZGRpbmc6IDFlbTtcIj5cbi8vICAgICA8ZGl2IGNsYXNzPVwiZm9vX19iYXJcIiBzdHlsZT1cImhlaWdodDogNWVtOyBwb3NpdGlvbjogcmVsYXRpdmU7XCI+XG4vLyAgICAgICA8ZGl2IGNsYXNzPVwiZm9vX19iYXJfX2JhelwiIHN0eWxlPVwid2lkdGg6IDUwJTsgaGVpZ2h0OiAxMDAlOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDtcIj48L2Rpdj5cbi8vICAgICAgIDxkaXYgY2xhc3M9XCJmb29fX2Jhcl9fYmF6XCIgc3R5bGU9XCJ3aWR0aDogNTAlOyBoZWlnaHQ6IDEwMCU7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiA1MCU7XCI+PC9kaXY+XG4vLyAgICAgPC9kaXY+XG4vLyAgIDwvZGl2PlxuLy8gKSAlPlxuXG4uZXhwbG9kZWQge31cblxuLmV4cGxvZGVkLS1pcy1iZWluZy1pbml0aWFsaXplZCB7XG4gIC5leHBsb2RlZF9fcGFuZSB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzIGVhc2U7XG4gIH1cbn1cblxuXG5cbi5leHBsb2RlZF9fc291cmNlLFxuLmV4cGxvZGVkX19zdHJ1Y3R1cmUge1xuICBwYWRkaW5nOiBkZWZhdWx0KHNwYWNpbmcpIGRvdWJsZShkZWZhdWx0KHNwYWNpbmcpKTtcbn1cblxuXG5cbi8vKlxuLy8gVGhlIGNvbnRhaW5lciBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSBtYXJrdXAgZm9yIHRoZSBjb21wb25lbnQuIFRoaXMgaXNcbi8vIGtlcHQgYXJvdW5kIHNvIHRoYXQgZWFjaCBwYW5lIGNhbiBiZSBhc3NvY2lhdGVkIHRvIGEgc291cmNlIERPTSBub2RlIGZvclxuLy8gYW55IGNvbnN1bWVyIG9mIHRoZSBleHBsb3Npb24gcGFuZSBzZWxlY3Rpb24gdG8gZGlzcGxheSBzb3VyY2Ugc3RydWN0dXJlXG4vLyBkZXRhaWxzLlxuXG4uZXhwbG9kZWRfX3NvdXJjZSB7fVxuXG4vLypcbi8vIEEgY29udGFpbmVyIHRoYXQgd3JhcHMgZXhhY3RseSBhcm91bmQgdGhlIHNvdXJjZSBtYXJrdXAuIFRoaXMgZXh0cmFcbi8vIGNvbnRhaW5lciAoY29ycmVzcG9uZGluZyB0byB0aGUgc3RydWN0dXJlJ3MgYGV4cGxvZGVkX19zdHJ1Y3R1cmVfX2NvbnRlbnRgKVxuLy8gaXMgcmVxdWlyZWQgdG8gc2ltcGxpZnkgYWJzb2x1dGUgcG9zaXRpb25pbmcgY2FsY3VsYXRpb25zIGZvciB0aGVcbi8vIEphdmFTY3JpcHQgY29tcG9uZW50LlxuXG4uZXhwbG9kZWRfX3NvdXJjZV9fY29udGVudCB7fVxuXG5cblxuLy8qXG4vLyBUaGUgY29udGFpbmVyIGFyb3VuZCB0aGUgZXhwbG9kZWQgcmVwcmVzZW50YXRpb24uIFRoaXMgY29udGFpbmVyIHByb3ZpZGVzXG4vLyB0aGUgcGVyc3BlY3RpdmUgcmVxdWlyZWQgdG8gbWFrZSB0aGUgY29tcG9uZW50IHRocmVlLWRpbWVuc2lvbmFsLlxuXG4uZXhwbG9kZWRfX3N0cnVjdHVyZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGVyc3BlY3RpdmU6IDIwMDBweDtcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5cblxuLy8qXG4vLyBUaGUgY29udGFpbmVyIHRoYXQgd3JhcHMgZXhhY3RseSBhcm91bmQgdGhlIGV4cGxvZGVkIHN0cnVjdHVyZS4gVGhpcyBleHRyYVxuLy8gY29udGFpbmVyIGV4aXN0cyBzbyB0aGF0IGBleHBsb2RlZF9fc3RydWN0dXJlYCBjYW4gcHJvdmlkZSBzb21lIHBhZGRpbmcvXG4vLyBob3Jpem9udGFsIGNlbnRlcmluZyBvZiB0aGUgZXhwbG9kZWQgc3RydWN0dXJlIHdoaWxlIGFsc28gcHJvdmlkaW5nIGFcbi8vIHNpbXBsZSByZWxhdGl2ZSBjb250YWluZXIgKHRoaXMgc3ViY29tcG9uZW50KSBmcm9tIHdoaWNoIHRvIG1ha2UgYWJzb2x1dGVcbi8vIHBvc2l0aW9uaW5nIGNhbGN1bGF0aW9ucy5cblxuLmV4cGxvZGVkX19zdHJ1Y3R1cmVfX2NvbnRlbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDA7XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuXG5cblxuLy8qXG4vLyBUaGUgY29udGFpbmVyIGZvciBhbGwgY29udHJvbHMgKHJhbmdlIHNsaWRlcnMpIHRoYXQgY2FuIGJlIHVzZWQgdG9cbi8vIG1hbmlwdWxhdGUgdGhlIGNvbXBvbmVudC5cblxuLmV4cGxvZGVkX19jb250cm9sLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgbWFyZ2luOiAzcmVtIG5lZ2F0aXZlKGRlZmF1bHQoc3BhY2luZykpIDA7XG59XG5cbi8vKlxuLy8gQSBjb250YWluZXIgZm9yIGEgc2luZ2xlIGNvbnRyb2wgdGhhdCBtYW5pcHVsYXRlcyB0aGUgY29tcG9uZW50LlxuXG4uZXhwbG9kZWRfX2NvbnRyb2wge1xuICBmbGV4OiAxIDEgMDtcbiAgbWFyZ2luLWxlZnQ6IGRlZmF1bHQoc3BhY2luZyk7XG5cbiAgJjpmaXJzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbn1cblxuXG5cbi8vKlxuLy8gQSBzaW5nbGUgcGFuZSByZXByZXNlbnRpbmcgYSBET00gbm9kZSBpbiB0aGUgc291cmNlIG1hcmt1cC4gVGhlc2UgcGFuZXMgYXJlXG4vLyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYnkgdGhlIEphdmFTY3JpcHQgcGFydCBvZiB0aGlzIGNvbXBvbmVudHMgYW5kLFxuLy8gbGlrZXdpc2UsIGFyZSByb3RhdGVkIGluIHRocmVlLWRpbWVuc2lvbmFsIHNwYWNlIGFzIHRoZSB1c2VyIGRyYWdzIG92ZXIgdGhlXG4vLyBjb21wb25lbnQuXG5cbi5leHBsb2RlZF9fcGFuZSB7XG4gIC8vIHBvc2l0aW9uXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICAvLyBib3ggbW9kZWxcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG5cbiAgLy8gYmFja2Ryb3BcbiAgQGluY2x1ZGUgZGVmYXVsdChib3JkZXItcmFkaXVzKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh1aS1jb2xvcihncmF5LCBkYXJrZXIpLCAwLjYpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHVpLWNvbG9yKGdyYXkpLCAwLjUpO1xuXG4gIC8vIHRyYW5zaXRpb25cbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjNzIGVhc2U7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoYmx1ZSk7XG4gIH1cbn1cblxuLy8qXG4vLyBUaGUgSmF2YVNjcmlwdCBhZGRzIHRoaXMgc3RhdGUgdG8gcGFuZXMgdGhhdCBoYXZlIGJlZW4gY2xpY2tlZC8gdGFwcGVkIGJ5XG4vLyB0aGUgdXNlci4gVGhlIGFjdHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgYWN0aXZlIHBhbmUgaXMgZGVmZXJyZWQgdG8gb3RoZXJcbi8vIGNvbXBvbmVudHMgKHRoaXMgaXMgZG9uZSBieSBmaXJpbmcgYW4gZXZlbnQgd2l0aCBhIHJlZmVyZW5jZSB0byB0aGlzXG4vLyBzZWxlY3RlZCBwYW5lKS5cbi8vXG4vLyBAZGVtb190eXBlIG5vbmVcbi8vIEBzZXRfYnkgRXhwbG9kZWQuY2xpY2tcblxuLmV4cGxvZGVkX19wYW5lLS1pcy1zZWxlY3RlZCB7XG4gICYsICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHVpLWNvbG9yKGJsdWUsIGRhcmspO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbiIsIi5maWVsZCB7XG4gIEBpbmNsdWRlIGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmspO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDAgaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbn1cblxuJGZpZWxkLS1zd2l0Y2gtLXNpemU6IG11bHRpcGx5KDEuNSwgZGVmYXVsdChzcGFjaW5nKSk7XG5cbi5maWVsZC0tc3dpdGNoIHtcbiAgcGFkZGluZzogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICA+IC5sYWJlbCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmctbGVmdDogbXVsdGlwbHkoMS41LCAkZmllbGQtLXN3aXRjaC0tc2l6ZSk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxpbmUtaGVpZ2h0OiAkZmllbGQtLXN3aXRjaC0tc2l6ZTtcbiAgICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VzdCk7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBoZWlnaHQ6IG11bHRpcGx5KCRmaWVsZC0tc3dpdGNoLS1zaXplLCAwLjcpO1xuICAgICAgd2lkdGg6IG11bHRpcGx5KDAuMywgJGZpZWxkLS1zd2l0Y2gtLXNpemUpO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiBoYWxmKCRmaWVsZC0tc3dpdGNoLS1zaXplKTtcbiAgICAgIGxlZnQ6IGhhbGYoJGZpZWxkLS1zd2l0Y2gtLXNpemUpO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHVpLWNvbG9yKGJsdWUsIGRhcmtlcik7XG4gICAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCB1aS1jb2xvcihibHVlLCBkYXJrZXIpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTYwJSkgcm90YXRlKDQ1ZGVnKTtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGhlaWdodDogJGZpZWxkLS1zd2l0Y2gtLXNpemU7XG4gICAgICB3aWR0aDogJGZpZWxkLS1zd2l0Y2gtLXNpemU7XG4gICAgICBiYWNrZ3JvdW5kOiB1aS1jb2xvcihncmF5KTtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDsgbGVmdDogMDtcbiAgICAgIEBpbmNsdWRlIGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gICAgfVxuICB9XG5cbiAgPiAuZmllbGRfX3N3aXRjaDpjaGVja2VkICsgLmxhYmVsOmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDogdWktY29sb3IoYmx1ZSk7XG4gIH1cblxuICA+IC5maWVsZF9fc3dpdGNoOmNoZWNrZWQgKyAubGFiZWw6YWZ0ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbiAgPiAuZmllbGRfX3N3aXRjaCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIG9wYWNpdHk6IDAuMTtcbiAgfVxuXG4gICsgLmZpZWxkLS1zd2l0Y2gge1xuICAgIG1hcmdpbi10b3A6IGRlZmF1bHQoc3BhY2luZyk7XG4gIH1cbn1cblxuLmZpZWxkX19pY29uIHtcbiAgZmxleDogMCAwIGF1dG87XG4gIGZvbnQtc2l6ZTogMDtcblxuICA+IC5pY29uIHtcbiAgICBAaW5jbHVkZSBpY29uLS1yZWNvbG9yKGdyYXksIGRhcmtlcik7XG4gIH1cbn1cblxuLmZpZWxkX19pbnB1dCB7XG4gIGZsZXg6IDEgMSBhdXRvO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGxpbmUtaGVpZ2h0OiBkZWZhdWx0KGNvbnRyb2wtc2l6ZSk7XG4gIGZvbnQtc2l6ZTogMS4xcmVtO1xuICBAaW5jbHVkZSB0eXBlLS1kZWZhdWx0LWZvbnQtZmFtaWx5O1xuXG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiByZ2JhKHVpLWNvbG9yKGdyYXksIGRhcmtlciksIDAuNSk7XG4gIH1cblxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHJnYmEodWktY29sb3IoZ3JheSwgZGFya2VyKSwgMC41KTtcbiAgfVxuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbn1cblxuIiwiLy8qXG4vLyBAcGF0dGVybiBQYWdlIEhlYWRlclxuLy8gQGdyb3VwIFBhcnRpYWxzXG4vL1xuLy8gQSBncm91cCBvZiBoZWFkaW5ncyBhbmQgb3RoZXIgcGFnZS1sZXZlbCBpbmZvcm1hdGlvbiB0aGF0IGFwcGVhcnMgYXQgdGhlXG4vLyB0b3Agb2YgYSBnaXZlbiBwYWdlIG9yIHNlY3Rpb24uXG4vL1xuLy8gQHNpbmNlIDEuMC4wXG5cbi8vKlxuLy8gQG1hcmt1cFxuLy8gPGhlYWRlciBjbGFzcz1cInBhZ2UtaGVhZGVyXCI+XG4vLyAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtLXZlcnRpY2FsbHktY2VudGVyZWRcIj5cbi8vICAgICA8ZGl2IGNsYXNzPVwiZ3JpZF9faXRlbVwiPlxuLy8gICAgICAgPGgxIGNsYXNzPVwidHlwZSB0eXBlLS1oZWFkaW5nIHR5cGUtLWhlYWRpbmctMVwiPlRoZSB0aXRsZTwvaDE+XG4vLyAgICAgPC9kaXY+XG4vL1xuLy8gICAgIDxkaXYgY2xhc3M9XCJncmlkX19pdGVtIGdyaWRfX2l0ZW0tLW5vLWZsZXhcIj5cbi8vICAgICAgIDxidXR0b24gY2xhc3M9XCJkb2Nrcy1idXR0b24gZG9ja3MtYnV0dG9uLS1kYXJrXCI+QWN0aW9uPC9idXR0b24+XG4vLyAgICAgPC9kaXY+XG4vLyAgIDwvZGl2PlxuLy8gPC9oZWFkZXI+XG5cbi5wYWdlLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXkpO1xuICBwYWRkaW5nOiBkZWZhdWx0KHNwYWNpbmcpO1xuICBwYWRkaW5nLWJvdHRvbTogZGVmYXVsdChzcGFjaW5nKTtcbiAgbWluLWhlaWdodDogcmVtKDY2KTtcblxuICAudHlwZS0taGVhZGluZy0xIHtcbiAgICBtYXJnaW46IC0wLjVlbSAwO1xuICB9XG59XG4iLCIkaW5saW5lLWdyb3VwLS1zcGFjaW5nOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuXG4uaW5saW5lLWdyb3VwIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLXJpZ2h0OiBuZWdhdGl2ZSgkaW5saW5lLWdyb3VwLS1zcGFjaW5nKTtcbiAgbWFyZ2luLWJvdHRvbTogbmVnYXRpdmUoJGlubGluZS1ncm91cC0tc3BhY2luZyk7XG59XG5cbi5pbmxpbmUtZ3JvdXBfX2l0ZW0ge1xuICBtYXJnaW4tcmlnaHQ6ICRpbmxpbmUtZ3JvdXAtLXNwYWNpbmc7XG4gIG1hcmdpbi1ib3R0b206ICRpbmxpbmUtZ3JvdXAtLXNwYWNpbmc7XG59XG4iLCIvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX19cbi8vICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgLyAgL1xcICAgICAgICBfX19cbi8vICAgICAgICAgICAgICAgICAgLyAgL1xcICAgICAgLyAgLzovXyAgICAgIC8gIC9cXFxuLy8gICAgX19fICAgICBfX18gIC8gIC86LyAgICAgLyAgLzovIC9cXCAgICAvICAvOi9cbi8vICAgL19fL1xcICAgLyAgL1xcL19fLzo6XFwgICAgLyAgLzovIC86OlxcICAvICAvOi9cbi8vICAgXFwgIFxcOlxcIC8gIC86L1xcX19cXC9cXDpcXF9fL19fLzovIC86L1xcOlxcLyAgLzo6XFxcbi8vICAgIFxcICBcXDpcXCAgLzovICAgIFxcICBcXDpcXC9cXCAgXFw6XFwvOi9+LzovX18vOi9cXDpcXFxuLy8gICAgIFxcICBcXDpcXC86LyAgICAgIFxcX19cXDo6L1xcICBcXDo6LyAvOi9cXF9fXFwvICBcXDpcXFxuLy8gICAgICBcXCAgXFw6Oi8gICAgICAgL19fLzovICBcXF9fXFwvIC86LyAgICAgIFxcICBcXDpcXFxuLy8gICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgL19fLzovICAgICAgICBcXF9fXFwvXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcX19cXC9cblxuLy8qXG4vLyBAcGF0dGVybiBMaXN0XG4vL1xuLy8gQSBsaXN0IGFsbG93cyB5b3UgdG8gcHJlc2VudCBhIHNldCBvZiBzZWxlY3RhYmxlIGl0ZW1zIHZlcnRpY2FsbHkuIFRoZXNlXG4vLyBsaXN0cyBjYW4gYmUgYmUgc2VwYXJhdGVkIGludG8gYW55IG51bWJlciBvZiBzdWJsaXN0cywgYW5kIHR3byBsZXZlbHMgb2Zcbi8vIHN1YmhlYWRpbmdzIGFyZSBhdmFpbGFibGUgKHNvLCB5b3UgY2FuIGhhdmUgYSBzdWJsaXN0IHdpdGhpbiBhIHN1Ymxpc3QpLlxuLy9cbi8vIFRoZSBzdWJsaXN0cyBjYW4gb3B0aW9uYWxseSBhbGxvdyBhIHN1YmhlYWRpbmcgdG8gdG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mXG4vLyB0aGUgYXNzb2NpYXRlZCBzdWJsaXN0LiBJdCBhbHNvIHN1cHBvcnRzIHRoZSBhYmlsaXR5IHRvIGZpbHRlciB0aGUgY29udGVudHNcbi8vIG9mIGEgbGlzdCB0byBvbmx5IGl0ZW1zIG1hdGNoaW5nIGEgZ2l2ZW4gc3RyaW5nLCBoaWRpbmcgc3ViaGVhZGluZ3MgYXNcbi8vIG5lY2Vzc2FyeS5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbi8vKlxuLy8gVGhlIGNvcmUgY29udGFpbmVyIGZvciBhIGxpc3QuIExpc3QgaXRlbXMgY2FuIGdvIGRpcmVjdGx5IGluIHRoaXMgY29udGFpbmVyXG4vLyBvciwgaWYgeW91IHdhbnQgdG8gcHJvdmlkZSB0b2dnbGUtYWJsZSBvciBmaWx0ZXItYWJsZSBzdWJsaXN0cywgd2l0aGluIGFcbi8vIHN1Ymxpc3QuXG5cbi5saXN0IHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiBkZWZhdWx0KHNwYWNpbmcpIDAgZG91YmxlKGRlZmF1bHQoc3BhY2luZykpO1xuICBsaXN0LXN0eWxlOiBub25lO1xuXG4gIC50eXBlLS1oZWFkaW5nIHtcbiAgICBwYWRkaW5nLWxlZnQ6IGRlZmF1bHQoc3BhY2luZyk7XG4gICAgcGFkZGluZy1yaWdodDogZGVmYXVsdChzcGFjaW5nKTtcbiAgfVxuXG4gIC5wb3BvdmVyICYge1xuICAgIG1hcmdpbi1ib3R0b206IGRlZmF1bHQoc3BhY2luZyk7XG4gIH1cbn1cblxuLy8qXG4vLyBBbiBpbmRpdmlkdWFsIGl0ZW0gd2l0aGluIGEgbGlzdC4gVGhlc2UgaXRlbXMgaGF2ZSBob3ZlciwgZm9jdXMsIGFuZCBhY3RpdmVcbi8vIHN0YXRlcyBzbyB0aGF0IGl0IGlzIGNsZWFyIHdoYXQgaXRlbSBpcyBhY3Rpb25hYmxlLyBiZWluZyBhY3Rpb25lZC5cblxuLmxpc3RfX2l0ZW0ge1xuICAvLyBib3ggbW9kZWxcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IHF1YXJ0ZXIoZGVmYXVsdChzcGFjaW5nKSkgZGVmYXVsdChzcGFjaW5nKTtcblxuICAvLyBiYWNrZHJvcFxuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgLy8gdHlwZVxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiB1aS1jb2xvcihncmF5LCBkYXJrZXN0KTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB1aS1jb2xvcihncmF5LCBsaWdodCk7XG4gIH1cblxuICAmOmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoYmx1ZSk7XG4gICAgY29sb3I6IHVpLWNvbG9yKGJsdWUsIGRhcmtlcik7XG4gIH1cbn1cblxuLy8qXG4vLyBBbiBpdGVtIHRoYXQgaXMgY3VycmVudGx5IGFjdGl2ZSBGb3IgZXhhbXBsZSwgaW4gdGhlIHNpZGViYXIsIHRoaXMgY2xhc3MgaXNcbi8vIHVzZWQgZm9yIHRoZSBpdGVtIHJlcHJlc2VudGluZyB0aGUgY3VycmVudGx5LWFjdGl2ZSBwYXR0ZXJuLlxuXG4ubGlzdF9faXRlbS0taXMtYWN0aXZlIHtcbiAgJixcbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoYmx1ZSk7XG4gICAgY29sb3I6IHVpLWNvbG9yKGJsdWUsIGRhcmtlcik7XG4gIH1cbn1cblxuLy8qXG4vLyBBIGxpc3QgaXRlbSB0aGF0IGlzIGluZGVudGVkIG9uIHRoZSBsZWZ0IHRvIGluZGljYXRlIHRoYXQgaXQgaXMgcmVsYXRlZCB0b1xuLy8gdGhlIGNsb3Nlc3QsIG5vbi1pbmRlbnRlZCBpdGVtIGFib3ZlIGl0LlxuXG4ubGlzdF9faXRlbS0taW5kZW50ZWQge1xuICBwYWRkaW5nLWxlZnQ6IGNhbGMoI3tkZWZhdWx0KHNwYWNpbmcpfSArIDJjaCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogY2FsYygje2RlZmF1bHQoc3BhY2luZyl9ICsgMWNoKTtcbiAgICB0b3A6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAycHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSh1aS1jb2xvcihibGFjayksIDAuMDcpO1xuICB9XG5cbiAgJjpsYXN0LWNoaWxkOmJlZm9yZSB7XG4gICAgaGVpZ2h0OiA4NSU7XG4gIH1cblxuICAubGlzdF9faXRlbTpub3QoLmxpc3RfX2l0ZW0tLWluZGVudGVkKSArICY6YmVmb3JlIHtcbiAgICB0b3A6IDE1JTtcbiAgICBoZWlnaHQ6IDg1JTtcbiAgfVxufVxuXG4vLypcbi8vIEEgc3Vic2V0IG9mIGl0ZW1zIHRoYXQgaGF2ZSB0aGVpciBvd24gaGFkaW5nIHRvIGRpc3Rpbmd1aXNoIHRoZW0uIFRoaXNcbi8vIHN1YmNvbXBvbmVudCBjYW4gY29udGFpbiBhbnkgbnVtYmVyIG9mIGl0ZW1zIGFuZC8gb3Igb3RoZXIgc3VibGlzdHMuIFRoaXNcbi8vIGdyb3VwaW5nIGFsc28gYWxsb3dzIHRoZSBbYEZpbHRlcmFibGVgXShAbGluayBmaWx0ZXJhYmxlKSBjb21wb25lbnQgdG9cbi8vIGFjY3VyYXRlbHkgaGlkZSBzdWJzZXRzIG9mIHRoZSBsaXN0LCBpbmNsdWRpbmcgaGVhZGluZ3Mgd2l0aGluIGEgZ3JvdXBcbi8vIHdoZXJlIGFsbCBpdGVtcyBhcmUgaGlkZGVuLlxuXG4ubGlzdF9fZ3JvdXAge31cblxuXG5cbi8vKlxuLy8gQSBob3Jpem9udGFsIGxpc3Qgb2YgbGlua3Mgc2VwYXJhdGVkIGJ5IHNsYXNoZXMuXG5cbi5saW5rLWxpc3Qge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcblxuICA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleDogMCAwIGF1dG87XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICRsaW5rLWxpc3RfX2l0ZW0tLXNlcGFyYXRvci1oZWlnaHQ6IDgwJTtcblxuICAgICAgY29udGVudDogXCJcIjtcblxuICAgICAgLy8gcG9zaXRpb25cbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogaGFsZigxMDAlIC0gJGxpbmstbGlzdF9faXRlbS0tc2VwYXJhdG9yLWhlaWdodCk7XG4gICAgICByaWdodDogLTFweDtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE1ZGVnKTtcblxuICAgICAgLy8gYm94IG1vZGVsXG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGhlaWdodDogJGxpbmstbGlzdF9faXRlbS0tc2VwYXJhdG9yLWhlaWdodDtcblxuICAgICAgLy8gYmFja2Ryb3BcbiAgICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkIHJnYmEodWktY29sb3IoZ3JheSwgZGFya2VzdCksIDAuMSk7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkOmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxuICB9XG59XG5cbi8vKlxuLy8gQW4gaW5kaXZpZHVhbCBsaXN0IHdpdGhpbiBhIGxpbmsgbGlzdC4gVGhpcyBjbGFzcyBzaG91bGQgZ28gb24gdGhlIGFjdHVhbFxuLy8gYW5jaG9yIChvciBgYnV0dG9uYCwgaWYgdGhlcmUgaXMgbm8gcmVhc29uYWJsZSBgaHJlZmApIGVsZW1lbnQgc28gdGhhdFxuLy8gdGhlcmUgaXMgYXMgbGFyZ2UgYSBoaXQgdGFyZ2V0IGFzIHBvc3NpYmxlLlxuLy9cbi8vIEVhY2ggaXRlbSAoZXhjZXB0IGZvciB0aGUgbGFzdCBvbmUpIGlzIGdpdmVuIGEgc21hbGwgc2VwYXJhdG9yIHNvIHRoYXQgaXQgaXNcbi8vIGNsZWFyIHdoZXJlIHRoZSBoaXQgYXJlYXMgZW5kLiBUaGlzIGlzIHBsYWNlZCBvbiB0aGUgY29udGFpbmluZyBgbGlgIHNpbmNlXG4vLyB0aGUgYGxpbmstbGlzdF9faXRlbWAgY2FuIGJlIGEgYGJ1dHRvbmAuXG4vL1xuLy8gSW4gdGhlIGRhcmsgdGhlbWUsIHRoZSBjb2xvcnMgZm9yIGVhY2ggbGlzdCBpdGVtIGludmVydC5cblxuLmxpbmstbGlzdF9faXRlbSB7XG4gIC8vIHBvc2l0aW9uXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBib3ggbW9kZWxcbiAgZGlzcGxheTogYmxvY2s7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcGFkZGluZzogcXVhcnRlcihkZWZhdWx0KHNwYWNpbmcpKSBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuXG4gIC8vIGJhY2tkcm9wXG4gIEBpbmNsdWRlIHJlbW92ZS1icm93c2VyLXN0eWxpbmc7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3BhY2l0eTogMC42O1xuXG4gIC8vIHR5cGVcbiAgZm9udC1zaXplOiAxZW07XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VyKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1cyBlYXNlO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBBIGxpc3QgdGhhdCBzaW1wbHkgYXJyYW5nZXMgdGhlIGNvbnRhaW5lZCBgbGlgcyB3aXRoIHNvbWUgc3BhY2luZyBiZXR3ZWVuXG4vLyB0aGVtLlxuXG4udW5zdHlsZWQtbGlzdCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcblxuICA+IGxpIHtcbiAgICBtYXJnaW46IGRvdWJsZShkZWZhdWx0KHNwYWNpbmcpKSAwO1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gICAgICAgIF9fXyAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICBfX19cbi8vICAgICAgIC9fXy9cXCAgICAgIF9fXyAgICAgICAvX18vfCAgICAgIF9fXyAgICAgICAgL19fL1xcXG4vLyAgICAgIHwgIHw6OlxcICAgIC8gIC9cXCAgICAgfCAgfDp8ICAgICAvICAvXFwgICAgICAgXFwgIFxcOlxcXG4vLyAgICAgIHwgIHw6fDpcXCAgLyAgLzovICAgICB8ICB8OnwgICAgLyAgLzovICAgICAgICBcXCAgXFw6XFxcbi8vICAgIF9ffF9ffDp8XFw6XFwvX18vOjpcXCAgIF9ffF9ffDp8ICAgL19fLzo6XFwgICAgX19fX19cXF9fXFw6XFxcbi8vICAgL19fLzo6Ojp8IFxcOlxcX19cXC9cXDpcXF8vX18vOjo6OlxcX19fXFxfX1xcL1xcOlxcX18vX18vOjo6Ojo6OjpcXFxuLy8gICBcXCAgXFw6XFx+flxcX19cXC8gIFxcICBcXDpcXC9cXCB+XFx+flxcOjo6Oi8gIFxcICBcXDpcXC9cXCAgXFw6XFx+flxcfn5cXC9cbi8vICAgIFxcICBcXDpcXCAgICAgICAgIFxcX19cXDo6LyAgfH5+fDp8fn4gICAgXFxfX1xcOjovXFwgIFxcOlxcICB+fn5cbi8vICAgICBcXCAgXFw6XFwgICAgICAgIC9fXy86LyAgIHwgIHw6fCAgICAgIC9fXy86LyAgXFwgIFxcOlxcXG4vLyAgICAgIFxcICBcXDpcXCAgICAgICBcXF9fXFwvICAgIHwgIHw6fCAgICAgIFxcX19cXC8gICAgXFwgIFxcOlxcXG4vLyAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgIHxfX3wvICAgICAgICAgICAgICAgICBcXF9fXFwvXG4vL1xuLy8gTWl4aW5zIGFyZSB1c2VkIHRvIGluY2x1ZGUgY29tbW9uIGZ1bmN0aW9uYWxpdHkgaW4gY29tcG9uZW50cy5cbi8vIFVzZSB0aGVzZSBvdmVyIHBsYWNlaG9sZGVycyBldmVuIHdoZW4gbm8gdmFyaWFibGVzIGFyZSByZXF1aXJlZDpcbi8vIGBAZXh0ZW5kc2AgaXMgbW9yZSB0cm91YmxlIHRoYW4gaXQncyB3b3J0aCwgYW5kIHByb3BlciBjb21wcmVzc2lvblxuLy8gbW9zdGx5IHNvbHZlcyB0aGUgcHJvYmxlbSBvZiBkdXBsaWNhdGVkIG1hcmt1cCBmcm9tIG1peGlucy5cblxuLy8gICAgX19fIF9fXyBfX18gX19fIF8gICAgICBfX18gICBfX1xuLy8gICB8ICAgXFxfIF8vIF9ffCBfIFxcIHwgICAgL19cXCBcXCAvIC9cbi8vICAgfCB8KSB8IHxcXF9fIFxcICBfLyB8X18gLyBfIFxcIFYgL1xuLy8gICB8X19fL19fX3xfX18vX3wgfF9fX18vXy8gXFxfXFxffFxuLy9cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGxhY2Vob2xkZXJzIHByb3ZpZGluZyBjb21tb24gZGlzcGxheS8gcG9zaXRpb25pbmcgcGF0dGVybnMuXG5cbkBtaXhpbiBjb21wb3NpdGUtbGF5ZXIge1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbkBtaXhpbiBjbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbn1cblxuQG1peGluIGNlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7IGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG5cbkBtaXhpbiBjb3Zlci1hbGwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDsgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcbn1cblxuQG1peGluIHJlbW92ZS1icm93c2VyLXN0eWxpbmcge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuXG5cbi8vICAgIF9fX19fIF9fXyAgXyAgIF8gIF9fXyBfICBfXG4vLyAgIHxfICAgXy8gXyBcXHwgfCB8IHwvIF9ffCB8fCB8XG4vLyAgICAgfCB8fCAoXykgfCB8X3wgfCAoX198IF9fIHxcbi8vICAgICB8X3wgXFxfX18vIFxcX19fLyBcXF9fX3xffHxffFxuLy9cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGxhY2Vob2xkZXJzIHRvIGhlbHAgd2l0aCB0b3VjaCBkZXZpY2VzLlxuXG5AbWl4aW4gdG91Y2gtc2Nyb2xsIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cblxuXG5cbi8vICAgIF9fX19fX18gICBfX19fXyBfX19cbi8vICAgfF8gICBfXFwgXFwgLyAvIF8gXFwgX198XG4vLyAgICAgfCB8ICBcXCBWIC98ICBfLyBffFxuLy8gICAgIHxffCAgIHxffCB8X3wgfF9fX3xcbi8vXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBsYWNob2xkZXJzIHRvIGFkZCBuaWNlIGZlYXR1cmVzIHRvIHRleHQgY29udGVudC5cblxuQG1peGluIHdvcmQtd3JhcCB7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIGh5cGhlbnM6IGF1dG87XG59XG5cbkBtaXhpbiBlbGxpcHNpcyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuIiwiLmRldGFpbHMtc2hlZXQge1xuICBtYXgtd2lkdGg6IDkwJTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDUwJTsgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDAuNHJlbTtcbiAgYm94LXNoYWRvdzogMCAwIDEwcHggcmdiYShjb2xvcihibGFjayksIDAuMyk7XG4gIHotaW5kZXg6IDIwO1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uZGV0YWlscy1zaGVldC0taXMtYWN0aXZlIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5kZXRhaWxzLXNoZWV0X19vdmVybGF5IHtcbiAgYmFja2dyb3VuZDogcmdiYShjb2xvcihibGFjayksIDAuOSk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwOyBib3R0b206IDA7XG4gIHJpZ2h0OiAwOyBsZWZ0OiAwO1xuICB6LWluZGV4OiAxOTtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmRldGFpbHMtc2hlZXRfX292ZXJsYXktLWlzLWFjdGl2ZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG5cbi5kZXRhaWxzLXNoZWV0X19zZWN0aW9uIHtcbiAgcGFkZGluZzogMXJlbTtcblxuICArIC5kZXRhaWxzLXNoZWV0X19zZWN0aW9uIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgY29sb3Ioc2t5LWRhcmspO1xuICB9XG59XG5cbi5kZXRhaWxzLXNoZWV0X19uYW1lIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcihza3ktbGlnaHQpO1xuICBwYWRkaW5nOiAwLjFyZW0gMC4yNWVtO1xuICBib3JkZXItcmFkaXVzOiAwLjI1ZW07XG4gIGNvbG9yOiBjb2xvcihzbGF0ZS1saWdodCk7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG4gIGZvbnQtZmFtaWx5OiBDb25zb2xhcywgbW9ub3NwYWNlO1xuICBtYXJnaW46IDA7XG59XG5cbi5kZXRhaWxzLXNoZWV0X19zdWJ0aXRsZSB7XG4gIG1hcmdpbjogMCAwIDAuNXJlbTtcbiAgZm9udC1zaXplOiAwLjZyZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiBjb2xvcihzbGF0ZS1saWdodCk7XG4gIG9wYWNpdHk6IDAuMztcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cbiIsIi8vKlxuLy8gQHBhdHRlcm4gTm90aWNlXG4vL1xuLy8gQSBzaW1wbGUsIGNvbG9yZWQgY29udGFpbmVyIGFyb3VuZCB0aGF0IGVtcGhhc2l6ZXMgdGhlIGNvbnRhaW5lZCB0ZXh0LiBUaGlzXG4vLyBzaG91bGQgYmUgdXNlZCBmb3IgaW1wb3J0YW50IGRldGFpbHMgYWJvdXQgYSBzeW1ib2w7IGZvciBleGFtcGxlLCB0b1xuLy8gaW5kaWNhdGUgdGhhdCBhIGNvbXBvbmVudCBpcyBkZXByZWNhdGVkIG9yIGV4cGVyaW1lbnRhbC5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG4vLypcbi8vIEEgcmVndWxhciBub3RpY2UuXG4vL1xuLy8gQG1hcmt1cFxuLy8gPGRpdiBjbGFzcz1cIm5vdGljZVwiPlxuLy8gICA8ZGl2IGNsYXNzPVwidHlwZS1jb250YWluZXJcIj5cbi8vICAgICA8cD5QbGVhc2UgZG9uJ3QgdXNlIHRoaXMgY29tcG9uZW50IGFueW1vcmUhIEl0J3Mgbm8gZ29vZC48L3A+XG4vLyAgIDwvZGl2PlxuLy8gPC9kaXY+XG5cbi5ub3RpY2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcih5ZWxsb3cpO1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIGNvbG9yOiB1aS1jb2xvcih5ZWxsb3csIGRhcmspO1xuICBwYWRkaW5nOiAxcmVtO1xuICBib3JkZXItcmFkaXVzOiBkZWZhdWx0KGJvcmRlci1yYWRpdXMpO1xuICBAaW5jbHVkZSBmb250LXNpemUocGFyYWdyYXBoLXNtYWxsKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC50eXBlLCBwLCBjb2RlIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gIH1cblxuICAudHlwZS0taGVhZGluZyB7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgfVxufVxuXG4vLypcbi8vIEEgbm90aWNlIHRoYXQgaW5kaWNhdGVzIHNvbWV0aGluZyBpcyBuZXcgYWJvdXQgdGhlIGF0dGFjaGVkIHN5bWJvbC5cbi8vXG4vLyBAZGVtb190eXBlIGpvaW50XG5cbi5ub3RpY2UtLW5ldyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGJsdWUpO1xuICBjb2xvcjogdWktY29sb3IoYmx1ZSwgZGFya2VyKTtcbn1cbiIsIiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgTmV4dCBQb3BvdmVyXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuJHBvcG92ZXItdG9vbHRpcC1zaXplOiByZW0oMTApO1xuJHBvcG92ZXItbWF4LXdpZHRoOiByZW0oNDAwKTtcbiRwb3BvdmVyLW1pbi13aWR0aDogcmVtKDE1MCk7XG4kcG9wb3Zlci1tYXgtd2lkdGgtcGVyY2VudDogMTAwJTtcbiRwb3BvdmVyLW1heC1oZWlnaHQ6IHJlbSg4MDApO1xuJHBvcG92ZXItdmVydGljYWwtbWFyZ2luOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpICsgKCRwb3BvdmVyLXRvb2x0aXAtc2l6ZSAvIDIpO1xuJHBvcG92ZXItYmFja2dyb3VuZC1jb2xvcjogY29sb3Iod2hpdGUpO1xuJHBvcG92ZXItc2VjdGlvbi1ib3JkZXI6IDFweCBzb2xpZCBjb2xvcihncmF5LWxpZ2h0KTtcbiRwb3BvdmVyLWJveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKGNvbG9yKHNsYXRlKSwgMC4wNSksIDAgMnB4IDdweCAxcHggcmdiYShjb2xvcihzbGF0ZSksIDAuMTYpO1xuXG5cblxuLnBvcG92ZXJfX2NvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIEBpbmNsdWRlIHotaW5kZXgocG9wb3Zlci1yZXN0aW5nLCBwYWdlKTtcblxuICA+ICo6Zm9jdXMgeyBvdXRsaW5lOiAwOyB9XG59XG5cbi5wb3BvdmVyX19jb250YWluZXItLWNvbnRhaW5zLWFjdGl2ZS1wb3BvdmVyIHtcbiAgQGluY2x1ZGUgei1pbmRleChwb3BvdmVyLWFjdGl2ZSwgcGFnZSk7XG59XG5cbi5wb3BvdmVyX19jb250YWluZXItLWlzLWRlYWN0aXZhdGluZyB7XG4gIEBpbmNsdWRlIHotaW5kZXgocG9wb3Zlci1kZWFjdGl2YXRpbmcsIHBhZ2UpO1xufVxuXG4ucG9wb3Zlcl9fY29udGFpbmVyLS1mdWxsLXdpZHRoIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuXG5cbi5wb3BvdmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDEwMCU7XG5cbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6ICRwb3BvdmVyLW1heC13aWR0aC1wZXJjZW50O1xuICBtYXJnaW46ICRwb3BvdmVyLXZlcnRpY2FsLW1hcmdpbiBkZWZhdWx0KHNwYWNpbmcpO1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICRwb3BvdmVyLWJhY2tncm91bmQtY29sb3I7XG4gIGJvcmRlci1yYWRpdXM6IGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIG9wYWNpdHk6IDA7XG4gIGJveC1zaGFkb3c6ICRwb3BvdmVyLWJveC1zaGFkb3c7XG5cbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMzVzIGN1YmljLWJlemllciguMjcsMS40MSwuNTMsLjk3KSwgb3BhY2l0eSAwLjJzIGVhc2U7XG59XG5cbi5wb3BvdmVyLS1pcy1hY3RpdmUge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICBvcGFjaXR5OiAxO1xufVxuXG4ucG9wb3Zlci0taXMtcG9zaXRpb25lZC1hYm92ZSB7XG4gIHRvcDogYXV0bztcbiAgYm90dG9tOiAxMDAlO1xuXG4gIC5wb3BvdmVyX190b29sdGlwIHtcbiAgICB0b3A6IDEwMCU7XG5cbiAgICAmOmFmdGVyIHsgdG9wOiAkcG9wb3Zlci10b29sdGlwLXNpemUgLyAtMjsgfVxuICB9XG59XG5cblxuLnBvcG92ZXJfX3Rvb2x0aXAge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDUwJTtcbiAgdG9wOiAoLTIgKiAkcG9wb3Zlci10b29sdGlwLXNpemUpO1xuXG4gIHdpZHRoOiAoJHBvcG92ZXItdG9vbHRpcC1zaXplICogMik7XG4gIGhlaWdodDogKCRwb3BvdmVyLXRvb2x0aXAtc2l6ZSAqIDIpO1xuICBtYXJnaW4tbGVmdDogKCRwb3BvdmVyLXRvb2x0aXAtc2l6ZSAqIC0xKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogKCRwb3BvdmVyLXRvb2x0aXAtc2l6ZSAqIDMgLyAyKTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuXG4gICAgbWFyZ2luLWxlZnQ6ICgkcG9wb3Zlci10b29sdGlwLXNpemUgLyAtMik7XG5cbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6ICRwb3BvdmVyLXRvb2x0aXAtc2l6ZTtcbiAgICB3aWR0aDogJHBvcG92ZXItdG9vbHRpcC1zaXplO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHBvcG92ZXItYmFja2dyb3VuZC1jb2xvcjtcbiAgICBib3gtc2hhZG93OiAkcG9wb3Zlci1ib3gtc2hhZG93O1xuICB9XG59XG5cblxuXG4ucG9wb3Zlcl9fY29udGVudC13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgbWF4LXdpZHRoOiAkcG9wb3Zlci1tYXgtd2lkdGg7XG4gIG1heC1oZWlnaHQ6ICRwb3BvdmVyLW1heC1oZWlnaHQ7XG4gIGJvcmRlci1yYWRpdXM6IGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cblxuXG4ucG9wb3Zlcl9fY29udGVudCB7XG4gIGZsZXg6IDAgMCBhdXRvO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgbWF4LWhlaWdodDogMTAwJTtcbiAgbWluLXdpZHRoOiAkcG9wb3Zlci1taW4td2lkdGg7XG5cbiAgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG5cbiAgPiAqOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuXG5cblxuLnBvcG92ZXJfX3BhbmUge1xuICBmbGV4OiAwIDEgYXV0bztcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuIiwiLy8gICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICAvICAvXFwgICAgICAgICAgICAgICAgICAgX19fICAgICAgLyAgLzo6XFwgICAgICAvICAvXFwgICAgICAgIC8gIC9cXFxuLy8gICAgICAvICAvOi9fICAgICAgICAgICAgICAgICAvICAvXFwgICAgLyAgLzovXFw6XFwgICAgLyAgLzovXyAgICAgIC8gIC86OlxcXG4vLyAgICAgLyAgLzovIC9cXCAgX19fICAgICBfX18gIC8gIC86LyAgIC8gIC86LyAgXFw6XFwgIC8gIC86LyAvXFwgICAgLyAgLzovXFw6XFxcbi8vICAgIC8gIC86LyAvOjpcXC9fXy9cXCAgIC8gIC9cXC9fXy86OlxcICAvX18vOi8gXFxfX1xcOnwvICAvOi8gLzovXyAgLyAgLzovfi86L1xuLy8gICAvX18vOi8gLzovXFw6XFwgIFxcOlxcIC8gIC86L1xcX19cXC9cXDpcXF9cXCAgXFw6XFwgLyAgLzovX18vOi8gLzovIC9cXC9fXy86LyAvOi9fX19cbi8vICAgXFwgIFxcOlxcLzovfi86L1xcICBcXDpcXCAgLzovICAgIFxcICBcXDpcXC9cXCAgXFw6XFwgIC86L1xcICBcXDpcXC86LyAvOi9cXCAgXFw6XFwvOjo6OjovXG4vLyAgICBcXCAgXFw6Oi8gLzovICBcXCAgXFw6XFwvOi8gICAgICBcXF9fXFw6Oi9cXCAgXFw6XFwvOi8gIFxcICBcXDo6LyAvOi8gIFxcICBcXDo6L35+fn5cbi8vICAgICBcXF9fXFwvIC86LyAgICBcXCAgXFw6Oi8gICAgICAgL19fLzovICBcXCAgXFw6Oi8gICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDpcXFxuLy8gICAgICAgL19fLzovICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICBcXF9fXFwvICAgICAgXFwgIFxcOjovICAgICAgXFwgIFxcOlxcXG4vLyAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvXG5cbi8vKlxuLy8gQHBhdHRlcm4gU2xpZGVyXG4vL1xuLy8gQSBzaW1wbGUgcmFuZ2Ugc2xpZGVyLiBVc2UgdGhpcyBjb21wb25lbnQgZm9yIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHVzZXIgaGFzXG4vLyB0byBzZWxlY3QgZnJvbSBhIGNvbnRpbnVvdXMgcmFuZ2Ugb2YgdmFsdWVzIHdpdGggYSBtaW5pbXVtIGFuZCBtYXhpbXVtLiBGb3Jcbi8vIGV4YW1wbGUsIHRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gY2hhbmdlIHRoZSBwZXJzcGVjdGl2ZSBhbmQgcGFuZSBnYXAgZm9yXG4vLyB0aGUgYEV4cGxvZGVkYCBjb21wb25lbnQuXG4vL1xuLy8gQHNpbmNlIDEuMC4wXG5cbi8vKlxuLy8gQG1hcmt1cFxuLy8gPGxhYmVsIGNsYXNzPVwibGFiZWxcIiBmb3I9XCJyYW5nZVwiPlRyeSBzb21ldGhpbmcgaW4gcmFuZ2U8L2xhYmVsPlxuLy8gPGlucHV0IGNsYXNzPVwicmFuZ2VcIiBuYW1lPVwicmFuZ2VcIiBpZD1cInJhbmdlXCIgdHlwZT1cInJhbmdlXCI+XG5cbi5yYW5nZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDA7XG5cbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG59XG5cbiRyYW5nZV9fdHJhY2stLXNpemU6IGRlZmF1bHQoY29udHJvbC1zaXplLS1sYXJnZSk7XG4kcmFuZ2VfX3RodW1iLS1zcGFjaW5nOiAoMC4xICogZGVmYXVsdChjb250cm9sLXNpemUtLWxhcmdlKSk7XG4kcmFuZ2VfX3RodW1iLS1zaXplOiAoJHJhbmdlX190cmFjay0tc2l6ZSAtIGRvdWJsZSgkcmFuZ2VfX3RodW1iLS1zcGFjaW5nKSk7XG5cbkBtaXhpbiByYW5nZV9fdHJhY2sge1xuICAvLyBib3ggbW9kZWxcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJHJhbmdlX190cmFjay0tc2l6ZTtcblxuICAvLyBiYWNrZHJvcFxuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmspO1xuICBib3JkZXItcmFkaXVzOiBoYWxmKCRyYW5nZV9fdHJhY2stLXNpemUpO1xuICBwYWRkaW5nOiAkcmFuZ2VfX3RodW1iLS1zcGFjaW5nO1xufVxuXG5AbWl4aW4gcmFuZ2VfX3RodW1iIHtcbiAgLy8gYm94IG1vZGVsXG4gIGhlaWdodDogJHJhbmdlX190aHVtYi0tc2l6ZTtcbiAgd2lkdGg6ICRyYW5nZV9fdGh1bWItLXNpemU7XG5cbiAgLy8gYmFja2Ryb3BcbiAgYm94LXNoYWRvdzogMXB4IDFweCAzcHggcmdiYShjb2xvcihibGFjayksIDAuMTUpO1xuICBib3JkZXItcmFkaXVzOiBoYWxmKCRyYW5nZV9fdGh1bWItLXNpemUpO1xuICBiYWNrZ3JvdW5kOiB1aS1jb2xvcihncmF5LCBsaWdodCk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBhcHBlYXJhbmNlOiBub25lO1xufVxuXG4ucmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHsgQGluY2x1ZGUgcmFuZ2VfX3RyYWNrOyB9XG4ucmFuZ2U6Zm9jdXM6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHsgb3V0bGluZTogbm9uZTsgfVxuLnJhbmdlOjotbW96LXJhbmdlLXRyYWNrIHsgQGluY2x1ZGUgcmFuZ2VfX3RyYWNrOyB9XG4ucmFuZ2U6Oi1tcy10cmFjayB7IEBpbmNsdWRlIHJhbmdlX190cmFjazsgfVxuXG4ucmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsgQGluY2x1ZGUgcmFuZ2VfX3RodW1iOyB9XG4ucmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWIgeyBAaW5jbHVkZSByYW5nZV9fdGh1bWI7IH1cbi5yYW5nZTo6LW1zLXRodW1iIHsgQGluY2x1ZGUgcmFuZ2VfX3RodW1iOyB9XG4iLCIvLyAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgICAgICAgICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcICAgICAgIF9fXyAgICAgICAgIC8gIC9cXCAgICAgICAgLyAgL1xcXG4vLyAgICAgIC8gIC86OlxcICAgICAgLyAgLzovXyAgICAgIC8gIC86L18gICAgIC8gIC9cXCAgICAgICAvICAvOjp8ICAgICAgLyAgLzovX1xuLy8gICAgIC8gIC86L1xcOlxcICAgIC8gIC86LyAvXFwgICAgLyAgLzovIC9cXCAgIC8gIC86LyAgICAgIC8gIC86Lzp8ICAgICAvICAvOi8gL1xcXG4vLyAgICAvICAvOi9+LzovICAgLyAgLzovIC86L18gIC8gIC86LyAvOjpcXCAvX18vOjpcXCAgICAgLyAgLzovfDp8X18gIC8gIC86LyAvOi9fXG4vLyAgIC9fXy86LyAvOi9fX18vX18vOi8gLzovIC9cXC9fXy86LyAvOi9cXDpcXFxcX19cXC9cXDpcXF9fIC9fXy86LyB8OnwgL1xcL19fLzovIC86LyAvXFxcbi8vICAgXFwgIFxcOlxcLzo6Ojo6L1xcICBcXDpcXC86LyAvOi9cXCAgXFw6XFwvOi9+LzovICAgXFwgIFxcOlxcL1xcXFxfX1xcLyAgfDp8LzovXFwgIFxcOlxcLzovIC86L1xuLy8gICAgXFwgIFxcOjovfn5+fiAgXFwgIFxcOjovIC86LyAgXFwgIFxcOjovIC86LyAgICAgXFxfX1xcOjovICAgIHwgIHw6LzovICBcXCAgXFw6Oi8gLzovXG4vLyAgICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDpcXC86LyAgICBcXF9fXFwvIC86LyAgICAgIC9fXy86LyAgICAgfCAgfDo6LyAgICBcXCAgXFw6XFwvOi9cbi8vICAgICAgXFwgIFxcOlxcICAgICAgIFxcICBcXDo6LyAgICAgICAvX18vOi8gICAgICAgXFxfX1xcLyAgICAgIHwgIHw6LyAgICAgIFxcICBcXDo6L1xuLy8gICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICAgICAgICAgICAgICB8X198LyAgICAgICAgXFxfX1xcL1xuXG4vLypcbi8vIEBwYXR0ZXJuIFJlc2l6YWJsZVxuLy9cbi8vIEEgY29udGFpbmVyIHRoYXQgY2FuIGJlIHJlc2l6ZWQgYnkgZHJhZ2dpbmcgb24gYSBoYW5kbGVcbi8vIChgLnJlc2l6YWJsZV9faGFuZGxlYCkgd2l0aCBhIGNvbnRhaW5lZCBpZnJhbWUgdGhhdCBzaG93cyB0aGUgYWN0dWFsIGRlbW9cbi8vIGNvbnRlbnQuIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIHNlZSBob3cgdGhlIGRlc2lnbiB3b3VsZCBhY3R1YWxseSBiZWhhdmVcbi8vIGF0IGRpZmZlcmVudCB2aWV3cG9ydCB3aWR0aHMsIGFuZCBhbGxvd3MgZm9yIGZpeGVkIGFuZCBhYnNvbHV0ZSBwb3NpdGlvbmVkXG4vLyBlbGVtZW50cyB0byBiZSBkaXNwbGF5ZWQgaW4gYSByZWFzb25hYmxlIHdheS5cbi8vXG4vLyBUaGUgSmF2YVNjcmlwdCBwb3J0aW9uIG9mIHRoaXMgY29tcG9uZW50IG1hbmFnZXMgdGhlIGNvbW11bmljYXRpb24gb2Zcbi8vIGhlaWdodCBjaGFuZ2VzIGZyb20gdGhlIGBpZnJhbWVgIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBkZW1vIGlzIGVudGlyZWx5XG4vLyB2aXNpYmxlIGFuZCBzaG93cyB0aGUgY3VycmVudCB3aWR0aCBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIHNlZSBhIHNtYWxsXG4vLyBudW1iZXIgb2YgcHJlc2V0IHdpZHRocy5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbiRyZXNpemFibGUtLW1pbi13aWR0aDogMThyZW07XG4kcmVzaXphYmxlLS1ib3JkZXI6IDFweCBzb2xpZCB1aS1jb2xvcihncmF5LCBkYXJrZXIpO1xuJHJlc2l6YWJsZS0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZzogMC4zcyBlYXNlO1xuXG4kcmVzaXphYmxlX19oYW5kbGUtLXdpZHRoOiAxLjI1cmVtO1xuJHJlc2l6YWJsZV9faGFuZGxlLS1ncm9vdmUtaGVpZ2h0OiBkb3VibGUoZGVmYXVsdChzcGFjaW5nKSk7XG4kcmVzaXphYmxlX19oYW5kbGUtLWdyb292ZS1wZXJjZW50YWdlLXdpZHRoOiAwLjM1O1xuXG4kcmVzaXphYmxlX19zaXplLWJ1dHRvbl9faWNvbi0tc2l6ZTogMS44cmVtO1xuXG5cblxuLy8qXG4vLyBUaGUgY29yZSBjb21wb25lbnQgb2YgYSBgUmVzaXphYmxlYC4gVGhpcyBwYXJ0IG9mIHRoZSBjb21wb25lbnQgY29udGFpbnNcbi8vIHRoZSBoYW5kbGUgYW5kIGBpZnJhbWVgLCBhbmQgaXMgdGhlIHBhcnQgb2YgdGhlIGNvbXBvbmVudCB0aGF0IGlzIGFjdHVhbGx5XG4vLyByZXNpemVkIHdoZW4gZHJhZ2dpbmcgdGhlIGhhbmRsZS8gdXNpbmcgdGhlIHNpemUgYnV0dG9ucy4gVGhlIGBtaW4td2lkdGhgXG4vLyBzcGVjaWZpZWQgaGVyZSBzaG91bGQgYWNjb3VudCBmb3IgYm90aCB0aGUgYG1pbi13aWR0aGAgb2YgdGhlIGNvbnRlbnQgKmFuZCpcbi8vIHRoZSB3aWR0aCBvZiB0aGUgaGFuZGxlICh3aGljaCB3aWxsIGJlIHBvc2l0aW9uZWQgYWJzb2x1dGVseSBvdmVyIHRoZSByaWdodFxuLy8gc2lkZSkuXG4vL1xuLy8gQGhlbHBlciBkb2Nrc19yZXNpemFibGVcblxuLnJlc2l6YWJsZSB7XG4gIC8vIHBvc2l0aW9uXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBib3ggbW9kZWxcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6ICgkcmVzaXphYmxlLS1taW4td2lkdGggKyAkcmVzaXphYmxlX19oYW5kbGUtLXdpZHRoKTtcblxuICAvLyBiYWNrZHJvcFxuICBAaW5jbHVkZSBkZWZhdWx0KGJvcmRlci1yYWRpdXMpO1xuXG4gIC8vIHR5cGVcbiAgbGluZS1oZWlnaHQ6IDA7XG5cbiAgPiAuY2FyZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRyZXNpemFibGVfX2hhbmRsZS0td2lkdGg7XG4gIH1cblxuICAuaWZyYW1lIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMHJlbTtcbiAgICB0cmFuc2l0aW9uOiBoZWlnaHQgJHJlc2l6YWJsZS0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG59XG5cbi8vKlxuLy8gUHJvdmlkZXMgYSB0cmFuc2l0aW9uIHRoYXQgc21vb3RobHkgbW92ZXMgdGhlIHJlc2l6YWJsZSBjb250YWluZXIgZnJvbSBvbmVcbi8vIHdpZHRoIHRvIHRoZSBuZXh0LiBUaGlzIGlzIG5vdCBkb25lIGJ5IGRlZmF1bHQgYXMgZHJhZ2dpbmcgdGhlIGhhbmRsZSB3b3VsZFxuLy8gYXBwZWFyIGJyb2tlbi5cblxuLnJlc2l6YWJsZS0taXMtdHJhbnNpdGlvbmluZy13aWR0aCB7XG4gIHRyYW5zaXRpb246IHdpZHRoICRyZXNpemFibGUtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmc7XG59XG5cblxuXG4vLypcbi8vIFRoZSBoYW5kbGUgYnkgd2hpY2ggdG8gcmVzaXplIHRoZSBjb250YWluZXIuIERlZmF1bHQgc3R5bGUgZ2l2ZXMgdHdvIHNtYWxsXG4vLyBncm9vdmVzIGluIHRoZSBtaWRkbGUgb2YgdGhlIGhhbmRsZSB0aGF0IGFmZm9yZHMgaXRzIGRyYWdnYWJpbGl0eS5cblxuLnJlc2l6YWJsZV9faGFuZGxlIHtcbiAgLy8gcG9zaXRpb25cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7IHJpZ2h0OiAwO1xuXG4gIC8vIGJveCBtb2RlbFxuICB3aWR0aDogJHJlc2l6YWJsZV9faGFuZGxlLS13aWR0aDtcbiAgaGVpZ2h0OiAxMDAlO1xuXG4gIC8vIGJhY2tkcm9wXG4gIGN1cnNvcjogY29sLXJlc2l6ZTtcbiAgYmFja2dyb3VuZDogdWktY29sb3IoZ3JheSwgZGFyayk7XG4gIGJvcmRlci1yYWRpdXM6IDAgZGVmYXVsdChib3JkZXItcmFkaXVzKSBkZWZhdWx0KGJvcmRlci1yYWRpdXMpIDA7XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gICY6YWZ0ZXIge1xuICAgICRyZXNpemFibGVfX2hhbmRsZS0tZ3Jvb3ZlLXdpZHRoOiAkcmVzaXphYmxlX19oYW5kbGUtLWdyb292ZS1wZXJjZW50YWdlLXdpZHRoICogJHJlc2l6YWJsZV9faGFuZGxlLS13aWR0aDtcblxuICAgIGNvbnRlbnQ6IFwiXCI7XG5cbiAgICAvLyBwb3NpdGlvblxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTsgbGVmdDogNTAlO1xuXG4gICAgLy8gYm94IG1vZGVsXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAkcmVzaXphYmxlX19oYW5kbGUtLWdyb292ZS1oZWlnaHQ7XG4gICAgd2lkdGg6ICRyZXNpemFibGVfX2hhbmRsZS0tZ3Jvb3ZlLXdpZHRoO1xuICAgIG1hcmdpbi10b3A6IG5lZ2F0aXZlKGhhbGYoJHJlc2l6YWJsZV9faGFuZGxlLS1ncm9vdmUtaGVpZ2h0KSk7XG4gICAgbWFyZ2luLWxlZnQ6IG5lZ2F0aXZlKGhhbGYoJHJlc2l6YWJsZV9faGFuZGxlLS1ncm9vdmUtd2lkdGgpKTtcblxuICAgIC8vIGJhY2tkcm9wXG4gICAgYm9yZGVyLXJpZ2h0OiAkcmVzaXphYmxlLS1ib3JkZXI7XG4gICAgYm9yZGVyLWxlZnQ6ICRyZXNpemFibGUtLWJvcmRlcjtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBBIGNvbnRhaW5lciBmb3IgYWxsIG9mIHRoZSBpbmZvcm1hdGlvbiBhbmQgYWNpb25zIGF2YWlsYWJsZSBmb3IgdGhlXG4vLyBjb21wb25lbnQuXG5cbi5yZXNpemFibGVfX2FjdGlvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgbWFyZ2luLWJvdHRvbTogaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbn1cblxuXG5cblxuLy8qXG4vLyBBIHNtYWxsIG5vdGljZSB0aGF0IHNob3dzIHRoZSBjdXJyZW50IHdpZHRoIG9mIHRoZSAoY29udGVudCBvZiB0aGUpIHJlc2l6YWJsZVxuLy8gbW9kdWxlLiBUaGlzIGluZGljYXRvciBzbGlkZXMgaW4gd2hlbiB0aGUgc2l6ZSBjaGFuZ2VzICh0aHJvdWdoIHRoZSB1c2Ugb2Zcbi8vIHRoZSBgcmVzaXphYmxlX193aWR0aC1pbmRpY2F0b3ItLWlzLXZpc2libGVgIHZhcmlhbnQpLlxuLy9cbi8vIFRoZSBpbmRpY2F0b3Igc2hvd3MgdGhlIHdpZHRoIGluIGJvdGggYHB4YCBhbmQgYGVtYCB2YWx1ZXMgd2hpY2ggYXJlXG4vLyBjb250YWluZWQgaW4gdGhlIHN1Ym1vZHVsZXMgYHJlc2l6YWJsZV9fd2lkdGgtaW5kaWNhdG9yX19weGAgYW5kXG4vLyBgcmVzaXphYmxlX193aWR0aC1pbmRpY2F0b3JfX2VtYCwgcmVzcGVjdGl2ZWx5LlxuLy9cbi8vIEBzdGF0ZSAtLWlzLXZpc2libGUgLSBUaGUgaW5kaWNhdG9yIGlzIGN1cnJlbnRseSBiZWluZyBzaG93bi5cblxuLnJlc2l6YWJsZV9fd2lkdGgtaW5kaWNhdG9yIHtcbiAgLy8gdHlwZVxuICBjb2xvcjogY29sb3IoZ3JheS1kYXJrKTtcbiAgZm9udDogMzAwIDFyZW0vMSBDb25zb2xhcywgbW9ub3NwYWNlOztcblxuICAvLyBiYWNrZHJvcFxuICBvcGFjaXR5OiAwLjQ7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgJHJlc2l6YWJsZS0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZztcbn1cblxuLnJlc2l6YWJsZV9fd2lkdGgtaW5kaWNhdG9yLS1pcy12aXNpYmxlIHsgb3BhY2l0eTogMTsgfVxuXG5cblxuLy8qXG4vLyBBIHZlcnRpY2FsbHktb3JpZW50ZWQgc2V0IG9mIGJ1dHRvbnMgdGhhdCByZXNpemUgdGhlIHJlc2l6YWJsZSBtb2R1bGUgdG9cbi8vIHByZWRldGVybWluZWQgd2lkdGhzLiBUaGVzZSB3aWR0aHMgaGF2ZSBiZWVuIHNldCBpbiB0aGUgSmF2YXNjcmlwdCBwYXJ0IG9mXG4vLyB0aGlzIG1vZHVsZS5cblxuLnJlc2l6YWJsZV9fc2l6ZS1idXR0b25zIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuXG5cbi8vKlxuLy8gQSBzaW5nbGUgYnV0dG9uIHRoYXQgcmVzaXplcyB0aGUgbW9kdWxlLlxuLy9cbi8vIEBzdGF0ZSAtLWlzLWFjdGl2ZSAoc2VsZWN0KVxuLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyBidXR0b24gaGFzIGJlZW4gcHJlc3NlZCBhbmQgdGhhdCB0aGUgdXNlciBoYXMgbm90XG4vLyBzdWJzZXF1ZW50bHkgcmVzaXplZCB0aGUgbW9kdWxlIGluIHNvbWUgb3RoZXIgd2F5LlxuLy9cbi8vIEBzdGF0ZSAtLWlzLWhpZGRlbiAobm9uZSlcbi8vIEluZGljYXRlcyB0aGF0IHRoZSBidXR0b24gc2hvdWxkIGJlIGhpZGRlbiBiZWNhdXNlIG5vdCBlbm91Z2ggc2NyZWVuIHNwYWNlXG4vLyBleGlzdHMgZm9yIGl0cyByZXNpemUuXG4vL1xuLy8gQHZhcmlhbnQgLS1zbWFsbCAgKG5vbmUpIC0gUmVzaXplcyB0byBhIHJvdWdobHkgc21hcnRwaG9uZS1zaXplZCB3aWR0aC5cbi8vIEB2YXJpYW50IC0tbWVkaXVtIChub25lKSAtIFJlc2l6ZXMgdG8gYSByb3VnaGx5IHRhYmxldC1zaXplZCB3aWR0aC5cbi8vIEB2YXJpYW50IC0tbGFyZ2UgIChub25lKSAtIFJlc2l6ZXMgdG8gYSByb3VnaGx5IGRlc2t0b3Atc2l6ZWQgd2lkdGguXG5cbi5yZXNpemFibGVfX3NpemUtYnV0dG9uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tbGVmdDogaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gIG9wYWNpdHk6IDAuNTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAkcmVzaXphYmxlLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nO1xuXG4gID4gLmljb24ge1xuICAgIGhlaWdodDogJHJlc2l6YWJsZV9fc2l6ZS1idXR0b25fX2ljb24tLXNpemU7XG4gICAgd2lkdGg6ICRyZXNpemFibGVfX3NpemUtYnV0dG9uX19pY29uLS1zaXplO1xuXG4gICAgQGluY2x1ZGUgaWNvbi0tcmVjb2xvcihncmF5KTtcbiAgICB0cmFuc2l0aW9uOiBmaWxsICRyZXNpemFibGUtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmc7XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzLFxuICAmOmFjdGl2ZSxcbiAgJi5yZXNpemFibGVfX3NpemUtYnV0dG9uLS1pcy1hY3RpdmUge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBvcGFjaXR5OiAwLjg7XG4gIH1cblxuICAmLnJlc2l6YWJsZV9fc2l6ZS1idXR0b24tLWlzLWFjdGl2ZSxcbiAgJjphY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG5cbiAgICA+IC5pY29uIHtcbiAgICAgIGZpbGw6IGNvbG9yKGJsdWUpO1xuICAgICAgc3Ryb2tlOiBjb2xvcihibHVlKTtcbiAgICB9XG4gIH1cbn1cblxuLnJlc2l6YWJsZV9fc2l6ZS1idXR0b24tLWlzLWhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4iLCIuc2Nyb2xsLWNvbnRhaW5lciB7XG4gIC8vIENvbnRhaW4gYW55IGludGVyaW9yIG1hcmdpbnNcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbiIsIi8vICAgICAgICBfX18gICAgICAgICAgX19fICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICAgICAgICAgX19fICAgICAgICAgIF9fX1xuLy8gICAgICAgLyAgL1xcICAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXCAgICAgICAgX19fICBfX18gICAgICAgIC8gIC9cXCAgICAgICAgL19fL1xcXG4vLyAgICAgIC8gIC86L18gICAgICAvICAvOi9fICAgICAgLyAgLzovICAgICAgIC8gIC9cXC8gIC9cXCAgICAgIC8gIC86OlxcICAgICAgIFxcICBcXDpcXFxuLy8gICAgIC8gIC86LyAvXFwgICAgLyAgLzovIC9cXCAgICAvICAvOi8gICAgICAgLyAgLzovICAvOi8gICAgIC8gIC86L1xcOlxcICAgICAgIFxcICBcXDpcXFxuLy8gICAgLyAgLzovIC86OlxcICAvICAvOi8gLzovXyAgLyAgLzovICBfX18gIC8gIC86L19fLzo6XFwgICAgLyAgLzovICBcXDpcXCAgX19fX19cXF9fXFw6XFxcbi8vICAgL19fLzovIC86L1xcOlxcL19fLzovIC86LyAvXFwvX18vOi8gIC8gIC9cXC8gIC86OlxcX19cXC9cXDpcXF9fL19fLzovIFxcX19cXDpcXC9fXy86Ojo6Ojo6OlxcXG4vLyAgIFxcICBcXDpcXC86L34vOi9cXCAgXFw6XFwvOi8gLzovXFwgIFxcOlxcIC8gIC86L19fLzovXFw6XFwgXFwgIFxcOlxcL1xcICBcXDpcXCAvICAvOi9cXCAgXFw6XFx+flxcfn5cXC9cbi8vICAgIFxcICBcXDo6LyAvOi8gIFxcICBcXDo6LyAvOi8gIFxcICBcXDpcXCAgLzovXFxfX1xcLyAgXFw6XFwgXFxfX1xcOjovXFwgIFxcOlxcICAvOi8gIFxcICBcXDpcXCAgfn5+XG4vLyAgICAgXFxfX1xcLyAvOi8gICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDpcXC86LyAgICAgIFxcICBcXDpcXC9fXy86LyAgXFwgIFxcOlxcLzovICAgIFxcICBcXDpcXFxuLy8gICAgICAgL19fLzovICAgICAgXFwgIFxcOjovICAgICAgXFwgIFxcOjovICAgICAgICBcXF9fXFwvXFxfX1xcLyAgICBcXCAgXFw6Oi8gICAgICBcXCAgXFw6XFxcbi8vICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvXG5cbi8vKlxuLy8gQHBhdHRlcm4gU2VjdGlvblxuLy9cbi8vIFNlY3Rpb25zIGFyZSBzaW1wbHkgd2F5cyBvZiBncm91cGluZyByZWxhdGVkIGNvbnRlbnQgYW5kIHByb3Zpc2luZ1xuLy8gc2VwYXJhdGlvbiBiZXR3ZWVuIHRoYXQgY29udGFpbmVkIGNvbnRlbnQgYW5kIFwic2libGluZ1wiIGNvbnRlbnQuXG4vL1xuLy8gU21hbGxlciB2YXJpYXRpb25zIGFyZSBhdmFpbGFibGUgZm9yIG1vcmUgY29uZGVuc2VkIGNvbnRlbnQsIGxpa2UgY29udGVudFxuLy8gaW5zaWRlIG9mIGEgcG9wb3Zlci5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbi8vKlxuLy8gQSBjb250YWluZXIgYXJvdW5kIHNvbWUgY29udGVudCB0aGF0IHByb3ZpZGVzIHRoZSB2ZXJ0aWNhbCBzZXBhcmF0aW9uIGZyb21cbi8vIG90aGVyIGBzZWN0aW9uYHMuIFRoaXMgd2lsbCBhbHNvIHJlbW92ZSBhbnkgdG9wLyBib3R0b20gcGFkZGluZyBmcm9tIHRoZVxuLy8gZmlyc3QvIGxhc3QgY2hpbGQsIHJlc3BlY3RpdmVseSwgdG8gYXZvaWQgbW9yZSB2ZXJ0aWNhbCBwYWRkaW5nIHRoYW5cbi8vIG5lY2Vzc2FyeS5cblxuLnNlY3Rpb24ge1xuICBtYXJnaW46IGRvdWJsZShkZWZhdWx0KHNwYWNpbmcpKSAwO1xuICBwYWRkaW5nOiBkZWZhdWx0KHNwYWNpbmcpIDA7XG5cbiAgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICAmLFxuICAgICYgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuICB9XG5cbiAgPiAqOmxhc3QtY2hpbGQge1xuICAgICYsXG4gICAgJiA+ICo6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbiAgfVxufVxuXG4vLypcbi8vIEEgc21hbGxlciBzZWN0aW9uIHdpdGggbm8gYm9yZGVyIHNlcGFyYXRpbmcgY29udGVudC4gVXNlIHRoaXMgdmFyaWFudCBmb3Jcbi8vIHBsYWNlcyB3aGVyZSB0aGUgYmFzZSBhbW91bnQgb2YgdmVydGljYWwgcGFkZGluZyBpcyBleGNlc3NpdmUgKGZvciBleGFtcGxlLFxuLy8gaW4gcG9wb3ZlcnMgb3Igb3RoZXIgbGltaXRlZC13aWR0aCBjb250YWluZXJzKS5cblxuLnNlY3Rpb24tLXNtYWxsIHtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IGRlZmF1bHQoc3BhY2luZykgMDtcbn1cblxuLy8qXG4vLyBBIHNlY3Rpb24gd2l0aCBhIGxpZ2h0IGdyYXkgYmFja2dyb3VuZCB0aGF0IHNlcGFyYXRlcyBpdCB2aXN1YWxseSBmcm9tIHRoZVxuLy8gb3RoZXIgc2VjdGlvbnMuIFVzZSB0aGlzIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBzaWduaWZpY2FudGx5IGRpZmZlcmVudFxuLy8gZ3JvdXBzIG9mIGNvbnRlbnQuIEl0IGlzIGJlc3QgdG8gb25seSB1c2UgdGhpcyB3aXRoIGBzZWN0aW9uLS1zbWFsbGAg4oCUXG4vLyByZWd1bGFyIGBzZWN0aW9uYHMgYWxyZWFkeSBoYXZlIHN1ZmZpY2llbnQgc2VwYXJhdGlvbiBpbiBtb3N0IGNhc2VzLlxuXG4uc2VjdGlvbi0tc3ViZHVlZCB7XG4gIGJhY2tncm91bmQ6IGNvbG9yKGdyYXktbGlnaHQpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICYuc2VjdGlvbi0tc21hbGwge1xuICAgIHBhZGRpbmc6IGRlZmF1bHQoc3BhY2luZykgMDtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuXG5cbi8vKlxuLy8gVXNlIHRoaXMgY29udGFpbmVyIGZvciB3aGVuIHlvdSB3YW50IGEgZ3JvdXAgb2Ygc2VjdGlvbnMgdG8gaGF2ZSBhZGRpdGlvbmFsXG4vLyB2ZXJ0aWNhbCBzZXBhcmF0aW9uIGZyb20gdGhlIGNvbnRlbnQgYXJvdW5kIGl0LiBUaGUgYW1vdW50IG9mIGFkZGl0aW9uYWxcbi8vIHNwYWNlIGRlcGVuZHMgb24gd2hldGhlciB0aGUgY29udGFpbmVyIGNvbnRhaW5zIHJlZ3VsYXIgb3IgYC0tc21hbGxgXG4vLyBgc2VjdGlvbmBzLlxuLy9cbi8vIFRoaXMgY29udGFpbmVyIGlzIG5vdCBuZWNlc3Nhcnkg4oCUIGZvciBleGFtcGxlLCBzZWN0aW9ucyBjYW4gc2l0IG9uIHRoZWlyIG93blxuLy8gaW5zaWRlIGEgcG9wb3Zlci5cblxuLnNlY3Rpb25fX2NvbnRhaW5lciB7XG4gID4gLnNlY3Rpb24ge1xuICAgICY6Zmlyc3QtY2hpbGQgeyBtYXJnaW4tdG9wOiBkb3VibGUoZGVmYXVsdChzcGFjaW5nKSk7IH1cbiAgICAmOmxhc3QtY2hpbGQgeyBtYXJnaW4tYm90dG9tOiBkb3VibGUoZGVmYXVsdChzcGFjaW5nKSk7IH1cbiAgfVxuXG4gID4gLnNlY3Rpb24tLXNtYWxsIHtcbiAgICAmOmZpcnN0LWNoaWxkIHsgbWFyZ2luLXRvcDogZGVmYXVsdChzcGFjaW5nKTsgfVxuICAgICY6bGFzdC1jaGlsZCB7IG1hcmdpbi1ib3R0b206IGRlZmF1bHQoc3BhY2luZyk7IH1cbiAgfVxufVxuIiwiLy8gICAgICAgIF9fXyAgICAgICAgICBfX18gICAgICAgICAgICAgICAgICAgICBfX18gICAgICAgICAgX19fXG4vLyAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXCAgICAgICAgICAgICAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXCAgICAgICAgX19fXG4vLyAgICAgIC8gIC86L18gICAgICAvICAvOi9fICAgICAgICAgICAgICAgICAvICAvOi9fICAgICAgLyAgLzovICAgICAgIC8gIC9cXFxuLy8gICAgIC8gIC86LyAvXFwgICAgLyAgLzovIC9cXCAgX19fICAgICBfX18gIC8gIC86LyAvXFwgICAgLyAgLzovICAgICAgIC8gIC86L1xuLy8gICAgLyAgLzovIC86OlxcICAvICAvOi8gLzovXy9fXy9cXCAgIC8gIC9cXC8gIC86LyAvOi9fICAvICAvOi8gIF9fXyAgLyAgLzovXG4vLyAgIC9fXy86LyAvOi9cXDpcXC9fXy86LyAvOi8gL1xcICBcXDpcXCAvICAvOi9fXy86LyAvOi8gL1xcL19fLzovICAvICAvXFwvICAvOjpcXFxuLy8gICBcXCAgXFw6XFwvOi9+LzovXFwgIFxcOlxcLzovIC86L1xcICBcXDpcXCAgLzovXFwgIFxcOlxcLzovIC86L1xcICBcXDpcXCAvICAvOi9fXy86L1xcOlxcXG4vLyAgICBcXCAgXFw6Oi8gLzovICBcXCAgXFw6Oi8gLzovICBcXCAgXFw6XFwvOi8gIFxcICBcXDo6LyAvOi8gIFxcICBcXDpcXCAgLzovXFxfX1xcLyAgXFw6XFxcbi8vICAgICBcXF9fXFwvIC86LyAgICBcXCAgXFw6XFwvOi8gICAgXFwgIFxcOjovICAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6XFwvOi8gICAgICBcXCAgXFw6XFxcbi8vICAgICAgIC9fXy86LyAgICAgIFxcICBcXDo6LyAgICAgIFxcX19cXC8gICAgICBcXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi8gICAgICAgIFxcX19cXC9cbi8vICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcL1xuXG4vLypcbi8vIEBwYXR0ZXJuIFNlbGVjdFxuLy9cbi8vIEEgY3VzdG9tIGBzZWxlY3RgIGVsZW1lbnQuIEluIG9yZGVyIHRvIHByZXNlbnQgdGhlc2UgaW4gdGhlIHNhbWUgd2F5IGFjcm9zc1xuLy8gYnJvd3NlcnMsIG1vc3Qgb2YgdGhlIHN0eWxpbmcgaXMgZG9uZSBvbiBhIG5vZGUgd3JhcHBlZCBhcm91bmQgYW4gYWN0dWFsXG4vLyBgc2VsZWN0YCBlbGVtZW50LCBhbmQgYSBiaXQgb2YgSmF2YVNjcmlwdCB0aGF0IHRyYW5zbGF0ZXMgdGhlIGZvY3VzLyBibHVyXG4vLyBvbiB0aGUgY29udGFpbmVkIGBzZWxlY3RgIGludG8gYSBzdGF0ZSBjbGFzcy5cbi8vXG4vLyBAc2luY2UgMS4wLjBcblxuXG5cbiRzZWxlY3QtLWZvbnQtc2l6ZTogKGZvbnQtc2l6ZShjb250cm9sKSAqIDAuOSk7XG4kc2VsZWN0LS1ob3Jpem9udGFsLXBhZGRpbmc6IGRlZmF1bHQoY29udHJvbC1wYWRkaW5nKTtcbiRzZWxlY3QtLWxpbmUtaGVpZ2h0OiBkZWZhdWx0KGNvbnRyb2wtc2l6ZSk7XG4kc2VsZWN0LS1pY29uLXNpemU6ICRzZWxlY3QtLWZvbnQtc2l6ZSAvIDEuNjtcblxuXG5cbi8vKlxuLy8gVGhlIHdyYXBwZXIgYXJvdW5kIGEgYHNlbGVjdGAuIFRoaXMgd3JhcHBlciBwcm92aWRlcyBtb3N0IG9mIHRoZSB2aXN1YWxcbi8vIHN0eWxpbmcsIGluY2x1ZGluZyB0aGUgZm9jdXMgc3R5bGluZy4gVGhpcyBwYXJ0IG9mIHRoZSBjb21wb25lbnQgYWxzb1xuLy8gY3JlYXRlcyBhIHRyaWFuZ2xlIGljb24gaW4gcGxhY2Ugb2YgdGhlIGJyb3dzZXItc3VwcGxpZWQgb25lLlxuLy9cbi8vIEBoZWxwZXJcbi8vIDwlPSBkb2Nrc19zZWxlY3Qgb3B0aW9uczogJXcoU3VwZXJfbG9uZ19vcHRpb25fdGhhdF9pc19xdWl0ZV9sb25nIG5vcm1hbF9zaXplIFNNQUxMKSAlPlxuXG4uc2VsZWN0IHtcbiAgLy8gcG9zaXRpb25cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIGJveCBtb2RlbFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgLy8gYmFja2Ryb3BcbiAgYm9yZGVyLXJhZGl1czogZGVmYXVsdChib3JkZXItcmFkaXVzKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSk7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcblxuICAgIC8vIHBvc2l0aW9uXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAkc2VsZWN0LS1ob3Jpem9udGFsLXBhZGRpbmc7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuXG4gICAgLy8gYm94IG1vZGVsXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAkc2VsZWN0LS1pY29uLXNpemU7XG4gICAgd2lkdGg6ICRzZWxlY3QtLWljb24tc2l6ZTtcbiAgICBtYXJnaW4tdG9wOiAoLTAuNzUgKiAkc2VsZWN0LS1pY29uLXNpemUpO1xuXG4gICAgLy8gYmFja2Ryb3BcbiAgICBib3JkZXI6IHNvbGlkIHJnYmEodWktY29sb3IoZ3JheSwgZGFya2VyKSwgMC41KTtcbiAgICBib3JkZXItd2lkdGg6IDAgMnB4IDJweCAwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5cbiAgKyAuZG9ja3MtYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogaGFsZihkZWZhdWx0KHNwYWNpbmcpKTtcbiAgfVxufVxuXG4vLypcbi8vIFRoaXMgc3RhdGUgaXMgYXBwbGllZCB0byBhIGBzZWxlY3RgIHdob3NlIGNvbnRhaW5lZCBpbnB1dCBpcyBmb2N1c2VkLlxuXG4uc2VsZWN0LS1pcy1mb2N1c2VkIHtcbiAgYm9yZGVyLWNvbG9yOiBjb2xvcihibHVlKTtcbn1cblxuLy8qXG4vLyBBIHNlbGVjdCB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gYSBtb25vc3BhY2UgZm9udCAoZm9yIGV4YW1wbGUsIGJlY2F1c2Vcbi8vIGl0IGlzIGNob29zaW5nIGEgY2xhc3MgbmFtZSkuXG5cbi5zZWxlY3QtLWNvZGUge1xuICA+IC5zZWxlY3RfX2lucHV0IHtcbiAgICBAaW5jbHVkZSB0eXBlLS1tb25vc3BhY2UtZm9udC1mYW1pbHk7XG4gIH1cbn1cblxuXG5cbi8vKlxuLy8gVGhlIGFjdHVhbCBgc2VsZWN0YC4gTW9zdCBvZiB0aGUgc3R5bGVzIGhlcmUgZ28gdG8gdW5kb2luZyB0aGUgZGVmYXVsdFxuLy8gYnJvd3NlciBzdHlsZXMgZm9yIGBzZWxlY3Rgcy4gQWxsIG9mIHRoZSBmb250IHNpemluZyBmb3IgdGhlIGNvbXBvbmVudCBtdXN0XG4vLyBiZSBwbGFjZWQgaGVyZSBmb3IgdGhvc2Ugc3R5bGVzIHRvIGRpc3BsYXkgY29ycmVjdGx5LlxuXG4uc2VsZWN0X19pbnB1dCB7XG4gIC8vIGJveCBtb2RlbFxuICBAaW5jbHVkZSByZW1vdmUtYnJvd3Nlci1zdHlsaW5nO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogbm9uZTtcbiAgaGVpZ2h0OiBhdXRvO1xuICBwYWRkaW5nOiAwIChkb3VibGUoJHNlbGVjdC0taG9yaXpvbnRhbC1wYWRkaW5nKSArICRzZWxlY3QtLWljb24tc2l6ZSkgMCAkc2VsZWN0LS1ob3Jpem9udGFsLXBhZGRpbmc7XG5cbiAgLy8gYmFja2Ryb3BcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcblxuICAvLyB0eXBlXG4gIGZvbnQtc2l6ZTogJHNlbGVjdC0tZm9udC1zaXplO1xuICBsaW5lLWhlaWdodDogZGVmYXVsdChjb250cm9sLXNpemUpO1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlcik7XG4gIC8vIGZvbnQtZmFtaWx5OiBDb25zb2xhcywgbW9ub3NwYWNlO1xuXG4gICY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuICB9XG5cbiAgPiBvcHRpb24ge1xuICAgIGNvbG9yOiBjb2xvcihzbGF0ZSk7XG4gIH1cbn1cblxuLy8gQWxsIG9mIHRoZSBiZWxvdyBoYWNrcyBjb3VydGVzeSBvZiBUb2RkIFBhcmtlcidzIGZpbmUgd29ySyBoZXJlOlxuLy8gaHR0cDovL2pzYmluLmNvbSAvIHlhcnVoIC8gNDkgLyBlZGl0XG5cbi8vIEhpZGVzIG5hdGl2ZSBzZWxlY3QgYXJyb3cgaW4gSUUgMTArXG5fOi1tcy1pbnB1dC1wbGFjZWhvbGRlciwgOnJvb3QgLnNlbGVjdF9faW5wdXQ6Oi1tcy1leHBhbmQge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vLyBIaWRlcyBibHVlIGJhY2tncm91bmQgb24gZm9jdXMgaW4gSUUgMTArXG5fOi1tcy1pbnB1dC1wbGFjZWhvbGRlciwgOnJvb3QgLnNlbGVjdF9faW5wdXQ6Zm9jdXM6Oi1tcy12YWx1ZSB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4vLyBDcmF6eSBoYWNrcyB0byB0YXJnZXQgRkYgYW5kIGNsaXAgdGhlIG5hdGl2ZSBzZWxlY3QgYXJyb3dcbkBzdXBwb3J0cyAoLW1vei1hcHBlYXJhbmNlOm1ldGVyYmFyKSBhbmQgKGJhY2tncm91bmQtYmxlbmQtbW9kZTpkaWZmZXJlbmNlLG5vcm1hbCkge1xuXG4gIF86Oi1tb3otcHJvZ3Jlc3MtYmFyLFxuICBib2R5Omxhc3QtY2hpbGQgLnNlbGVjdF9faW5wdXRfX3dyYXBwZXIge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cblxuICBfOjotbW96LXByb2dyZXNzLWJhcixcbiAgYm9keTpsYXN0LWNoaWxkIC5zZWxlY3RfX2lucHV0IHtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgMzBweCk7XG4gIH1cbn1cblxuLy8gS2lsbHMgdGhlIHN0dXBpZCBmb2N1cyByaW5nIGluIEZGXG4uc2VsZWN0X19pbnB1dDotbW96LWZvY3VzcmluZyB7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgdGV4dC1zaGFkb3c6IDAgMCAwIGJsYWNrO1xufVxuIiwiLy8gICAgICAgICAgICAgICAgX19fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX1xuLy8gICAgICAgIF9fXyAgICAvICAvXFwgICAgICAgIF9fX19fICAgICAgICAgICAgICAgICAgIC8gIC9cXFxuLy8gICAgICAgLyAgL1xcICAvICAvOjpcXCAgICAgIC8gIC86OlxcICAgICAgICAgICAgICAgICAvICAvOi9fXG4vLyAgICAgIC8gIC86LyAvICAvOi9cXDpcXCAgICAvICAvOi9cXDpcXCAgX19fICAgICBfX18gIC8gIC86LyAvXFxcbi8vICAgICAvICAvOi8gLyAgLzovfi86OlxcICAvICAvOi9+Lzo6XFwvX18vXFwgICAvICAvXFwvICAvOi8gLzovX1xuLy8gICAgLyAgLzo6XFwvX18vOi8gLzovXFw6XFwvX18vOi8gLzovXFw6XFwgIFxcOlxcIC8gIC86L19fLzovIC86LyAvXFxcbi8vICAgL19fLzovXFw6XFwgIFxcOlxcLzovX19cXC9cXCAgXFw6XFwvOi9+LzovXFwgIFxcOlxcICAvOi9cXCAgXFw6XFwvOi8gLzovXG4vLyAgIFxcX19cXC8gIFxcOlxcICBcXDo6LyAgICAgIFxcICBcXDo6LyAvOi8gIFxcICBcXDpcXC86LyAgXFwgIFxcOjovIC86L1xuLy8gICAgICAgIFxcICBcXDpcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcLzovICAgIFxcICBcXDo6LyAgICBcXCAgXFw6XFwvOi9cbi8vICAgICAgICAgXFxfX1xcL1xcICBcXDpcXCAgICAgICBcXCAgXFw6Oi8gICAgICBcXF9fXFwvICAgICAgXFwgIFxcOjovXG4vLyAgICAgICAgICAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgXFxfX1xcL1xuXG4vLypcbi8vIEBwYXR0ZXJuIFRhYmxlXG4vL1xuLy8gVGFibGVzIGFyZSB1c2VkIHRvIHByZXNlbnQgdGFidWxhciBkYXRhIG9ubHkg4oCUwqBuZXZlciBmb3IgbGF5b3V0ISBUaGVzZSB0YWJsZXNcbi8vIGFyZSBzbWFydGVyIHRoYW4gdGhlIGF2ZXJhZ2UgdGFibGUsIGhvd2V2ZXIuIFRoZXkgd2lsbCBkZXRlcm1pbmUgdGhlaXJcbi8vIGludHJpbnNpYyBzaXplICh1cCB0byBhIHN0eWxlc2hlZXQtc3BlY2lmaWVkIG1heGltdW0pIGFuZCwgd2hlbiB0aGUgc3BhY2Vcbi8vIGF2YWlsYWJsZSB0byB0aGVtIGlzIGxlc3MgdGhhbiB0aGF0IHNpemUsIHRoZXkgd2lsbCBiZWdpbiB0byBzY3JvbGwuXG4vL1xuLy8gQXMgeW91IHNjcm9sbCwgdGhlIGZpcnN0IGNvbHVtbiB3aWxsIHN0YXkgZml4ZWQsIHNvIHlvdSBhbHdheXMgaGF2ZSBjb250ZXh0LFxuLy8gYW5kIHRoZSBhbnkgZ2l2ZW4gY29sdW1uIHdpbGwgYWx3YXlzIGJlIHNtYWxsIGVub3VnaCB0byBiZSBmdWxseSB2aXNpYmxlLiBOb3Rcbi8vIG9ubHkgdGhhdCwgYnV0IHRoZSB0YWJsZSBwcm92aWRlcyBib3RoIGtleWJvYXJkIGlucHV0IGFuZCBpbnRlcmZhY2UgZWxlbWVudHNcbi8vIHRoYXQgYWxsb3cgeW91IHRvIHF1aWNrbHkgc2hpZnQgdG8gb3ZlcnNjcm9sbGVkIGNvbHVtbnMuXG4vL1xuLy8gQHNpbmNlIDEuMC4wXG5cblxuXG4kdGFibGUtLWJvcmRlcjogMXB4IHNvbGlkIGNvbG9yKGdyYXktbGlnaHQpO1xuJHRhYmxlLS1ib3JkZXItcmFkaXVzOiBkb3VibGUoZGVmYXVsdChib3JkZXItcmFkaXVzKSk7XG4kdGFibGUtLWJveC1zaGFkb3ctc2l6ZTogM3B4IDAgNHB4IC0xcHg7XG5cblxuXG4vLypcbi8vIEEgc21hcnRlciBgdGFibGVgIGVsZW1lbnQuIFRoZSBgbWluLXdpZHRoYCBwbGFjZWQgaGVyZSB3aWxsIG5vdCBhY3R1YWxseVxuLy8gYmUgdGhlIG1pbmltdW0gd2lkdGggb2YgdGhlIHJlbmRlcmVkIHRhYmxlOyB0aGUgcHJvdmlkZWQgbWluaW11bSB3aWR0aCB3aWxsXG4vLyBpbnN0ZWFkIGJlIHVzZWQgYXMgdGhlIG1heGltdW0gd2lkdGggYWxsb3dlZCBpbiBkZXRlcm1pbmluZyB0aGUgcHJlZmVycmVkL1xuLy8gaW50cmluc2ljIHNpemUgb2YgdGhlIHRhYmxlIGNlbGxzLiBUaGF0IGlzLCBhIHRhYmxlIHdob3NlIG5hdHVyYWwgc2l6ZSBpc1xuLy8gbGVzcyB0aGFuIHRoaXMgYW1vdW50IHdpbGwgbm90IG92ZXJmbG93IHVudGlsIHRoZSBzcGFjZSBpdCBoYXMgaXMgbGVzcyB0aGFuXG4vLyBpdHMgaW50cmluc2ljIHNpemUsIHdoZXJlIGEgdGFibGUgd2l0aCBsYXJnZSBjZWxscyB3aWxsIG92ZXJmbG93IGF0IHRoZVxuLy8gcHJvdmlkZWQgYG1pbi13aWR0aGAgYnJlYWtwb2ludC5cbi8vXG4vLyBWaXN1YWxseSwgYWxsIHRhYmxlcyB3aWxsIGJlIDEwMCUgd2lkdGguIEFzIG5vdGVkIGFib3ZlLCB0YWJsZXMgd2lsbCBvdmVyZmxvd1xuLy8gb25jZSB0aGUgbGVzc2VyIG9mIHRoZSBgbWluLXdpZHRoYCBiZWxvdyBvciB0aGUgaW50cmlzaWMgc2l6ZSBvZiB0aGUgdGFibGVcbi8vIGlzIHJlYWNoZWQuIFRoaXMgb3ZlcmZsb3dpbmcgaXMgbWFuYWdlZCBieSB0aGUgSmF2YVNjcmlwdCBjb21wb25lbnQuXG4vL1xuLy8gQGhlbHBlciBkb2Nrc190YWJsZVxuXG4udGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgbWluLXdpZHRoOiByZW0oNTAwKTtcblxuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cblxuXG5cbi8vKlxuLy8gVGhlIG91dGVybW9zdCB3cmFwcGVyIGFyb3VuZCBhIHRhYmxlLiBUaGlzIHdyYXBwZXIgaXMgdXNlZCB0byBzaWduYWwgdG8gdGhlXG4vLyBlbnRpcmUgY29tcG9uZW50IHdoZW4gdGhlIHRhYmxlIGlzIGluIG92ZXJmbG93ICh2aWEgdGhlXG4vLyBgdGFibGVfX2NvbnRhaW5lci0taXMtb3ZlcmZsb3dpbmdgIHN0YXRlKS4gRG9pbmcgc28gb24gdGhlIG91dG1vc3QgY29udGFpbmVyXG4vLyBhbGxvd3MgYWRqdXN0bWVudHMgdG8gYm90aCB0aGUgdGFibGUgaXRzZWxmIGFuZCB0aGUgYHRhYmxlX19hY3Rpb25zYC5cbi8vXG4vLyBJbiBhZGRpdGlvbiwgYHRhYmxlX19jb250YWluZXJzYCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHRoZSByZXF1aXJlZFxuLy8gc3BhY2UgYmV0d2VlbiB0aGVtc2VsdmVzIGFuZCBvdGhlciBjb250ZW50LlxuXG4udGFibGVfX2NvbnRhaW5lciB7XG4gIG1hcmdpbjogZGVmYXVsdChzcGFjaW5nKSBhdXRvO1xufVxuXG4vLypcbi8vIFNpZ25hbHMgdG8gdGhlIGB0YWJsZWAgdGhhdCBpdCBzaG91bGQgZm9yY2UgdGhlIGZpcnN0IGNlbGwgaW4gZWFjaCByb3dcbi8vIHRvIGZsb2F0IGFib3V0IHRoZSByZXN0IG9mIHRoZSByb3dzICh0aGUgcmVxdWlyZWQgbGVmdCBwYWRkaW5nIG9uIHRoZVxuLy8gc2Vjb25kIGNlbGwgaW4gZWFjaCByb3cgdG8gYWNjb3VudCBmb3IgdGhlIGFic29sdXRlbHktcG9zaXRpb25lZCBmaXJzdCBjZWxsXG4vLyBpcyBkb25lIGF1dG9tYXRpY2FsbHkgYnkgdGhlIEphdmFTY3JpcHQgc2lkZSBvZiB0aGluZ3MsIGFzIGlzIHRoZVxuLy8gZXF1YWxpemF0aW9uIG9mIGFsbCBvZiB0aGUgZmlyc3QgY2VsbHMnIHdpZHRocykuIEFkZGl0aW9uYWxseSwgdGhpc1xuLy8gc3RhdGUgY2F1c2VzIHRoZSBgdGFibGVfX2FjdGlvbnNgIHRvIGJlIG1hZGUgdmlzaWJsZS5cbi8vXG4vLyBAc2V0X2J5IFRhYmxlI2NoZWNrX2Zvcl9vdmVyZmxvd1xuLy8gQGRlbW9fdHlwZSBub25lXG5cbi50YWJsZV9fY29udGFpbmVyLS1pcy1vdmVyZmxvd2luZyB7XG4gIC50YWJsZV9fY2VsbDpmaXJzdC1jaGlsZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIEBpbmNsdWRlIHotaW5kZXgoY2VsbC1wZXJzaXN0YW50LCB0YWJsZSk7XG4gICAgbGVmdDogMDtcblxuICAgIGhlaWdodDogMTAwJTtcblxuICAgIC8vIFN0YXJ0IGJveCBzaGFkb3cgYXMgdHJhbnNwYXJlbnQgc28gaXQgY2FuIGJlIGFuaW1hdGVkIGludG8gdmlldyB3aGVuXG4gICAgLy8gdGhlIHRhYmxlIGlzIGFjdHVhbGx5IGJlaW5nIHNjcm9sbGVkLlxuICAgIGJveC1zaGFkb3c6ICR0YWJsZS0tYm94LXNoYWRvdy1zaXplIHJnYmEoY29sb3IoYmxhY2spLCAwKTtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMnMgZWFzZTtcbiAgfVxuXG4gIC50YWJsZV9fYWN0aW9ucyB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIG1heC1oZWlnaHQ6IDNyZW07XG4gICAgcGFkZGluZy1ib3R0b206IGhhbGYoZGVmYXVsdChzcGFjaW5nKSk7XG4gIH1cbn1cblxuXG5cbi8vKlxuLy8gQSB3cmFwcGVyIGFyb3VuZCB0aGUgYHRhYmxlYCB0aGF0IGFsbG93cyBpdCB0byBzY3JvbGwgd2hlbiB0aGUgbWluaW11bVxuLy8gd2lkdGggb2YgaXRzIGNvbHVtbnMgKHRoZWlyIGludHJpbnNpYyB3aWR0aCBvciB0aGVpciB3aWR0aCB3aGVuIHRoZSB0YWJsZVxuLy8gaXMgbGFyZ2VyIHRoYW4gdGhlIGBtaW4td2lkdGhgIHNldCBvbiBgdGFibGVgKSBpcyBsYXJnZXIgdGhhbiB0aGUgc3BhY2Vcbi8vIGF2YWlsYWJsZSB0byB0aGlzIGNvbnRhaW5lci5cblxuLnRhYmxlX19zY3JvbGxlciB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi8vKlxuLy8gVGhlIHN0YXRlIHRoYXQgaXMgYWRkZWQgYnkgdGhlIEphdmFTY3JpcHQgY29tcG9uZW50IHdoZW4gdGhlIHRhYmxlIGlzXG4vLyBvdmVyZmxvd2VkICoqYW5kKiogdGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGlzIHN1YmNvbXBvbmVudCBpcyBub3QgZnVsbHlcbi8vIHBpbm5lZCB0byB0aGUgbGVmdC5cbi8vXG4vLyBAc2V0X2J5IFRhYmxlI2hhbmRsZV9zY3JvbGwsIFRhYmxlI3NoaWZ0X3RhYmxlXG5cbi50YWJsZV9fc2Nyb2xsZXItLWlzLXNjcm9sbGVkIHtcbiAgLnRhYmxlX19jZWxsOmZpcnN0LWNoaWxkIHtcbiAgICBib3gtc2hhZG93OiAkdGFibGUtLWJveC1zaGFkb3ctc2l6ZSByZ2JhKGNvbG9yKGJsYWNrKSwgMC4xKTtcbiAgfVxufVxuXG5cblxuLy8qXG4vLyBUaGUgd3JhcHBlciBhcm91bmQgYSBgdGFibGVgIHRoYXQgcHJvdmlkZXMgYSBmZXcgdmlzdWFsIHBpZWNlcy4gTW9zdFxuLy8gbm90aWNlYWJseSwgdGhpcyBhZGRzIHRoZSBib3JkZXIgYW5kIGJvcmRlciByYWRpdXMgb24gdGhlIG91dHNpZGUgb2YgdGhlXG4vLyB0YWJsZS4gVGhlc2UgcGllY2VzIG11c3QgYmUgb24gdGhpcyBjb250YWluZXIgcmF0aGVyIHRoYW4gdGhlXG4vLyBgdGFibGVfX2NvbnRhaW5lcmAgc3ViY29tcG9uZW50IGJlY2F1c2UgaXQgc2hvdWxkIG9ubHkgd3JhcCBhcm91bmQgdGhlXG4vLyBgdGFibGVgLCBhbmQgbm90IHRoZSBgdGFibGVfX2FjdGlvbnNgLiBUaGVzZSBydWxlcyBjYW4ndCBiZSBvbiB0aGVcbi8vIGB0YWJsZV9fc2Nyb2xsZXJgIHN1YmNvbXBvbmVudCwgZWl0aGVyLCBiZWNhdXNlIGl0IG11c3QgYmUgYG92ZXJmbG93OiBoaWRkZW5gXG4vLyAodG8gaGlkZSB0aGUgcGFydHMgb3V0c2lkZSB0aGUgcm91bmRlZCBjb3JuZXJzKSwgd2hlcmUgdGhlIHNjcm9sbGVyIG11c3Rcbi8vIGJlIGFsbG93ZWQgdG8gc2Nyb2xsLlxuLy9cbi8vIE1vcmUgaW1wb3J0YW50bHksIGhvd2V2ZXIsIHRoaXMgY29udGFpbmVyIGlzIGBwb3NpdGlvbjogcmVsYXRpdmVgIGFuZCwgYXNcbi8vIHN1Y2gsIGFjdHMgYXMgdGhlIGVsZW1lbnQgYWdhaW5zdCB3aGljaCB0aGUgcGVyc2lzdGFudCBjZWxscyBhcmVcbi8vIHBvc2l0aW9uZWQuIFRoZXNlIHJ1bGVzIGNhbid0IGJlIG9uIHRoZSBgdGFibGVfX3Njcm9sbGVyYCBiZWNhdXNlIGl0IHNjcm9sbHMsXG4vLyB3aGVyZSB0aGUgcGVyc2lzdGFudCBjZWxscyBzaG91bGQgYmUgZml4ZWQgZXZlbiBhcyB0aGUgcmVzdCBvZiB0aGUgdGFibGVcbi8vIHNjcm9sbHMuXG5cbi50YWJsZV9fYmFja2Ryb3Age1xuICAvLyBwb3NpdGlvblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIHotaW5kZXgoYmFja2Ryb3AsIHRhYmxlKTtcblxuICAvLyBib3ggbW9kZWxcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBjbGVhcjogYm90aDtcblxuICAvLyBiYWNrZHJvcFxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXI6ICR0YWJsZS0tYm9yZGVyO1xuICBib3JkZXItcmFkaXVzOiAkdGFibGUtLWJvcmRlci1yYWRpdXM7XG59XG5cblxuXG4vLypcbi8vIEEgY29udGFpbmVyIGFyb3VuZCB0aGUgYWN0aW9ucyB0aGF0IGNhbiBiZSBwZXJmb3JtZWQgb24gdGhlIGB0YWJsZWAuIEZvciBub3csXG4vLyB0aGlzIGluY2x1ZGVzIG9ubHkgdGhlIHNlZ21lbnRlZCBidXR0b24gdG8gc2hpZnQgdGhlIHRhYmxlIHJpZ2h0LyBsZWZ0IGJ5XG4vLyBvbmUgY29sdW1uLlxuXG4udGFibGVfX2FjdGlvbnMge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTQwJSk7XG4gIG1heC1oZWlnaHQ6IDA7XG4gIGZsb2F0OiByaWdodDtcblxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyAkYm91bmN5LXRyYW5zaXRpb24sXG4gICAgICAgICAgICAgIG1heC1oZWlnaHQgMC4zcyBlYXNlLFxuICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbSAwLjNzIGVhc2U7XG59XG5cblxuXG4vLypcbi8vIFRoZSBoZWFkZXIgcm93IG9mIHRoZSB0YWJsZS5cblxuLnRhYmxlX19oZWFkZXIge1xuICBmb250LXdlaWdodDogNDAwO1xuICBwYWRkaW5nOiAwO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG5cblxuLy8qXG4vLyBUaGUgY29udGFpbmVyIGFyb3VuZCB0aGUgcm93cyB0aGF0IG1ha2UgdXAgdGhlIGJvZHkgb2YgdGhlIHRhYmxlLlxuXG4udGFibGVfX2JvZHkge1xuICAvLyBTdHJpcGVkIHJvd3MhXG4gID4gLnRhYmxlX19yb3c6bnRoLWNoaWxkKG9kZCkgPiAudGFibGVfX2NlbGwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yKGdyYXktbGlnaHRlcik7XG4gIH1cbn1cblxuXG5cbi8vKlxuLy8gQSByb3cgb2YgdGFibGUgY2VsbHMuXG5cbi50YWJsZV9fcm93IHtcbiAgLy8gSGlkZSB0aGUgb3ZlcmZsb3cgc28gdGhhdCBib3ggc2hhZG93cyBvbiBwZXJzaXN0YW50IGNlbGxzIGRvbid0IGJsZWVkXG4gIC8vIGJldHdlZW4gcm93cy5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuXG5cbi8vKlxuLy8gQW4gaW5kaXZpZHVhbCB0YWJsZSBjZWxsLlxuXG4udGFibGVfX2NlbGwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIHotaW5kZXgoY2VsbCwgdGFibGUpO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICBwYWRkaW5nOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcih3aGl0ZSk7XG59XG5cbi8vKlxuLy8gQSB0YWJsZSBjZWxsIHdpdGggY2VudGVyLWFsaWduZWQgdGV4dC5cblxuLnRhYmxlX19jZWxsLS1jZW50ZXJlZCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbiIsIi8vICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX1xuLy8gICAgICAgIF9fXyAgICAvICAvXFwgICAgICAgIF9fX19fICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgLyAgL1xcICAgICAgICBfX19cbi8vICAgICAgIC8gIC9cXCAgLyAgLzo6XFwgICAgICAvICAvOjpcXCAgICAgICAgICAgICAgICAgLyAgL1xcICAgICAgLyAgLzovXyAgICAgIC8gIC9cXFxuLy8gICAgICAvICAvOi8gLyAgLzovXFw6XFwgICAgLyAgLzovXFw6XFwgIF9fXyAgICAgX19fICAvICAvOi8gICAgIC8gIC86LyAvXFwgICAgLyAgLzovXG4vLyAgICAgLyAgLzovIC8gIC86L34vOjpcXCAgLyAgLzovfi86OlxcL19fL1xcICAgLyAgL1xcL19fLzo6XFwgICAgLyAgLzovIC86OlxcICAvICAvOi9cbi8vICAgIC8gIC86OlxcL19fLzovIC86L1xcOlxcL19fLzovIC86L1xcOlxcICBcXDpcXCAvICAvOi9cXF9fXFwvXFw6XFxfXy9fXy86LyAvOi9cXDpcXC8gIC86OlxcXG4vLyAgIC9fXy86L1xcOlxcICBcXDpcXC86L19fXFwvXFwgIFxcOlxcLzovfi86L1xcICBcXDpcXCAgLzovICAgIFxcICBcXDpcXC9cXCAgXFw6XFwvOi9+LzovX18vOi9cXDpcXFxuLy8gICBcXF9fXFwvICBcXDpcXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi8gLzovICBcXCAgXFw6XFwvOi8gICAgICBcXF9fXFw6Oi9cXCAgXFw6Oi8gLzovXFxfX1xcLyAgXFw6XFxcbi8vICAgICAgICBcXCAgXFw6XFwgIFxcOlxcICAgICAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6Oi8gICAgICAgL19fLzovICBcXF9fXFwvIC86LyAgICAgIFxcICBcXDpcXFxuLy8gICAgICAgICBcXF9fXFwvXFwgIFxcOlxcICAgICAgIFxcICBcXDo6LyAgICAgIFxcX19cXC8gICAgICAgIFxcX19cXC8gICAgIC9fXy86LyAgICAgICAgXFxfX1xcL1xuLy8gICAgICAgICAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxfX1xcL1xuXG4vLypcbi8vIEBwYXR0ZXJuIFRhYmxpc3Rcbi8vXG4vLyBUYWJsaXN0cyBhcmUgdXNlZCB0byBjcmVhdGUgZ3JvdXBzIG9mIHJlbGF0ZWQgY29udGVudCB0aGF0IGlzIGNvbmRpdGlvbmFsbHlcbi8vIHNob3duIG9yIGhpZGRlbiBiYXNlZCBvbiB0aGUgc2VsZWN0ZWQgdGFiLiBUaGUgSmF2YVNjcmlwdCBwYXJ0IG9mIHRoaXNcbi8vIGNvbXBvbmVudHMgZW5zdXJlcyB0aGF0IHRoZSByZXF1aXJlZCBhY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgbWFya3VwIGlzIGFkZGVkXG4vLyB0byB0aGUgdGFicywgYW5kIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBzdHlsZXMgYXJlIGF2YWlsYWJsZSBkZXBlbmRpbmcgb25cbi8vIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSB0YWJzIGFyZSBiZWluZyB1c2VkLlxuLy9cbi8vIEBzaW5jZSAxLjAuMFxuXG4vLypcbi8vIFRoZSBjb250YWluZXIgZm9yIGEgc2V0IG9mIHRhYnMuIFdoaWxlIHBhbmVscyBhbmQgdGFicyBib3RoIHVzZSBgdGFibGlzdGBcbi8vIGFzIHRoZWlyIGJhc2UgY29tcG9uZW50LCBvbmx5IGB0YWJsaXN0X190YWJgcyBhcmUgY2hpbGQgbm9kZXMgb2YgdGhpc1xuLy8gY29tcG9uZW50OyBgdGFibGlzdF9fcGFuZWxgcyAoYW5kIHRoZWlyIGNvbnRhaW5lcikgYXJlIHNlcGFyYXRlIGZyb20gdGhlXG4vLyBkb2N1bWVudCB0byBhbGxvdyB0YWJzIHRvIG1vdmUgYXJvdW5kIHRoZSBwYWdlIGluZGVwZW5kZW50bHkgb2YgdGhlIGNvbnRlbnRcbi8vIHRoZXkgYWN0dWFsbHkgYWN0aXZhdGUuXG4vL1xuLy8gVGhlIGB0YWJsaXN0LS1tYW5hZ2VzLXVybGAgdmFyaWFudCBpcyB1bmlxdWUgaW4gdGhhdCBpdCBoYXMgbm8gdmlzdWFsXG4vLyBkaWZmZXJlbmNlcywgYnV0IHdpbGwgcHJlc2VydmUgdGhlIHNlbGVjdGVkIHRhYiB2aWEgYSBxdWVyeSBzdHJpbmcgcGFyYW1ldGVyXG4vLyBhbmQgcmVzdG9yZSB0aGUgc2VsZWN0ZWQgdGFiIG9uIHN1YnNlcXVlbnQgcGFnZSBsb2Fkcy4gVG8gYWRkIHRoaXNcbi8vIGZ1bmN0aW9uYWxpdHksIHNpbXBseSBwYXNzIGB0cnVlYCBmb3IgdGhlIGA6bWFuYWdlX3VybGAgb3B0aW9uIG9mIHRoZVxuLy8gYGRvY2tzX3RhYmxpc3RgIHZpZXcgaGVscGVyLlxuLy9cbi8vIEBoZWxwZXIgZG9ja3NfdGFibGlzdFxuXG4udGFibGlzdCB7XG4gIC8vIGJveCBtb2RlbFxuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwYWRkaW5nOiBoYWxmKGRlZmF1bHQoc3BhY2luZykpO1xuICBtYXJnaW4tcmlnaHQ6IG5lZ2F0aXZlKGhhbGYoZGVmYXVsdChzcGFjaW5nKSkpO1xuXG4gIC8vIGJhY2tkcm9wXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi8vKlxuLy8gQSBsYXJnZXIgc2V0IG9mIHRhYnMgKGJvdGggaW4gdGVybXMgb2YgdGhlIGZvbnQgc2l6ZSBvZiB0aGUgdGFicyBhbmQgdGhlXG4vLyBwYWRkaW5nIHdpdGhpbiBlYWNoIHRhYikuXG4vL1xuLy8gQHNldF9ieSA6c2l6ZSAoOmxhcmdlKVxuXG4udGFibGlzdC0tbGFyZ2Uge1xuICBtYXJnaW46IGRvdWJsZShkZWZhdWx0KHNwYWNpbmcpKSAwO1xuXG4gID4gLnRhYmxpc3RfX3RhYiB7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKHRhYmxpc3QtLWxhcmdlKTtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBwYWRkaW5nOiBkZWZhdWx0KHNwYWNpbmcpIG11bHRpcGx5KGRlZmF1bHQoc3BhY2luZyksIDIuNSkgbXVsdGlwbHkoZGVmYXVsdChzcGFjaW5nKSwgMS4yKTtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gIH1cblxuICA+IC50YWJsaXN0X190YWItLWlzLWFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdWktY29sb3IoZ3JheSwgbGlnaHQpO1xuICB9XG59XG5cbi8vKlxuLy8gQSB2YXJpYXRpb24gb2YgdGhlIHRhYmxpc3QgdGhhdCBmb3JjZXMgdGhlIEphdmFTY3JpcHQgdG8gcHJlc2VydmUgdGhlXG4vLyBzZWxlY3RlZCB0YWIgYW5kIHJlbG9hZCB0aGF0IHRhYiBvbiBzdWJzZXF1ZW50IHBhZ2UgbG9hZHMuXG4vL1xuLy8gQGRlbW9fdHlwZSBub25lXG4vLyBAc2V0X2J5IDptYW5hZ2VfdXJsXG5cbi50YWJsaXN0LS1tYW5hZ2VzLXVybCB7fVxuXG5cblxuXG4vLypcbi8vIEEgc2luZ2xlIHRhYiBpbiB0aGUgdGFibGlzdC4gVGFicyB3aWxsIGJlIGEgcmVsYXRpdmVseSBsaWdodCBjb2xvciBieVxuLy8gZGVmYXVsdCB3aXRoIHByb2dyZXNzaXZlbHkgZGFya2VyIHNoYWRlcyB1c2VkIG9uIGA6Zm9jdXNgL2A6aG92ZXJgIGFuZCB3aGVuXG4vLyBgOmFjdGl2ZWAuXG4vL1xuLy8gVGFicyBzaG91bGQgc3RpbGwgd29yayBldmVuIHdoZW4gdGhlcmUgaXMgbm8gSmF2YVNjcmlwdCBvciBDU1MuIFRvIG1ha2UgdGhpc1xuLy8gd29yaywgZW5zdXJlIHRoYXQgZWFjaCBgdGFibGlzdF9fdGFiYCBpcyBhbiBgYWAgdGFnIHdpdGggYW4gYGhyZWZgIHRoYXRcbi8vIHBvaW50cyB0byB0aGUgYGlkYCBvZiB0aGUgcmVsZXZhbnQgYHRhYmxpc3RfX3BhbmVsYC4gTGlrZXdpc2UsIHRoZSBgaWRgcyBvZlxuLy8gdGhlIHRhYiBhbmQgcGFuZWwgc2hvdWxkIG1hdGNoIHVwIHZhaSB0aGUgYGFyaWEtY29udHJvbHNgIGFuZFxuLy8gYGFyaWEtbGFiZWxsZWRieWAgcHJvcGVydGllcy4gVGhlIEphdmFTY3JpcHQgY29tcG9uZW50LCBpZiBydW4sIHdpbGxcbi8vIGd1YXJhbnRlZSBhbGwgb2YgdGhlc2UgYXNzb2NpYXRpb25zLlxuLy9cbi8vIEBoZWxwZXIgZG9ja3NfdGFibGlzdF90YWJcblxuLnRhYmxpc3RfX3RhYiB7XG4gIC8vIGJveCBtb2RlbFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDAgZGVmYXVsdChjb250cm9sLXBhZGRpbmcpO1xuXG4gIC8vIGJhY2tkcm9wXG4gIG9wYWNpdHk6IDAuMztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IGRlZmF1bHQoYm9yZGVyLXJhZGl1cyk7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlLCBib3JkZXItY29sb3IgMC4zcyBlYXNlO1xuXG4gIC8vIHR5cGVcbiAgQGluY2x1ZGUgZm9udC1zaXplKGNvbnRyb2wpO1xuICBsaW5lLWhlaWdodDogZGVmYXVsdChjb250cm9sLXNpemUpO1xuICBjb2xvcjogdWktY29sb3IoZ3JheSwgZGFya2VyKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXG4gICY6Zm9jdXMsXG4gICY6aG92ZXIge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG5cbiAgPiAuaWNvbiB7XG4gICAgaGVpZ2h0OiBkb3VibGUoZGVmYXVsdChzcGFjaW5nKSk7XG4gICAgd2lkdGg6IGRvdWJsZShkZWZhdWx0KHNwYWNpbmcpKTtcbiAgICBAaW5jbHVkZSBpY29uLS1yZWNvbG9yKGdyYXksIGRhcmspO1xuICAgIHN0cm9rZS13aWR0aDogM3B4O1xuICB9XG59XG5cbi8vKlxuLy8gVGhlIHZhcmlhdGlvbiBhZGRlZCB0byB0aGUgdGFiIHdob3NlIGNvcnJlc3BvbmRpbmcgdGFiIGlzIGN1cnJlbnRseVxuLy8gdmlzaWJsZS4gVGhpcyBjbGFzcyBjYW4gZWl0aGVyIGJlIGFwcGxpZWQgbWFudWFsbHkgYnkgc2V0dGluZyB0aGUgYDphY3RpdmU/YFxuLy8gYXJndW1lbnQgdG8gdGhlIGhlbHBlciBtZXRob2QgdG8gYHRydWVgIG9yIGJ5IGNsaWNraW5nIG9uIHRoZSBjb3JyZWN0IHRhYlxuLy8gKHdoaWNoIGRvZXMgYWxsIHRoZSByZXF1aXJlZCBhdHRyaWJ1dGUgbWFuaXB1bGF0aW9ucyB0aHJvdWdoIHRoZSBKYXZhU2NyaXB0XG4vLyBjb21wb25lbnQpLlxuLy9cbi8vIEBkZW1vX3R5cGUgbm9uZVxuLy8gQHNldF9ieSA6YWN0aXZlP1xuXG4udGFibGlzdF9fdGFiLS1pcy1hY3RpdmUge1xuICAmLCAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlcik7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG4vLypcbi8vIFRoZSB0ZXh0IHdpdGhpbiBhIHRhYi4gVGhpcyBjb250YWluZXIgaXMgcmVxdWlyZWQgaW4gb3JkZXIgZm9yIHRoZSB0ZXh0IGFuZFxuLy8gKG9wdGlvbmFsKSBpY29uIHRvIGJlIGFib3ZlIG9uZSBhbm90aGVyLlxuXG4udGFibGlzdF9fdGFiX190ZXh0IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cblxuXG4vLypcbi8vIEEgcGFuZWwgdGhhdCBjb250YWlucyB0aGUgY29udGVudCB0aGF0IHNob3VsZCBiZSBzaG93biB3aGVuIHRoZSBhc3NvY2lhdGVkXG4vLyB0YWIgaXMgYWN0aXZlLlxuLy9cbi8vIEBoZWxwZXIgZG9ja3NfdGFibGlzdF9wYW5lbFxuXG4udGFibGlzdF9fcGFuZWwge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vLypcbi8vIEEgc3RhdGUgaW5kaWNhdGluZyB0aGF0IHRoZSBhc3NvY2lhdGVkIHRhYiBpcyBhY3RpdmUgYW5kIHRoZSBjb250ZW50cyBvZlxuLy8gdGhpcyBwYW5lbCBzaG91bGQgYmUgbWFkZSB2aXNpYmxlLiBUaGVyZSBpcyBubyBhbmltYXRpb24gd2hlbiBzd2l0Y2hpbmdcbi8vIGJldHdlZW4gdGFicyDigJTCoHRoZXkgc2ltcGx5IHBvcCBpbiBhbmQgb3V0IG9mIHZpZXcuXG4vL1xuLy8gQGRlbW9fdHlwZSBub25lXG4vLyBAc2V0X2J5IDphY3RpdmU/XG5cbi50YWJsaXN0X19wYW5lbC0taXMtYWN0aXZlIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cblxuXG4vLypcbi8vIEEgY29udGFpbmVyIGFyb3VuZCBhbGwgb2YgdGhlIHBhbmVscyBmb3IgYSB0YWJsaXN0LiBUaGlzIGNvbnRhaW5lclxuLy8gdGVjaG5pY2FsbHkgZG9lcyBub3RoaW5nLCBidXQgaXMgYSBuaWNlIHdheSB0byBpc29sYXRlIGEgc2V0IG9mIHRhYiBwYW5lbHNcbi8vIGZyb20gdGhlIHN1cnJvdW5kaW5nIGNvbnRlbnQuXG5cbi50YWJsaXN0X19wYW5lbC1jb250YWluZXIge31cbiIsIi52ZXJ0aWNhbC1zcGFjZXIge1xuICAgIG1hcmdpbjogaGFsZihkZWZhdWx0KHNwYWNpbmcpKSAwO1xufVxuIiwiLnZlcnRpY2FsLXN0YWNrIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi52ZXJ0aWNhbC1zdGFja19faXRlbSB7XG4gIGZsZXg6IDEgMSAwcHg7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi52ZXJ0aWNhbC1zdGFja19faXRlbS0tZml4ZWQge1xuICBmbGV4OiAwIDAgYXV0bztcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG4iLCJib2R5IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICYueC1yYXlfX2hlbHBlcnMtLXgtcmF5LWlzLWFjdGl2ZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxufVxuXG4ueC1yYXkge1xuICBiYWNrZ3JvdW5kOiB1aS1jb2xvcih3aGl0ZSk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwOyBib3R0b206IDA7XG4gIGxlZnQ6IDA7IHJpZ2h0OiAwO1xuICB6LWluZGV4OiAtMTtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbiAgbWluLWhlaWdodDogMTAwJTtcblxuICAucGFnZS1oZWFkZXIge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICB9XG59XG5cbi54LXJheS0taXMtYWN0aXZlIHtcbiAgb3BhY2l0eTogMTtcbiAgei1pbmRleDogMTIwMDtcbn1cblxuXG5cbi54LXJheV9fY29udGVudCB7XG4gIHBhZGRpbmctYm90dG9tOiAzcmVtO1xufVxuXG5cbi54LXJheV9fbGlzdCB7XG4gIHBhZGRpbmc6IGRlZmF1bHQoc3BhY2luZyk7XG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKGdyYXksIGxpZ2h0KTtcbn1cblxuLngtcmF5X19jbG9zZXIge1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nOiAwO1xuICBhcHBlYXJhbmNlOiBub25lO1xufVxuXG5cblxuLngtcmF5X19kaWFncmFtIHtcbiAgcGFkZGluZzogZGVmYXVsdChzcGFjaW5nKSAwIDA7XG4gIGJhY2tncm91bmQ6IHVpLWNvbG9yKGdyYXkpO1xufVxuXG5cbi54LXJheV9fZGV0YWlscyB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi54LXJheV9fZGV0YWlscy0taXMtdmlzaWJsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ueC1yYXlfX2RldGFpbHNfX3RhZ25hbWUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMC43NWVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1aS1jb2xvcihncmF5LCBsaWdodCk7XG4gIHBhZGRpbmc6IDAuM2VtIDAuNGVtIDAuMmVtO1xuICBAaW5jbHVkZSBkZWZhdWx0KGJvcmRlci1yYWRpdXMpO1xuICBsaW5lLWhlaWdodDogMTtcbiAgY29sb3I6IHVpLWNvbG9yKGdyYXksIGRhcmtlcik7XG4gIG1hcmdpbi1yaWdodDogMC4yNXJlbTtcbn1cblxuLngtcmF5X19kZXRhaWxzX19kZXNjcmlwdGlvbiB7XG4gIG1hcmdpbi1ib3R0b206ICgyICogZGVmYXVsdChzcGFjaW5nKSk7XG59XG4iLCIvLyAgICAgICAgX19fICAgICAgICAgICAgICAgICBfX19fXyAgICAgICAgX19fICAgICAgICAgICAgICAgICAgICAgIF9fXyAgICAgICAgICBfX19cbi8vICAgICAgIC8gIC9cXCAgICAgIF9fXyAgICAgIC8gIC86OlxcICAgICAgLyAgL1xcICAgICAgICBfX19fXyAgICAgICAvICAvXFwgICAgICAgIC8gIC9cXFxuLy8gICAgICAvICAvOi9fICAgIC8gIC9cXCAgICAvICAvOi9cXDpcXCAgICAvICAvOi9fICAgICAgLyAgLzo6XFwgICAgIC8gIC86OlxcICAgICAgLyAgLzo6XFxcbi8vICAgICAvICAvOi8gL1xcICAvICAvOi8gICAvICAvOi8gIFxcOlxcICAvICAvOi8gL1xcICAgIC8gIC86L1xcOlxcICAgLyAgLzovXFw6XFwgICAgLyAgLzovXFw6XFxcbi8vICAgIC8gIC86LyAvOjpcXC9fXy86OlxcICAvX18vOi8gXFxfX1xcOnwvICAvOi8gLzovXyAgLyAgLzovfi86OlxcIC8gIC86L34vOjpcXCAgLyAgLzovfi86L1xuLy8gICAvX18vOi8gLzovXFw6XFxfX1xcL1xcOlxcX1xcICBcXDpcXCAvICAvOi9fXy86LyAvOi8gL1xcL19fLzovIC86L1xcOi9fXy86LyAvOi9cXDpcXC9fXy86LyAvOi9fX19cbi8vICAgXFwgIFxcOlxcLzovfi86LyAgXFwgIFxcOlxcL1xcICBcXDpcXCAgLzovXFwgIFxcOlxcLzovIC86L1xcICBcXDpcXC86L34vOnwgIFxcOlxcLzovX19cXC9cXCAgXFw6XFwvOjo6OjovXG4vLyAgICBcXCAgXFw6Oi8gLzovICAgIFxcX19cXDo6L1xcICBcXDpcXC86LyAgXFwgIFxcOjovIC86LyAgXFwgIFxcOjovIC86LyBcXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi9+fn5+XG4vLyAgICAgXFxfX1xcLyAvOi8gICAgIC9fXy86LyAgXFwgIFxcOjovICAgIFxcICBcXDpcXC86LyAgICBcXCAgXFw6XFwvOi8gICBcXCAgXFw6XFwgICAgICAgXFwgIFxcOlxcXG4vLyAgICAgICAvX18vOi8gICAgICBcXF9fXFwvICAgIFxcX19cXC8gICAgICBcXCAgXFw6Oi8gICAgICBcXCAgXFw6Oi8gICAgIFxcICBcXDpcXCAgICAgICBcXCAgXFw6XFxcbi8vICAgICAgIFxcX19cXC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxfX1xcLyAgICAgICAgXFxfX1xcLyAgICAgICBcXF9fXFwvICAgICAgICBcXF9fXFwvXG5cbi8vKlxuLy8gQHBhdHRlcm4gU2lkZWJhclxuLy8gQGdyb3VwIFBhcnRpYWxzXG4vL1xuLy8gVGhlIG1haW4gc2lkZWJhciBmb3IgdGhlIHBhZ2UuIFRoaXMgc2lkZWJhciBpcyBhY3RpdmF0ZWQgYnkgYSB0b2dnbGVcbi8vIChgc2lkZWJhcl9fdG9nZ2xlcmApIGFuZCBzbGlkZXMgb3ZlciB0aGUgbWFpbiBjb250ZW50ICh3aXRob3V0IG1vdmluZyB0aGVcbi8vIG1haW4gY29udGVudCkuXG4vL1xuLy8gQHNpbmNlIDEuMC4wXG5cbi8vKlxuLy8gVGhlIG1haW4gcGllY2Ugb2YgdGhlIHNpZGViYXIuIFRoaXMgcHJvdmlkZXMgdGhlIHZpc3VhbCBiYWNraW5nIG9mIHRoZVxuLy8gc2lkZWJhciBhbmQgbWFuYWdlcyB0aGUgcmV2ZWFsLyBoaWRlIHRyYW5zaXRpb24uXG5cbi5zaWRlYmFyIHtcbiAgLy8gcG9zaXRpb25cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwOyB0b3A6IDA7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwMCUsIDAsIDApO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xuICBtYXgtd2lkdGg6IDE1cmVtO1xuXG4gIC8vIGJveCBtb2RlbFxuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IDEwMHZoO1xuXG4gIC8vIGJhY2tkcm9wXG4gIGJhY2tncm91bmQtY29sb3I6IHVpLWNvbG9yKHdoaXRlKTtcbiAgQGluY2x1ZGUgZGVmYXVsdChib3gtc2hhZG93KTtcblxuICBAaW5jbHVkZSBhZnRlcig0MHJlbSkge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuXG4vLypcbi8vIFRoZSBzdGF0ZSB0aGF0IGlzIGFkZGVkIGJ5IHRoZSBKYXZhU2NyaXB0IGNvbXBvbmVudCB3aGVuIHRoZSBzaWRlYmFyIGlzXG4vLyB2aXNpYmxlLlxuXG4uc2lkZWJhci0taXMtYWN0aXZlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbn1cblxuXG5cbi8vKlxuLy8gVGhlIGNvbnRhaW5lciBmb3IgdGhlIGl0ZW0gdGhhdCBzaG91bGQgYWN0aXZhdGUgdGhlIHNpZGViYXIuIFRoZSBKYXZhU2NyaXB0XG4vLyBjb21wb25lbnQgd2lsbCBsb29rIGZvciBhbnkgaW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgYW5kIHdpbGwgYXR0YWNoIGBjbGlja2Bcbi8vIGhhbmRsZXJzIHRoYXQgdGhhdCB0b2dnbGUgdGhlIHNpZGViYXIncyB2aXNpYmlsaXR5LlxuXG4uc2lkZWJhcl9fdG9nZ2xlciB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcblxuICAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLy8gQGluY2x1ZGUgYWZ0ZXIoNDByZW0pIHtcbiAgLy8gICBkaXNwbGF5OiBub25lO1xuICAvLyB9XG59XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= */