@designcrowd/library.brand-page 6.0.18 → 6.0.19-ast-btns

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-CIrk6Brm.js → CreatedOnBrandCrowd-de-de-BrIpxgMF.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-CvXk0moH.js → CreatedOnBrandCrowd-en-us-DQDv2DBf.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-BhtZbjjU.js → CreatedOnBrandCrowd-es-es-BadaUjK1.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-B6TD57O-.js → CreatedOnBrandCrowd-fr-ca-DbrUAAGP.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-B6TD57O-.js → CreatedOnBrandCrowd-fr-fr-DbrUAAGP.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-Bto0xOtS.js → CreatedOnBrandCrowd-pt-br-Cy41WPcW.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-Bto0xOtS.js → CreatedOnBrandCrowd-pt-pt-Cy41WPcW.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-2h2W3y5z.js → CreatedOnDcom-de-de-D6UvcWQ5.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-D6Jgk6yv.js → CreatedOnDcom-en-us-DKUOQjj3.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-sBCqYQIm.js → CreatedOnDcom-es-es-CftpM7Vk.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-C8hg5hTU.js → CreatedOnDcom-fr-ca-DcCQzJDA.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-_DP1Umyh.js → CreatedOnDcom-fr-fr-Bodcymjw.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-BdwYAy5p.js → CreatedOnDcom-pt-br-B1OmeM4X.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-Bm1NHVaH.js → CreatedOnDcom-pt-pt-CGx-k757.js} +1 -1
  15. package/lib/src/brand-page/components/button/decorative-button-styles.d.ts +5 -0
  16. package/lib/src/brand-page/components/button/decorative-button-styles.js +13 -0
  17. package/lib/src/brand-page/components/button/paper-button-mask.d.ts +1 -0
  18. package/lib/src/brand-page/components/button/paper-button-mask.js +8 -0
  19. package/lib/src/brand-page/components/collapsible/Collapsible.mixin.d.ts +11 -0
  20. package/lib/src/brand-page/components/collapsible/Collapsible.mixin.js +10 -0
  21. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.d.ts +1 -0
  22. package/lib/src/brand-page/components/contact-form/ContactForm.mixin.js +7 -0
  23. package/lib/src/brand-page/components/mailing-list/MailingList.mixin.js +5 -0
  24. package/lib/src/brand-page/components/payment/Payment.mixin.js +5 -0
  25. package/lib/src/brand-page/models/index.d.ts +1 -0
  26. package/lib/src/brand-page/models/payment.model.d.ts +2 -0
  27. package/lib/src/brand-page/utils/migration/migration-19.d.ts +2 -0
  28. package/lib/src/brand-page/utils/migration/migration-19.js +48 -0
  29. package/lib/src/brand-page/utils/migration.util.js +9 -0
  30. package/lib/src/brand-page/utils/view-model.util.js +1 -0
  31. package/lib/src/brand-page-maker/constants/config-settings-constant.js +32 -1
  32. package/lib/src/brand-page-maker/default-getters/contact-form-background-color.default-getter.d.ts +8 -0
  33. package/lib/src/brand-page-maker/default-getters/contact-form-background-color.default-getter.js +16 -0
  34. package/lib/src/brand-page-maker/default-getters/index.d.ts +1 -0
  35. package/lib/src/brand-page-maker/default-getters/index.js +1 -0
  36. package/lib/src/brand-page-maker/models/button-styles-config.js +15 -3
  37. package/lib/src/brand-page-maker/models/content-settings.js +3 -0
  38. package/lib/src/css/library.brand-page-brandCrowd.min.css +72 -69
  39. package/lib/src/css/library.brand-page-brandPage.min.css +72 -69
  40. package/lib/src/css/library.brand-page-designCom.min.css +72 -69
  41. package/lib/src/css/library.brand-page-preview.min.css +72 -69
  42. package/lib/src/index.mjs +1 -1
  43. package/lib/src/{lib-CPTMajMv.js → lib-ce4Vsuiu.js} +30228 -30028
  44. package/lib/src/metadata-builder/builders/section-rules/banner-section.rules.js +6 -0
  45. package/lib/src/metadata-builder/parsers/section-tool-arguments.d.ts +1 -1
  46. package/package.json +1 -1
  47. package/src/brand-page/components/button/ButtonStyleWrapper.vue +92 -41
  48. package/src/brand-page/components/button/ButtonStyleWrapper.vue.test.ts +164 -0
  49. package/src/brand-page/components/button/decorative-button-styles.ts +16 -0
  50. package/src/brand-page/components/button/paper-button-mask.ts +8 -0
  51. package/src/brand-page/components/collapsible/Collapsible.mixin.ts +11 -0
  52. package/src/brand-page/components/contact-form/ContactForm.mixin.ts +10 -0
  53. package/src/brand-page/components/contact-form/ContactForm.vue +88 -39
  54. package/src/brand-page/components/mailing-list/MailingList.mixin.ts +6 -0
  55. package/src/brand-page/components/mailing-list/MailingList.vue +18 -10
  56. package/src/brand-page/components/payment/Payment.mixin.ts +6 -0
  57. package/src/brand-page/components/payment/Payment.vue +43 -24
  58. package/src/brand-page/components/payment/RequestPaymentStripe.vue +26 -22
  59. package/src/brand-page/components/shop/Shop.vue +15 -6
  60. package/src/brand-page/models/index.ts +1 -0
  61. package/src/brand-page/models/payment.model.ts +2 -0
  62. package/src/brand-page/utils/__snapshots__/migration.util.test.ts.snap +3 -3
  63. package/src/brand-page/utils/migration/migration-19.test.ts +120 -0
  64. package/src/brand-page/utils/migration/migration-19.ts +67 -0
  65. package/src/brand-page/utils/migration.util.ts +10 -0
  66. package/src/brand-page/utils/view-model.util.ts +1 -0
  67. package/src/brand-page-maker/constants/config-settings-constant.ts +32 -0
  68. package/src/brand-page-maker/default-getters/contact-form-background-color.default-getter.ts +23 -0
  69. package/src/brand-page-maker/default-getters/index.ts +1 -0
  70. package/src/brand-page-maker/models/button-styles-config.ts +15 -3
  71. package/src/brand-page-maker/models/content-settings.ts +3 -0
  72. package/src/metadata-builder/builders/section-rules/banner-section.rules.ts +6 -0
  73. package/src/metadata-builder/parsers/section-tool-arguments.ts +7 -1
  74. package/src/metadata-builder/sanitizers/__tests__/section-args-validator.test.ts +13 -0
  75. package/src/shared/style-settings/components/StyleSettings.vue +1 -0
@@ -19,6 +19,12 @@ const CHECKS = [
19
19
  'left-aligned-full-image',
20
20
  'center-card-aligned-image',
21
21
  'left-card-aligned-image',
22
+ 'top-card-aligned-image',
23
+ 'bottom-card-aligned-image',
24
+ 'middle-card-aligned-image',
25
+ 'top-aligned-full-image',
26
+ 'bottom-aligned-full-image',
27
+ 'middle-aligned-full-image',
22
28
  ], 'banner-section'),
23
29
  enumCheck('button_link_type', Object.keys(BUTTON_LINK_TYPE), 'banner-section'),
24
30
  ];
@@ -268,7 +268,7 @@ export interface BannerSectionArguments {
268
268
  background_image_url?: string;
269
269
  background_shape_url?: string;
270
270
  color_theme?: string;
271
- display_style?: 'left-aligned' | 'right-aligned' | 'centered' | 'big-image' | 'left-aligned-big-image' | 'right-aligned-full-image' | 'left-aligned-full-image' | 'center-card-aligned-image' | 'left-card-aligned-image';
271
+ display_style?: 'left-aligned' | 'right-aligned' | 'centered' | 'big-image' | 'left-aligned-big-image' | 'right-aligned-full-image' | 'left-aligned-full-image' | 'center-card-aligned-image' | 'left-card-aligned-image' | 'top-card-aligned-image' | 'bottom-card-aligned-image' | 'middle-card-aligned-image' | 'top-aligned-full-image' | 'bottom-aligned-full-image' | 'middle-aligned-full-image';
272
272
  title_style?: TextStyleArguments;
273
273
  description_style?: TextStyleArguments;
274
274
  button_text_style?: ButtonTextStyleArguments;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@designcrowd/library.brand-page",
3
3
  "description": "A collection of Maker/Designer applications",
4
- "version": "6.0.18",
4
+ "version": "6.0.19-ast-btns",
5
5
  "author": "Design.com Eng",
6
6
  "license": "UNLICENSED",
7
7
  "type": "module",
@@ -1,10 +1,17 @@
1
1
  <template>
2
2
  <div
3
3
  class="bp-style-wrapper"
4
+ :style="paperWrapperStyle"
4
5
  :class="{
5
6
  'bp-button-arrow': isArrowIcon,
6
- 'tw-flex tw-justify-center tw-w-full': isBrushStrokeIcon,
7
- 'tw-relative tw-mb-6': isPaperIcon,
7
+ 'tw-flex tw-justify-center': isBrushStrokeIcon,
8
+ 'bp-button-paper': isPaperIcon,
9
+ 'tw-mb-6': isPaperIcon && !noMargin,
10
+ 'bp-style-wrapper--no-margin': isDecorative && noMargin,
11
+ 'tw-mt-4': isDecorative && noMargin,
12
+ 'tw-opacity-50': disabled,
13
+ 'tw-w-full': isDecorative && fullWidth,
14
+ 'tw-w-fit': isDecorative && !fullWidth,
8
15
  }"
9
16
  >
10
17
  <template v-if="isBrushStrokeIcon">
@@ -25,21 +32,9 @@
25
32
  />
26
33
  </template>
27
34
  <template v-else-if="isPaperIcon">
28
- <IconV2
29
- name="button-paper-top"
30
- view-box="41 0 120 16"
31
- size="auto"
32
- class="tw-absolute tw-w-full bp-button-paper-top"
33
- :style="paperIconStyle"
34
- />
35
+ <!-- Torn-paper: the button itself is clipped to a torn silhouette via a CSS
36
+ alpha mask (see .bp-button-paper below) — no absolute overlay. -->
35
37
  <slot :inner-class="'tw-px-5'" />
36
- <IconV2
37
- name="button-paper-bottom"
38
- view-box="41 0 120 16"
39
- size="auto"
40
- class="tw-absolute tw-w-full bp-button-paper-bottom"
41
- :style="paperIconStyle"
42
- />
43
38
  </template>
44
39
  <template v-else>
45
40
  <slot :inner-class="'tw-px-5'" />
@@ -50,25 +45,61 @@
50
45
  <script setup lang="ts">
51
46
  import { computed } from 'vue';
52
47
  import { Icon as IconV2 } from '@designcrowd/fe-shared-lib';
48
+ import {
49
+ BUTTON_STYLE_ARROW,
50
+ BUTTON_STYLE_BRUSHSTROKE,
51
+ BUTTON_STYLE_PAPER,
52
+ isDecorativeButtonStyle,
53
+ } from './decorative-button-styles';
54
+ import { PAPER_BUTTON_MASK } from './paper-button-mask';
53
55
 
54
- const props = defineProps<{
55
- selectedButtonStyleId?: string;
56
- iconColor?: string;
57
- }>();
56
+ const props = withDefaults(
57
+ defineProps<{
58
+ selectedButtonStyleId?: string;
59
+ iconColor?: string;
60
+ // Mirror the host button's width so the decoration matches its box.
61
+ // Defaults to true to preserve the original (full-width link) behaviour.
62
+ fullWidth?: boolean;
63
+ // Set by submit buttons (contact form, payment, mailing list, shop). Makes a
64
+ // decorative button sit flush at the container's bottom edge: drops the paper
65
+ // style's bottom margin, zeroes the host button's own margins (which would
66
+ // otherwise shift it out of sync with its wrapper-anchored decoration), and
67
+ // moves the top gap onto the wrapper. Standalone buttons keep it off (BP-5800).
68
+ noMargin?: boolean;
69
+ // Dims the whole wrapper to 50% when the host button is disabled — for every
70
+ // style, so disabled reads consistently. (Decorative styles were previously
71
+ // exempt to avoid a muddy tone with the old absolute-overlay rendering; the
72
+ // torn-paper mask removed that rendering, so decorative buttons now fade like
73
+ // the rest. BP-5882/BP-5883.)
74
+ disabled?: boolean;
75
+ }>(),
76
+ {
77
+ selectedButtonStyleId: undefined,
78
+ iconColor: undefined,
79
+ fullWidth: true,
80
+ noMargin: false,
81
+ disabled: false,
82
+ },
83
+ );
58
84
 
59
85
  const isPaperIcon = computed(
60
- () => props.selectedButtonStyleId === 'BUTTON_STYLE_21',
86
+ () => props.selectedButtonStyleId === BUTTON_STYLE_PAPER,
61
87
  );
62
88
  const isArrowIcon = computed(
63
- () => props.selectedButtonStyleId === 'BUTTON_STYLE_20',
89
+ () => props.selectedButtonStyleId === BUTTON_STYLE_ARROW,
64
90
  );
65
91
  const isBrushStrokeIcon = computed(
66
- () => props.selectedButtonStyleId === 'BUTTON_STYLE_19',
92
+ () => props.selectedButtonStyleId === BUTTON_STYLE_BRUSHSTROKE,
93
+ );
94
+ const isDecorative = computed(() =>
95
+ isDecorativeButtonStyle(props.selectedButtonStyleId),
67
96
  );
68
97
 
69
- const paperIconStyle = computed(() => ({
70
- '--icon-color': props.iconColor,
71
- }));
98
+ const paperWrapperStyle = computed(() =>
99
+ isPaperIcon.value
100
+ ? { '--paper-mask': `url("${PAPER_BUTTON_MASK}")` }
101
+ : undefined,
102
+ );
72
103
 
73
104
  const brushLeftStyle = computed(() => ({
74
105
  '--icon-color': props.iconColor,
@@ -86,18 +117,34 @@ const brushRightStyle = computed(() => ({
86
117
  </script>
87
118
 
88
119
  <style scoped>
89
- .bp-button-paper-top {
90
- @apply tw-translate-y-[-10%] tw-text-[var(--icon-color)];
120
+ /* Decorative styles on submit buttons render flush at the bottom. Zero the host
121
+ button's own margins: its decoration is positioned relative to the WRAPPER, so a
122
+ margin on the button itself shifts it out of alignment with the decoration. The
123
+ top gap is instead applied to the wrapper (tw-mt-4 above) so the whole decorated
124
+ unit moves together and stays flush at the container's bottom edge (BP-5800). */
125
+ .bp-style-wrapper--no-margin :deep(button) {
126
+ margin-top: 0;
127
+ margin-bottom: 0;
91
128
  }
92
129
 
93
- .bp-button-paper-bottom {
94
- @apply tw-translate-y-[-4%] tw-text-[var(--icon-color)];
130
+ /* The brushstroke ends are transformed over the button's left/right edges, so
131
+ they must not capture clicks (BP-5882). */
132
+ .bp-icon-brush-left,
133
+ .bp-icon-brush-right {
134
+ pointer-events: none;
95
135
  }
96
136
 
97
- .bp-button-paper-top :deep(svg),
98
- .bp-button-paper-bottom :deep(svg) {
99
- width: 100%;
100
- height: auto;
137
+ /* Torn-paper: clip the button itself to a torn silhouette via a CSS alpha mask
138
+ (the button keeps its own fill). The mask stretches to the button box, so the
139
+ torn shape always matches the button — it can't overhang neighbours, stretch
140
+ past the button, or block clicks the way the old absolute overlay did
141
+ (BP-5882/BP-5883). */
142
+ .bp-button-paper :deep(button),
143
+ .bp-button-paper :deep(a) {
144
+ -webkit-mask: var(--paper-mask) no-repeat center / 100% 100%;
145
+ mask: var(--paper-mask) no-repeat center / 100% 100%;
146
+ -webkit-mask-mode: alpha;
147
+ mask-mode: alpha;
101
148
  }
102
149
 
103
150
  .bp-icon-brush-left :deep(svg) {
@@ -111,12 +158,16 @@ const brushRightStyle = computed(() => ({
111
158
 
112
159
  .bp-button-arrow,
113
160
  .device-wrapper--mobile .bp-button-arrow {
114
- clip-path: polygon(5% 100%, 0% 50%, 5% 0%, 95% 0%, 100% 50%, 95% 100%);
115
- }
116
-
117
- @media (min-width: 767px) {
118
- .bp-button-arrow {
119
- clip-path: polygon(3% 100%, 0% 50%, 3% 0%, 97% 0%, 100% 50%, 97% 100%);
120
- }
161
+ /* Fixed-px arrowhead (not %) so the chevron is equally sharp at any button
162
+ width — a %-based point collapses on narrow buttons (e.g. the 120px contact
163
+ form submit) and only reads as an arrow on wide ones. */
164
+ clip-path: polygon(
165
+ 12px 100%,
166
+ 0 50%,
167
+ 12px 0,
168
+ calc(100% - 12px) 0,
169
+ 100% 50%,
170
+ calc(100% - 12px) 100%
171
+ );
121
172
  }
122
173
  </style>
@@ -0,0 +1,164 @@
1
+ import { shallowMount } from '@vue/test-utils';
2
+ import ButtonStyleWrapper from './ButtonStyleWrapper.vue';
3
+
4
+ // The three decorative styles that ONLY render via this wrapper (BP-5546).
5
+ const BRUSHSTROKE = 'BUTTON_STYLE_19';
6
+ const ARROW = 'BUTTON_STYLE_20';
7
+ const PAPER = 'BUTTON_STYLE_21';
8
+
9
+ const HOST_SLOT = '<button class="host-button">Send</button>';
10
+
11
+ const mountWrapper = (props: Record<string, unknown> = {}) =>
12
+ shallowMount(ButtonStyleWrapper, {
13
+ props,
14
+ slots: { default: HOST_SLOT },
15
+ });
16
+
17
+ describe('ButtonStyleWrapper', () => {
18
+ describe('renders the host button (slot) for every style', () => {
19
+ test.each([
20
+ ['no style', undefined],
21
+ ['plain css style', 'BUTTON_STYLE_1'],
22
+ ['brushstroke', BRUSHSTROKE],
23
+ ['arrow', ARROW],
24
+ ['paper', PAPER],
25
+ ])('%s', (_label, selectedButtonStyleId) => {
26
+ const wrapper = mountWrapper({ selectedButtonStyleId });
27
+
28
+ expect(wrapper.find('button.host-button').exists()).toBe(true);
29
+ });
30
+ });
31
+
32
+ describe('decorative styles draw their SVG decoration', () => {
33
+ test('brushstroke (19) renders flanking brush ends', () => {
34
+ const wrapper = mountWrapper({ selectedButtonStyleId: BRUSHSTROKE });
35
+
36
+ expect(wrapper.classes()).toEqual(
37
+ expect.arrayContaining(['tw-flex', 'tw-justify-center']),
38
+ );
39
+ expect(wrapper.find('.bp-icon-brush-left').exists()).toBe(true);
40
+ expect(wrapper.find('.bp-icon-brush-right').exists()).toBe(true);
41
+ });
42
+
43
+ test('arrow (20) clips the button into a chevron', () => {
44
+ const wrapper = mountWrapper({ selectedButtonStyleId: ARROW });
45
+
46
+ expect(wrapper.classes()).toContain('bp-button-arrow');
47
+ });
48
+
49
+ test('paper (21) clips the button to a torn silhouette via a mask', () => {
50
+ const wrapper = mountWrapper({ selectedButtonStyleId: PAPER });
51
+
52
+ // Masked button — not absolute overlay elements (BP-5882/BP-5883).
53
+ expect(wrapper.classes()).toEqual(
54
+ expect.arrayContaining(['bp-button-paper', 'tw-mb-6']),
55
+ );
56
+ expect(wrapper.find('.bp-button-paper-top').exists()).toBe(false);
57
+ expect(wrapper.find('.bp-button-paper-bottom').exists()).toBe(false);
58
+ // The torn mask is supplied to the button via a CSS variable.
59
+ expect(wrapper.attributes('style')).toContain('--paper-mask');
60
+ });
61
+ });
62
+
63
+ describe('submit buttons render decorative styles flush (BP-5800)', () => {
64
+ test.each([BRUSHSTROKE, ARROW, PAPER])(
65
+ '%s gets the no-margin class + wrapper top margin when noMargin is set',
66
+ (selectedButtonStyleId) => {
67
+ const wrapper = mountWrapper({ selectedButtonStyleId, noMargin: true });
68
+
69
+ // The top gap moves onto the wrapper so the decoration stays synced;
70
+ // the CSS zeroes the host button's own margins.
71
+ expect(wrapper.classes()).toContain('bp-style-wrapper--no-margin');
72
+ expect(wrapper.classes()).toContain('tw-mt-4');
73
+ },
74
+ );
75
+
76
+ test('paper drops its bottom margin when noMargin is set', () => {
77
+ const wrapper = mountWrapper({
78
+ selectedButtonStyleId: PAPER,
79
+ noMargin: true,
80
+ });
81
+
82
+ expect(wrapper.classes()).not.toContain('tw-mb-6');
83
+ });
84
+
85
+ test('non-decorative styles never get the no-margin class', () => {
86
+ const wrapper = mountWrapper({
87
+ selectedButtonStyleId: 'BUTTON_STYLE_1',
88
+ noMargin: true,
89
+ });
90
+
91
+ expect(wrapper.classes()).not.toContain('bp-style-wrapper--no-margin');
92
+ });
93
+ });
94
+
95
+ describe('disabled dimming (BP-5800)', () => {
96
+ test('dims non-decorative buttons when disabled', () => {
97
+ const wrapper = mountWrapper({
98
+ selectedButtonStyleId: 'BUTTON_STYLE_1',
99
+ disabled: true,
100
+ });
101
+
102
+ expect(wrapper.classes()).toContain('tw-opacity-50');
103
+ });
104
+
105
+ test.each([BRUSHSTROKE, ARROW, PAPER])(
106
+ 'dims decorative style %s when disabled (consistent with other styles)',
107
+ (selectedButtonStyleId) => {
108
+ const wrapper = mountWrapper({ selectedButtonStyleId, disabled: true });
109
+
110
+ expect(wrapper.classes()).toContain('tw-opacity-50');
111
+ },
112
+ );
113
+
114
+ test('is not dimmed by default', () => {
115
+ const wrapper = mountWrapper({ selectedButtonStyleId: 'BUTTON_STYLE_1' });
116
+
117
+ expect(wrapper.classes()).not.toContain('tw-opacity-50');
118
+ });
119
+ });
120
+
121
+ describe('non-decorative styles are a layout no-op', () => {
122
+ test.each([
123
+ ['no style', undefined],
124
+ ['css style', 'BUTTON_STYLE_1'],
125
+ ])(
126
+ '%s adds no decoration and no width class',
127
+ (_label, selectedButtonStyleId) => {
128
+ const wrapper = mountWrapper({ selectedButtonStyleId });
129
+
130
+ expect(wrapper.classes()).not.toContain('bp-button-arrow');
131
+ expect(wrapper.find('.bp-icon-brush-left').exists()).toBe(false);
132
+ expect(wrapper.find('.bp-button-paper-top').exists()).toBe(false);
133
+ // Width-neutral: must not force the host's width either way.
134
+ expect(wrapper.classes()).not.toContain('tw-w-full');
135
+ expect(wrapper.classes()).not.toContain('tw-w-fit');
136
+ },
137
+ );
138
+ });
139
+
140
+ describe('width is preserved via the fullWidth prop', () => {
141
+ test.each([BRUSHSTROKE, ARROW, PAPER])(
142
+ '%s stretches full-width when fullWidth (default)',
143
+ (selectedButtonStyleId) => {
144
+ const wrapper = mountWrapper({ selectedButtonStyleId });
145
+
146
+ expect(wrapper.classes()).toContain('tw-w-full');
147
+ expect(wrapper.classes()).not.toContain('tw-w-fit');
148
+ },
149
+ );
150
+
151
+ test.each([BRUSHSTROKE, ARROW, PAPER])(
152
+ '%s shrinks to the host box when fullWidth is false',
153
+ (selectedButtonStyleId) => {
154
+ const wrapper = mountWrapper({
155
+ selectedButtonStyleId,
156
+ fullWidth: false,
157
+ });
158
+
159
+ expect(wrapper.classes()).toContain('tw-w-fit');
160
+ expect(wrapper.classes()).not.toContain('tw-w-full');
161
+ },
162
+ );
163
+ });
164
+ });
@@ -0,0 +1,16 @@
1
+ // The "decorative" button styles — brushstroke / arrow / torn-paper — whose visual
2
+ // is drawn by ButtonStyleWrapper rather than plain CSS. Their banner-like SVG
3
+ // decoration needs the button to be reasonably wide to render legibly, so narrow
4
+ // (w-fit) hosts should widen when one of these is active (BP-5800).
5
+ export const BUTTON_STYLE_BRUSHSTROKE = 'BUTTON_STYLE_19';
6
+ export const BUTTON_STYLE_ARROW = 'BUTTON_STYLE_20';
7
+ export const BUTTON_STYLE_PAPER = 'BUTTON_STYLE_21';
8
+
9
+ export const DECORATIVE_BUTTON_STYLE_IDS = [
10
+ BUTTON_STYLE_BRUSHSTROKE,
11
+ BUTTON_STYLE_ARROW,
12
+ BUTTON_STYLE_PAPER,
13
+ ];
14
+
15
+ export const isDecorativeButtonStyle = (styleId?: string): boolean =>
16
+ !!styleId && DECORATIVE_BUTTON_STYLE_IDS.includes(styleId);
@@ -0,0 +1,8 @@
1
+ // Torn-paper button mask (BP-5882/BP-5883). Derived from the fe-shared-lib
2
+ // `button-paper` icon: `preserveAspectRatio="none"` so it stretches to the button
3
+ // box, and white fills so the silhouette is visible in either luminance or alpha
4
+ // mask-mode. Applied as a CSS mask on the button so the torn shape IS the button
5
+ // (no absolute overlay) — it cannot overhang neighbours, stretch past the button,
6
+ // or block clicks.
7
+ // TODO(perf): serve as a static asset instead of an inline data URI before ship.
8
+ export const PAPER_BUTTON_MASK = `data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgOTQgMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+DSA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTQ5OF8xNDQ2NCkiPg0gPHBhdGgNIGQ9Ik0wIDIuMDAwMDNWMS45NDg0TDEuMDU3ODMgMS43NjkzNEMxLjcyMzg4IDEuOTQxNSAxLjg0MTQxIDEuNTQ1NTQgMi41MjMxMyAxLjczODM2QzIuODYwMDcgMi4wMDAwMyAzLjIwNDg0IDEuNzM0OTEgMy41NDk2MiAxLjg4NjQxQzMuODk0MzkgMi4xNTQ5NyA0LjA1MTExIDEuMzM1NTEgNC4zOTU4OSAxLjMxMTQxQzQuNzQwNjYgMS4zNDU4NCA1LjA4NTQ0IDEuMDc3MjggNS40MzAyMSAxLjE3MzY5QzUuNzc0OTkgMS4xNTk5MiA2LjExOTc2IDAuOTE4ODk5IDYuNDcyMzcgMS4zMzU1MUM2LjgxNzE1IDEuMjczNTQgNy4xNjk3NiAxLjE4NDAyIDcuNTE0NTMgMS40MjE1OUM3Ljg1OTMxIDEuNTg2ODYgOC4yMTE5MiAxLjQzMTkyIDguNTU2NyAxLjM3NjgzQzguNzI5MDggMS40OTczNCA4LjkwOTMxIDEuNjY5NDkgOS4wODE2OSAxLjU0NTU0QzkuMjU0MDggMS42ODY3MSA5LjQzNDMxIDEuNTI0ODggOS42MDY2OSAxLjI1OTc3QzkuOTU5MyAwLjkzMjY3MiAxMC4zMDQxIDEuNDMxOTIgMTAuNjU2NyAxLjI5NzY0QzExLjM1NDEgMS40OTA0NSAxMi4wNTE1IDEuNDg3MDEgMTIuNzQ4OSAxLjM3NjgzQzEzLjEwMTUgMS43OSAxMy40NDYyIDEuNTQ4OTkgMTMuNzkxIDEuNDUyNThDMTQuMTM1OCAxLjM0OTI5IDE0LjQ4ODQgMS4xODA1NyAxNC44MzMyIDEuMzE4M0MxNS4xNzc5IDEuMzYzMDYgMTUuNTMwNiAxLjIwNDY4IDE1Ljg3NTMgMS40NTI1OEMxNi4yMjAxIDEuNTU1ODcgMTYuNTY0OSAxLjM2MzA2IDE2LjkwOTcgMS4zMTQ4NkMxNy4yNTQ0IDEuNTQ4OTkgMTcuNTk5MiAxLjA1NjYyIDE3Ljk0NCAxLjE2MzM2QzE4LjI4ODggMC42OTE2NTUgMTguNjI1NyAxLjI5NzY0IDE4Ljk3MDUgMS4yMTg0NUMxOS4zMDc0IDEuMTc3MTMgMTkuNjUyMiAxLjY2MjYxIDE5Ljk4OTEgMS4zODAyN0MyMC4xNjE1IDEuNjA3NTIgMjAuMzI2MSAxLjY2NjA1IDIwLjQ5ODUgMS40NDU2OUMyMC42NzA4IDEuMzM4OTYgMjAuODM1NCAxLjQ2MjkxIDIwLjk5OTkgMS4xOTA5QzIxLjMzNjkgMC45ODc3NjEgMjEuNjczOCAwLjg2NzI1MyAyMi4wMDI5IDEuMjgzODdDMjIuMTY3NSAxLjQyODQ4IDIyLjMzMiAxLjY1OTE2IDIyLjUwNDQgMS40NzMyNEMyMi41OTA2IDEuMzk3NDkgMjIuNjY5IDEuMzYzMDYgMjIuNzU1MiAxLjMxNDg2QzIyLjg0MTQgMS4yNDk0NCAyMi45MTk3IDEuMTM5MjYgMjMuMDA1OSAxLjA2MzUxQzIzLjY2NDEgMC45NjM2NiAyNC4zMTQ1IDEuMTM1ODEgMjQuOTY0OSAxLjAwODQyQzI1LjIxNTYgMS4zMzU1MSAyNS40NjY0IDEuMDk0NSAyNS43MTcxIDEuMDQ5NzRDMjUuOTY3OCAwLjk0MzAwMSAyNi4yMjY0IDAuODEyMTY0IDI2LjQ4NSAwLjkyNTc4NkMyNi43NDM2IDAuODc3NTgyIDI3LjAwMjIgMC45NjAyMTcgMjcuMjY4NiAwLjc1NzA3NEMyNy41MzUgMC42Njc1NTQgMjcuODAxNCAwLjczMjk3MyAyOC4wNjc4IDAuODg0NDY5QzI4LjQyMDUgMC41NzgwMzMgMjguNzY1MiAwLjg0MzE1MSAyOS4xMDIyIDAuNzQ2NzQ1QzI5LjQzOTEgMC45MTIwMTMgMjkuNzc2IDAuNzkxNTA1IDMwLjEwNTIgMC45MzI2NzJDMzAuNDM0MyAxLjE1OTkyIDMwLjc1NTUgMC45NjAyMTYgMzEuMDc2OCAxLjEzMjM3QzMxLjIzMzUgMS4xNzAyNSAzMS4zOTgxIDEuMjIxODkgMzEuNTU0OCAxLjI2NjY1QzMxLjcxMTUgMS4xODc0NiAzMS44NjgyIDEuMjUyODggMzIuMDI0OSAxLjA2Njk1QzMyLjIzNjUgMC44NTM0ODEgMzIuNDQwMiAxLjA5Nzk0IDMyLjY0MzkgMS4wMDg0MkMzMi44NDc3IDEuMjU2MzIgMzMuMDUxNCAwLjk3MDU0NiAzMy4yNTUxIDEuMTkwOUMzMy40NTg5IDEuNDc2NjggMzMuNjYyNiAxLjQ1OTQ2IDMzLjg2NjMgMS4yMjE4OUMzMy45NjgyIDAuNzk4MzkxIDM0LjA3MDEgMS4wMDg0MiAzNC4xNzE5IDEuMDk3OTRDMzQuMjczOCAxLjEwODI3IDM0LjM3NTcgMS4yMTg0NSAzNC40Nzc1IDEuMjk3NjRDMzQuNjgxMyAxLjU1MjQzIDM0Ljg4NSAxLjYxNDQgMzUuMDgwOSAxLjQzNTM2QzM1LjI4NDYgMS4zODcxNiAzNS40ODgzIDEuMjYzMjEgMzUuNjkyMSAxLjM5NzQ5QzM1Ljc5MzkgMS40MzUzNiAzNS44OTU4IDEuMzkwNiAzNS45OTc3IDEuMzU5NjJDMzYuMDk5NSAxLjU2NjIgMzYuMjAxNCAxLjU5Mzc1IDM2LjMwMzMgMS41ODY4NkMzNi41MDcgMS4xNjMzNiAzNi43MTA3IDEuNjc5ODIgMzYuOTIyMyAxLjQ2NjM1QzM3LjEyNiAxLjA2MDA3IDM3LjMzNzYgMS43NTkwMSAzNy41NDEzIDEuNjEwOTZDMzcuNjQzMiAxLjU0MjEgMzcuNzUyOSAxLjc0ODY4IDM3Ljg1NDggMS43NjU5QzM3Ljk1NjYgMS44MjA5OSAzOC4wNjYzIDEuNzcyNzkgMzguMTY4MiAxLjQxNDdDMzguMzc5OCAxLjMyODYzIDM4LjU5MTMgMS4yMzkxMSAzOC44MTA3IDEuMjU5NzdDMzkuMDMwMSAxLjExMTcxIDM5LjI0MTcgMS40NTYwMiAzOS40NjExIDEuNDY2MzVDMzkuNjQxMyAxLjE4MDU3IDM5LjgyMTUgMS40NDU2OSAzOS45ODYxIDEuMjAxMjNDNDAuMDcyMyAxLjAyOTA4IDQwLjE1MDYgMS4yNDU5OSA0MC4yMzY4IDEuMzMyMDdDNDAuMzE1MiAxLjQ4MzU3IDQwLjQwMTQgMS41NDU1NCA0MC40Nzk4IDEuMjU5NzdDNDAuNjM2NSAxLjE1MzAzIDQwLjc5MzIgMS4xMjU0OCA0MC45NDIxIDEuMzkwNkM0MS4wOTA5IDEuNDc2NjggNDEuMjM5OCAxLjM4MDI3IDQxLjM4MDkgMS4yOTQyQzQxLjQ1MTQgMS4wMzI1MiA0MS41Mjk3IDEuMjk0MiA0MS42MDAzIDEuMjMyMjJDNDEuNjcwOCAxLjQ1NjAyIDQxLjc0OTIgMS42MzUwNiA0MS44MTk3IDEuNTE4QzQxLjg5MDIgMS42NjI2MSA0MS45Njg2IDEuMzAxMDggNDIuMDM5MSAxLjY0MTk1QzQyLjEwOTYgMS42Njk0OSA0Mi4xODggMS41NjI3NiA0Mi4yNTg1IDEuMzMyMDdDNDIuNDA3NCAxLjQ0NTY5IDQyLjU2NDEgMS4wMDQ5OCA0Mi43MjA4IDEuMzgzNzJDNDIuNzk5MSAxLjQ4NzAxIDQyLjg3NzUgMS4yMTE1NiA0Mi45NjM3IDEuMTYzMzZDNDMuMDQyMSAxLjAyMjE5IDQzLjEyODMgMC45NTY3NzQgNDMuMjE0NCAxLjA5Nzk0QzQzLjI4NSAxLjAwNDk4IDQzLjM0NzcgMS4zNjk5NCA0My40MTgyIDEuMTg3NDZDNDMuNDQ5NSAxLjE2NjggNDMuNDg4NyAxLjI5MDc1IDQzLjUyIDEuMjczNTRDNDMuNTM1NyAxLjEyODkzIDQzLjU1MTQgMS4wOTc5NCA0My41NzQ5IDEuMDkxMDVDNDMuNTkwNiAxLjExODYgNDMuNjA2MiAxLjE0OTU5IDQzLjYyOTcgMC44ODQ0NjlDNDMuNzAwMyAwLjY0MDAwOSA0My43NzA4IDAuNzI2MDg2IDQzLjgzMzUgMC42NTAzMzhDNDMuODY0OCAwLjQ1NDA4MiA0My45MDQgMC4zNTA3ODkgNDMuOTM1MyAwLjU0MDE1OUM0My45NjY3IDAuNDM2ODY3IDQ0LjAwNTkgMC42NzA5OTcgNDQuMDM3MiAwLjg0NjU5NEM0NC4xNzgzIDAuODAxODM0IDQ0LjMxOTMgMS4wMjIxOSA0NC40NTI1IDEuMDQyODVDNDQuNTkzNSAxLjE2NjggNDQuNzM0NiAxLjA5NDUgNDQuODc1NiAwLjk5NDY0OEM0NS40Mzk4IDAuOTgwODc1IDQ2LjAxOTcgMS4wMzk0MSA0Ni41OTk1IDEuMDE4NzVDNDYuNjM4NyAwLjg3NDEzOSA0Ni42NyAwLjcwODg3MSA0Ni43MDkyIDAuNjY3NTU0QzQ2Ljc0ODQgMC42ODgyMTIgNDYuNzc5NyAwLjYzMzEyMyA0Ni44MTg5IDAuNzk4MzkxQzQ2Ljg1ODEgMC41NzgwMzMgNDYuODg5NCAwLjUyOTgzIDQ2LjkyODYgMC42NDY4OTVDNDYuOTY3OCAwLjY2NDExMSA0Ni45OTkxIDAuOTM2MTE1IDQ3LjAzODMgMC45MjkyMjlDNDcuMTA4OCAxLjA1NjYyIDQ3LjE4NzIgMC44NDY1OTQgNDcuMjU3NyAxLjAzMjUyQzQ3LjMyODIgMC44ODc5MTIgNDcuNDA2NiAxLjA3Mzg0IDQ3LjQ3NzEgMS4xODA1N0M0Ny43NzQ5IDEuMzgzNzIgNDguMDcyNiAxLjE1OTkyIDQ4LjM3MDQgMS4wNzM4NEM0OC40NDg4IDAuOTUzMzMgNDguNTE5MyAwLjkzNjExNSA0OC41OTc2IDAuODA4NzIxQzQ4LjY3NiAwLjcxMjMxNCA0OC43NDY1IDAuNzU3MDc0IDQ4LjgyNDkgMC44Mzk3MDhDNDguOTczOCAwLjc3NDI5IDQ5LjEyMjYgMC43OTQ5NDggNDkuMjc5NCAxLjAyMjE5QzQ5LjU4NSAxLjM0OTI5IDQ5Ljg4MjcgMS4wMDg0MiA1MC4xODgzIDEuMTYzMzZDNTAuNzk5NSAxLjE5Nzc5IDUxLjQxMDcgMS4yOTc2NCA1Mi4wMjk3IDEuMjQyNTVDNTIuMzM1MyAxLjAzOTQxIDUyLjY0ODcgMC45NjM2NiA1Mi45NjIyIDEuMTczNjlDNTMuMTE4OSAxLjA4MDcyIDUzLjI3NTYgMS4xMTE3MSA1My40MzIzIDEuMTc3MTNDNTMuNTg5IDEuMjA4MTIgNTMuNzQ1OCAxLjM4NzE2IDUzLjkwMjUgMS4zNTYxN0M1NC4yMTU5IDEuMTcwMjUgNTQuNTI5NCAxLjM4NzE2IDU0Ljg0MjggMS4yNzM1NEM1NC45OTk1IDEuNTQ1NTQgNTUuMTU2MiAxLjIwODEyIDU1LjMxMjkgMS4xNjY4QzU1LjM5MTMgMC45Nzc0MzIgNTUuNDY5NiAxLjMzODk2IDU1LjU0OCAxLjE1OTkyQzU1LjYyNjQgMS4yNTI4OCA1NS43MDQ3IDEuNDgwMTIgNTUuNzgzMSAxLjQxNDdDNTYuMDk2NSAxLjM4NzE2IDU2LjQwOTkgMS41MTExMSA1Ni43MjM0IDEuNTQ1NTRDNTcuMDM2OCAxLjU4Njg2IDU3LjM1MDIgMS41ODM0MiA1Ny42NjM3IDEuNDE4MTVDNTguMDE2MyAxLjI4Mzg3IDU4LjM1MzIgMS4xMjU0OCA1OC42ODIzIDEuMjMyMjJDNTkuMDExNCAxLjIzOTExIDU5LjM0MDUgMS4zMTQ4NiA1OS42NTQgMS4zNTYxN0M1OS44MTA3IDEuMjE1MDEgNTkuOTY3NCAxLjE3MzY5IDYwLjEyNDEgMS4wODA3MkM2MC4yODA4IDEuMjA4MTIgNjAuNDM3NSAwLjkyOTIyOSA2MC41ODY0IDEuMTczNjlDNjAuODkyIDEuNDU2MDIgNjEuMTk3NiAxLjMzODk2IDYxLjQ5NTQgMS4yMDgxMkM2MS43OTMxIDEuMTczNjkgNjIuMDkwOSAxLjAyOTA4IDYyLjM4ODcgMC45Nzc0MzJDNjIuNjg2NCAwLjkwNTEyNyA2Mi45NzYzIDAuOTg3NzYxIDYzLjI3NDEgMS4wMzI1MkM2My41NjQgMS4yNTk3NyA2My44NjE4IDEuMjA4MTIgNjQuMTU5NiAxLjEyMjA0QzY0LjQ1NzMgMS4xOTc3OSA2NC43NTUxIDEuMDgwNzIgNjUuMDUyOCAwLjg4MTAyNUM2NS42NTYyIDAuOTM5NTU4IDY2LjI2NzQgMC42NDAwMDkgNjYuOTA5OSAwLjc1NzA3NEM2Ny4yMzEyIDAuNTE5NTAxIDY3LjU1MjQgMC43MDU0MjggNjcuODg5NCAwLjY3MDk5N0M2OC4yMjYzIDAuNjY3NTU0IDY4LjU2MzMgMC43MTIzMTQgNjguOTE1OSAwLjcwMTk4NUM2OS4yMDU4IDAuODUzNDgxIDY5LjQ5NTcgMC42ODQ3NjkgNjkuNzc3OCAwLjYxNTkwN0M2OS45MTg5IDAuNjQzNDUyIDcwLjA1OTkgMC40OTE5NTYgNzAuMjAwOSAwLjQ0NzE5NkM3MC4zNDIgMC40MzM0MjMgNzAuNDc1MiAwLjUwMjI4NSA3MC42MTYyIDAuNzgxMTc2QzcwLjg5MDUgMS4xNDI3IDcxLjE1NjkgMC44MjI0OTMgNzEuNDIzMyAwLjkzMjY3MkM3MS42ODk3IDAuOTQzMDAxIDcxLjk1NjIgMC45NzA1NDYgNzIuMjE0OCAwLjgwMTgzNEM3Mi40NzMzIDAuOTIyMzQyIDcyLjczMTkgMS4xNjY4IDcyLjk5MDUgMS4wNjAwN0M3My4yNDkxIDEuMDYwMDcgNzMuNDk5OCAxLjI2NjY1IDczLjc1MDYgMC45MTU0NTZDNzMuODc1OSAwLjk2NzEwMyA3NC4wMDEzIDAuNjE1OTA3IDc0LjEyNjcgMC44MTkwNUM3NC4yNTIxIDAuNzY3NDAzIDc0LjM3NzQgMS4yMDgxMiA3NC41MDI4IDEuMDU2NjJDNzQuNzUzNSAxLjMxMTQxIDc1LjAwNDMgMS4xOTQzNSA3NS4yNTUgMS4wMzk0MUM3NS43NTY1IDAuNzg0NjE5IDc2LjI2NTkgMS4xMTUxNiA3Ni43NzUyIDEuMTQ2MTRDNzcuMjkyMyAwLjkwNTEyNyA3Ny44MDk1IDEuMDQ5NzQgNzguMzQyMyAxLjI3Njk4Qzc4LjUzMDQgMS40MzE5MiA3OC43MTA2IDEuMjMyMjIgNzguODk4NyAxLjQwMDkzQzc5LjA4NjggMS40NjI5MSA3OS4yNzQ4IDEuMjMyMjIgNzkuNDYyOSAxLjIyMTg5Qzc5LjY1MDkgMS4xNzM2OSA3OS44MzkgMS4yNDU5OSA4MC4wMjcgMS4zOTc0OUM4MC4yMTUxIDEuNTc5OTcgODAuNDAzMiAxLjQ3NjY4IDgwLjU5MTIgMS4zOTc0OUM4MC45NjczIDEuNjU5MTYgODEuMzUxMyAxLjMzNTUxIDgxLjczNTIgMS4zODAyN0M4Mi4xMTkyIDEuMzIxNzQgODIuNTAzMiAxLjcxNzcgODIuODg3MSAxLjQxNDdDODMuMjcxMSAxLjE0NjE0IDgzLjY1NSAxLjY3NjM4IDg0LjA0NjggMS4zMjE3NEM4NC40MzA4IDEuMTk3NzkgODQuODIyNiAxLjM4NzE2IDg1LjIxNDMgMS40MTQ3Qzg1Ljk5MDEgMS41MjQ4OCA4Ni43NzM3IDEuMjYzMjEgODcuNTY1MSAxLjMzNTUxQzg3Ljk1NjkgMS4yMDEyMyA4OC4zNDg3IDEuNjQ1MzkgODguNzQ4MyAxLjMzNTUxQzg5LjE0MDEgMS41MzE3NyA4OS41Mzk3IDEuNDM4ODEgODkuOTMxNSAxLjIzMjIyQzkwLjMzMTEgMS4wMzI1MiA5MC43MjI5IDEuMzIxNzQgOTEuMTIyNSAxLjA5MTA1QzkxLjUyMjIgMS4zMTQ4NiA5MS45MTQgMC45NDk4ODcgOTIuMzEzNiAxLjEyMjA0QzkyLjUwOTUgMC45MDg1NyA5Mi43MTMyIDAuOTI1Nzg2IDkyLjkwOTEgMC44OTQ3OThDOTMuMTA1IDEuMDI5MDggOTMuMzA4NyAwLjg2NzI1MyA5My41MDQ2IDAuOTc3NDMyQzkzLjkwNDIgMS4wMTE4NiA5NC4zMDM5IDEuMTA0ODMgOTQuNjk1NyAwLjk4NDMxOEM5NS4wOTUzIDAuODU2OTI0IDk1LjQ5NDkgMS4yMDEyMyA5NS44ODY3IDAuODUzNDgxQzk2LjI4NjMgMC43NDY3NDUgOTYuNjg2IDAuNjk4NTQyIDk3LjA3NzcgMC44Mzk3MDhDOTcuMzk5IDAuODcwNjk2IDk3LjcxMjQgMC45NTY3NzMgOTguMDMzNyAxLjAzMjUyQzk4LjE5MDQgMC45NDk4ODcgOTguMzU1IDAuOTIyMzQzIDk4LjUxMTcgMC44MjI0OTNDOTguNjY4NCAwLjY0Njg5NSA5OC44MzMgMC41NjQyNjEgOTguOTg5NyAwLjcyNjA4NkM5OS4zMTEgMC42MTkzNTEgOTkuNjI0NCAwLjQxNjIwOCA5OS45Mzc4IDAuNTU3Mzc1QzEwMC4yNTEgMC43NDY3NDUgMTAwLjU3MyAwLjM5NTU0OSAxMDAuODg2IDAuNjE1OTA3QzEwMS41MjEgMC4zNjgwMDUgMTAyLjE0OCAwLjQwMjQzNiAxMDIuNzc0IDAuNTI2Mzg3QzEwMy40MDEgMC42MTkzNTEgMTA0LjAyOCAwLjI4NTM3IDEwNC42NTUgMC40Mjk5OEMxMDQuOTY4IDAuNDc4MTg0IDEwNS4yNzQgMC4yNzUwNDEgMTA1LjU4NyAwLjIyNjgzOEMxMDUuOTAxIDAuMTI2OTg4IDEwNi4yMDYgMC4xNjE0MTkgMTA2LjUxMiAwLjM4MTc3N0MxMDYuNjY5IDAuNjE5MzUxIDEwNi44MTggMC42NjQxMSAxMDYuOTc0IDAuNzE1NzU3QzEwNy4xMzEgMC43Mzk4NTkgMTA3LjI4IDAuNTYwODE4IDEwNy40MzcgMC40NzQ3NEMxMDcuNzQyIDAuMzUwNzg5IDEwOC4wNDggMC43NzA4NDcgMTA4LjM1MyAwLjMyMzI0NUMxMDguNjU5IDAuNDQzNzUzIDEwOC45NjUgLTAuMDAwNDA2MjUzIDEwOS4yNjIgMC4xODg5NjRDMTA5LjQxMSAwLjAzNDAyNDcgMTA5LjU2OCAwLjA0MDkxMDggMTA5LjcxNyAwLjA5OTQ0MzRDMTA5Ljg2NiAwLjA4OTExNDEgMTEwLjAyMiAwLjIwOTYyMyAxMTAuMTcxIDAuMzA5NDcyQzExMC4yNSAwLjMzNzAxNyAxMTAuMzIgMC4zMDYwMjkgMTEwLjM5OSAwLjI3MTU5OEMxMTAuNDc3IDAuMTgyMDc4IDExMC41NDcgMC4wODU2NzExIDExMC42MjYgMC4wMjAyNTI0QzExMC43NzUgLTAuMDgzMDQwNCAxMTAuOTI0IDAuMjQ3NDk2IDExMS4wNzIgMC4xNTc5NzZDMTExLjIyMSAwLjIwNjE3OSAxMTEuMzcgMC4zODUyMiAxMTEuNTE5IDAuMjY0NzEyQzExMS42NjggMC4zNjQ1NjIgMTExLjgxNyAwLjAzMDU4MTYgMTExLjk2NiAwLjMzMzU3NEMxMTIuMjY0IDAuNjk1MDk4IDExMi41NTMgMC41NDAxNTkgMTEyLjg1MSAwLjQ0NzE5NkMxMTMuMTQxIDAuNDY3ODU0IDExMy40MzkgMC41MjI5NDQgMTEzLjcyOSAwLjM5MjEwNkMxMTQuMDE5IDAuMTA2MzMgMTE0LjMwOSAwLjQ2NDQxMSAxMTQuNTk5IDAuMzMwMTMxQzExNC44ODkgMC41NjQyNjEgMTE1LjE3MSAwLjI4MTkyNyAxMTUuNDYxIDAuNDk1Mzk5QzExNS43MTkgMC40OTUzOTkgMTE1Ljk3IDAuNTE2MDU3IDExNi4yMjEgMC41NzExNDdDMTE2LjQ3MSAwLjMxNjM1OCAxMTYuNzE0IDAuOTgwODc1IDExNi45NTcgMC42MTI0NjRDMTE3LjA3NSAwLjE0NDIwNCAxMTcuMiAwLjQ2MDk2OCAxMTcuMzE4IDAuNDI2NTM3QzExNy4zOCAwLjM2MTExOSAxMTcuNDM1IDAuMjYxMjY5IDExNy40OTggMC4zNTQyMzJDMTE3LjU2MSAwLjU4NDkyIDExNy42MTUgMC41MTYwNTggMTE3LjY3OCAwLjYzNjU2NkMxMTcuOTEzIDAuNTc4MDMzIDExOC4xNDggMC45MjkyMjkgMTE4LjM4MyAwLjc2NzQwM0MxMTguNjE4IDAuNjU3MjI1IDExOC44NDYgMC45OTQ2NDcgMTE5LjA4MSAwLjc3NDI4OUMxMTkuMTk4IDAuOTYwMjE2IDExOS4zMTYgMC42MzMxMjMgMTE5LjQzMyAwLjU3ODAzM0MxMTkuNTUxIDAuNjk1MDk4IDExOS42NjggMC40MzM0MjMgMTE5Ljc4NiAwLjkxODg5OUMxMjAuMjU2IDEuMDI1NjQgMTIwLjcyNiAxLjA5MTA1IDEyMS4yMTIgMS4wNTY2MkMxMjEuMzM3IDEuNDQ1NjkgMTIxLjQ1NSAxLjI0OTQ0IDEyMS41OCAxLjM3NjgzQzEyMS43MDYgMS40MjE1OSAxMjEuODMxIDEuMzgzNzIgMTIxLjk1NiAxLjI1Mjg4QzEyMi4wODIgMC43ODQ2MTkgMTIyLjIwNyAxLjA4MDcyIDEyMi4zNCAxLjAwNDk4QzEyMi40NjYgMC43OTE1MDUgMTIyLjU5OSAxLjA4MDcyIDEyMi43MzIgMS4xNjY4QzEyMi45OTkgMS4xODc0NiAxMjMuMjY1IDEuMzY2NSAxMjMuNTM5IDEuNDA0MzhDMTIzLjgxNCAxLjQ5NzM0IDEyNC4wOTYgMS40MDc4MiAxMjQuMzkzIDEuMjI4NzhDMTI0LjU0MiAxLjQ4MzU3IDEyNC42OTEgMS41Njk2NCAxMjQuODQgMS40MzE5MkMxMjQuOTg5IDEuNjY2MDUgMTI1LjEzOCAxLjYwNDA3IDEyNS4yNzkgMS4yMTg0NUMxMjUuNTY5IDAuOTI1Nzg2IDEyNS44NTkgMS42MzE2MiAxMjYuMTQxIDEuMjExNTZDMTI2LjcwNSAxLjUyNDg4IDEyNy4yNDYgMS4xMzIzNyAxMjcuNzcxIDEuMTczNjlDMTI4LjAyOSAxLjE1NjQ3IDEyOC4yODggMS4wNTY2MiAxMjguNTM4IDEuMjUyODhDMTI4Ljc4OSAxLjA4NDE3IDEyOS4wNCAxLjI3MDEgMTI5LjI3NSAxLjA0Mjg1QzEyOS41MTggMS4xNDYxNCAxMjkuNzUzIDEuMTQ5NTkgMTI5Ljk4OCAxLjI3MzU0QzEzMC4xMDYgMS4yNDI1NSAxMzAuMjE1IDEuMDg3NjEgMTMwLjMzMyAxLjE4NDAyQzEzMC40NDMgMS4wMzU5NiAxMzAuNTYgMC45OTgwOTEgMTMwLjY3IDAuOTIyMzQzQzEzMS4xMjQgMC41NzgwMzMgMTMxLjYxOCAwLjkxODkgMTMyLjE0MyAwLjc2NzQwM0MxMzIuNDAyIDAuNzgxMTc2IDEzMi42NzYgMC42MTI0NjQgMTMyLjk1IDAuNTk4NjkyQzEzMy4yMjQgMC40ODE2MjcgMTMzLjUwNiAwLjY0MDAwOSAxMzMuNzg4IDAuNjg4MjEyQzEzNC4wNzEgMS4wMzk0MSAxMzQuMzYgMC41OTUyNDkgMTM0LjY1IDAuNTUzOTMyQzEzNC45NCAwLjU2MDgxOCAxMzUuMjMgMC43NTM2MzEgMTM1LjUyOCAwLjY3MDk5N0MxMzUuNjc3IDAuNjQzNDUyIDEzNS44MTggMC42NTcyMjQgMTM1Ljk2NyAwLjQ0Mzc1M0MxMzYuMDM3IDAuMzcxNDQ4IDEzNi4xMTYgMC4xOTkyOTMgMTM2LjE4NiAwLjI4NTM3QzEzNi4yNTcgMC4yNjgxNTUgMTM2LjMzNSAwLjQ2Nzg1NCAxMzYuNDA2IDAuNTIyOTQ0QzEzNi41NTUgMC4yNzE1OTggMTM2LjY5NiAwLjYwOTAyMSAxMzYuODQ0IDAuNDE2MjA4QzEzNi45MTUgMC4yNDc0OTYgMTM2Ljk5MyAwLjEzMDQzMSAxMzcuMDY0IDAuMzk1NTVDMTM3LjEzNCAwLjY0Njg5NSAxMzcuMjEzIDAuNTU3Mzc1IDEzNy4yODMgMC42NzA5OTdDMTM3LjU3MyAwLjgzMjgyMiAxMzcuODYzIDAuNjg0NzY5IDEzOC4xNDUgMC41OTUyNDlDMTM4LjQyNyAwLjQ3NDc0MSAxMzguNzA5IDAuNzkxNTA1IDEzOC45ODQgMC43Mzk4NTlDMTM5LjI1OCAxLjAwMTUzIDEzOS41MjQgMC45NDk4ODcgMTM5Ljc5MSAwLjk5MTIwNEMxNDAuMDQ5IDAuOTYzNjYgMTQwLjMwOCAwLjg4MTAyNSAxNDAuNTUxIDAuODYzODFDMTQwLjYyOSAwLjc2Mzk2IDE0MC43MDcgMC41NDcwNDUgMTQwLjc4NiAwLjU2NDI2MUMxNDAuODY0IDAuNDAyNDM2IDE0MC45NDMgMC4zMzM1NzQgMTQxLjAyOSAwLjY3Nzg4M0MxNDEuMTA3IDAuNTI2Mzg3IDE0MS4xOTMgMC40NjA5NjggMTQxLjI3MiAwLjYzNjU2NkMxNDEuMzExIDAuNjMzMTIzIDE0MS4zNTggMC41NzgwMzMgMTQxLjM5NyAwLjYzNjU2NkMxNDEuNDM2IDAuNTE2MDU4IDE0MS40ODMgMC44NjcyNTMgMTQxLjUyMiAwLjk1MzMzQzE0MS42MzIgMC42OTE2NTUgMTQxLjc1IDAuNzY3NDAzIDE0MS44NjcgMC42OTUwOTlDMTQxLjk4NSAwLjYzNjU2NiAxNDIuMTAyIDAuNjkxNjU1IDE0Mi4yMiAwLjkwNTEyN0MxNDIuNDYzIDEuMDc3MjggMTQyLjcwNiAxLjA4MDcyIDE0Mi45NTYgMS4wNzA0QzE0My40NTggMS4yNjMyMSAxNDMuOTgzIDEuMTg0MDIgMTQ0LjUxNiAxLjA5NDVDMTQ0Ljc4MiAxLjA4NzYxIDE0NS4wNDkgMC45MDg1NyAxNDUuMzE1IDEuMTI4OTNDMTQ1LjQ0OCAxLjIyNTMzIDE0NS41ODEgMS4xNzM2OSAxNDUuNzE1IDEuMjgzODdDMTQ1Ljg0OCAxLjIyNTMzIDE0NS45ODEgMS4yNjY2NSAxNDYuMTA2IDEuMDk0NUMxNDYuNjMxIDEuMzIxNzQgMTQ3LjE0OSAwLjc1MDE4OCAxNDcuNjM0IDEuMDYzNTFDMTQ4LjEyIDEuMDM1OTYgMTQ4LjU4MiAxLjAzMjUyIDE0OS4wMDYgMC45NTY3NzRDMTQ5LjIxNyAwLjgwMTgzNCAxNDkuNDIxIDEuMTE1MTYgMTQ5LjYwOSAxLjE4NzQ2QzE0OS43OTcgMC45MjU3ODYgMTQ5Ljk3NyAxLjEyNTQ5IDE1MC4xMzQgMC44NDMxNTJDMTUwLjI4MyAxLjA2MzUxIDE1MC40MjQgMC44MjkzNzkgMTUwLjU1NyAwLjg4NzkxMUMxNTAuNTg4IDAuNjUwMzM4IDE1MC42MiAwLjc3NzczMyAxNTAuNjUxIDAuNjA1NTc4QzE1MC42ODIgMC42MzY1NjYgMTUwLjcxNCAwLjI4ODgxNCAxNTAuNzQ1IDAuNDc4MTg0QzE1MC43NzYgMC4yNzE1OTggMTUwLjgwOCAwLjM4ODY2MyAxNTAuODM5IDAuNDU0MDgyQzE1MC44NzEgMC41ODQ5MiAxNTAuOTAyIDAuODY3MjUzIDE1MC45MzMgMC42ODEzMjZDMTUxLjE5MiAwLjUwNTcyOCAxNTEuNDU4IDAuNzE5MiAxNTEuODExIDAuNTI2Mzg3QzE1Mi4yMjYgMC40MDU4NzkgMTUyLjY4MSAwLjQzNjg2NyAxNTMuMTU5IDAuNDQwMzFDMTUzLjQwMSAwLjE5NTg1IDE1My42NTIgMC4xNTc5NzYgMTUzLjkwMyAwLjE5NTg1QzE1NC4xNTQgMC4yMjMzOTUgMTU0LjQxMiAwLjQ1NzUyNSAxNTQuNjc5IDAuNDAyNDM2QzE1NC44MTIgMC41ODQ5MTkgMTU0LjkzNyAwLjUxMjYxNSAxNTUuMDcxIDAuNjkxNjU1QzE1NS4yMDQgMC44NDMxNTEgMTU1LjMzNyAwLjQ5NTM5OSAxNTUuNDcgMC41OTUyNDlDMTU1LjczNyAwLjQwOTMyMiAxNTYuMDAzIDAuNDkxOTU2IDE1Ni4yNjkgMC40NzgxODRDMTU2LjUzNiAwLjQwMjQzNiAxNTYuNzk0IDAuNjUwMzM4IDE1Ny4wNjEgMC4zOTIxMDZDMTU3LjMxOSAwLjI3ODQ4NCAxNTcuNTc4IDAuNjE5MzUgMTU3LjgyOSAwLjU3MTE0N0MxNTguMzMgMC41NDM2MDIgMTU4LjgxNiAwLjQ3NDc0IDE1OS4yNTUgMC41NTczNzVDMTU5LjcwMSAwLjI4ODgxMyAxNjAuMTAxIDAuMzc4MzM0IDE2MC40NTQgMC43Mjk1MjlDMTYwLjgwNiAwLjc1MzYzMSAxNjEuMTY3IDAuMTQ3NjQ3IDE2MS41NDMgMC43NjA1MTdDMTYxLjczMSAwLjc5NDk0OCAxNjEuOTI3IDEuMDcwNCAxNjIuMTIzIDAuOTE4ODk5QzE2Mi4yMTcgMS4yMjUzMyAxNjIuMzE5IDAuOTQ5ODg3IDE2Mi40MjEgMC44MzI4MjJDMTYyLjUyMiAwLjgxMjE2NCAxNjIuNjI0IDAuNzk4MzkxIDE2Mi43MjYgMS4wOTEwNUMxNjIuOTMgMS4xNTY0NyAxNjMuMTM0IDAuOTkxMjA0IDE2My4zNDUgMC45MDUxMjdDMTYzLjU1NyAxLjEyMjA0IDE2My43NzYgMS4wMTE4NiAxNjMuOTk1IDEuMTI1NDlDMTY0LjQzNCAxLjMyMTc0IDE2NC44OTcgMC44OTEzNTUgMTY1LjM3NSAwLjkwODU3QzE2NS44NTMgMC44Nzc1ODIgMTY2LjM0NiAxLjE4NDAyIDE2Ni44NzEgMC45ODc3NjFDMTY3LjEzIDAuODI1OTM2IDE2Ny4zOTYgMC44NDMxNTEgMTY3LjY2MyAwLjg0NjU5NEMxNjcuOTI5IDAuNTI2Mzg3IDE2OC4yMTEgMC45MTIwMTMgMTY4LjQ5MyAwLjk4NDMxOEMxNjguNzI4IDEuMTE1MTYgMTY4Ljk2MyAwLjk5ODA5MSAxNjkuMTgzIDAuODEyMTY0QzE2OS40MDIgMS4xNDI3IDE2OS42MjIgMC44MTkwNSAxNjkuODMzIDAuOTU2Nzc0QzE3MC4yNDggMC41NDM2MDMgMTcwLjY0OCAwLjk2MzY2IDE3MS4wMzIgMC44MjU5MzZDMTcxLjIyIDAuODcwNjk2IDE3MS40MTYgMC45NzA1NDYgMTcxLjU5NiAwLjg3MDY5NkMxNzEuNzg0IDAuNTc0NTkgMTcxLjk3MiAxLjE2NjggMTcyLjE1MyAwLjkxMjAxM0MxNzIuNTIxIDAuODEyMTY0IDE3Mi44ODkgMS4xNDYxNCAxNzMuMjczIDAuODYwMzY3QzE3My42NDkgMC43OTE1MDUgMTc0LjA0MSAwLjU3ODAzMyAxNzQuNDQ4IDAuNzYzOTZDMTc0LjY1MiAwLjY5ODU0MiAxNzQuODY0IDAuNzkxNTA1IDE3NS4wNzUgMC43MTkyQzE3NS4yOTUgMC43MTkyIDE3NS41MTQgMC42ODgyMTIgMTc1Ljc0MSAwLjg1MDAzOEMxNzYuMjA0IDAuOTYzNjYgMTc2LjY4MiAwLjYxNTkwNyAxNzcuMTYgMC44MDE4MzRDMTc3LjYzOCAwLjc2NzQwMyAxNzguMTE2IDAuOTI1Nzg2IDE3OC42MDEgMC45OTgwOTFDMTc5LjA4NyAxLjEyODkzIDE3OS41NjUgMC45Mzk1NTggMTgwLjA0MyAxLjA2MzUxQzE4MC41MjEgMC45ODQzMTggMTgwLjk5OSAxLjI3Njk4IDE4MS40NjkgMS4wOTEwNUMxODEuODA2IDEuMjAxMjMgMTgyLjE0MyAxLjQzNTM2IDE4Mi40OCAxLjMzMjA3QzE4Mi44MTcgMS4wMjkwOCAxODMuMTYyIDEuMjg3MzEgMTgzLjQ5OSAxLjE1OTkyQzE4NC4xODEgMS40MzE5MiAxODQuODYyIDAuOTk0NjQ3IDE4NS41NDQgMS4yMjE4OUMxODYuMjI2IDEuMTMyMzcgMTg2LjkxNSAxLjQ2NjM1IDE4Ny42MDUgMS4yMjE4OUMxODcuNzc3IDEuMTIyMDQgMTg3Ljk1IDAuODIyNDkzIDE4OC4xMjIgMS4wNDYyOUMxODguMjk0IDAuODM5NzA4IDE4OC40NjcgMC44ODEwMjYgMTg4LjYzOSAxLjIyODc4QzE4OC45ODQgMS4yMDQ2OCAxODkuMzI5IDEuNDAwOTMgMTg5LjY3MyAxLjMyMTc0QzE5MC4wMTggMS4yMjE4OSAxOTAuMzYzIDAuOTE4OSAxOTAuNzE2IDEuMjExNTZDMTkwLjg4OCAxLjAzMjUyIDE5MS4wNiAxLjE0OTU5IDE5MS4yMzMgMS4yNjY2NUMxOTEuNDA1IDEuNDQ5MTQgMTkxLjU3OCAxLjQ4NzAxIDE5MS43NSAxLjMyMTc0QzE5Mi4wOTUgMS40Mzg4MSAxOTIuNDQ3IDEuNTQyMSAxOTIuNzkyIDEuNTMxNzdDMTkzLjEzNyAxLjU3NjUzIDE5My40ODkgMS41MjgzMyAxOTMuODM0IDEuMzkwNkMxOTQuMDA3IDEuMjE1MDEgMTk0LjE3OSAxLjI3MzU0IDE5NC4zNTkgMS4yNzY5OEMxOTQuNTMyIDEuMzQ5MjkgMTk0LjcxMiAxLjQxODE1IDE5NC44ODQgMS40Mjg0OEMxOTUuMjM3IDEuNDk3MzQgMTk1LjU4MiAxLjQzODgxIDE5NS45MzQgMS40Mjg0OEMxOTYuMjg3IDEuMzExNDEgMTk2LjYzMiAxLjU5MDMgMTk2Ljk4NCAxLjU1NTg3QzE5Ny4zMzcgMS42NzI5NCAxOTcuNjgyIDEuNTQ1NTQgMTk4LjAzNCAxLjQyNTAzQzE5OC4yNjkgMS41OTM3NSAxOTguNTA0IDEuMTg0MDIgMTk4LjczMiAxLjIyODc4QzE5OC45NjcgMS4wODc2MSAxOTkuMjAyIDEuNDkwNDUgMTk5LjQyOSAxLjM5NzQ5QzE5OS44OTkgMS43NDg2OCAyMDAuMzYxIDEuNTE0NTUgMjAwLjgzMiAxLjQzMTkyQzIwMS4wNjcgMS4wMTUzMSAyMDEuMzAyIDEuMzkwNiAyMDEuNTI5IDEuMjU2MzJDMjAxLjc2NCAxLjM0NTg0IDIwMS45OTkgMS4zNTYxNyAyMDIuMjI2IDEuMzk3NDlDMjAyLjQ2MSAxLjEwNDgzIDIwMi42OTcgMS40MTEyNiAyMDIuOTI0IDEuMjE4NDVDMjAzLjE1OSAxLjM1OTYyIDIwMy4zOTQgMS4xNTMwMyAyMDMuNjIxIDEuNDIxNTlDMjAzLjg1NiAxLjI4NzMxIDIwNC4wOTEgMS4yODA0MiAyMDQuMzE5IDEuMjYzMjFDMjA0LjU1NCAxLjAyOTA4IDIwNC43ODkgMS4xNDI3IDIwNS4wMTYgMS40MTEyNkMyMDUuNDc4IDEuNDA3ODIgMjA1Ljk0OCAxLjY1NTcyIDIwNi40MTEgMS4zOTc0OUMyMDYuNzMyIDEuMTgwNTcgMjA3LjA1MyAxLjIyMTg5IDIwNy4zNzQgMS4zNTk2MkMyMDcuNjk2IDEuNTAwNzggMjA4LjAxNyAxLjUzMTc3IDIwOC4zMyAxLjM2NjVDMjA4LjQ4NyAxLjM2NjUgMjA4LjY0NCAxLjUzODY2IDIwOC44MDEgMS40MDc4MkMyMDguOTU3IDEuMjUyODggMjA5LjEwNiAxLjMzNTUxIDIwOS4yNjMgMS4xNjMzNkMyMDkuNTY5IDEuMDYzNTEgMjA5Ljg1OCAwLjk5ODA5MSAyMTAuMTQxIDEuMjgzODdDMjEwLjU2NCAxLjM1MjczIDIxMC45NDggMS4xOTQzNSAyMTEuMyAxLjE4NDAyQzIxMS42NjEgMC45MjIzNDMgMjExLjk5OCAxLjQyODQ4IDIxMi4zMzUgMS4wMzk0MUMyMTIuNDk5IDEuMDY2OTUgMjEyLjY3MSAwLjkzMjY3MiAyMTIuODM2IDAuODMyODIyQzIxMy4wMDggMC43MzI5NzIgMjEzLjE3MyAwLjY2NDExMSAyMTMuMzUzIDAuODIyNDkzQzIxMy43MDYgMC44NzA2OTYgMjE0LjA3NCAwLjc5NDk0OCAyMTQuNDgyIDAuNzgxMTc2QzIxNC43ODcgMC44MTkwNSAyMTUuMTA4IDEuMDY2OTUgMjE1LjQzIDAuOTE4ODk5QzIxNS43NTEgMC42ODgyMTIgMjE2LjA4IDAuNzYzOTYgMjE2LjQwOSAwLjc2MDUxN0MyMTcuMDc1IDAuODg0NDY4IDIxNy43NTcgMC43MjI2NDMgMjE4LjQ0NiAwLjY2NzU1NEMyMTkuMTM2IDAuOTE4OSAyMTkuODMzIDAuNDU3NTI1IDIyMC41MzEgMC42NTcyMjRDMjIwLjg3NiAwLjQ5MTk1NiAyMjEuMjIgMC43MDU0MjggMjIxLjU2NSAwLjU5ODY5MkMyMjEuNzM4IDAuNzI5NTMgMjIxLjkxIDAuOTM5NTU4IDIyMi4wNzQgMC44NTM0ODFDMjIyLjI0NyAxLjExNTE2IDIyMi40MTEgMS4xODA1NyAyMjIuNTg0IDAuODUwMDM4QzIyMi45MjEgMC43ODQ2MTkgMjIzLjI1IDAuNzQ2NzQ1IDIyMy41NzkgMC43OTQ5NDhDMjIzLjkwOCAwLjY0MDAwOSAyMjQuMjI5IDEuMTcwMjUgMjI0LjU0MyAwLjk5MTIwNEMyMjQuODU2IDEuMTgwNTcgMjI1LjE2MiAxLjI2MzIxIDIyNS40NjcgMS4yODA0MkMyMjUuNzY1IDEuMTg0MDIgMjI2LjA1NSAxLjM4NzE2IDIyNi4zMzcgMS4xODc0NkMyMjYuNjgyIDEuNjEwOTYgMjI3LjA1IDEuMzc2ODMgMjI3LjQ0MiAxLjMwNzk3QzIyNy44MzQgMS4zNzMzOSAyMjguMjQxIDEuMzkwNiAyMjguNjQ5IDEuMzgzNzJDMjI5LjA2NCAxLjMwNDUzIDIyOS40NzkgMS44MTQxIDIyOS44OTUgMS41MDA3OEMyMzAuMzAyIDEuMDk0NSAyMzAuNzEgMS43MDA0OCAyMzEuMDkzIDEuMzgzNzJDMjMxLjQ3IDEuNTczMDkgMjMxLjc2IDEuMDA4NDIgMjMyLjAxOCAxLjE3NzEzQzIzMi4xNTEgMS4xMjU0OCAyMzIuMjc3IDEuMTc3MTMgMjMyLjQwMiAwLjk2MDIxNkMyMzIuNTI3IDEuMTI4OTMgMjMyLjY2MSAxLjE5Nzc5IDIzMi43OTQgMS4xMjg5M0MyMzIuODcyIDAuOTg3NzYxIDIzMi45NTggMS4yMjE4OSAyMzMuMDQ1IDEuMTkwOUMyMzMuMTMxIDEuMDYwMDcgMjMzLjIyNSAwLjcyNjA4NiAyMzMuMzExIDEuMDE1MzFDMjMzLjQwNSAwLjY5MTY1NiAyMzMuNDk5IDAuNzAxOTg1IDIzMy42MDEgMC44MzYyNjVDMjMzLjY5NSAwLjc2Mzk2IDIzMy43OTcgMC44NzA2OTYgMjMzLjg5OSAxLjA5MTA1QzIzNC4zMDYgMS4zNjY1IDIzNC43NjEgMC45MDE2ODQgMjM1LjIzMSAwLjkxMjAxM0MyMzUuMzQ4IDAuNzE5MiAyMzUuNDY2IDAuNjQwMDA5IDIzNS41OTEgMC42NDAwMDlDMjM1LjcwOSAwLjcxOTIgMjM1LjgzNCAwLjQ3ODE4NCAyMzUuOTU5IDAuNzQ2NzQ1QzIzNi4yMDIgMC44MDE4MzQgMjM2LjQ1MyAwLjk2NzEwMyAyMzYuNzEyIDAuODM5NzA4QzIzNy4yMjEgMC42MTU5MDcgMjM3LjczOCAxLjA1MzE4IDIzOC4yNTUgMC44NjM4MUMyMzguNTE0IDEuMTExNzEgMjM4Ljc3MyAxLjE2MzM2IDIzOS4wMjMgMS4wNjY5NUMyMzkuMjgyIDEuMDExODYgMjM5LjUzMyAwLjk4MDg3NSAyMzkuNzgzIDAuOTAxNjg0QzI0MC4wMzQgMC44NDMxNTEgMjQwLjI3NyAxLjA3Mzg0IDI0MC41MiAwLjgzMjgyMkMyNDAuNzYzIDEuMTA4MjcgMjQwLjk5OCAwLjkzMjY3MiAyNDEuMjI1IDAuOTcwNTQ2QzI0MS42ODcgMC44NTM0ODEgMjQyLjEyNiAwLjk0OTg4NyAyNDIuNTQ5IDEuMDIyMTlDMjQyLjk3MyAxLjA0Mjg1IDI0My4zNzIgMS4yMjUzMyAyNDMuNzY0IDEuMTg3NDZDMjQzLjk2IDAuOTAxNjg0IDI0NC4xNDggMS4yNDI1NSAyNDQuMzM2IDEuMDM5NDFDMjQ0LjUyNCAxLjE4NDAyIDI0NC43MTIgMS4yMTg0NSAyNDQuODkyIDEuMjkwNzVDMjQ1LjA3MyAxLjU0MjEgMjQ1LjI1MyAxLjkwMzYyIDI0NS40MzMgMS41MTExMUMyNDUuNjA1IDEuMzk0MDUgMjQ1Ljc4NiAxLjM5NzQ5IDI0NS45NTggMS40Njk3OUMyNDYuMzAzIDEuMjgwNDIgMjQ2LjY0IDEuNzA3MzcgMjQ2Ljk2OSAxLjU5MDNDMjQ3LjEzMyAxLjcwMDQ4IDI0Ny4yOTggMS4zMzg5NiAyNDcuNDYyIDEuNTkwM0MyNDcuNjI3IDEuNjkzNiAyNDcuNzg0IDEuOTI0MjggMjQ3Ljk0OCAxLjc3OTY3QzI0OC4xOTkgMS43MDM5MiAyNDguNDU4IDEuMzQ1ODQgMjQ4LjcyNCAxLjY2NjA1QzI0OC45OSAxLjY0NTM5IDI0OS4yNjUgMS41MTggMjQ5LjU0NyAxLjU1NTg3QzI1MC4xMTEgMS4zMzIwNyAyNTAuNjkxIDEuNTQ4OTkgMjUxLjMwMiAxLjM3MzM5QzI1MS43MDkgMS4xNTMwMyAyNTIuMTE3IDEuMjE4NDUgMjUyLjU0IDEuMjczNTRDMjUyLjc1MiAxLjMyNTE4IDI1Mi45NjMgMC45ODA4NzUgMjUzLjE3NSAxLjAzMjUyQzI1My4zODYgMS4wNzA0IDI1My42MDYgMC45ODc3NjEgMjUzLjgxNyAxLjE2NjhDMjU0LjI0OCAxLjQ2OTc5IDI1NC42ODcgMC45MDg1NyAyNTUuMTM0IDEuMTAxMzhDMjU1LjU4IDEuMzAxMDggMjU2LjAyNyAxLjA0NjI5IDI1Ni40NzQgMS4wNjY5NUMyNTYuOTIgMS41NTI0MyAyNTcuMzc1IDAuODE5MDUgMjU3LjgyOSAxLjA2Njk1QzI1OC4yODQgMS4wNjM1MSAyNTguNzM4IDEuMjQ5NDQgMjU5LjE4NSAxLjExMTcxQzI1OS40ODMgMS4yOTQyIDI1OS43NzMgMS4yNzM1NCAyNjAuMDU1IDEuMjMyMjJDMjYwLjM0NSAxLjE5MDkgMjYwLjYyNyAxLjEzMjM3IDI2MC45MDkgMS4yMzkxMUMyNjEuMTkxIDEuNDc2NjggMjYxLjQ3MyAxLjQ5NzM0IDI2MS43NDcgMS41MzUyMUMyNjIuMDI5IDEuNTc2NTMgMjYyLjMwMyAxLjM5NzQ5IDI2Mi41ODYgMS4zNzY4M0MyNjMuMTQyIDEuNTM1MjEgMjYzLjY5OCAxLjQwMDkzIDI2NC4yNyAxLjQ5MDQ1QzI2NC41NiAxLjU2Mjc2IDI2NC44NDIgMS41NTkzMSAyNjUuMTQgMS41NTkzMUMyNjUuNDMgMS40NTYwMiAyNjUuNzM2IDEuMzA0NTMgMjY2LjAzMyAxLjQ4MDEyQzI2Ni4zMTUgMS42MTQ0IDI2Ni41NzQgMS43NDUyNCAyNjYuODI1IDEuNTg2ODZDMjY3LjA3NSAxLjU5NzE5IDI2Ny4zMjYgMS41MTExMSAyNjcuNTY5IDEuMzczMzlDMjY3LjgyIDEuMjk3NjQgMjY4LjA2MyAwLjk0OTg4NyAyNjguMzIxIDEuMzczMzlDMjY4LjQ0NyAxLjUwMDc4IDI2OC41OCAxLjE4NDAyIDI2OC43MTMgMS40OTA0NUMyNjguODQ2IDEuMjkwNzUgMjY4Ljk4NyAxLjQwNzgyIDI2OS4xMjggMS4yNzM1NEMyNjkuNjg1IDEuMjgzODcgMjcwLjE4NiAxLjIzOTExIDI3MC42NDkgMS4zMjE3NEMyNzEuMTExIDEuMjExNTYgMjcxLjU1IDEuMDM5NDEgMjcxLjk1NyAxLjQwNzgyQzI3Mi4xNjEgMS4xMTE3MSAyNzIuMzY1IDEuNDU2MDIgMjcyLjU2OCAxLjQ3MzI0QzI3Mi42NyAxLjczODM2IDI3Mi43NzIgMS4yNzY5OCAyNzIuODY2IDEuMjE1MDFDMjcyLjk2OCAxLjA5NDUgMjczLjA2MiAxLjExNTE2IDI3My4xNjQgMS4xMDgyN0MyNzMuMzYgMC45ODQzMTggMjczLjU2NCAxLjI5MDc1IDI3My43NTkgMS40MTgxNUMyNzMuOTYzIDEuMzQ1ODQgMjc0LjE2NyAxLjE1MzAzIDI3NC4zNzEgMS4yNDU5OUMyNzQuNTgyIDEuNDI4NDggMjc0Ljc5NCAxLjI5NDIgMjc1LjAxMyAxLjM2NjVDMjc1LjIzMyAxLjQ0MjI1IDI3NS40NiAxLjIzOTExIDI3NS42OTUgMS4yNTI4OEMyNzYuMTY1IDEuMzA3OTcgMjc2LjY3NCAxLjA4NDE3IDI3Ny4yMzggMS4yMTg0NUMyNzcuNzk1IDEuMzI1MTggMjc4LjMyOCAxLjM4MDI3IDI3OC44MjkgMS4xOTA5QzI3OS4wOCAxLjEyMjA0IDI3OS4zMzEgMS4xNzcxMyAyNzkuNTc0IDEuMzI1MThDMjc5LjY5OSAxLjM4MzcyIDI3OS44MTYgMS41NTI0MyAyNzkuOTQyIDEuNDE0N0MyODAuMDU5IDEuMzUyNzMgMjgwLjE4NSAxLjQ5MDQ1IDI4MC4zMDIgMS4zNDI0QzI4MC41NDUgMS4xOTA5IDI4MC43OCAxLjA3Mzg0IDI4MS4wMjMgMS4xMTg2QzI4MS4yNjYgMS4yMjUzMyAyODEuNTAxIDEuMDQ5NzQgMjgxLjc0NCAxLjIxNTAxQzI4Mi4yMyAxLjEzNTgxIDI4Mi43MjQgMS43MzgzNiAyODMuMjQxIDEuNjE0NEMyODMuNjY0IDEuODk2NzQgMjg0LjExIDEuMzk3NDkgMjg0LjU1NyAxLjU0MjFDMjg1LjAxMiAxLjUxOCAyODUuNDY2IDEuNDU2MDIgMjg1LjkyOCAxLjU0MjFDMjg2LjE2MyAxLjUzMTc3IDI4Ni4zOTEgMS4zNzY4MyAyODYuNjI2IDEuMzM1NTFDMjg2Ljg2MSAxLjM0MjQgMjg3LjA5NiAxLjEwMTM4IDI4Ny4zMzEgMS40NDkxNEMyODcuNDQ5IDEuMzM1NTEgMjg3LjU2NiAxLjMyMTc0IDI4Ny42ODQgMS4zNjY1QzI4Ny44MDEgMS40MDc4MiAyODcuOTE5IDEuNTA0MjMgMjg4LjAzNiAxLjYwNDA3QzI4OC4yNzEgMS44NTU0MiAyODguNDk5IDEuNDQ5MTQgMjg4LjczNCAxLjU2Mjc2QzI4OS40MzEgMS4zNTYxNyAyOTAuMTI4IDEuNjEwOTYgMjkwLjgyNiAxLjU5MDNDMjkxLjE3OCAxLjYwNDA3IDI5MS41MjMgMS44MTQxIDI5MS44NzYgMS43MzE0N0MyOTIuMjI4IDEuNTY2MiAyOTIuNTczIDEuODM0NzYgMjkyLjkyNiAxLjYyMTI5QzI5My42MjMgMS40OTA0NSAyOTQuMzIxIDEuNjA0MDcgMjk1LjAxOCAxLjY0MTk1QzI5NS4zNzEgMS45ODYyNiAyOTUuNzE1IDEuNzcyNzkgMjk2LjA2OCAxLjgyMDk5QzI5Ni40MjEgMS45MDcwNyAyOTYuNzY1IDEuODAwMzMgMjk3LjExOCAxLjY3OTgyQzI5Ny40NzEgMS44NjkxOSAyOTcuODE1IDEuODIwOTkgMjk4LjE2OCAxLjc0NTI0QzI5OC41MjEgMS42Njk0OSAyOTguODY1IDEuNTc2NTMgMjk5LjIxOCAxLjcxMDgxQzI5OS45MTUgMS45NDE1IDMwMC42MTMgMS41NzY1MyAzMDEuMzEgMS43MzgzNkMzMDEuNTQ1IDEuOTAwMTggMzAxLjc3MiAxLjk3NTkzIDMwMi4wMDcgMS45NDQ5NEMzMDIuMjQzIDEuNzk2ODkgMzAyLjQ3IDIuMDEwMzYgMzAyLjcwNSAxLjc5MzQ0QzMwMi45NCAxLjc2NTkgMzAzLjE2NyAxLjcyMTE0IDMwMy40MDIgMS42MzUwNkMzMDMuNjM3IDEuNTc2NTMgMzAzLjg2NSAxLjcwMzkyIDMwNC4xIDEuNzc5NjdDMzA0LjU2MiAxLjg2MjMxIDMwNS4wMzIgMS41Nzk5NyAzMDUuNDk0IDEuODI0NDNDMzA1Ljk1NyAxLjY0ODg0IDMwNi40MjcgMS44OTMyOSAzMDYuODg5IDEuODE3NTVDMzA3LjM1MSAyLjA4NjExIDMwNy44MjIgMS45MzExNyAzMDguMjg0IDEuODU4ODZDMzA4Ljc0NiAxLjg5Njc0IDMwOS4yMTYgMS45NDQ5NSAzMTAgMS45NzkzOUwwIDEuOTc5MzdWMi4wMDAwM1oiDSBmaWxsPSJ3aGl0ZSINIC8+DSA8L2c+DSA8cmVjdCB5PSIyIiB3aWR0aD0iOTQiIGhlaWdodD0iMjQiIGZpbGw9IndoaXRlIiAvPg0gPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAxXzE0OThfMTQ0NjQpIj4NIDxwYXRoDSBkPSJNMCAyNlYyNi4wNTIxTDEuMDU3ODMgMjYuMjMyOEMxLjcyMzg4IDI2LjA1OTEgMS44NDE0MSAyNi40NTg2IDIuNTIzMTMgMjYuMjY0MUMyLjg2MDA3IDI2IDMuMjA0ODQgMjYuMjY3NSAzLjU0OTYyIDI2LjExNDdDMy44OTQzOSAyNS44NDM2IDQuMDUxMTEgMjYuNjcwNiA0LjM5NTg5IDI2LjY5NDlDNC43NDA2NiAyNi42NjAyIDUuMDg1NDQgMjYuOTMxMiA1LjQzMDIxIDI2LjgzMzlDNS43NzQ5OSAyNi44NDc4IDYuMTE5NzYgMjcuMDkxIDYuNDcyMzcgMjYuNjcwNkM2LjgxNzE1IDI2LjczMzEgNy4xNjk3NiAyNi44MjM1IDcuNTE0NTMgMjYuNTgzN0M3Ljg1OTMxIDI2LjQxNjkgOC4yMTE5MiAyNi41NzMzIDguNTU2NyAyNi42Mjg5QzguNzI5MDggMjYuNTA3MyA4LjkwOTMxIDI2LjMzMzUgOS4wODE2OSAyNi40NTg2QzkuMjU0MDggMjYuMzE2MiA5LjQzNDMxIDI2LjQ3OTUgOS42MDY2OSAyNi43NDdDOS45NTkzIDI3LjA3NzEgMTAuMzA0MSAyNi41NzMzIDEwLjY1NjcgMjYuNzA4OEMxMS4zNTQxIDI2LjUxNDIgMTIuMDUxNSAyNi41MTc3IDEyLjc0ODkgMjYuNjI4OUMxMy4xMDE1IDI2LjIxMTkgMTMuNDQ2MiAyNi40NTUyIDEzLjc5MSAyNi41NTI0QzE0LjEzNTggMjYuNjU2NyAxNC40ODg0IDI2LjgyNjkgMTQuODMzMiAyNi42ODc5QzE1LjE3NzkgMjYuNjQyOCAxNS41MzA2IDI2LjgwMjYgMTUuODc1MyAyNi41NTI0QzE2LjIyMDEgMjYuNDQ4MiAxNi41NjQ5IDI2LjY0MjggMTYuOTA5NyAyNi42OTE0QzE3LjI1NDQgMjYuNDU1MiAxNy41OTkyIDI2Ljk1MiAxNy45NDQgMjYuODQ0M0MxOC4yODg4IDI3LjMyMDMgMTguNjI1NyAyNi43MDg4IDE4Ljk3MDUgMjYuNzg4N0MxOS4zMDc0IDI2LjgzMDQgMTkuNjUyMiAyNi4zNDA1IDE5Ljk4OTEgMjYuNjI1NEMyMC4xNjE1IDI2LjM5NjEgMjAuMzI2MSAyNi4zMzcgMjAuNDk4NSAyNi41NTk0QzIwLjY3MDggMjYuNjY3MSAyMC44MzU0IDI2LjU0MiAyMC45OTk5IDI2LjgxNjVDMjEuMzM2OSAyNy4wMjE1IDIxLjY3MzggMjcuMTQzMSAyMi4wMDI5IDI2LjcyMjdDMjIuMTY3NSAyNi41NzY4IDIyLjMzMiAyNi4zNDQgMjIuNTA0NCAyNi41MzE2QzIyLjU5MDYgMjYuNjA4IDIyLjY2OSAyNi42NDI4IDIyLjc1NTIgMjYuNjkxNEMyMi44NDE0IDI2Ljc1NzQgMjIuOTE5NyAyNi44Njg2IDIzLjAwNTkgMjYuOTQ1MUMyMy42NjQxIDI3LjA0NTggMjQuMzE0NSAyNi44NzIxIDI0Ljk2NDkgMjcuMDAwNkMyNS4yMTU2IDI2LjY3MDYgMjUuNDY2NCAyNi45MTM4IDI1LjcxNzEgMjYuOTU5QzI1Ljk2NzggMjcuMDY2NyAyNi4yMjY0IDI3LjE5ODcgMjYuNDg1IDI3LjA4NEMyNi43NDM2IDI3LjEzMjcgMjcuMDAyMiAyNy4wNDkzIDI3LjI2ODYgMjcuMjU0M0MyNy41MzUgMjcuMzQ0NiAyNy44MDE0IDI3LjI3ODYgMjguMDY3OCAyNy4xMjU3QzI4LjQyMDUgMjcuNDM1IDI4Ljc2NTIgMjcuMTY3NCAyOS4xMDIyIDI3LjI2NDdDMjkuNDM5MSAyNy4wOTc5IDI5Ljc3NiAyNy4yMTk1IDMwLjEwNTIgMjcuMDc3MUMzMC40MzQzIDI2Ljg0NzggMzAuNzU1NSAyNy4wNDkzIDMxLjA3NjggMjYuODc1NkMzMS4yMzM1IDI2LjgzNzMgMzEuMzk4MSAyNi43ODUyIDMxLjU1NDggMjYuNzQwMUMzMS43MTE1IDI2LjgyIDMxLjg2ODIgMjYuNzU0IDMyLjAyNDkgMjYuOTQxNkMzMi4yMzY1IDI3LjE1NyAzMi40NDAyIDI2LjkxMDMgMzIuNjQzOSAyNy4wMDA2QzMyLjg0NzcgMjYuNzUwNSAzMy4wNTE0IDI3LjAzODkgMzMuMjU1MSAyNi44MTY1QzMzLjQ1ODkgMjYuNTI4MSAzMy42NjI2IDI2LjU0NTUgMzMuODY2MyAyNi43ODUyQzMzLjk2ODIgMjcuMjEyNiAzNC4wNzAxIDI3LjAwMDYgMzQuMTcxOSAyNi45MTAzQzM0LjI3MzggMjYuODk5OSAzNC4zNzU3IDI2Ljc4ODcgMzQuNDc3NSAyNi43MDg4QzM0LjY4MTMgMjYuNDUxNyAzNC44ODUgMjYuMzg5MSAzNS4wODA5IDI2LjU2OThDMzUuMjg0NiAyNi42MTg1IDM1LjQ4ODMgMjYuNzQzNSAzNS42OTIxIDI2LjYwOEMzNS43OTM5IDI2LjU2OTggMzUuODk1OCAyNi42MTUgMzUuOTk3NyAyNi42NDYzQzM2LjA5OTUgMjYuNDM3OCAzNi4yMDE0IDI2LjQxIDM2LjMwMzMgMjYuNDE2OUMzNi41MDcgMjYuODQ0MyAzNi43MTA3IDI2LjMyMzEgMzYuOTIyMyAyNi41Mzg1QzM3LjEyNiAyNi45NDg1IDM3LjMzNzYgMjYuMjQzMiAzNy41NDEzIDI2LjM5MjZDMzcuNjQzMiAyNi40NjIxIDM3Ljc1MjkgMjYuMjUzNiAzNy44NTQ4IDI2LjIzNjNDMzcuOTU2NiAyNi4xODA3IDM4LjA2NjMgMjYuMjI5MyAzOC4xNjgyIDI2LjU5MDdDMzguMzc5OCAyNi42Nzc1IDM4LjU5MTMgMjYuNzY3OSAzOC44MTA3IDI2Ljc0N0MzOS4wMzAxIDI2Ljg5NjQgMzkuMjQxNyAyNi41NDkgMzkuNDYxMSAyNi41Mzg1QzM5LjY0MTMgMjYuODI2OSAzOS44MjE1IDI2LjU1OTQgMzkuOTg2MSAyNi44MDYxQzQwLjA3MjMgMjYuOTc5OCA0MC4xNTA2IDI2Ljc2MDkgNDAuMjM2OCAyNi42NzRDNDAuMzE1MiAyNi41MjEyIDQwLjQwMTQgMjYuNDU4NiA0MC40Nzk4IDI2Ljc0N0M0MC42MzY1IDI2Ljg1NDcgNDAuNzkzMiAyNi44ODI1IDQwLjk0MjEgMjYuNjE1QzQxLjA5MDkgMjYuNTI4MSA0MS4yMzk4IDI2LjYyNTQgNDEuMzgwOSAyNi43MTIzQzQxLjQ1MTQgMjYuOTc2MyA0MS41Mjk3IDI2LjcxMjMgNDEuNjAwMyAyNi43NzQ4QzQxLjY3MDggMjYuNTQ5IDQxLjc0OTIgMjYuMzY4MyA0MS44MTk3IDI2LjQ4NjRDNDEuODkwMiAyNi4zNDA1IDQxLjk2ODYgMjYuNzA1MyA0Mi4wMzkxIDI2LjM2MTNDNDIuMTA5NiAyNi4zMzM1IDQyLjE4OCAyNi40NDEzIDQyLjI1ODUgMjYuNjc0QzQyLjQwNzQgMjYuNTU5NCA0Mi41NjQxIDI3LjAwNDEgNDIuNzIwOCAyNi42MjE5QzQyLjc5OTEgMjYuNTE3NyA0Mi44Nzc1IDI2Ljc5NTcgNDIuOTYzNyAyNi44NDQzQzQzLjA0MjEgMjYuOTg2OCA0My4xMjgzIDI3LjA1MjggNDMuMjE0NCAyNi45MTAzQzQzLjI4NSAyNy4wMDQxIDQzLjM0NzcgMjYuNjM1OCA0My40MTgyIDI2LjgyQzQzLjQ0OTUgMjYuODQwOCA0My40ODg3IDI2LjcxNTcgNDMuNTIgMjYuNzMzMUM0My41MzU3IDI2Ljg3OSA0My41NTE0IDI2LjkxMDMgNDMuNTc0OSAyNi45MTczQzQzLjU5MDYgMjYuODg5NSA0My42MDYyIDI2Ljg1ODIgNDMuNjI5NyAyNy4xMjU3QzQzLjcwMDMgMjcuMzcyNCA0My43NzA4IDI3LjI4NTYgNDMuODMzNSAyNy4zNjJDNDMuODY0OCAyNy41NiA0My45MDQgMjcuNjY0MyA0My45MzUzIDI3LjQ3MzJDNDMuOTY2NyAyNy41Nzc0IDQ0LjAwNTkgMjcuMzQxMSA0NC4wMzcyIDI3LjE2MzlDNDQuMTc4MyAyNy4yMDkxIDQ0LjMxOTMgMjYuOTg2OCA0NC40NTI1IDI2Ljk2NTlDNDQuNTkzNSAyNi44NDA4IDQ0LjczNDYgMjYuOTEzOCA0NC44NzU2IDI3LjAxNDVDNDUuNDM5OCAyNy4wMjg0IDQ2LjAxOTcgMjYuOTY5NCA0Ni41OTk1IDI2Ljk5MDJDNDYuNjM4NyAyNy4xMzYyIDQ2LjY3IDI3LjMwMjkgNDYuNzA5MiAyNy4zNDQ2QzQ2Ljc0ODQgMjcuMzIzOCA0Ni43Nzk3IDI3LjM3OTQgNDYuODE4OSAyNy4yMTI2QzQ2Ljg1ODEgMjcuNDM1IDQ2Ljg4OTQgMjcuNDgzNiA0Ni45Mjg2IDI3LjM2NTVDNDYuOTY3OCAyNy4zNDgxIDQ2Ljk5OTEgMjcuMDczNiA0Ny4wMzgzIDI3LjA4MDZDNDcuMTA4OCAyNi45NTIgNDcuMTg3MiAyNy4xNjM5IDQ3LjI1NzcgMjYuOTc2M0M0Ny4zMjgyIDI3LjEyMjMgNDcuNDA2NiAyNi45MzQ2IDQ3LjQ3NzEgMjYuODI2OUM0Ny43NzQ5IDI2LjYyMTkgNDguMDcyNiAyNi44NDc4IDQ4LjM3MDQgMjYuOTM0NkM0OC40NDg4IDI3LjA1NjIgNDguNTE5MyAyNy4wNzM2IDQ4LjU5NzYgMjcuMjAyMkM0OC42NzYgMjcuMjk5NSA0OC43NDY1IDI3LjI1NDMgNDguODI0OSAyNy4xNzA5QzQ4Ljk3MzggMjcuMjM2OSA0OS4xMjI2IDI3LjIxNjEgNDkuMjc5NCAyNi45ODY4QzQ5LjU4NSAyNi42NTY3IDQ5Ljg4MjcgMjcuMDAwNiA1MC4xODgzIDI2Ljg0NDNDNTAuNzk5NSAyNi44MDk2IDUxLjQxMDcgMjYuNzA4OCA1Mi4wMjk3IDI2Ljc2NDRDNTIuMzM1MyAyNi45Njk0IDUyLjY0ODcgMjcuMDQ1OCA1Mi45NjIyIDI2LjgzMzlDNTMuMTE4OSAyNi45Mjc3IDUzLjI3NTYgMjYuODk2NCA1My40MzIzIDI2LjgzMDRDNTMuNTg5IDI2Ljc5OTEgNTMuNzQ1OCAyNi42MTg1IDUzLjkwMjUgMjYuNjQ5N0M1NC4yMTU5IDI2LjgzNzMgNTQuNTI5NCAyNi42MTg1IDU0Ljg0MjggMjYuNzMzMUM1NC45OTk1IDI2LjQ1ODYgNTUuMTU2MiAyNi43OTkxIDU1LjMxMjkgMjYuODQwOEM1NS4zOTEzIDI3LjAzMTkgNTUuNDY5NiAyNi42NjcxIDU1LjU0OCAyNi44NDc4QzU1LjYyNjQgMjYuNzU0IDU1LjcwNDcgMjYuNTI0NiA1NS43ODMxIDI2LjU5MDdDNTYuMDk2NSAyNi42MTg1IDU2LjQwOTkgMjYuNDkzNCA1Ni43MjM0IDI2LjQ1ODZDNTcuMDM2OCAyNi40MTY5IDU3LjM1MDIgMjYuNDIwNCA1Ny42NjM3IDI2LjU4NzJDNTguMDE2MyAyNi43MjI3IDU4LjM1MzIgMjYuODgyNSA1OC42ODIzIDI2Ljc3NDhDNTkuMDExNCAyNi43Njc5IDU5LjM0MDUgMjYuNjkxNCA1OS42NTQgMjYuNjQ5N0M1OS44MTA3IDI2Ljc5MjIgNTkuOTY3NCAyNi44MzM5IDYwLjEyNDEgMjYuOTI3N0M2MC4yODA4IDI2Ljc5OTEgNjAuNDM3NSAyNy4wODA2IDYwLjU4NjQgMjYuODMzOUM2MC44OTIgMjYuNTQ5IDYxLjE5NzYgMjYuNjY3MSA2MS40OTU0IDI2Ljc5OTFDNjEuNzkzMSAyNi44MzM5IDYyLjA5MDkgMjYuOTc5OCA2Mi4zODg3IDI3LjAzMTlDNjIuNjg2NCAyNy4xMDQ5IDYyLjk3NjMgMjcuMDIxNSA2My4yNzQxIDI2Ljk3NjNDNjMuNTY0IDI2Ljc0NyA2My44NjE4IDI2Ljc5OTEgNjQuMTU5NiAyNi44ODZDNjQuNDU3MyAyNi44MDk2IDY0Ljc1NTEgMjYuOTI3NyA2NS4wNTI4IDI3LjEyOTJDNjUuNjU2MiAyNy4wNzAxIDY2LjI2NzQgMjcuMzcyNCA2Ni45MDk5IDI3LjI1NDNDNjcuMjMxMiAyNy40OTQgNjcuNTUyNCAyNy4zMDY0IDY3Ljg4OTQgMjcuMzQxMUM2OC4yMjYzIDI3LjM0NDYgNjguNTYzMyAyNy4yOTk1IDY4LjkxNTkgMjcuMzA5OUM2OS4yMDU4IDI3LjE1NyA2OS40OTU3IDI3LjMyNzIgNjkuNzc3OCAyNy4zOTY3QzY5LjkxODkgMjcuMzY4OSA3MC4wNTk5IDI3LjUyMTggNzAuMjAwOSAyNy41NjdDNzAuMzQyIDI3LjU4MDkgNzAuNDc1MiAyNy41MTE0IDcwLjYxNjIgMjcuMjNDNzAuODkwNSAyNi44NjUxIDcxLjE1NjkgMjcuMTg4MyA3MS40MjMzIDI3LjA3NzFDNzEuNjg5NyAyNy4wNjY3IDcxLjk1NjIgMjcuMDM4OSA3Mi4yMTQ4IDI3LjIwOTFDNzIuNDczMyAyNy4wODc1IDcyLjczMTkgMjYuODQwOCA3Mi45OTA1IDI2Ljk0ODVDNzMuMjQ5MSAyNi45NDg1IDczLjQ5OTggMjYuNzQwMSA3My43NTA2IDI3LjA5NDVDNzMuODc1OSAyNy4wNDIzIDc0LjAwMTMgMjcuMzk2NyA3NC4xMjY3IDI3LjE5MTdDNzQuMjUyMSAyNy4yNDM5IDc0LjM3NzQgMjYuNzk5MSA3NC41MDI4IDI2Ljk1MkM3NC43NTM1IDI2LjY5NDkgNzUuMDA0MyAyNi44MTMgNzUuMjU1IDI2Ljk2OTRDNzUuNzU2NSAyNy4yMjY1IDc2LjI2NTkgMjYuODkyOSA3Ni43NzUyIDI2Ljg2MTdDNzcuMjkyMyAyNy4xMDQ5IDc3LjgwOTUgMjYuOTU5IDc4LjM0MjMgMjYuNzI5NkM3OC41MzA0IDI2LjU3MzMgNzguNzEwNiAyNi43NzQ4IDc4Ljg5ODcgMjYuNjA0NkM3OS4wODY4IDI2LjU0MiA3OS4yNzQ4IDI2Ljc3NDggNzkuNDYyOSAyNi43ODUyQzc5LjY1MDkgMjYuODMzOSA3OS44MzkgMjYuNzYwOSA4MC4wMjcgMjYuNjA4QzgwLjIxNTEgMjYuNDIzOSA4MC40MDMyIDI2LjUyODEgODAuNTkxMiAyNi42MDhDODAuOTY3MyAyNi4zNDQgODEuMzUxMyAyNi42NzA2IDgxLjczNTIgMjYuNjI1NEM4Mi4xMTkyIDI2LjY4NDUgODIuNTAzMiAyNi4yODQ5IDgyLjg4NzEgMjYuNTkwN0M4My4yNzExIDI2Ljg2MTcgODMuNjU1IDI2LjMyNjYgODQuMDQ2OCAyNi42ODQ1Qzg0LjQzMDggMjYuODA5NiA4NC44MjI2IDI2LjYxODUgODUuMjE0MyAyNi41OTA3Qzg1Ljk5MDEgMjYuNDc5NSA4Ni43NzM3IDI2Ljc0MzUgODcuNTY1MSAyNi42NzA2Qzg3Ljk1NjkgMjYuODA2MSA4OC4zNDg3IDI2LjM1NzkgODguNzQ4MyAyNi42NzA2Qzg5LjE0MDEgMjYuNDcyNSA4OS41Mzk3IDI2LjU2NjMgODkuOTMxNSAyNi43NzQ4QzkwLjMzMTEgMjYuOTc2MyA5MC43MjI5IDI2LjY4NDUgOTEuMTIyNSAyNi45MTczQzkxLjUyMjIgMjYuNjkxNCA5MS45MTQgMjcuMDU5NyA5Mi4zMTM2IDI2Ljg4NkM5Mi41MDk1IDI3LjEwMTQgOTIuNzEzMiAyNy4wODQgOTIuOTA5MSAyNy4xMTUzQzkzLjEwNSAyNi45Nzk4IDkzLjMwODcgMjcuMTQzMSA5My41MDQ2IDI3LjAzMTlDOTMuOTA0MiAyNi45OTcyIDk0LjMwMzkgMjYuOTAzNCA5NC42OTU3IDI3LjAyNUM5NS4wOTUzIDI3LjE1MzUgOTUuNDk0OSAyNi44MDYxIDk1Ljg4NjcgMjcuMTU3Qzk2LjI4NjMgMjcuMjY0NyA5Ni42ODYgMjcuMzEzNCA5Ny4wNzc3IDI3LjE3MDlDOTcuMzk5IDI3LjEzOTYgOTcuNzEyNCAyNy4wNTI4IDk4LjAzMzcgMjYuOTc2M0M5OC4xOTA0IDI3LjA1OTcgOTguMzU1IDI3LjA4NzUgOTguNTExNyAyNy4xODgzQzk4LjY2ODQgMjcuMzY1NSA5OC44MzMgMjcuNDQ4OSA5OC45ODk3IDI3LjI4NTZDOTkuMzExIDI3LjM5MzMgOTkuNjI0NCAyNy41OTgzIDk5LjkzNzggMjcuNDU1OEMxMDAuMjUxIDI3LjI2NDcgMTAwLjU3MyAyNy42MTkxIDEwMC44ODYgMjcuMzk2N0MxMDEuNTIxIDI3LjY0NjkgMTAyLjE0OCAyNy42MTIyIDEwMi43NzQgMjcuNDg3MUMxMDMuNDAxIDI3LjM5MzMgMTA0LjAyOCAyNy43MzAzIDEwNC42NTUgMjcuNTg0NEMxMDQuOTY4IDI3LjUzNTcgMTA1LjI3NCAyNy43NDA3IDEwNS41ODcgMjcuNzg5NEMxMDUuOTAxIDI3Ljg5MDEgMTA2LjIwNiAyNy44NTU0IDEwNi41MTIgMjcuNjMzQzEwNi42NjkgMjcuMzkzMyAxMDYuODE4IDI3LjM0ODEgMTA2Ljk3NCAyNy4yOTZDMTA3LjEzMSAyNy4yNzE3IDEwNy4yOCAyNy40NTIzIDEwNy40MzcgMjcuNTM5MkMxMDcuNzQyIDI3LjY2NDMgMTA4LjA0OCAyNy4yNDA0IDEwOC4zNTMgMjcuNjkyMUMxMDguNjU5IDI3LjU3MDUgMTA4Ljk2NSAyOC4wMTg3IDEwOS4yNjIgMjcuODI3NkMxMDkuNDExIDI3Ljk4MzkgMTA5LjU2OCAyNy45NzcgMTA5LjcxNyAyNy45MTc5QzEwOS44NjYgMjcuOTI4MyAxMTAuMDIyIDI3LjgwNjcgMTEwLjE3MSAyNy43MDZDMTEwLjI1IDI3LjY3ODIgMTEwLjMyIDI3LjcwOTQgMTEwLjM5OSAyNy43NDQyQzExMC40NzcgMjcuODM0NSAxMTAuNTQ3IDI3LjkzMTggMTEwLjYyNiAyNy45OTc4QzExMC43NzUgMjguMTAyMSAxMTAuOTI0IDI3Ljc2ODUgMTExLjA3MiAyNy44NTg4QzExMS4yMjEgMjcuODEwMiAxMTEuMzcgMjcuNjI5NSAxMTEuNTE5IDI3Ljc1MTFDMTExLjY2OCAyNy42NTA0IDExMS44MTcgMjcuOTg3NCAxMTEuOTY2IDI3LjY4MTZDMTEyLjI2NCAyNy4zMTY4IDExMi41NTMgMjcuNDczMiAxMTIuODUxIDI3LjU2N0MxMTMuMTQxIDI3LjU0NjEgMTEzLjQzOSAyNy40OTA1IDExMy43MjkgMjcuNjIyNkMxMTQuMDE5IDI3LjkxMSAxMTQuMzA5IDI3LjU0OTYgMTE0LjU5OSAyNy42ODUxQzExNC44ODkgMjcuNDQ4OSAxMTUuMTcxIDI3LjczMzggMTE1LjQ2MSAyNy41MTgzQzExNS43MTkgMjcuNTE4MyAxMTUuOTcgMjcuNDk3NSAxMTYuMjIxIDI3LjQ0MTlDMTE2LjQ3MSAyNy42OTkgMTE2LjcxNCAyNy4wMjg0IDExNi45NTcgMjcuNDAwMkMxMTcuMDc1IDI3Ljg3MjcgMTE3LjIgMjcuNTUzMSAxMTcuMzE4IDI3LjU4NzhDMTE3LjM4IDI3LjY1MzggMTE3LjQzNSAyNy43NTQ2IDExNy40OTggMjcuNjYwOEMxMTcuNTYxIDI3LjQyOCAxMTcuNjE1IDI3LjQ5NzUgMTE3LjY3OCAyNy4zNzU5QzExNy45MTMgMjcuNDM1IDExOC4xNDggMjcuMDgwNiAxMTguMzgzIDI3LjI0MzlDMTE4LjYxOCAyNy4zNTUgMTE4Ljg0NiAyNy4wMTQ1IDExOS4wODEgMjcuMjM2OUMxMTkuMTk4IDI3LjA0OTMgMTE5LjMxNiAyNy4zNzk0IDExOS40MzMgMjcuNDM1QzExOS41NTEgMjcuMzE2OCAxMTkuNjY4IDI3LjU4MDkgMTE5Ljc4NiAyNy4wOTFDMTIwLjI1NiAyNi45ODMzIDEyMC43MjYgMjYuOTE3MyAxMjEuMjEyIDI2Ljk1MkMxMjEuMzM3IDI2LjU1OTQgMTIxLjQ1NSAyNi43NTc0IDEyMS41OCAyNi42Mjg5QzEyMS43MDYgMjYuNTgzNyAxMjEuODMxIDI2LjYyMTkgMTIxLjk1NiAyNi43NTRDMTIyLjA4MiAyNy4yMjY1IDEyMi4yMDcgMjYuOTI3NyAxMjIuMzQgMjcuMDA0MUMxMjIuNDY2IDI3LjIxOTUgMTIyLjU5OSAyNi45Mjc3IDEyMi43MzIgMjYuODQwOEMxMjIuOTk5IDI2LjgyIDEyMy4yNjUgMjYuNjM5MyAxMjMuNTM5IDI2LjYwMTFDMTIzLjgxNCAyNi41MDczIDEyNC4wOTYgMjYuNTk3NiAxMjQuMzkzIDI2Ljc3ODNDMTI0LjU0MiAyNi41MjEyIDEyNC42OTEgMjYuNDM0MyAxMjQuODQgMjYuNTczM0MxMjQuOTg5IDI2LjMzNyAxMjUuMTM4IDI2LjM5OTYgMTI1LjI3OSAyNi43ODg3QzEyNS41NjkgMjcuMDg0IDEyNS44NTkgMjYuMzcxOCAxMjYuMTQxIDI2Ljc5NTdDMTI2LjcwNSAyNi40Nzk1IDEyNy4yNDYgMjYuODc1NiAxMjcuNzcxIDI2LjgzMzlDMTI4LjAyOSAyNi44NTEyIDEyOC4yODggMjYuOTUyIDEyOC41MzggMjYuNzU0QzEyOC43ODkgMjYuOTI0MiAxMjkuMDQgMjYuNzM2NiAxMjkuMjc1IDI2Ljk2NTlDMTI5LjUxOCAyNi44NjE3IDEyOS43NTMgMjYuODU4MiAxMjkuOTg4IDI2LjczMzFDMTMwLjEwNiAyNi43NjQ0IDEzMC4yMTUgMjYuOTIwNyAxMzAuMzMzIDI2LjgyMzVDMTMwLjQ0MyAyNi45NzI5IDEzMC41NiAyNy4wMTExIDEzMC42NyAyNy4wODc1QzEzMS4xMjQgMjcuNDM1IDEzMS42MTggMjcuMDkxIDEzMi4xNDMgMjcuMjQzOUMxMzIuNDAyIDI3LjIzIDEzMi42NzYgMjcuNDAwMiAxMzIuOTUgMjcuNDE0MUMxMzMuMjI0IDI3LjUzMjIgMTMzLjUwNiAyNy4zNzI0IDEzMy43ODggMjcuMzIzOEMxMzQuMDcxIDI2Ljk2OTQgMTM0LjM2IDI3LjQxNzYgMTM0LjY1IDI3LjQ1OTNDMTM0Ljk0IDI3LjQ1MjMgMTM1LjIzIDI3LjI1NzggMTM1LjUyOCAyNy4zNDExQzEzNS42NzcgMjcuMzY4OSAxMzUuODE4IDI3LjM1NSAxMzUuOTY3IDI3LjU3MDVDMTM2LjAzNyAyNy42NDM0IDEzNi4xMTYgMjcuODE3MiAxMzYuMTg2IDI3LjczMDNDMTM2LjI1NyAyNy43NDc3IDEzNi4zMzUgMjcuNTQ2MSAxMzYuNDA2IDI3LjQ5MDVDMTM2LjU1NSAyNy43NDQyIDEzNi42OTYgMjcuNDAzNyAxMzYuODQ0IDI3LjU5ODNDMTM2LjkxNSAyNy43Njg1IDEzNi45OTMgMjcuODg2NiAxMzcuMDY0IDI3LjYxOTFDMTM3LjEzNCAyNy4zNjU1IDEzNy4yMTMgMjcuNDU1OCAxMzcuMjgzIDI3LjM0MTFDMTM3LjU3MyAyNy4xNzc4IDEzNy44NjMgMjcuMzI3MiAxMzguMTQ1IDI3LjQxNzZDMTM4LjQyNyAyNy41MzkyIDEzOC43MDkgMjcuMjE5NSAxMzguOTg0IDI3LjI3MTdDMTM5LjI1OCAyNy4wMDc2IDEzOS41MjQgMjcuMDU5NyAxMzkuNzkxIDI3LjAxOEMxNDAuMDQ5IDI3LjA0NTggMTQwLjMwOCAyNy4xMjkyIDE0MC41NTEgMjcuMTQ2NkMxNDAuNjI5IDI3LjI0NzMgMTQwLjcwNyAyNy40NjYyIDE0MC43ODYgMjcuNDQ4OUMxNDAuODY0IDI3LjYxMjIgMTQwLjk0MyAyNy42ODE2IDE0MS4wMjkgMjcuMzM0MkMxNDEuMTA3IDI3LjQ4NzEgMTQxLjE5MyAyNy41NTMxIDE0MS4yNzIgMjcuMzc1OUMxNDEuMzExIDI3LjM3OTQgMTQxLjM1OCAyNy40MzUgMTQxLjM5NyAyNy4zNzU5QzE0MS40MzYgMjcuNDk3NSAxNDEuNDgzIDI3LjE0MzEgMTQxLjUyMiAyNy4wNTYyQzE0MS42MzIgMjcuMzIwMyAxNDEuNzUgMjcuMjQzOSAxNDEuODY3IDI3LjMxNjhDMTQxLjk4NSAyNy4zNzU5IDE0Mi4xMDIgMjcuMzIwMyAxNDIuMjIgMjcuMTA0OUMxNDIuNDYzIDI2LjkzMTIgMTQyLjcwNiAyNi45Mjc3IDE0Mi45NTYgMjYuOTM4MUMxNDMuNDU4IDI2Ljc0MzUgMTQzLjk4MyAyNi44MjM1IDE0NC41MTYgMjYuOTEzOEMxNDQuNzgyIDI2LjkyMDcgMTQ1LjA0OSAyNy4xMDE0IDE0NS4zMTUgMjYuODc5QzE0NS40NDggMjYuNzgxOCAxNDUuNTgxIDI2LjgzMzkgMTQ1LjcxNSAyNi43MjI3QzE0NS44NDggMjYuNzgxOCAxNDUuOTgxIDI2Ljc0MDEgMTQ2LjEwNiAyNi45MTM4QzE0Ni42MzEgMjYuNjg0NSAxNDcuMTQ5IDI3LjI2MTIgMTQ3LjYzNCAyNi45NDUxQzE0OC4xMiAyNi45NzI5IDE0OC41ODIgMjYuOTc2MyAxNDkuMDA2IDI3LjA1MjhDMTQ5LjIxNyAyNy4yMDkxIDE0OS40MjEgMjYuODkyOSAxNDkuNjA5IDI2LjgyQzE0OS43OTcgMjcuMDg0IDE0OS45NzcgMjYuODgyNSAxNTAuMTM0IDI3LjE2NzRDMTUwLjI4MyAyNi45NDUxIDE1MC40MjQgMjcuMTgxMyAxNTAuNTU3IDI3LjEyMjNDMTUwLjU4OCAyNy4zNjIgMTUwLjYyIDI3LjIzMzQgMTUwLjY1MSAyNy40MDcyQzE1MC42ODIgMjcuMzc1OSAxNTAuNzE0IDI3LjcyNjggMTUwLjc0NSAyNy41MzU3QzE1MC43NzYgMjcuNzQ0MiAxNTAuODA4IDI3LjYyNjEgMTUwLjgzOSAyNy41NkMxNTAuODcxIDI3LjQyOCAxNTAuOTAyIDI3LjE0MzEgMTUwLjkzMyAyNy4zMzA3QzE1MS4xOTIgMjcuNTA3OSAxNTEuNDU4IDI3LjI5MjUgMTUxLjgxMSAyNy40ODcxQzE1Mi4yMjYgMjcuNjA4NyAxNTIuNjgxIDI3LjU3NzQgMTUzLjE1OSAyNy41NzM5QzE1My40MDEgMjcuODIwNiAxNTMuNjUyIDI3Ljg1ODggMTUzLjkwMyAyNy44MjA2QzE1NC4xNTQgMjcuNzkyOCAxNTQuNDEyIDI3LjU1NjYgMTU0LjY3OSAyNy42MTIyQzE1NC44MTIgMjcuNDI4IDE1NC45MzcgMjcuNTAxIDE1NS4wNzEgMjcuMzIwM0MxNTUuMjA0IDI3LjE2NzQgMTU1LjMzNyAyNy41MTgzIDE1NS40NyAyNy40MTc2QzE1NS43MzcgMjcuNjA1MiAxNTYuMDAzIDI3LjUyMTggMTU2LjI2OSAyNy41MzU3QzE1Ni41MzYgMjcuNjEyMiAxNTYuNzk0IDI3LjM2MiAxNTcuMDYxIDI3LjYyMjZDMTU3LjMxOSAyNy43MzcyIDE1Ny41NzggMjcuMzkzMyAxNTcuODI5IDI3LjQ0MTlDMTU4LjMzIDI3LjQ2OTcgMTU4LjgxNiAyNy41MzkyIDE1OS4yNTUgMjcuNDU1OEMxNTkuNzAxIDI3LjcyNjggMTYwLjEwMSAyNy42MzY1IDE2MC40NTQgMjcuMjgyMUMxNjAuODA2IDI3LjI1NzggMTYxLjE2NyAyNy44NjkzIDE2MS41NDMgMjcuMjUwOEMxNjEuNzMxIDI3LjIxNjEgMTYxLjkyNyAyNi45MzgxIDE2Mi4xMjMgMjcuMDkxQzE2Mi4yMTcgMjYuNzgxOCAxNjIuMzE5IDI3LjA1OTcgMTYyLjQyMSAyNy4xNzc4QzE2Mi41MjIgMjcuMTk4NyAxNjIuNjI0IDI3LjIxMjYgMTYyLjcyNiAyNi45MTczQzE2Mi45MyAyNi44NTEyIDE2My4xMzQgMjcuMDE4IDE2My4zNDUgMjcuMTA0OUMxNjMuNTU3IDI2Ljg4NiAxNjMuNzc2IDI2Ljk5NzIgMTYzLjk5NSAyNi44ODI1QzE2NC40MzQgMjYuNjg0NSAxNjQuODk3IDI3LjExODggMTY1LjM3NSAyNy4xMDE0QzE2NS44NTMgMjcuMTMyNyAxNjYuMzQ2IDI2LjgyMzUgMTY2Ljg3MSAyNy4wMjE1QzE2Ny4xMyAyNy4xODQ4IDE2Ny4zOTYgMjcuMTY3NCAxNjcuNjYzIDI3LjE2MzlDMTY3LjkyOSAyNy40ODcxIDE2OC4yMTEgMjcuMDk3OSAxNjguNDkzIDI3LjAyNUMxNjguNzI4IDI2Ljg5MjkgMTY4Ljk2MyAyNy4wMTExIDE2OS4xODMgMjcuMTk4N0MxNjkuNDAyIDI2Ljg2NTEgMTY5LjYyMiAyNy4xOTE3IDE2OS44MzMgMjcuMDUyOEMxNzAuMjQ4IDI3LjQ2OTcgMTcwLjY0OCAyNy4wNDU4IDE3MS4wMzIgMjcuMTg0OEMxNzEuMjIgMjcuMTM5NiAxNzEuNDE2IDI3LjAzODkgMTcxLjU5NiAyNy4xMzk2QzE3MS43ODQgMjcuNDM4NCAxNzEuOTcyIDI2Ljg0MDggMTcyLjE1MyAyNy4wOTc5QzE3Mi41MjEgMjcuMTk4NyAxNzIuODg5IDI2Ljg2MTcgMTczLjI3MyAyNy4xNTAxQzE3My42NDkgMjcuMjE5NSAxNzQuMDQxIDI3LjQzNSAxNzQuNDQ4IDI3LjI0NzNDMTc0LjY1MiAyNy4zMTM0IDE3NC44NjQgMjcuMjE5NSAxNzUuMDc1IDI3LjI5MjVDMTc1LjI5NSAyNy4yOTI1IDE3NS41MTQgMjcuMzIzOCAxNzUuNzQxIDI3LjE2MDVDMTc2LjIwNCAyNy4wNDU4IDE3Ni42ODIgMjcuMzk2NyAxNzcuMTYgMjcuMjA5MUMxNzcuNjM4IDI3LjI0MzkgMTc4LjExNiAyNy4wODQgMTc4LjYwMSAyNy4wMTExQzE3OS4wODcgMjYuODc5IDE3OS41NjUgMjcuMDcwMSAxODAuMDQzIDI2Ljk0NTFDMTgwLjUyMSAyNy4wMjUgMTgwLjk5OSAyNi43Mjk2IDE4MS40NjkgMjYuOTE3M0MxODEuODA2IDI2LjgwNjEgMTgyLjE0MyAyNi41Njk4IDE4Mi40OCAyNi42NzRDMTgyLjgxNyAyNi45Nzk4IDE4My4xNjIgMjYuNzE5MiAxODMuNDk5IDI2Ljg0NzhDMTg0LjE4MSAyNi41NzMzIDE4NC44NjIgMjcuMDE0NSAxODUuNTQ0IDI2Ljc4NTJDMTg2LjIyNiAyNi44NzU2IDE4Ni45MTUgMjYuNTM4NSAxODcuNjA1IDI2Ljc4NTJDMTg3Ljc3NyAyNi44ODYgMTg3Ljk1IDI3LjE4ODMgMTg4LjEyMiAyNi45NjI0QzE4OC4yOTQgMjcuMTcwOSAxODguNDY3IDI3LjEyOTIgMTg4LjYzOSAyNi43NzgzQzE4OC45ODQgMjYuODAyNiAxODkuMzI5IDI2LjYwNDYgMTg5LjY3MyAyNi42ODQ1QzE5MC4wMTggMjYuNzg1MiAxOTAuMzYzIDI3LjA5MSAxOTAuNzE2IDI2Ljc5NTdDMTkwLjg4OCAyNi45NzYzIDE5MS4wNiAyNi44NTgyIDE5MS4yMzMgMjYuNzQwMUMxOTEuNDA1IDI2LjU1NTkgMTkxLjU3OCAyNi41MTc3IDE5MS43NSAyNi42ODQ1QzE5Mi4wOTUgMjYuNTY2MyAxOTIuNDQ3IDI2LjQ2MjEgMTkyLjc5MiAyNi40NzI1QzE5My4xMzcgMjYuNDI3NCAxOTMuNDg5IDI2LjQ3NiAxOTMuODM0IDI2LjYxNUMxOTQuMDA3IDI2Ljc5MjIgMTk0LjE3OSAyNi43MzMxIDE5NC4zNTkgMjYuNzI5NkMxOTQuNTMyIDI2LjY1NjcgMTk0LjcxMiAyNi41ODcyIDE5NC44ODQgMjYuNTc2OEMxOTUuMjM3IDI2LjUwNzMgMTk1LjU4MiAyNi41NjYzIDE5NS45MzQgMjYuNTc2OEMxOTYuMjg3IDI2LjY5NDkgMTk2LjYzMiAyNi40MTM1IDE5Ni45ODQgMjYuNDQ4MkMxOTcuMzM3IDI2LjMzMDEgMTk3LjY4MiAyNi40NTg2IDE5OC4wMzQgMjYuNTgwMkMxOTguMjY5IDI2LjQxIDE5OC41MDQgMjYuODIzNSAxOTguNzMyIDI2Ljc3ODNDMTk4Ljk2NyAyNi45MjA3IDE5OS4yMDIgMjYuNTE0MiAxOTkuNDI5IDI2LjYwOEMxOTkuODk5IDI2LjI1MzYgMjAwLjM2MSAyNi40ODk5IDIwMC44MzIgMjYuNTczM0MyMDEuMDY3IDI2Ljk5MzcgMjAxLjMwMiAyNi42MTUgMjAxLjUyOSAyNi43NTA1QzIwMS43NjQgMjYuNjYwMiAyMDEuOTk5IDI2LjY0OTcgMjAyLjIyNiAyNi42MDhDMjAyLjQ2MSAyNi45MDM0IDIwMi42OTcgMjYuNTk0MSAyMDIuOTI0IDI2Ljc4ODdDMjAzLjE1OSAyNi42NDYzIDIwMy4zOTQgMjYuODU0NyAyMDMuNjIxIDI2LjU4MzdDMjAzLjg1NiAyNi43MTkyIDIwNC4wOTEgMjYuNzI2MiAyMDQuMzE5IDI2Ljc0MzVDMjA0LjU1NCAyNi45Nzk4IDIwNC43ODkgMjYuODY1MSAyMDUuMDE2IDI2LjU5NDFDMjA1LjQ3OCAyNi41OTc2IDIwNS45NDggMjYuMzQ3NCAyMDYuNDExIDI2LjYwOEMyMDYuNzMyIDI2LjgyNjkgMjA3LjA1MyAyNi43ODUyIDIwNy4zNzQgMjYuNjQ2M0MyMDcuNjk2IDI2LjUwMzggMjA4LjAxNyAyNi40NzI1IDIwOC4zMyAyNi42MzkzQzIwOC40ODcgMjYuNjM5MyAyMDguNjQ0IDI2LjQ2NTYgMjA4LjgwMSAyNi41OTc2QzIwOC45NTcgMjYuNzU0IDIwOS4xMDYgMjYuNjcwNiAyMDkuMjYzIDI2Ljg0NDNDMjA5LjU2OSAyNi45NDUxIDIwOS44NTggMjcuMDExMSAyMTAuMTQxIDI2LjcyMjdDMjEwLjU2NCAyNi42NTMyIDIxMC45NDggMjYuODEzIDIxMS4zIDI2LjgyMzVDMjExLjY2MSAyNy4wODc1IDIxMS45OTggMjYuNTc2OCAyMTIuMzM1IDI2Ljk2OTRDMjEyLjQ5OSAyNi45NDE2IDIxMi42NzEgMjcuMDc3MSAyMTIuODM2IDI3LjE3NzhDMjEzLjAwOCAyNy4yNzg2IDIxMy4xNzMgMjcuMzQ4MSAyMTMuMzUzIDI3LjE4ODNDMjEzLjcwNiAyNy4xMzk2IDIxNC4wNzQgMjcuMjE2MSAyMTQuNDgyIDI3LjIzQzIxNC43ODcgMjcuMTkxNyAyMTUuMTA4IDI2Ljk0MTYgMjE1LjQzIDI3LjA5MUMyMTUuNzUxIDI3LjMyMzggMjE2LjA4IDI3LjI0NzMgMjE2LjQwOSAyNy4yNTA4QzIxNy4wNzUgMjcuMTI1NyAyMTcuNzU3IDI3LjI4OSAyMTguNDQ2IDI3LjM0NDZDMjE5LjEzNiAyNy4wOTEgMjE5LjgzMyAyNy41NTY2IDIyMC41MzEgMjcuMzU1QzIyMC44NzYgMjcuNTIxOCAyMjEuMjIgMjcuMzA2NCAyMjEuNTY1IDI3LjQxNDFDMjIxLjczOCAyNy4yODIxIDIyMS45MSAyNy4wNzAxIDIyMi4wNzQgMjcuMTU3QzIyMi4yNDcgMjYuODkyOSAyMjIuNDExIDI2LjgyNjkgMjIyLjU4NCAyNy4xNjA1QzIyMi45MjEgMjcuMjI2NSAyMjMuMjUgMjcuMjY0NyAyMjMuNTc5IDI3LjIxNjFDMjIzLjkwOCAyNy4zNzI0IDIyNC4yMjkgMjYuODM3MyAyMjQuNTQzIDI3LjAxOEMyMjQuODU2IDI2LjgyNjkgMjI1LjE2MiAyNi43NDM1IDIyNS40NjcgMjYuNzI2MkMyMjUuNzY1IDI2LjgyMzUgMjI2LjA1NSAyNi42MTg1IDIyNi4zMzcgMjYuODJDMjI2LjY4MiAyNi4zOTI2IDIyNy4wNSAyNi42Mjg5IDIyNy40NDIgMjYuNjk4NEMyMjcuODM0IDI2LjYzMjQgMjI4LjI0MSAyNi42MTUgMjI4LjY0OSAyNi42MjE5QzIyOS4wNjQgMjYuNzAxOCAyMjkuNDc5IDI2LjE4NzYgMjI5Ljg5NSAyNi41MDM4QzIzMC4zMDIgMjYuOTEzOCAyMzAuNzEgMjYuMzAyMyAyMzEuMDkzIDI2LjYyMTlDMjMxLjQ3IDI2LjQzMDggMjMxLjc2IDI3LjAwMDYgMjMyLjAxOCAyNi44MzA0QzIzMi4xNTEgMjYuODgyNSAyMzIuMjc3IDI2LjgzMDQgMjMyLjQwMiAyNy4wNDkzQzIzMi41MjcgMjYuODc5IDIzMi42NjEgMjYuODA5NiAyMzIuNzk0IDI2Ljg3OUMyMzIuODcyIDI3LjAyMTUgMjMyLjk1OCAyNi43ODUyIDIzMy4wNDUgMjYuODE2NUMyMzMuMTMxIDI2Ljk0ODUgMjMzLjIyNSAyNy4yODU2IDIzMy4zMTEgMjYuOTkzN0MyMzMuNDA1IDI3LjMyMDMgMjMzLjQ5OSAyNy4zMDk5IDIzMy42MDEgMjcuMTc0NEMyMzMuNjk1IDI3LjI0NzMgMjMzLjc5NyAyNy4xMzk2IDIzMy44OTkgMjYuOTE3M0MyMzQuMzA2IDI2LjYzOTMgMjM0Ljc2MSAyNy4xMDg0IDIzNS4yMzEgMjcuMDk3OUMyMzUuMzQ4IDI3LjI5MjUgMjM1LjQ2NiAyNy4zNzI0IDIzNS41OTEgMjcuMzcyNEMyMzUuNzA5IDI3LjI5MjUgMjM1LjgzNCAyNy41MzU3IDIzNS45NTkgMjcuMjY0N0MyMzYuMjAyIDI3LjIwOTEgMjM2LjQ1MyAyNy4wNDIzIDIzNi43MTIgMjcuMTcwOUMyMzcuMjIxIDI3LjM5NjcgMjM3LjczOCAyNi45NTU1IDIzOC4yNTUgMjcuMTQ2NkMyMzguNTE0IDI2Ljg5NjQgMjM4Ljc3MyAyNi44NDQzIDIzOS4wMjMgMjYuOTQxNkMyMzkuMjgyIDI2Ljk5NzIgMjM5LjUzMyAyNy4wMjg0IDIzOS43ODMgMjcuMTA4NEMyNDAuMDM0IDI3LjE2NzQgMjQwLjI3NyAyNi45MzQ2IDI0MC41MiAyNy4xNzc4QzI0MC43NjMgMjYuODk5OSAyNDAuOTk4IDI3LjA3NzEgMjQxLjIyNSAyNy4wMzg5QzI0MS42ODcgMjcuMTU3IDI0Mi4xMjYgMjcuMDU5NyAyNDIuNTQ5IDI2Ljk4NjhDMjQyLjk3MyAyNi45NjU5IDI0My4zNzIgMjYuNzgxOCAyNDMuNzY0IDI2LjgyQzI0My45NiAyNy4xMDg0IDI0NC4xNDggMjYuNzY0NCAyNDQuMzM2IDI2Ljk2OTRDMjQ0LjUyNCAyNi44MjM1IDI0NC43MTIgMjYuNzg4NyAyNDQuODkyIDI2LjcxNTdDMjQ1LjA3MyAyNi40NjIxIDI0NS4yNTMgMjYuMDk3MyAyNDUuNDMzIDI2LjQ5MzRDMjQ1LjYwNSAyNi42MTE1IDI0NS43ODYgMjYuNjA4IDI0NS45NTggMjYuNTM1MUMyNDYuMzAzIDI2LjcyNjIgMjQ2LjY0IDI2LjI5NTMgMjQ2Ljk2OSAyNi40MTM1QzI0Ny4xMzMgMjYuMzAyMyAyNDcuMjk4IDI2LjY2NzEgMjQ3LjQ2MiAyNi40MTM1QzI0Ny42MjcgMjYuMzA5MiAyNDcuNzg0IDI2LjA3NjQgMjQ3Ljk0OCAyNi4yMjI0QzI0OC4xOTkgMjYuMjk4OCAyNDguNDU4IDI2LjY2MDIgMjQ4LjcyNCAyNi4zMzdDMjQ4Ljk5IDI2LjM1NzkgMjQ5LjI2NSAyNi40ODY0IDI0OS41NDcgMjYuNDQ4MkMyNTAuMTExIDI2LjY3NCAyNTAuNjkxIDI2LjQ1NTIgMjUxLjMwMiAyNi42MzI0QzI1MS43MDkgMjYuODU0NyAyNTIuMTE3IDI2Ljc4ODcgMjUyLjU0IDI2LjczMzFDMjUyLjc1MiAyNi42ODEgMjUyLjk2MyAyNy4wMjg0IDI1My4xNzUgMjYuOTc2M0MyNTMuMzg2IDI2LjkzODEgMjUzLjYwNiAyNy4wMjE1IDI1My44MTcgMjYuODQwOEMyNTQuMjQ4IDI2LjUzNTEgMjU0LjY4NyAyNy4xMDE0IDI1NS4xMzQgMjYuOTA2OEMyNTUuNTggMjYuNzA1MyAyNTYuMDI3IDI2Ljk2MjQgMjU2LjQ3NCAyNi45NDE2QzI1Ni45MiAyNi40NTE3IDI1Ny4zNzUgMjcuMTkxNyAyNTcuODI5IDI2Ljk0MTZDMjU4LjI4NCAyNi45NDUxIDI1OC43MzggMjYuNzU3NCAyNTkuMTg1IDI2Ljg5NjRDMjU5LjQ4MyAyNi43MTIzIDI1OS43NzMgMjYuNzMzMSAyNjAuMDU1IDI2Ljc3NDhDMjYwLjM0NSAyNi44MTY1IDI2MC42MjcgMjYuODc1NiAyNjAuOTA5IDI2Ljc2NzlDMjYxLjE5MSAyNi41MjgxIDI2MS40NzMgMjYuNTA3MyAyNjEuNzQ3IDI2LjQ2OTFDMjYyLjAyOSAyNi40Mjc0IDI2Mi4zMDMgMjYuNjA4IDI2Mi41ODYgMjYuNjI4OUMyNjMuMTQyIDI2LjQ2OTEgMjYzLjY5OCAyNi42MDQ2IDI2NC4yNyAyNi41MTQyQzI2NC41NiAyNi40NDEzIDI2NC44NDIgMjYuNDQ0NyAyNjUuMTQgMjYuNDQ0N0MyNjUuNDMgMjYuNTQ5IDI2NS43MzYgMjYuNzAxOCAyNjYuMDMzIDI2LjUyNDZDMjY2LjMxNSAyNi4zODkxIDI2Ni41NzQgMjYuMjU3MSAyNjYuODI1IDI2LjQxNjlDMjY3LjA3NSAyNi40MDY1IDI2Ny4zMjYgMjYuNDkzNCAyNjcuNTY5IDI2LjYzMjRDMjY3LjgyIDI2LjcwODggMjY4LjA2MyAyNy4wNTk3IDI2OC4zMjEgMjYuNjMyNEMyNjguNDQ3IDI2LjUwMzggMjY4LjU4IDI2LjgyMzUgMjY4LjcxMyAyNi41MTQyQzI2OC44NDYgMjYuNzE1NyAyNjguOTg3IDI2LjU5NzYgMjY5LjEyOCAyNi43MzMxQzI2OS42ODUgMjYuNzIyNyAyNzAuMTg2IDI2Ljc2NzkgMjcwLjY0OSAyNi42ODQ1QzI3MS4xMTEgMjYuNzk1NyAyNzEuNTUgMjYuOTY5NCAyNzEuOTU3IDI2LjU5NzZDMjcyLjE2MSAyNi44OTY0IDI3Mi4zNjUgMjYuNTQ5IDI3Mi41NjggMjYuNTMxNkMyNzIuNjcgMjYuMjY0MSAyNzIuNzcyIDI2LjcyOTYgMjcyLjg2NiAyNi43OTIyQzI3Mi45NjggMjYuOTEzOCAyNzMuMDYyIDI2Ljg5MjkgMjczLjE2NCAyNi44OTk5QzI3My4zNiAyNy4wMjUgMjczLjU2NCAyNi43MTU3IDI3My43NTkgMjYuNTg3MkMyNzMuOTYzIDI2LjY2MDIgMjc0LjE2NyAyNi44NTQ3IDI3NC4zNzEgMjYuNzYwOUMyNzQuNTgyIDI2LjU3NjggMjc0Ljc5NCAyNi43MTIzIDI3NS4wMTMgMjYuNjM5M0MyNzUuMjMzIDI2LjU2MjkgMjc1LjQ2IDI2Ljc2NzkgMjc1LjY5NSAyNi43NTRDMjc2LjE2NSAyNi42OTg0IDI3Ni42NzQgMjYuOTI0MiAyNzcuMjM4IDI2Ljc4ODdDMjc3Ljc5NSAyNi42ODEgMjc4LjMyOCAyNi42MjU0IDI3OC44MjkgMjYuODE2NUMyNzkuMDggMjYuODg2IDI3OS4zMzEgMjYuODMwNCAyNzkuNTc0IDI2LjY4MUMyNzkuNjk5IDI2LjYyMTkgMjc5LjgxNiAyNi40NTE3IDI3OS45NDIgMjYuNTkwN0MyODAuMDU5IDI2LjY1MzIgMjgwLjE4NSAyNi41MTQyIDI4MC4zMDIgMjYuNjYzNkMyODAuNTQ1IDI2LjgxNjUgMjgwLjc4IDI2LjkzNDYgMjgxLjAyMyAyNi44ODk1QzI4MS4yNjYgMjYuNzgxOCAyODEuNTAxIDI2Ljk1OSAyODEuNzQ0IDI2Ljc5MjJDMjgyLjIzIDI2Ljg3MjEgMjgyLjcyNCAyNi4yNjQxIDI4My4yNDEgMjYuMzg5MUMyODMuNjY0IDI2LjEwNDIgMjg0LjExIDI2LjYwOCAyODQuNTU3IDI2LjQ2MjFDMjg1LjAxMiAyNi40ODY0IDI4NS40NjYgMjYuNTQ5IDI4NS45MjggMjYuNDYyMUMyODYuMTYzIDI2LjQ3MjUgMjg2LjM5MSAyNi42Mjg5IDI4Ni42MjYgMjYuNjcwNkMyODYuODYxIDI2LjY2MzYgMjg3LjA5NiAyNi45MDY4IDI4Ny4zMzEgMjYuNTU1OUMyODcuNDQ5IDI2LjY3MDYgMjg3LjU2NiAyNi42ODQ1IDI4Ny42ODQgMjYuNjM5M0MyODcuODAxIDI2LjU5NzYgMjg3LjkxOSAyNi41MDAzIDI4OC4wMzYgMjYuMzk5NkMyODguMjcxIDI2LjE0NTkgMjg4LjQ5OSAyNi41NTU5IDI4OC43MzQgMjYuNDQxM0MyODkuNDMxIDI2LjY0OTcgMjkwLjEyOCAyNi4zOTI2IDI5MC44MjYgMjYuNDEzNUMyOTEuMTc4IDI2LjM5OTYgMjkxLjUyMyAyNi4xODc2IDI5MS44NzYgMjYuMjcxQzI5Mi4yMjggMjYuNDM3OCAyOTIuNTczIDI2LjE2NjggMjkyLjkyNiAyNi4zODIyQzI5My42MjMgMjYuNTE0MiAyOTQuMzIxIDI2LjM5OTYgMjk1LjAxOCAyNi4zNjEzQzI5NS4zNzEgMjYuMDEzOSAyOTUuNzE1IDI2LjIyOTMgMjk2LjA2OCAyNi4xODA3QzI5Ni40MjEgMjYuMDkzOCAyOTYuNzY1IDI2LjIwMTUgMjk3LjExOCAyNi4zMjMxQzI5Ny40NzEgMjYuMTMyIDI5Ny44MTUgMjYuMTgwNyAyOTguMTY4IDI2LjI1NzFDMjk4LjUyMSAyNi4zMzM1IDI5OC44NjUgMjYuNDI3NCAyOTkuMjE4IDI2LjI5MTlDMjk5LjkxNSAyNi4wNTkxIDMwMC42MTMgMjYuNDI3NCAzMDEuMzEgMjYuMjY0MUMzMDEuNTQ1IDI2LjEwMDggMzAxLjc3MiAyNi4wMjQzIDMwMi4wMDcgMjYuMDU1NkMzMDIuMjQzIDI2LjIwNSAzMDIuNDcgMjUuOTg5NiAzMDIuNzA1IDI2LjIwODVDMzAyLjk0IDI2LjIzNjMgMzAzLjE2NyAyNi4yODE0IDMwMy40MDIgMjYuMzY4M0MzMDMuNjM3IDI2LjQyNzQgMzAzLjg2NSAyNi4yOTg4IDMwNC4xIDI2LjIyMjRDMzA0LjU2MiAyNi4xMzkgMzA1LjAzMiAyNi40MjM5IDMwNS40OTQgMjYuMTc3MkMzMDUuOTU3IDI2LjM1NDQgMzA2LjQyNyAyNi4xMDc3IDMwNi44ODkgMjYuMTg0MUMzMDcuMzUxIDI1LjkxMzEgMzA3LjgyMiAyNi4wNjk1IDMwOC4yODQgMjYuMTQyNUMzMDguNzQ2IDI2LjEwNDIgMzA5LjIxNiAyNi4wNTU2IDMxMCAyNi4wMjA4TDAgMjYuMDIwOFYyNloiDSBmaWxsPSJ3aGl0ZSINIC8+DSA8L2c+DSA8ZGVmcz4NIDxjbGlwUGF0aCBpZD0iY2xpcDBfMTQ5OF8xNDQ2NCI+DSA8cmVjdCB3aWR0aD0iOTQiIGhlaWdodD0iMiIgZmlsbD0id2hpdGUiIC8+DSA8L2NsaXBQYXRoPg0gPGNsaXBQYXRoIGlkPSJjbGlwMV8xNDk4XzE0NDY0Ij4NIDxyZWN0IHdpZHRoPSI5NCIgaGVpZ2h0PSIyIiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAyNikiIC8+DSA8L2NsaXBQYXRoPg0gPC9kZWZzPg0gPC9zdmc+`;
@@ -28,6 +28,11 @@ export default defineComponent({
28
28
  required: false,
29
29
  default: undefined,
30
30
  },
31
+ backgroundStyle: {
32
+ type: Object as PropType<BrandPageCssStyle>,
33
+ required: false,
34
+ default: undefined,
35
+ },
31
36
  context: {
32
37
  type: Object as PropType<BrandPageContext>,
33
38
  required: true,
@@ -49,6 +54,12 @@ export default defineComponent({
49
54
  containerStyle.backgroundColor = this.cardStyle.backgroundColor;
50
55
  }
51
56
 
57
+ // Own background colour decouples the container from the button fill (BP-5800).
58
+ // Guarded on backgroundColor so an empty {} never blanks the container.
59
+ if (this.backgroundStyle?.backgroundColor) {
60
+ containerStyle.backgroundColor = this.backgroundStyle.backgroundColor;
61
+ }
62
+
52
63
  return containerStyle;
53
64
  },
54
65
  arrowStyle(): BrandPageCssStyle {
@@ -13,6 +13,7 @@ import {
13
13
  getNameValidationError,
14
14
  getPhoneValidationError,
15
15
  } from '@brand-page/utils';
16
+ import { isDecorativeButtonStyle } from '../button/decorative-button-styles';
16
17
  import brandPageClient from '../../clients/brand-page.client';
17
18
  import { isEmail } from '../../../utils/validator.util';
18
19
  import {
@@ -78,6 +79,15 @@ export default defineComponent({
78
79
  submitError: undefined as string | undefined,
79
80
  }),
80
81
  computed: {
82
+ // Decorative styles (brushstroke/arrow/paper) render a shape that needs width
83
+ // to read — at pure w-fit the arrow chevron collapses. Give the submit button a
84
+ // ~200px min-width so the decoration looks intentional without going full-width.
85
+ isDecorativeSubmitStyle(): boolean {
86
+ return isDecorativeButtonStyle(
87
+ this.viewModel.buttonStyles?.selectedButtonStyleId,
88
+ );
89
+ },
90
+
81
91
  submitButtonStyle(): BrandPageCssStyle {
82
92
  const buttonStyle = { ...this.viewModel.buttonStyles?.style };
83
93
  const buttonTextStyle = {