redac---n 0.0.0-stage → 0.0.1

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 (102) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +323 -2
  3. package/THIRD_PARTY_NOTICES.md +59 -0
  4. package/dist/aho.d.ts +25 -0
  5. package/dist/aho.js +116 -0
  6. package/dist/base64.d.ts +10 -0
  7. package/dist/base64.js +29 -0
  8. package/dist/bip39-data.d.ts +2 -0
  9. package/dist/bip39-data.js +2 -0
  10. package/dist/cache.d.ts +14 -0
  11. package/dist/cache.js +40 -0
  12. package/dist/calls.d.ts +64 -0
  13. package/dist/calls.js +269 -0
  14. package/dist/charlm-data.d.ts +2 -0
  15. package/dist/charlm-data.js +3 -0
  16. package/dist/charlm.d.ts +7 -0
  17. package/dist/charlm.js +65 -0
  18. package/dist/checksums.d.ts +10 -0
  19. package/dist/checksums.js +98 -0
  20. package/dist/commands.d.ts +72 -0
  21. package/dist/commands.js +784 -0
  22. package/dist/context.d.ts +98 -0
  23. package/dist/context.js +469 -0
  24. package/dist/encoded.d.ts +11 -0
  25. package/dist/encoded.js +336 -0
  26. package/dist/environment.d.ts +10 -0
  27. package/dist/environment.js +62 -0
  28. package/dist/formats-data.d.ts +2 -0
  29. package/dist/formats-data.js +405 -0
  30. package/dist/formats.d.ts +5 -0
  31. package/dist/formats.js +470 -0
  32. package/dist/hmac.d.ts +3 -0
  33. package/dist/hmac.js +87 -0
  34. package/dist/index.d.ts +101 -0
  35. package/dist/index.js +484 -0
  36. package/dist/json.d.ts +82 -0
  37. package/dist/json.js +392 -0
  38. package/dist/known.d.ts +34 -0
  39. package/dist/known.js +340 -0
  40. package/dist/lines.d.ts +28 -0
  41. package/dist/lines.js +69 -0
  42. package/dist/lookup.d.ts +5 -0
  43. package/dist/lookup.js +7 -0
  44. package/dist/model-data.d.ts +3 -0
  45. package/dist/model-data.js +4 -0
  46. package/dist/model.d.ts +2 -0
  47. package/dist/model.js +19 -0
  48. package/dist/named.d.ts +20 -0
  49. package/dist/named.js +3257 -0
  50. package/dist/names.d.ts +94 -0
  51. package/dist/names.js +1449 -0
  52. package/dist/normalize.d.ts +25 -0
  53. package/dist/normalize.js +529 -0
  54. package/dist/pem.d.ts +32 -0
  55. package/dist/pem.js +269 -0
  56. package/dist/policy.d.ts +3 -0
  57. package/dist/policy.js +470 -0
  58. package/dist/public.d.ts +44 -0
  59. package/dist/public.js +362 -0
  60. package/dist/publickeys.d.ts +41 -0
  61. package/dist/publickeys.js +232 -0
  62. package/dist/random.d.ts +29 -0
  63. package/dist/random.js +165 -0
  64. package/dist/repeats.d.ts +21 -0
  65. package/dist/repeats.js +76 -0
  66. package/dist/rules.d.ts +42 -0
  67. package/dist/rules.js +58 -0
  68. package/dist/runs.d.ts +10 -0
  69. package/dist/runs.js +36 -0
  70. package/dist/secretfile.d.ts +52 -0
  71. package/dist/secretfile.js +676 -0
  72. package/dist/shell.d.ts +127 -0
  73. package/dist/shell.js +703 -0
  74. package/dist/spans.d.ts +53 -0
  75. package/dist/spans.js +272 -0
  76. package/dist/sql.d.ts +20 -0
  77. package/dist/sql.js +66 -0
  78. package/dist/stream.d.ts +46 -0
  79. package/dist/stream.js +150 -0
  80. package/dist/structure.d.ts +24 -0
  81. package/dist/structure.js +1614 -0
  82. package/dist/syntax.d.ts +156 -0
  83. package/dist/syntax.js +446 -0
  84. package/dist/transcript.d.ts +30 -0
  85. package/dist/transcript.js +709 -0
  86. package/dist/types.d.ts +81 -0
  87. package/dist/types.js +1 -0
  88. package/dist/unnamed.d.ts +59 -0
  89. package/dist/unnamed.js +939 -0
  90. package/dist/urls.d.ts +70 -0
  91. package/dist/urls.js +303 -0
  92. package/dist/values.d.ts +178 -0
  93. package/dist/values.js +1621 -0
  94. package/dist/yaml.d.ts +40 -0
  95. package/dist/yaml.js +174 -0
  96. package/docs/creddata.svg +318 -0
  97. package/docs/guessing.md +139 -0
  98. package/docs/holdout.svg +85 -0
  99. package/docs/layers.md +80 -0
  100. package/docs/models.svg +81 -0
  101. package/docs/real-text.svg +112 -0
  102. package/package.json +57 -5
@@ -0,0 +1,2 @@
1
+ /** The BIP-39 English wordlist (bitcoin/bips, bip-0039/english.txt, MIT; sha256 2f5eed53…24dbda), in order. */
2
+ export const BIP39_WORDS = "abandon ability able about above absent absorb abstract absurd abuse access accident account accuse achieve acid acoustic acquire across act action actor actress actual adapt add addict address adjust admit adult advance advice aerobic affair afford afraid again age agent agree ahead aim air airport aisle alarm album alcohol alert alien all alley allow almost alone alpha already also alter always amateur amazing among amount amused analyst anchor ancient anger angle angry animal ankle announce annual another answer antenna antique anxiety any apart apology appear apple approve april arch arctic area arena argue arm armed armor army around arrange arrest arrive arrow art artefact artist artwork ask aspect assault asset assist assume asthma athlete atom attack attend attitude attract auction audit august aunt author auto autumn average avocado avoid awake aware away awesome awful awkward axis baby bachelor bacon badge bag balance balcony ball bamboo banana banner bar barely bargain barrel base basic basket battle beach bean beauty because become beef before begin behave behind believe below belt bench benefit best betray better between beyond bicycle bid bike bind biology bird birth bitter black blade blame blanket blast bleak bless blind blood blossom blouse blue blur blush board boat body boil bomb bone bonus book boost border boring borrow boss bottom bounce box boy bracket brain brand brass brave bread breeze brick bridge brief bright bring brisk broccoli broken bronze broom brother brown brush bubble buddy budget buffalo build bulb bulk bullet bundle bunker burden burger burst bus business busy butter buyer buzz cabbage cabin cable cactus cage cake call calm camera camp can canal cancel candy cannon canoe canvas canyon capable capital captain car carbon card cargo carpet carry cart case cash casino castle casual cat catalog catch category cattle caught cause caution cave ceiling celery cement census century cereal certain chair chalk champion change chaos chapter charge chase chat cheap check cheese chef cherry chest chicken chief child chimney choice choose chronic chuckle chunk churn cigar cinnamon circle citizen city civil claim clap clarify claw clay clean clerk clever click client cliff climb clinic clip clock clog close cloth cloud clown club clump cluster clutch coach coast coconut code coffee coil coin collect color column combine come comfort comic common company concert conduct confirm congress connect consider control convince cook cool copper copy coral core corn correct cost cotton couch country couple course cousin cover coyote crack cradle craft cram crane crash crater crawl crazy cream credit creek crew cricket crime crisp critic crop cross crouch crowd crucial cruel cruise crumble crunch crush cry crystal cube culture cup cupboard curious current curtain curve cushion custom cute cycle dad damage damp dance danger daring dash daughter dawn day deal debate debris decade december decide decline decorate decrease deer defense define defy degree delay deliver demand demise denial dentist deny depart depend deposit depth deputy derive describe desert design desk despair destroy detail detect develop device devote diagram dial diamond diary dice diesel diet differ digital dignity dilemma dinner dinosaur direct dirt disagree discover disease dish dismiss disorder display distance divert divide divorce dizzy doctor document dog doll dolphin domain donate donkey donor door dose double dove draft dragon drama drastic draw dream dress drift drill drink drip drive drop drum dry duck dumb dune during dust dutch duty dwarf dynamic eager eagle early earn earth easily east easy echo ecology economy edge edit educate effort egg eight either elbow elder electric elegant element elephant elevator elite else embark embody embrace emerge emotion employ empower empty enable enact end endless endorse enemy energy enforce engage engine enhance enjoy enlist enough enrich enroll ensure enter entire entry envelope episode equal equip era erase erode erosion error erupt escape essay essence estate eternal ethics evidence evil evoke evolve exact example excess exchange excite exclude excuse execute exercise exhaust exhibit exile exist exit exotic expand expect expire explain expose express extend extra eye eyebrow fabric face faculty fade faint faith fall false fame family famous fan fancy fantasy farm fashion fat fatal father fatigue fault favorite feature february federal fee feed feel female fence festival fetch fever few fiber fiction field figure file film filter final find fine finger finish fire firm first fiscal fish fit fitness fix flag flame flash flat flavor flee flight flip float flock floor flower fluid flush fly foam focus fog foil fold follow food foot force forest forget fork fortune forum forward fossil foster found fox fragile frame frequent fresh friend fringe frog front frost frown frozen fruit fuel fun funny furnace fury future gadget gain galaxy gallery game gap garage garbage garden garlic garment gas gasp gate gather gauge gaze general genius genre gentle genuine gesture ghost giant gift giggle ginger giraffe girl give glad glance glare glass glide glimpse globe gloom glory glove glow glue goat goddess gold good goose gorilla gospel gossip govern gown grab grace grain grant grape grass gravity great green grid grief grit grocery group grow grunt guard guess guide guilt guitar gun gym habit hair half hammer hamster hand happy harbor hard harsh harvest hat have hawk hazard head health heart heavy hedgehog height hello helmet help hen hero hidden high hill hint hip hire history hobby hockey hold hole holiday hollow home honey hood hope horn horror horse hospital host hotel hour hover hub huge human humble humor hundred hungry hunt hurdle hurry hurt husband hybrid ice icon idea identify idle ignore ill illegal illness image imitate immense immune impact impose improve impulse inch include income increase index indicate indoor industry infant inflict inform inhale inherit initial inject injury inmate inner innocent input inquiry insane insect inside inspire install intact interest into invest invite involve iron island isolate issue item ivory jacket jaguar jar jazz jealous jeans jelly jewel job join joke journey joy judge juice jump jungle junior junk just kangaroo keen keep ketchup key kick kid kidney kind kingdom kiss kit kitchen kite kitten kiwi knee knife knock know lab label labor ladder lady lake lamp language laptop large later latin laugh laundry lava law lawn lawsuit layer lazy leader leaf learn leave lecture left leg legal legend leisure lemon lend length lens leopard lesson letter level liar liberty library license life lift light like limb limit link lion liquid list little live lizard load loan lobster local lock logic lonely long loop lottery loud lounge love loyal lucky luggage lumber lunar lunch luxury lyrics machine mad magic magnet maid mail main major make mammal man manage mandate mango mansion manual maple marble march margin marine market marriage mask mass master match material math matrix matter maximum maze meadow mean measure meat mechanic medal media melody melt member memory mention menu mercy merge merit merry mesh message metal method middle midnight milk million mimic mind minimum minor minute miracle mirror misery miss mistake mix mixed mixture mobile model modify mom moment monitor monkey monster month moon moral more morning mosquito mother motion motor mountain mouse move movie much muffin mule multiply muscle museum mushroom music must mutual myself mystery myth naive name napkin narrow nasty nation nature near neck need negative neglect neither nephew nerve nest net network neutral never news next nice night noble noise nominee noodle normal north nose notable note nothing notice novel now nuclear number nurse nut oak obey object oblige obscure observe obtain obvious occur ocean october odor off offer office often oil okay old olive olympic omit once one onion online only open opera opinion oppose option orange orbit orchard order ordinary organ orient original orphan ostrich other outdoor outer output outside oval oven over own owner oxygen oyster ozone pact paddle page pair palace palm panda panel panic panther paper parade parent park parrot party pass patch path patient patrol pattern pause pave payment peace peanut pear peasant pelican pen penalty pencil people pepper perfect permit person pet phone photo phrase physical piano picnic picture piece pig pigeon pill pilot pink pioneer pipe pistol pitch pizza place planet plastic plate play please pledge pluck plug plunge poem poet point polar pole police pond pony pool popular portion position possible post potato pottery poverty powder power practice praise predict prefer prepare present pretty prevent price pride primary print priority prison private prize problem process produce profit program project promote proof property prosper protect proud provide public pudding pull pulp pulse pumpkin punch pupil puppy purchase purity purpose purse push put puzzle pyramid quality quantum quarter question quick quit quiz quote rabbit raccoon race rack radar radio rail rain raise rally ramp ranch random range rapid rare rate rather raven raw razor ready real reason rebel rebuild recall receive recipe record recycle reduce reflect reform refuse region regret regular reject relax release relief rely remain remember remind remove render renew rent reopen repair repeat replace report require rescue resemble resist resource response result retire retreat return reunion reveal review reward rhythm rib ribbon rice rich ride ridge rifle right rigid ring riot ripple risk ritual rival river road roast robot robust rocket romance roof rookie room rose rotate rough round route royal rubber rude rug rule run runway rural sad saddle sadness safe sail salad salmon salon salt salute same sample sand satisfy satoshi sauce sausage save say scale scan scare scatter scene scheme school science scissors scorpion scout scrap screen script scrub sea search season seat second secret section security seed seek segment select sell seminar senior sense sentence series service session settle setup seven shadow shaft shallow share shed shell sheriff shield shift shine ship shiver shock shoe shoot shop short shoulder shove shrimp shrug shuffle shy sibling sick side siege sight sign silent silk silly silver similar simple since sing siren sister situate six size skate sketch ski skill skin skirt skull slab slam sleep slender slice slide slight slim slogan slot slow slush small smart smile smoke smooth snack snake snap sniff snow soap soccer social sock soda soft solar soldier solid solution solve someone song soon sorry sort soul sound soup source south space spare spatial spawn speak special speed spell spend sphere spice spider spike spin spirit split spoil sponsor spoon sport spot spray spread spring spy square squeeze squirrel stable stadium staff stage stairs stamp stand start state stay steak steel stem step stereo stick still sting stock stomach stone stool story stove strategy street strike strong struggle student stuff stumble style subject submit subway success such sudden suffer sugar suggest suit summer sun sunny sunset super supply supreme sure surface surge surprise surround survey suspect sustain swallow swamp swap swarm swear sweet swift swim swing switch sword symbol symptom syrup system table tackle tag tail talent talk tank tape target task taste tattoo taxi teach team tell ten tenant tennis tent term test text thank that theme then theory there they thing this thought three thrive throw thumb thunder ticket tide tiger tilt timber time tiny tip tired tissue title toast tobacco today toddler toe together toilet token tomato tomorrow tone tongue tonight tool tooth top topic topple torch tornado tortoise toss total tourist toward tower town toy track trade traffic tragic train transfer trap trash travel tray treat tree trend trial tribe trick trigger trim trip trophy trouble truck true truly trumpet trust truth try tube tuition tumble tuna tunnel turkey turn turtle twelve twenty twice twin twist two type typical ugly umbrella unable unaware uncle uncover under undo unfair unfold unhappy uniform unique unit universe unknown unlock until unusual unveil update upgrade uphold upon upper upset urban urge usage use used useful useless usual utility vacant vacuum vague valid valley valve van vanish vapor various vast vault vehicle velvet vendor venture venue verb verify version very vessel veteran viable vibrant vicious victory video view village vintage violin virtual virus visa visit visual vital vivid vocal voice void volcano volume vote voyage wage wagon wait walk wall walnut want warfare warm warrior wash wasp waste water wave way wealth weapon wear weasel weather web wedding weekend weird welcome west wet whale what wheat wheel when where whip whisper wide width wife wild will win window wine wing wink winner winter wire wisdom wise wish witness wolf woman wonder wood wool word work world worry worth wrap wreck wrestle wrist write wrong yard year yellow you young youth zebra zero zone zoo";
@@ -0,0 +1,14 @@
1
+ import type { Finding } from "./types.ts";
2
+ /**
3
+ * Findings of texts already detected, by text and then by what else decides them (guessing, hint), for one version of the
4
+ * known values: a conversation sent again with a turn added is detected once. Cleared when the known values change
5
+ * and when CACHE_CHARS is reached (a text longer than that isn't kept).
6
+ */
7
+ export declare class FindingsCache {
8
+ private byText;
9
+ private chars;
10
+ private version;
11
+ private sync;
12
+ get(version: number, text: string, context: string): Finding[] | undefined;
13
+ set(version: number, text: string, context: string, found: Finding[]): void;
14
+ }
package/dist/cache.js ADDED
@@ -0,0 +1,40 @@
1
+ /** The most characters of text (and per-entry overhead) a Redactor remembers findings for; the cache is cleared when it is full. */
2
+ const CACHE_CHARS = 16_777_216;
3
+ /** What an entry of the cache costs besides its text, in characters: its maps, its key and its findings. */
4
+ const CACHE_ENTRY_OVERHEAD = 128;
5
+ /**
6
+ * Findings of texts already detected, by text and then by what else decides them (guessing, hint), for one version of the
7
+ * known values: a conversation sent again with a turn added is detected once. Cleared when the known values change
8
+ * and when CACHE_CHARS is reached (a text longer than that isn't kept).
9
+ */
10
+ export class FindingsCache {
11
+ byText = new Map();
12
+ chars = 0;
13
+ version = 0;
14
+ sync(version) {
15
+ if (version === this.version)
16
+ return;
17
+ this.byText.clear();
18
+ this.chars = 0;
19
+ this.version = version;
20
+ }
21
+ get(version, text, context) {
22
+ this.sync(version);
23
+ return this.byText.get(text)?.get(context);
24
+ }
25
+ set(version, text, context, found) {
26
+ this.sync(version);
27
+ const cost = text.length + context.length + CACHE_ENTRY_OVERHEAD;
28
+ if (cost > CACHE_CHARS)
29
+ return;
30
+ if (this.chars + cost > CACHE_CHARS) {
31
+ this.byText.clear();
32
+ this.chars = 0;
33
+ }
34
+ let contexts = this.byText.get(text);
35
+ if (!contexts)
36
+ this.byText.set(text, (contexts = new Map()));
37
+ contexts.set(context, found);
38
+ this.chars += cost;
39
+ }
40
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Calls in source code, read the way most languages read them: arguments are separated by commas outside strings,
3
+ * comments and brackets, and a call may span lines. An argument that is a string literal is read with the prefixes
4
+ * and wrappers languages put around one (`b"…"`, `@"…"`, `Some("…")`, `"…".to_string()`), and a keyword argument
5
+ * with its keyword (`password="…"`, `password: "…"`).
6
+ */
7
+ import { type Span } from "./syntax.ts";
8
+ /** A string literal's content and where it is (quotes excluded). */
9
+ export interface Literal extends Span {
10
+ quote: string;
11
+ }
12
+ export interface Argument {
13
+ /** The argument as written, without the blanks and comments around it. */
14
+ text: string;
15
+ start: number;
16
+ end: number;
17
+ /** A keyword argument's keyword: `password` in `password="…"` or `password: "…"`. */
18
+ keyword?: string;
19
+ /** The string literal the argument is (after its keyword), if it is one. */
20
+ literal?: Literal;
21
+ }
22
+ /**
23
+ * The arguments of the call (or the list or object) whose opening bracket is just before `at`, up to its matching
24
+ * closing bracket; undefined when the call isn't closed within MAX_CALL characters, a string doesn't close on its
25
+ * line, or a bracket closes that didn't open. A `//` is a comment unless reading it as one leaves the call unclosed:
26
+ * then it's Python's floor division (`port=total // 2)`).
27
+ */
28
+ export declare function callArguments(text: string, at: number): Argument[] | undefined;
29
+ /** Where the bracket opened just before `at` closes (its index), strings and comments skipped as callArguments skips them; -1 if not found. */
30
+ export declare function closingBracket(text: string, at: number): number;
31
+ /**
32
+ * Where the string literal whose opening quote is at `at` closes, read with its syntax's escapes: C#'s `@"…"` doubles
33
+ * a quote, Rust's `r#"…"#` has none, a shell's single quotes have none and run on into the rest of their word
34
+ * (shellWordEnd), a template literal has a backslash, and any other is read both ways a language writes one, a
35
+ * backslash (`'Kx9\'Qv2'`, `"Kx9\"Qv2"`: Python, JS, Ruby, PHP) and a doubled quote (`'Kx9''Qv2'`: YAML, SQL,
36
+ * PowerShell; `"Kx9""Qv2"`: PowerShell, VB, CSV), whichever leaves the line well-formed after it (the longer when both
37
+ * do); otherwise a backslash. (A raw string closes at its first quote, as the doubled reading reads it: Rust's
38
+ * `r"C:\keys\"`. Python's `r"\""`, which keeps its escape, leaves the line well-formed only read with a backslash.)
39
+ */
40
+ export declare function literalEnd(text: string, at: number, { max, shell }?: {
41
+ max?: number | undefined;
42
+ shell?: boolean | undefined;
43
+ }): number;
44
+ export interface LiteralHead {
45
+ /** The keyword before it, when `keyword` was asked for. */
46
+ keyword?: string;
47
+ /** The literal's prefix: `f` makes its `{…}` holes code, `b` makes it bytes. */
48
+ prefix: string;
49
+ /** Where the opening quote is. */
50
+ open: number;
51
+ }
52
+ /** The literal head starting at `at`, or undefined. With `keyword`, a keyword before it is read too. */
53
+ export declare function literalHead(text: string, at: number, { keyword }?: {
54
+ keyword?: boolean | undefined;
55
+ }): LiteralHead | undefined;
56
+ /** The string literal starting at `at` (after blanks), read as an argument would be: `"…"`, `b'…'`, `Some("…")`. */
57
+ export declare function literalAt(text: string, at: number): Literal | undefined;
58
+ export interface Call {
59
+ /** The callee pattern's match, ending at the call's `(`. */
60
+ match: RegExpExecArray;
61
+ args: Argument[];
62
+ }
63
+ /** The calls whose callee `pattern` (global, ending with the opening bracket) matches, with their arguments. */
64
+ export declare function calls(text: string, pattern: RegExp): Generator<Call>;
package/dist/calls.js ADDED
@@ -0,0 +1,269 @@
1
+ /**
2
+ * Calls in source code, read the way most languages read them: arguments are separated by commas outside strings,
3
+ * comments and brackets, and a call may span lines. An argument that is a string literal is read with the prefixes
4
+ * and wrappers languages put around one (`b"…"`, `@"…"`, `Some("…")`, `"…".to_string()`), and a keyword argument
5
+ * with its keyword (`password="…"`, `password: "…"`).
6
+ */
7
+ import { lastText, lineEnd } from "./lines.js";
8
+ import { isContraction, MAX_VALUE, STRING_PREFIX, stringEnd } from "./syntax.js";
9
+ /** The brackets an argument list may open with, and the one that closes each. */
10
+ const CLOSER = { "(": ")", "[": "]", "{": "}" };
11
+ /** How far a call's arguments may run, in characters. */
12
+ const MAX_CALL = MAX_VALUE;
13
+ /**
14
+ * The arguments of the call (or the list or object) whose opening bracket is just before `at`, up to its matching
15
+ * closing bracket; undefined when the call isn't closed within MAX_CALL characters, a string doesn't close on its
16
+ * line, or a bracket closes that didn't open. A `//` is a comment unless reading it as one leaves the call unclosed:
17
+ * then it's Python's floor division (`port=total // 2)`).
18
+ */
19
+ export function callArguments(text, at) {
20
+ for (const slashComments of [true, false]) {
21
+ const close = closeOf(text, at - 1, slashComments);
22
+ if (close >= 0)
23
+ return splitArguments(text, at, close, slashComments);
24
+ }
25
+ return undefined;
26
+ }
27
+ /** Where the bracket opened just before `at` closes (its index), strings and comments skipped as callArguments skips them; -1 if not found. */
28
+ export function closingBracket(text, at) {
29
+ const close = closeOf(text, at - 1, true);
30
+ return close >= 0 ? close : closeOf(text, at - 1, false);
31
+ }
32
+ /**
33
+ * The tables `matchBrackets` makes for a text, with and without `//` comments. Kept for the last text read: the rules of
34
+ * one text share them.
35
+ */
36
+ const bracketTables = lastText(() => new Map());
37
+ /** Where the opening bracket at `open` closes (see `matchBrackets`); -1 for none, and for a bracket the pass read inside a string or a comment. */
38
+ function closeOf(text, open, slashComments) {
39
+ const tables = bracketTables(text);
40
+ let table = tables.get(slashComments);
41
+ if (!table)
42
+ tables.set(slashComments, (table = matchBrackets(text, slashComments)));
43
+ const close = table[open] ?? -1;
44
+ return close > open && close - open <= MAX_CALL ? close : -1;
45
+ }
46
+ /**
47
+ * For each opening bracket of a text, the index of the bracket that closes it (0 if none does: a string on the way
48
+ * doesn't close, or a bracket closes that didn't open), read in one pass with strings and comments skipped.
49
+ */
50
+ function matchBrackets(text, slashComments) {
51
+ const close = new Int32Array(text.length);
52
+ const open = [];
53
+ // (A `/*` that never closes is no comment but text, a glob's `src/*.py` or a regex's `a/*b`, and so is every later one.)
54
+ let unclosed = Infinity;
55
+ for (let i = 0; i < text.length; i++) {
56
+ const c = text[i];
57
+ if ((c === "/" && text[i + 1] === "/" && slashComments) || (c === "#" && /[\s(,]/.test(text[i - 1] ?? " "))) {
58
+ i = lineEnd(text, i, Infinity) - 1;
59
+ }
60
+ else if (c === "/" && text[i + 1] === "*" && i < unclosed) {
61
+ const stop = text.indexOf("*/", i + 2);
62
+ if (stop < 0)
63
+ unclosed = i;
64
+ else
65
+ i = stop + 1;
66
+ }
67
+ else if (c === "'" && isContraction(text, i)) {
68
+ // (Prose's apostrophe, `don't connect(…) doesn't`, opens nothing.)
69
+ }
70
+ else if (c === '"' || c === "'" || c === "`") {
71
+ // (A string that doesn't close ends every call around it: none of them is closed.)
72
+ const stop = literalEnd(text, i, { max: MAX_CALL });
73
+ if (stop < 0)
74
+ open.length = 0;
75
+ else
76
+ i = stop;
77
+ }
78
+ else if (c === "(" || c === "[" || c === "{")
79
+ open.push(i);
80
+ else if (c === ")" || c === "]" || c === "}") {
81
+ const at = open.pop();
82
+ if (at !== undefined && CLOSER[text[at]] === c)
83
+ close[at] = i;
84
+ // (A bracket that closes what didn't open ends every call around it.)
85
+ else
86
+ open.length = 0;
87
+ }
88
+ }
89
+ return close;
90
+ }
91
+ /** The arguments between `at` and the bracket at `close` that closes the call: separated by commas outside brackets and strings. */
92
+ function splitArguments(text, at, close, slashComments) {
93
+ const args = [];
94
+ // Where the current argument's text starts and ends: its first and last characters outside blanks and comments.
95
+ let first = -1;
96
+ let last = -1;
97
+ let inner;
98
+ const finish = () => {
99
+ if (first >= 0)
100
+ args.push(argument(text, first, last));
101
+ first = last = -1;
102
+ };
103
+ for (let i = at; i < close; i++) {
104
+ const c = text[i];
105
+ if (c === " " || c === "\t" || c === "\n" || c === "\r")
106
+ continue;
107
+ if ((c === "/" && text[i + 1] === "/" && slashComments) || (c === "#" && /[\s(,]/.test(text[i - 1] ?? " "))) {
108
+ i = Math.min(close, lineEnd(text, i, MAX_CALL)) - 1;
109
+ continue;
110
+ }
111
+ if (c === "/" && text[i + 1] === "*") {
112
+ // (As the bracket pass reads it: a comment that closes inside the call, or text. The next `*/` is looked for
113
+ // once, not from each `/*`: a call of globs, `src/*/*.py`, would read its length once for each.)
114
+ inner ??= { text: text.slice(i + 2, close), at: i + 2, stop: -2 };
115
+ if (inner.stop !== -1 && inner.stop < i + 2 - inner.at)
116
+ inner.stop = inner.text.indexOf("*/", i + 2 - inner.at);
117
+ if (inner.stop >= 0) {
118
+ i = inner.at + inner.stop + 1;
119
+ continue;
120
+ }
121
+ }
122
+ if (c === ",") {
123
+ finish();
124
+ continue;
125
+ }
126
+ if (first < 0)
127
+ first = i;
128
+ // (Each closes before `close`: the pass that matched `close` read them.)
129
+ const stop = c === '"' || c === "'" || c === "`"
130
+ ? literalEnd(text, i, { max: close - i })
131
+ : c === "(" || c === "[" || c === "{"
132
+ ? closeOf(text, i, slashComments)
133
+ : i;
134
+ if (stop < 0)
135
+ break;
136
+ i = stop;
137
+ last = i + 1;
138
+ }
139
+ finish();
140
+ return args;
141
+ }
142
+ /**
143
+ * How the string literal whose quote is at `quoteAt` escapes, told by the prefix before the quote: C#'s verbatim
144
+ * `@"…"` doubles its quotes and may span lines, Rust's raw `r#"…"#` has no escapes, a backtick template spans lines.
145
+ */
146
+ function dialect(text, quoteAt) {
147
+ const before = text.slice(Math.max(0, quoteAt - 3), quoteAt);
148
+ if (/(?<![\w$])(?:@\$?|\$@)$/.test(before))
149
+ return { escapes: "doubled", multiline: true };
150
+ if (/(?<!\w)r#+$/.test(before))
151
+ return { escapes: "none", multiline: true };
152
+ return undefined;
153
+ }
154
+ /**
155
+ * What may follow a string literal that ends a value: a separator, a closing bracket, a comment, the line's end, an
156
+ * operator or a SQL keyword (`… = 'a''b' WHERE …`, `AND`, `||`).
157
+ */
158
+ const AFTER_LITERAL = /^[ \t]*(?:[,;)\]}|+&]|#|\/\/|--|\r?\n|$|(?:WHERE|AND|OR|LIMIT|ORDER|GROUP|ON|FROM|SET|VALUES|RETURNING|IS|NOT|ELSE|THEN|END)\b)/i;
159
+ /** What ends a shell word's bare characters: a blank, an operator, a bracket that closes what's around the word, a list's comma. */
160
+ const SHELL_WORD_END = /[\s;&|<>()`}\],#]/;
161
+ /**
162
+ * Where the value of the shell word whose single-quoted first piece opens at `at` ends, its pieces run together the
163
+ * way a shell joins them (`'it'\''s'`, `'Kx9''Qv2'`, `'Kx9'"Qv2"`, a `\` line continuation between two): at its last
164
+ * piece's closing quote, or after its last bare character. -1 if a single quote is left open on its line, which makes
165
+ * the line no shell's: `'Kx9\'Qv2 Lp7'` is another language's escape (a single quote escapes nothing in a shell).
166
+ */
167
+ function shellWordEnd(text, at, max) {
168
+ let end = -1;
169
+ let i = at;
170
+ while (i < text.length && i - at <= max) {
171
+ const c = text[i];
172
+ if (c === "'" || c === '"') {
173
+ const close = stringEnd(text, i, { escapes: c === "'" ? "none" : "backslash", max: max - (i - at) });
174
+ if (close < 0)
175
+ break;
176
+ end = close;
177
+ i = close + 1;
178
+ }
179
+ else if (c === "\\" && i + 1 < text.length) {
180
+ // (An escaped character is the word's, `'Kx9'\!`, and an escaped line break joins the next line's pieces on.)
181
+ end = i += 2;
182
+ }
183
+ else if (SHELL_WORD_END.test(c))
184
+ break;
185
+ else
186
+ end = ++i;
187
+ }
188
+ return (text.slice(i, lineEnd(text, i)).match(/'/g)?.length ?? 0) % 2 ? -1 : end;
189
+ }
190
+ /**
191
+ * Where the string literal whose opening quote is at `at` closes, read with its syntax's escapes: C#'s `@"…"` doubles
192
+ * a quote, Rust's `r#"…"#` has none, a shell's single quotes have none and run on into the rest of their word
193
+ * (shellWordEnd), a template literal has a backslash, and any other is read both ways a language writes one, a
194
+ * backslash (`'Kx9\'Qv2'`, `"Kx9\"Qv2"`: Python, JS, Ruby, PHP) and a doubled quote (`'Kx9''Qv2'`: YAML, SQL,
195
+ * PowerShell; `"Kx9""Qv2"`: PowerShell, VB, CSV), whichever leaves the line well-formed after it (the longer when both
196
+ * do); otherwise a backslash. (A raw string closes at its first quote, as the doubled reading reads it: Rust's
197
+ * `r"C:\keys\"`. Python's `r"\""`, which keeps its escape, leaves the line well-formed only read with a backslash.)
198
+ */
199
+ export function literalEnd(text, at, { max = MAX_VALUE, shell = false } = {}) {
200
+ const special = dialect(text, at);
201
+ if (special)
202
+ return stringEnd(text, at, { ...special, max });
203
+ const quote = text[at];
204
+ if (quote === "'" && shell) {
205
+ const word = shellWordEnd(text, at, max);
206
+ if (word >= 0)
207
+ return word;
208
+ }
209
+ const backslash = stringEnd(text, at, { escapes: "backslash", multiline: quote === "`", max });
210
+ if (quote === "`")
211
+ return backslash;
212
+ const doubled = stringEnd(text, at, { escapes: "doubled", max });
213
+ const fits = (close) => close >= 0 && AFTER_LITERAL.test(text.slice(close + 1, close + 41));
214
+ if (fits(backslash) && fits(doubled))
215
+ return Math.max(backslash, doubled);
216
+ return fits(doubled) ? doubled : backslash;
217
+ }
218
+ /**
219
+ * The head of a string literal, up to its opening quote: a keyword (`password=`, `password: `), a wrapper (`Some(`,
220
+ * `String::from(`, `SecretStr(`), and a prefix (Python's `b r u f`, C#'s `@` and `$`, Rust's `r#`): how the readers
221
+ * of calls' and assignments' literals find where one starts.
222
+ */
223
+ const LITERAL_HEAD = new RegExp(String.raw `^(?:([A-Za-z_$][\w$]*)[ \t]*(?:=(?![=>])|:(?!:))[ \t]*)?((?:Some|String::from|SecretStr|Secret)\([ \t]*)?(${STRING_PREFIX})?(["'\x60])`);
224
+ /**
225
+ * What may follow a literal and leave it the value: a Rust raw string's closing `#`s, the wrapper's `)`, a conversion
226
+ * (`.to_string()`, `.encode()`).
227
+ */
228
+ const LITERAL_TAIL = /^#*(?:[ \t]*\))?(?:\.(?:to_string|into|to_owned|encode|strip)\(\))?[ \t]*$/;
229
+ const KEYWORD = /^([A-Za-z_$][\w$]*)[ \t]*(?:=(?![=>])|:(?!:))/;
230
+ /** The literal head starting at `at`, or undefined. With `keyword`, a keyword before it is read too. */
231
+ export function literalHead(text, at, { keyword = false } = {}) {
232
+ const m = LITERAL_HEAD.exec(text.slice(at, at + 140));
233
+ if (!m || (m[1] !== undefined && !keyword))
234
+ return undefined;
235
+ return { keyword: m[1], prefix: m[3] ?? "", open: at + m[0].length - 1 };
236
+ }
237
+ /** The string literal that opens at `head`: its content and where it is, or undefined if it doesn't close. */
238
+ function literalOf(text, head) {
239
+ const close = literalEnd(text, head.open, { max: MAX_CALL });
240
+ return close < 0
241
+ ? undefined
242
+ : { value: text.slice(head.open + 1, close), start: head.open + 1, end: close, quote: text[head.open] };
243
+ }
244
+ function argument(text, start, end) {
245
+ const arg = { text: text.slice(start, end), start, end };
246
+ const keyword = KEYWORD.exec(arg.text);
247
+ if (keyword)
248
+ arg.keyword = keyword[1];
249
+ const head = literalHead(text, start, { keyword: true });
250
+ const lit = head && literalOf(text, head);
251
+ if (lit && LITERAL_TAIL.test(text.slice(lit.end + 1, end)))
252
+ arg.literal = lit;
253
+ return arg;
254
+ }
255
+ /** The string literal starting at `at` (after blanks), read as an argument would be: `"…"`, `b'…'`, `Some("…")`. */
256
+ export function literalAt(text, at) {
257
+ const start = at + /^[ \t]*/.exec(text.slice(at, at + 200))[0].length;
258
+ const head = literalHead(text, start);
259
+ return head && literalOf(text, head);
260
+ }
261
+ /** The calls whose callee `pattern` (global, ending with the opening bracket) matches, with their arguments. */
262
+ export function* calls(text, pattern) {
263
+ pattern.lastIndex = 0;
264
+ for (let m = pattern.exec(text); m; m = pattern.exec(text)) {
265
+ const args = callArguments(text, m.index + m[0].length);
266
+ if (args)
267
+ yield { match: m, args };
268
+ }
269
+ }
@@ -0,0 +1,2 @@
1
+ /** Character trigram model of identifier parts: -log2 p(c | two previous) * 16, base64 of 37^3 bytes. */
2
+ export declare const CHARLM = "/0FMPURIS1VWS2RnUUpUV0FoRjxJVl5aaGtrYGFiYmVlZWVlZf9PQjU4T0xOb1hydjtXPnc/cD06SDxdW3R7bP/////////////9KkpKSjBMX3I7cnJAZG04a3Q7YWQ6enBsU2r9/f39/f39/f39/zBZWVZJWW04WIB7PGVzF2aFSV9lS3RyfG+C//////////////80UFBSHFBxaSlsc3FoZzpsbE1iYE9mdHxld///////////////Q09ERVBIZHRTeHZESS1oV1lOS11dSWwkbnf//////////////jBNTUs7SG12K3N9PWVgMWZsOVpoQHFsc25u/v7+/v7+/v7+/vM7ZE9WJmJrVj1taEFbYjtZaipUZEFhd2FwZfPz8/Pz8/Pz8/PzKF9ZVS1laWI5YlxYXGAvV2xYV0ZEXGtkSWHz8/Pz8/Pz8/Pz/lVnV0VhWVdoZ2tuXDoTWFdiXDtJc2p5Z4Jw/v7+/v7+/v7+/uU3Vl1NSVlcWkZZUmBZVC9MVVMxWThXVFpaUeXl5eXl5eXl5eXiRVtRUSNdaVI2W2FNUUZIVltbW1RBTkVdZ1ri4uLi4uLi4uLi9y9lX14yZWxrImhqWmVjJGJpY1NeUl9ta2dh9/f39/f39/f39/8iaWJcLmZoey12ZmNoaSxlb2tVWz1pcHBNb//////////////1MV1VUSxVV2hCZnBYX2QhVHZdVlRAVF9rbGr19fX19fX19fX18lg+QldfRVpkW2ZkVU9EWitsNU1NOztUYWln8vLy8vLy8vLy8v8qc25cPnFqW0ZyZUJzZzVmeh9fZUplenE9cf/////////////hUlZPUEZRSllHXVtUVVdcUlNZS0wbWlRWWFvh4eHh4eHh4eHh/ztramUMbXJmVHp3aWttP2GSc1pjR2xyfXR4//////////////9FcEFsL3p0QTt/ZlNcXUY9X2liLC9vXHtQgP//////////////OGVeZi1aaDU8cW5mYWwyYHIoWGNTbl1sSGf/////////////82FeXWRlXmpnX3FlV18Tbz1wQTlBXl5nbm1r8/Pz8/Pz8/Pz8+spW1JcKl1cYStga19UVztXY1pSWUxaZVthYuvr6+vr6+vr6+vvLWVaXy9ZXDcxc2BfaF4yVmo9VF5hYF5aYmLv7+/v7+/v7+/v4UhJQ0FGQFpJVVRcRERWT0ZWSkZMVk9WRE9P4eHh4eHh4eHh4d01VUhMPUpUTUdTXElIUz1WUlRWSU1SSFNQUd3d3d3d3d3d3d3dUk9PSjlPUk0/VV1OSEtBT1ZZQ09ISEpOUkrd3d3d3d3d3d3d6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6OjoKzI9Nzk3LDk9Oejo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6DQyNDk1OjU2NDTm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5uYtMjI5NzQ4Njo65+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fnMzU0MTc2Njg2N+Tk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5DAzOTUvPDc1OTXk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OQ0NDE4NzM4NzY15OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkMTU5MzY2NTY3NuTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5Dg0ODY3ODUyMzPk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OQyOTM4NjA2Njc35OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkODQ1Mzc4NTI3M1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1MdGkI/SERGcNhpd3ZqiFxshWJdY4HY2IPYitjY2NjY2NjY2NjYMktJSl0/W4yDO3KKEoV4UZB4gErsaJ2Z7Ijs7Ozs7Ozs7Ozs7DpWZzZoLGWkN06jJGGDoWSTYWRyJnKHo/Z1p/b29vb29vb29vYmPVNIMSxadH44VexTRexLhIhqSIF4R4egYuzs7Ozs7Ozs7OzsGzo/Pj8+OnltTVOAUFpoZWx6g1NfcX+BX89xz8/Pz8/Pz8/PzyA6NUNDMimEh1rVdNWHiGGD1Vp0O9WGctWI1dXV1dXV1dXV1dU3QpB9kxHfOYE8349wXk5ki99MQ2OPdnSKjt/f39/f39/f39/fHy2urq4vrlpdXVtcV0CuOFFVSq6uVK5MYGKurq6urq6urq6urjdOkXxWgpVl5JOSeiZLF1aIZz1LQJh75Ifk5OTk5OTk5OTk5OQbKDuxsUpgRbGxZWWxYLEusbGxR2VjXF2xZWWxsbGxsbGxsbGxIkhsd14RynrKPcp6eH19cl3KYEbKd3zKe2vKysrKysrKysrKyh1UeVuAP3Bkgyn+YyVveFhkh4NFTU57g/5kp/7+/v7+/v7+/v4uTkt5eRLmeeY95ppQT+ZbNoKJTHNs5paU5oDm5ubm5ubm5ubmL0OGMypWljiYQ55glIFHWIesljUvY5KSrFiG+/v7+/v7+/v7+xSmpitOUlBRpkumplpGpqZaWqampk6mWlOmSaampqampqampqYrUHGCdzt8mjwu545sjJpZHY9eOzzn55vnfOfn5+fn5+fn5+fnHT+3WV8pa2pBXmpnXGS3WmhGt7dLM7dnaEu3t7e3t7e3t7e3tzQ+ZEk5OXw8kjmYR1xRV29sjkc2M6iPjI1Ksv7+/v7+/v7+/v4zXHZPai6SezZKpEh7dWpZZYiVISxZjpnyVory8vLy8vLy8vLyQECmSJcdg/9HGv+5g4W0QZf/dV5CW62cqJK7/////////////0GN2lxFZHRKhoPa2jaHUI55jmU1D9qLjliL2tra2tra2tra2towMWvPzxbPb88kg4DPc4E3z8+Bg4GBz3hvas/Pz8/Pz8/Pz8/PIClcdFpFbFlwTsBKRsAywMDAZzVawMBmaFJmwMDAwMDAwMDAwBhHwGZTOmvAXSjAwEpucUdSwGZNT8BcwGVRdMDAwMDAwMDAwMARZU9dZzh3dmpPbtJNVWlRX4SFMFPS0nTSgNLS0tLS0tLS0tLSIbGxsV1LW7GxLGSxYkaxNGCxsbFaLmVisTBRsbGxsbGxsbGxsVNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTLUxGJkpUT12RZ5RlQmk/iGlfNTJJdeSRgXV35OTk5OTk5OTk5Bs9ND9CNz+Bgk2Cz0dvgl3PWkx9gWTPz4NWz8/Pz8/Pz8/Pz88cNkNBNzhB0VdTe9FFg9FF0YRpUnB30Wl1f4TR0dHR0dHR0dHRGi86Ojs9PX7LO8vLaH59UstreXXLy8vLf8tky8vLy8vLy8vLyyg7S0Q7RkxbTG3jkjXjQZLj4ypST+OAgHBgfePj4+Pj4+Pj4+MYNjc5OTs1enhWycl2yWxcfXtjdcnJyXjJyXrJycnJycnJycnJHmFdO61JrUCtVmBGU16tS1mtL1FgYUxVWmFera2tra2tra2trRlNUFQ0RKBPUaBMUKCgoC6gP6CgoKCgoE5RoKCgoKCgoKCgoKBCS2dfUW51P2+LidkhiyFKidlPbynZ2YqGi3DZ2dnZ2dnZ2dnZGj21XrUeZrVnRWW1tWe1UrVmTENRWbW1YLVktbW1tbW1tbW1tRilpUNBKaVMpTZTpaWlVKWlpaVVUKVQpVhXV6WlpaWlpaWlpaVPS5PoiAmJloY16HDompc8mITofpVbm5noVZno6Ojo6Ojo6OjoGj9kZ01DZ2K3JWtca7dmN1a3Z0lqardft2u3t7e3t7e3t7e3txQzVqlUNFhdqUxbqalaW0NVqV2pqVtdXKmpWqmpqampqampqalCQ2F7SdqIcnN4ito/ZFMnYdoyXDg2cHQsbIna2tra2tra2traIx6xsWBVsWJjYbGxN1pjTLGxKldksWJhY2SxsbGxsbGxsbGxsRgvqV2pW6mpqaldqV2pWqmpMKmpWSRdqalaqampqampqampqalFHn5feyHMzHsvgHhszHwkzMzMeWFfzMzMdXzMzMzMzMzMzMzMHmR3L08ne81dWn3NzXxwP17NbV0uWs1nzVnNzc3Nzc3Nzc3NzSIwbGa5Nmy5Z0hWuUprTkJlZC5juWlsuWw7aLm5ubm5ubm5ublY1GBPXX42N3QqgYI/TUTU1NRVNCLU1NTUZWLU1NTU1NTU1NTUFZ2dnZ06TJ2dIZ2dnZ1QnU+dnZ0/nZ1FT52dnZ2dnZ2dnZ2dnRNOTU2amppHmpqaS5pKmk1FmppKTUaaSkiampqampqampqampoPoVVToVJRoU9SoU2hoaFRoaGhUFJTUKFST1KhoaGhoaGhoaGhG1xqb3BJvEZRvG28vGxkvEJfZUgavG9tbby8vLy8vLy8vLy8vBJSTaBRoFRUUEhUoKCgUaBUoD6gUlJSUqBUoKCgoKCgoKCgoKBTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUz5YTz5VX2GKp4enoiNfQKM8bEI/I2CFpvWh9fX19fX19fX19fUWNjs1Nzk3yXFnycl6e8l0yXrJY8nJycnJyWnJycnJycnJycnJIz1KP0ciTNllUNmNdGaKN9nZcIZmNdls2dnZ2dnZ2dnZ2dnZ2Ro+Pjo5LzfOT11/f4J1cX9pznpcbM57fc5zgs7Ozs7Ozs7Ozs4ZWF1bPFNdjXNZ9ZJHVT2IRY8+KIL1pvWXnpj19fX19fX19fX1GThBOT04O1h7VH7LWXRhXX3LW17LfXp4e8t8y8vLy8vLy8vLyx9arGCsMl5SSU9eXE5eW1pcrCtaXGCsSltTYKysrKysrKysrKwpI6LwbRued/AynHqHXWZFe/BLg4JVmYHwfvDw8PDw8PDw8PDwNzNpeDg6N3yIV5OGUFIwSTmIUUY239/f333f39/f39/f39/f3w+jo1WjVKNUV6NVS6Ojo0gzo6NEo6Ojo0OjUqOjo6Ojo6Ojo6McQGdxeSRid3xAmJhEc1pgTHVjM1xj5WnlaeXl5eXl5eXl5eXlRx7gceAtf43gKeDg4IySJZGBfFiGM+Dgkobg4ODg4ODg4ODg4Bwtu7suPmxWu1e7bVZqu2Uwb1dcu1xtb21bu7u7u7u7u7u7u7sVRK1NrUxRWa1Wra1brVxMXq1ZXCutrV49Ya2tra2tra2tra2tXneCdDp0f2WWlf//OyMZW1apOGSOSlSN/////////////////x1EuU5nU1RPuVBmWkdta7k4uWdluSW5uWs8ubm5ubm5ubm5ubkaJKhaqKioqFRZqKhPqKhXqD5YqKgmqKioTKioqKioqKioqKioPzTcbXQdkIzcJdzcYnKJLXrc3HZzStzcjjnc3Nzc3Nzc3Nzc3AzOzn2ATnBuZUrOznp7zndgzlk4PX07gM7Ozs7Ozs7Ozs7Ozs4jVaWB8jSL8vIb8qZSh5czffJUPJFJpIxYZaHy8vLy8vLy8vLyRolQ2mpy2tpubNraMDNv2ljaGjAtdNqAitqO2tra2tra2tra2hRHqlBdP1pQqlFeqleqXapKqls0ql1QV6qqW6qqqqqqqqqqqqoXT6xbO02sQ6xETFs3V6xdVF+sSVxdrFlfrKysrKysrKysrKysDaSkpKSkpFOkWFFUpD9GpFSkpKSkVlSkRFJWpKSkpKSkpKSkpAlWZiq7u29mu2+7u2O7u7tru1S7SWy7u7u7u7u7u7u7u7u7u7sNnUmdnUWdnZ2dTk2dUVCdUVGdUZ2dnZ1RUVGdnZ2dnZ2dnZ2dU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1MwV0ZPVVRYfId46YhSZD+FTGo/SBmUW4mSR5rp6enp6enp6enpFzY/PkNAP3fQ0NBmXWZwQGGC0HxlU9B/almD0NDQ0NDQ0NDQ0BsuPzs+QT1uWV95z1NdbUyAgVlsX8/PgHh+z8/Pz8/Pz8/Pz88ePkRFRi9B1XQ6hodSdYJdgdUwYYF91YSFgobV1dXV1dXV1dXVL1NROjlZPHWVqpeRQGA5hUWFKzpRklePWf+q/////////////xk5Qz05Oj9jeVCFglhsYVdi0XdUY26DhWWFhdHR0dHR0dHR0dEoW7VXtQ9nWrViabW1T7W1V7VAtWm1tV1jYmS1tbW1tbW1tbW1F0qvQmM0X15gRK9fUWNjNF2vYmOvYmNWWq9gr6+vr6+vr6+vr1M6ojVkY0Jc85Lz85JhJV6BojIjPnpP83rzhvPz8/Pz8/Pz8/MbL2GxYEexZWFisVliS7FgsWWxOrEnZWCxZV2xsbGxsbGxsbGxFFqmWqZFWlCmQEhUpkNTpqamVlhVpqZSVEZSpqampqampqampiVjxWzFF8XFcih0xWTFxT3Fc3N1eXl5xcU2xcXFxcXFxcXFxcUfL71NvUhraL0bcL1Ma71SaWpaV25xcL1uZb29vb29vb29vb29FC5fs1s8VbNlRWdns7NGs2ezszdis7OzZ2dks7Ozs7Ozs7OzszZ7aiF6TW5gf2CO3Vw4PlpV3UhjS0RqKHeH3d3d3d3d3d3d3d0eKFBjtWRjtWdHtVlaZ7UtZWgvZGdntbW1ZGW1tbW1tbW1tbW1FjFdVak0qV2pqampR1pXqampqVZKW1haW0NaqampqampqampqSojZM3NJXbNfTDNzc18fC9/eX9JzVZzYIBYzc3Nzc3Nzc3Nzc0GUndkhV2IgVhtiopvd2tyctfXY1pigWGJgInX19fX19fX19fXJ0a5uUo7TLkmR2q5TkhnW7m5SkdoWGxsZDhsubm5ubm5ubm5uT1Mhh/UWnLUhFXUhyczVnIz1D5XU4fU1HHU1NTU1NTU1NTU1NQmLmouYS5rY202arxdvG1MWT5GvHC8aW68vG68vLy8vLy8vLy8Hi+mpqY8plJXMKamplqmO6amN1FIpllaplimpqampqampqampgisrKysrKysYFWsYKysrF2sWl5ESKysrF5bWqysrKysrKysrKwOWblJuVG5ublVa7k5Wi5oubm5ubm5bGdsbFW5ubm5ubm5ubm5EJ+fn5+fn5+fn59NU59PT1BTQZ+fTZ+fLlNQn5+fn5+fn5+fn1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTPGRNQyheXmyDf/FHPUtC8VidMjUzWWbxooel8fHx8fHx8fHx8SQrPj9IQUKDXU6JeW2DikNjd05LZD5019dei9fX19fX19fX19c4SmliXEZrllE/qkRSepUtkaxQaxlEgKmagZj4+Pj4+Pj4+Pj4BWVtdmhOdnCcQ/+lhJyPdZb/iWWOVK//l5b//////////////yBPUkwqUVCTlXLiRlhTP+I84ktKP5V2lWfiWuLi4uLi4uLi4uIkOk9WVys8Y5Yr5eVNhG5O5eVaUF4+g5PlmeXl5eXl5eXl5eXlNCV6b3QyhGSKKNaKYUyIOXrWMNaFPYPWiHCK1tbW1tbW1tbW1iUhumK6Lmy6ujC6Zmy6ui26umy6VlVtbWxburq6urq6urq6uro5P32BSzxeLX52zXZRYiZpW800bUFpOc1sf3DNzc3Nzc3Nzc3NIEyqPKolWqqqXKpHqqpcRKqqXCSqXaqqXKqqqqqqqqqqqqqqqhJFs7NDPLNmszKzs0hjUbOzY2BLZmRmXrNXs7Ozs7Ozs7Ozs7MtO3dqSydbjqEwoYc2cG5FSvCMRFZ4afCfN/Dw8PDw8PDw8PDwMS9AZH8heW2XRJ3qkmaJMy7qlESbX3WIjGvq6urq6urq6urq6jZMkzQxRW9ef1iSqXqPgVuLmoA+FmJZm6SUpv////////////8sxl1fSmk1WMZfYXBQN1bGPMYwPG4xXFTGxsbGxsbGxsbGxsbGMTOSeHM0l5RYUpfjMmzjNGyPK0YwbJCVl23j4+Pj4+Pj4+Pj4yppeV3HYnnHdsfHx1jHX8dlZntJdwpmx8fHx8fHx8fHx8fHx8cZPnFYdkFib4k9/41eT1BtXf9NLEaJUXfCWr//////////////D4SeU5hJu5djWP+Zgph/WlGQlTErarn/t3j//////////////yM6fkl3MWqERDuXoGxqglxc8zk4P0t5YPNeivPz8/Pz8/Pz8/M0xHhASy7EY8RWxMRZY2RkxMQfNy93X3NQxMTExMTExMTExMTENS6Ld9oSidqFJ4zai4VtTGzaaGJtiIvajI7a2tra2tra2tra2iA1eXNjNWh9Rzh8XExtfTxJzDxFWIBbgHfMzMzMzMzMzMzMzMwwR3o0aDOanmc4i4B0mZ51IerqciOLnOqEmerq6urq6urq6urqE8xXWlxBUFqAdH7MZFdhSUjMYy9Vdm1MfczMzMzMzMzMzMzMzAu2tli2Lra2ak+2aLZhZzq2trZTZ7a2tmi2tra2tra2tra2trZTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUypISSRLTEfeiDl/V0FiU5GKgFtJTT1ckYqQi97e3t7e3t7e3t4XMDk4OzQ6ysp8ysp+eXlzyl/Ke3F0ysp5esrKysrKysrKysrKFzs6ODs4Ochob8jIdMhuUWd4dWV3enjIech6yMjIyMjIyMjIyBg4NTk+Mzl+ylx+ysp5fmF3XXptysrKdH7KysrKysrKysrKysonPU0zREBQ35CNgXljaEvf398fWT/fjW51hJLf39/f39/f39/fI1FVVlMtGJbkNeTkXIXka5bkj1SFe5OB5Ijk5OTk5OTk5OTk5BFcXFGoSqhXKKioXKioVqhZXFlEWaioqKioWaioqKioqKioqKgNOFShNaGhoVShoaFUoaFVoaFVSaGhUqGhUqGhoaGhoaGhoaGhT2aAMmkwazbtn56GIe0pfHyBRYBc7XjtO+157e3t7e3t7e3t7RBGS5pLS06amppOmpqaTkyamppEmkyaSZqaTJqampqampqampoOOUlKRpqampqaTJqamppJmk6ampqamkOamkyampqampqampqaQh6A0HAv0HHQMdCD0NCAIoPQ0NBoMdDQ0F9/0NDQ0NDQ0NDQ0BhEra2tSletXDtfra2tX0xGra1fIlytX62tYK2tra2tra2tra0RMmKwRmBbsGKwsLBkRF5LX7BDVLBhXGGwZGCwsLCwsLCwsLCwMY5zV93diojdet3dPItLQo/dDGd+Tt2GdN3d3d3d3d3d3d3d3RgrVKmpXKmpWqmpqTxUqalaqTRLqVSpWktLWqmpqampqampqakYnU0tL1CdnZ1RnZ1OUUWdnZ1NnZ2dSp2dUVGdnZ2dnZ2dnZ2dPxx+goIgzs7OPM6CgGaCIn56gs5/W85/fc7Ozs7Ozs7Ozs7Ozg9cblRvMXFsbVvCwnFNwmVLwmpTOMJzdMJwwsLCwsLCwsLCwsITbWtmwCfAwFpMwMDAXHFjOHNyTcBzwEzASG7AwMDAwMDAwMDAPYB/zn5dfXTOgYB8HX0Zgc5/RzdOzs59zoFFzs7Ozs7Ozs7Ozg9IWKSkQKRSRaRYpKSkWKRWVVJSWKRRpKRWVKSkpKSkpKSkpKQRQ1dBU1NXo1ejo0FXo1dUo1BUS1ejo6Ojo1ajo6Ojo6Ojo6OjDKKioqI8VFBUUlCioqKiokNWolaiU1aioqKioqKioqKioqKiogdvanFtanFvvjFxcL6+cb5vvr6+vnFsvr5wcb6+vr6+vr6+vr4OQ1NRTqBQU1SgU1OgoFKgUVOgoKCgUKCgoE+goKCgoKCgoKCgU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1M001Je04DTY4JFh9M8TTeHU4E7TRlPUoCAhnHT09PT09PT09PTGDClPk4ppaWlpaVOpVmlUVBTWaWlVaVZpVWlpaWlpaWlpaWlpSI+Z0pLW2JPRFxlaEVJajVAVlhFRFi2Zra2tra2tra2tra2trYbMEM9rFxYX2BWXVWsX6xCWlhJYKxVX05crFusrKysrKysrKysI3KAdkGJguzsn5jsX1YqRIbsMjEpf3mBYJyf7Ozs7Ozs7Ozs7B1BrV5dX1tcRCitWEJFrV+tXllfrTytXq1fYa2tra2tra2tra0lTcXFxRhfYXkyxXlGZ8VxxW4xZsXFxXJ3U8XFxcXFxcXFxcXFJ2FNZXhNbnyDV4DPOc/PV2zPz3MQZlyAfc98z8/Pz8/Pz8/Pzz9hZEZbW1GIhoTY2GCLGE9lT1wwLIlT2HrYc9jY2NjY2NjY2NgLmZlKmZmZSZmZSZmZmZmZmU2ZmZmZPUpKmU2ZmZmZmZmZmZmZFZ2dnZ0xUJ2dNJ1LnZ1QTZ0+nZ2dnU2dTk1RnZ2dnZ2dnZ2dnTxHc8XFHHnFdzBubcVfxSTFxWRZeUljd3U7ccXFxcXFxcXFxcUkIU+5bR9quWu5uW1GublVubm5XjZrbblqubm5ubm5ubm5ubm5KirMzHore8zMKIDMzEOAJ3zMflHMSczMzMyAzMzMzMzMzMzMzCdYX2NQXH9daE99gEJLPThYzC1UNFlDfXvMzMzMzMzMzMzMzMwfJLBkTU5QRVywsFlEYmJJsLBFVlFHsGKwY2GwsLCwsLCwsLCwFUqZSpmZTJlCmZmZSZlKmZlJSE2ZMplJmU2ZmZmZmZmZmZmZmUMU3YyGI5HdkE3d3ZGGiiRc3YqEhG2R3Yzd3d3d3d3d3d3d3d0Hgc9jgVnPZ3xXf89sYoN3UWrPW0xtgXJ/g4HPz8/Pz8/Pz8/PIUGxXmREXVsdUEOxsVdkVbFkT7GxZLGxZDyxsbGxsbGxsbGxsUMqynt9PMrKyil9yi5IVU5+fSdDUcp9yn7KysrKysrKysrKysoSOlikpKSkpKRSU0lCpFWkpFRApFRWUqRSVVSkpKSkpKSkpKSkDVejU6Ojo0+jKqNVo6NCo1WjT6Ojo6NTo6Ojo6Ojo6Ojo6Ojow6jo6Ojo6NVUqOjVElRUkVXo6NVTFJVVVJXo6Ojo6Ojo6Ojo6MFqVypXKmpqVxcqampUqmpVVupqampqalYW6mpqampqampqampEJubm5ubTJubMJtPm06bm5tOm0+bTkxNm09Pm5ubm5ubm5ubm1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTSX9QalV2hJSDRedpPGkj50OOIjJHak5454N45+fn5+fn5+fn5xtCW1yrSl1eXV2rX11NqyCrq19LV6tfq19XX6urq6urq6urq6sbTE6tYVxerUZOTF8oXl9NQK1aYa1hrU1eX62tra2tra2tra2tGDxltWC1PmhoN2W1UVBnPbVCQkpntWK1aGe1tbW1tbW1tbW1tUI3dDo0WIDtnWLt7Ts9QHiA7SQ0W210hE157e3t7e3t7e3t7e0UVFOkpFJSWKQ3pFSkpFikVlBVOUxMUqSkWKSkpKSkpKSkpKSkEkmhoaE9oU9RQaFSoaFVTqGhOVNSoaFVoVWhoaGhoaGhoaGhoRGjPkhPUaNVT1Ojo6OjVaNRV1ejVFGjUlOjVKOjo6Ojo6Ojo6M/cWA4VUZLQpKPXd5DXBxnQY5aO0beUJCOiITe3t7e3t7e3t7eEUWgoFCgUaBQVFCgUaBQU1CgUEugoFRPUKBRoKCgoKCgoKCgoBepW1tCPalTXEk8qUqpXKmpXFwzqalbVlZbqampqampqampqakmY2Votz9YZWYYt2ddt2llaWi3O2q3aGpnNWi3t7e3t7e3t7e3JSS1Q7UrY7W1RbVpVmJmQ7VpVzxpVlJpaLW1tbW1tbW1tbW1tRs6rF9FS1ysXzBMXF9gXzqsrF9HXF1arKxfW6ysrKysrKysrKxJenBuRHPgfuBXlOA4SDk6TY4oMkI5Y0KOkozg4ODg4ODg4ODgFjJfPFRXq6tfW15Nq6urQU5WW1lcVKurXlxaq6urq6urq6urqw6bm5ubm5tNT0ybmzebm5tPTE5Nm5ubm5tET5ubm5ubm5ubm5stTHZ4xSB2xcU4xcXFWHUaecV0bcVFdWt5YsXFxcXFxcXFxcXFD020aFxDaGhmtGi0Sku0XU20tGhHVVRhZWNTtLS0tLS0tLS0tBhbXVXMQmp+V0zMbVE5UmbMzGs5KczMdIBnzMzMzMzMzMzMzMw5VDB1eFlSNnLExGJsMB7EYnNOT0B4d3h4xMTExMTExMTExMTEGDVUNVRVplWmRKZaplZWWFpWVqZVplemV1NXpqampqampqampg2dTE6dnZ1GnU6dnVFETU2dUZ2dnUudnZ1RnZ2dnZ2dnZ2dnZ0Lo1Sjo6OjVlOjVlWjVFZPU1WjUqOjVlSjVqOjo6Ojo6Ojo6OjFW1KuTtqubm5bbm5abloWh+5uT1Wa225a2q5ubm5ubm5ubm5uQ5WVaNUo6NUo1RVUaOjUlRSVVRSVVZWVKOjo6Ojo6Ojo6Ojo6NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUyyLSItqYV9H5VtrhRtYLpWRhE5YLn/lhOWXl+Xl5eXl5eXl5eUgQ3JQhDyHZ4w5fdkqa2tfi4xHT2Erd4yChnbZ2dnZ2dnZ2dnZJSCRhYU2gaJRP6U3YX7yR6PyXkU2bJqmj37y8vLy8vLy8vLy8h81mW1SGXlUh0KX5muFaGN0lWROWFiRfFpu5ubm5ubm5ubm5uZAm5ZqM5BumedTgOdBcS2b55sxG2BoTEFw53nn5+fn5+fn5+fnMlOFem9MNd2NFo/djI9wZXrdgmk9cI2DgCeP3d3d3d3d3d3d3TY/jXuQTXlUID6XdHdeIXaFe05Z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bcHBwcHBVGMQbMFibMHBwcFhwXHBwcHBwcHBwcHBGEuYmJg3SZhIRkxJSJiYTJiYmJhLSEyYmD+YmJiYmJiYmJiYmCplumtQbrpRulpDujk9Krpduksha7paumK6urq6urq6urq6uroPVEVSoEtSoKCgoKCgQaBPUqCgUqBSVFRRoFCgoKCgoKCgoKCgEKBURqBOVFKgT6A3oKCgUqCgoEI8oKCgU6CgoKCgoKCgoKCgoA8+n59LT0yfn5+fQE2fnz2fn1Cfn1Cfn1Cfn5+fn5+fn5+fn58Qm0JMSptNm5tOm5ubm5tLTZubS0dOm06bTpubm5ubm5ubm5ubD0OjU0+jU1dUVKNUo1NTU1OjV6NTo6NXVKOjo6Ojo6Ojo6Ojo1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTKLw3bEC8USJVR7xgZ1w6YLy8RUFTvLxsvEy8vLy8vLy8vLy8vBpBo1FEPKNHo6Ojo06jox+jo1OjV6OjV1Gjo6Ojo6Ojo6Ojo6MWPqhaO0xaWqioWqioqForqKhYRqioqEuoXFOoqKioqKioqKioJTlLYWJYNFBfLq5Prq6uJa6uYK5HrmKurq5grq6urq6urq6uri6DjOQvT3TkiuTklFlmNORwlCpWN+RwbmYi5OTk5OTk5OTk5OQgoqKiolVVoqIkoqIoVqIzoqKiolKiVk9WUlWioqKioqKioqKiEKenp6dTQ6dWOKenp6enR1SnMkinRKenp6enp6enp6enp6enpx0hn58/n5+fn06fU5+fnzafn0pTTp9Tn1BNTp+fn5+fn5+fn583gnNuWETPg8+Cz888fRRYOWhkVC/Pz3p1fnzPz8/Pz8/Pz8/PDaFDVFGhoT6hoVJToaGhoVOhUlChoVRPoaFToaGhoaGhoaGhoQ6aR5pOOZqamjRMRZqamppMmpqaTpqampqampqampqampqampouObZqtiC2arYramplRLYutra2tmJgZmpqQ7a2tra2tra2tra2KCajV6NRVqNLNaOjLlejU6NWozVWo6NXo6NPo6Ojo6Ojo6OjoyxKrq5hSa6urjGurlquXBJdXq6urkGurleurq6urq6urq6urq4iVaqqqqpIqlxQW1o6qjVdTapFVkQ6PF5TqkqqqqqqqqqqqqqqJSurWatcq19dq1pfTl+rHVirPV+rq6tfX1Vdq6urq6urq6urqxhJmpqaSpqaMkuaTkiamppOmkuamieampqaTZqampqampqampocn0SfnyNSn588Tp+fn59LU5+fn1Azn1OfTZ+fn5+fn5+fn5+fB3rLfctey2x/YMvLVst/Z0XLy8tKRst/y319y8vLy8vLy8vLyx1OYl6uQ66uXC5erlmuTj2uriVIrmGuYmKurq6urq6urq6urq4rtBy0tGe0YrRnYrRPY7S0H2c5Q7RmtLS0tGO0tLS0tLS0tLS0F049UZ9LTp+fn5+fn008n0ifUUxCUkifU1Ofn5+fn5+fn5+fnxwlYa03ra2tWkmtYVthRi1hrV1fXa2tX62tra2tra2tra2tra0JnZ2dnZ1RnZ2dnZ2dnZ1PUZ2dnU9RnU1OUU+dnZ2dnZ2dnZ2dBqNWo6Ojo6Ojo6Ojo1ajTVejOqOjo1Kjo6Ojo6Ojo6Ojo6Ojow6ampqaQ5pNmpqamk2aTZpLmkpLmk6aSpqaPJqampqampqamppTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU0qjO0NskvNbmEzzY4VXNPNYozQvIldhenRAbPPz8/Pz8/Pz8/MdIrOzsz5ns7Ozs1JGs2A4s1A/XLM8Z7Ozs2Ozs7Ozs7Ozs7OzJk1pvr5nvnIvXVm+P1xRKFlovktrKL6+bL5yvr6+vr6+vr6+vhVLdFV+JXbPgUB/a4FwT1bPgE82z89wfXBvgc/Pz8/Pz8/Pz88XP4pBQXZtW5N/pv9zS0SQc4Y/MkV2WHtUfJ3/////////////D1q3t2VbaWhTQ7dnPGleP2m3X1hUZWdjaGlot7e3t7e3t7e3txpMra2tWK1eXVhgrUStrSBJYD5DYK1fra1gra2tra2tra2tra0POqOjo02jo1Sjo1RXo6M+U6NWQVejVqOjVFajo6Ojo6Ojo6OjWUs9N0pJWEagkfxlkk0id1p2/DQ3gWCtj605/Pz8/Pz8/Pz8/A+jVFSjo6OjP1ZTo1Wjoz2jo6NXoz5URlajo6Ojo6Ojo6Ojo6MSs7NUVjmzs2AuSWRgs7Nns7NnQUtjs7NlYWazs7Ozs7Ozs7OzJD9cbG8qk+yQM+zsmmR3MWeankWKVXqXnSmW7Ozs7Ozs7Ozs7BYttmdoOba2Z0u2Z7ZiSTi2amo7tmq2aGhkZ7a2tra2tra2trYcLE+2aDK2X7Zqtk+2tmo4ara2MWlGaLa2ZmO2tra2tra2tra2SzZUKnKepS2GeomUl6A/Q1fxPUJFS3Ezc1zx8fHx8fHx8fHx8SAlwcFrOlJdMEjBwWNaW0tuwURXTcHBwcFcccHBwcHBwcHBwcEXK6OjPVajV6NWo1SjTaOjV1RQo1Q3o6NWU6Ojo6Ojo6Ojo6OjHUxXT0EyXmCtSq2tX62tQ0StWlxgM12tW1hera2tra2tra2trQdkcmWEPoeIbWCO3GJzelNbjXyNU3+OhWxq3Nzc3Nzc3Nzc3NwiPYKKZCeGgEQe1nLWhIdZdHZQSoVw1ofWUtbW1tbW1tbW1tbWQ0FoXzwoXDp9ZdhmiTZXiVnYPyo8jNiMWNjY2NjY2NjY2NjY2C03WmtxFG5rcTFubk5ZvW1ucb1rbWJvb71vcb29vb29vb29vb0bK6JWolFWoqIkok1WoqJATqKioqJWoqJKoqKioqKioqKioqKiEJ2dRZ2dUZ2dnZ1PnTNQnUxCUVGdnZ1LUZ2dnZ2dnZ2dnZ2dnQNrloBulnpx41njln15fuNplnxnYpOS4+PjXePj4+Pj4+Pj4+MVo6OjV6NXo1c9o6OjR1VMo0dVV1NXUztXV1Sjo6Ojo6Ojo6OjU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NAmZBNb6SZTH0/b1g7mi3zPfMvRSOQhqVLe3nz8/Pz8/Pz8/PzLULJUlIeycnJKnfJPGhuOGrJU0l9WsnJyWvJycnJycnJycnJySEytDu0RGe0Q0e0aEVeZzxEWEhgW2FNtLRoZ7S0tLS0tLS0tLQbNlJPtkhhZrZAtrZFUU0/YGJhRbZBtmlWYWm2tra2tra2tra2I1GGcT9yemqRiveTXkoea4WqOjgyjZhsfpV59/f39/f39/f39xg5XGJYWWGurjRhYa5fX0ReYVpcrjdeXl5iYq6urq6urq6urq4fR1pcWjVPqalUW6mpNaldqVglTE6pqampWKmpqampqampqampDZ2dnZ0wRp2dUZ1NUJ2dnZ2dnU2dQZ2dnZ1NnZ2dnZ2dnZ2dnUmEiDtSdJZXnGWceUFYG3h/l1owKXjp6VnpRunp6enp6enp6ekNnp5Lnp6eTJ6enk1Snp6enk9PL56enlBSnp6enp6enp6enp6eFqamWCVAplqmUqZXWqZWpqampjpAplhWpqampqampqampqamphBfa2BfQ1fEbjRXbFFXYF9ycVJgxGZ3eFlnc8TExMTExMTExMQzH89czyGDz88zgc9xdc82z89tz4M2z4J5WoPPz8/Pz8/Pz8/PHDisrF5MXKxdKV5erKxeRldgWDxLXaysYF5drKysrKysrKysrEfiV00ekeKEgWNocWVgJWTikz5RPDk7luLid+Li4uLi4uLi4uIyNofna0ZreW1H55gd5+ctc5s8WDxJiZl9cufn5+fn5+fn5+fnFqKiRKJRolNRUqKiLaJTokhBoqI6olBTVqKioqKioqKioqKiohI0q6urL6tcq1Srq12rq01TW1pUS1qrVqtcq6urq6urq6urq6sKY3Vbej9vP4Fgz3twz8+BbM9RdVlaal9/Z4PPz8/Pz8/Pz8/PF1e7XGlMaWZZOLtKTWi7TTpqREdaXWi7UWltu7u7u7u7u7u7uzqDgFtxWYF/0HvQgBNVN9B50NA8J9CCfmPQ0NDQ0NDQ0NDQ0NAUPVlJqDJXW1uoWFuoqFtbVFlYqFlbWVhbqKioqKioqKioqKioFCukU1ZKpFCkM6SkV6SkUKRXpFSkVaSkpFdXpKSkpKSkpKSkpAxXpKSkpKRUVlekU6SkTaRUpFVXT0WkpFVVV6SkpKSkpKSkpKQgSEliUWpeV1dFumZMVrpNMLpEOFlaTGduaGm6urq6urq6urq6D6OjRKNVVVNDo6OjV6NBVaNXo6NVVKNQo1VRo6Ojo6Ojo6Ojo1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTQYpNVl6egkzvZp13IyJH71JtQmUqbFaBj+/v7+/v7+/v7+/v7yI/t7e3T1W3tzJhZjhPtya3Z2FNZkBmt7dSare3t7e3t7e3t7dBR35/hRiZlDY9m5dJi4YuguxJc0Fmm57sR+zs7Ozs7Ozs7OzsJDZhdIYhc56RK5DxSHqHRWehVThuY4qInHmh8fHx8fHx8fHx8SVXi0gxV3BYh2eXklV0SGGnhSwwPXV0R1Fvi/Pz8/Pz8/Pz8/M1d4fWb0aG1oca1nY8dHAch4dHeWhMitaF1tbW1tbW1tbW1tbWBYKwh3pEipSHX7H/WZGfaZGubktqYoqlp5///////////////yMmWklZHWayYk2ysrKysj5lsrKyXkqysrKysrKysrKysrKysrJGXWk6U1JFZpqammR4SSVQVVlxPiV6YOprmjzq6urq6urq6urqHzxPYVgrYmSwU2FesGJgO7CwYjxiNLCwZLBisLCwsLCwsLCwsBFSx8fHK8dmx0DHx09ZVcd6x8cuaHp6Z3dyx8fHx8fHx8fHx8czV3BSWzjEc8QjcXjExHUjXsTEa2DExHB1JnXExMTExMTExMTEKR5qXWMevLy8vGhtcGxtO068cGplWW68a7xovLy8vLy8vLy8vC4/e899Ec/PzzZ/goOAey7PgnDPaml/z4Bje8/Pz8/Pz8/Pz885amhVRGlr5Jh35HhsQzNbT34uOylAWzt/hOTk5OTk5OTk5OTkLCBwcMV3xXB0QnVbTUlhTHdvKHhqOsV1alJzxcXFxcXFxcXFxRWfn59TS1FNn1Gfnzmfn5+fn5+fnxqfn5+fn5+fn5+fn5+fn58kWW9XvBNsvLxGarxwV209Vrxsb1Bka29vb7y8vLy8vLy8vLy8E2KWZJM4W/VoM6X1XXCmTUz19XEsSaB2oYuo9fX19fX19fX19Ro8sJOLJnmkZC7//1N+lmB2sT40hnOglKltnP////////////80Pmxvf0Rnas5QgoA0G1NdWG1gPkd/zs5Bzs7Ozs7Ozs7Ozs7OJzpSgHIafG1TM4DOa3ZrLc6CzmVrzl7Ozs58zs7Ozs7Ozs7OziIjSa1gSF5cRj2tra1ZrTetXjldYVqtrWGtra2tra2tra2tra0LqKhLqFVYqKhcqFmoSExaqKioqE9ZV1ZYqFioqKioqKioqKioFFZSUGG5uWhYQWy5QzC5VGi5bGFEbGxBubm5ubm5ubm5ubm5uREvWlpSM2CsrEOsrKysrKysWmCsrEhbWqysrKysrKysrKysrKxTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUzdod08Qas3Nf3XNW0tlgXl6zTFQP1KBzYHNgc3Nzc3Nzc3Nzc0wNk110i+E0n9DLNJAg9I9gXFqL1JOYtLSWIDS0tLS0tLS0tLSMimQSXsycORXTuQiY46RRnuWaUdFPZWWf5WV5OTk5OTk5OTk5CtIWHVfFnKPhDfk5H99h1F75HZPki2Wk5ZYleTk5OTk5OTk5OQhZ7dqUmRBt7dqt7dZZVJqZ7czIEpqZLc5WGS3t7e3t7e3t7e3HlZvesdWG3fHLXh5dXV6RsfHx1I6Y8fHx8d5x8fHx8fHx8fHxyFadWN0S1I71DrU1E1pPkhc1ChCcVzU1HBJ1NTU1NTU1NTU1NQZMbBiWkawsLA7YrBbUDtYZFKwsEFJYmBhsF+wsLCwsLCwsLCwL854QS5kf3t/gM5/VGsTf3bOVUVXznl+gc5Wzs7Ozs7Ozs7Ozhu0tLRnF7RhtES0tLS0YlJgtGZGVExktGZXZrS0tLS0tLS0tLQfVmd9yxfLy8szeWpqWcvLy8vLPWNBy2zLaMvLy8vLy8vLy8vLND11czg5iOiYQOhzJ3ZwMIHonD5aREDo6FKc6Ojo6Ojo6Ojo6DU+Tpd4L4qbijWbkVwuY1Ebf5thdZ6gnJt5muzs7Ozs7Ozs7OwXRX1WTUNGVphTe4tldlhkdf+LJjyQXKe6eYz/////////////QJFiaUPdZFvd3d0lJVRUejuRPEsrenLdjI6R3d3d3d3d3d3d3S5Ddl5oHoaIVkXjkmVrdEpHYFJDMkqWjZRLluPj4+Pj4+Pj4+MRMkiYmEtJTJiYmJiYmEyYmJiYmJg4mJiYTEmYmJiYmJiYmJiYJk95VT43glqNOZ5HczRoZV//UD0wfJdxrFWj/////////////yZQhGBnJXqWbjDlgn+RfGRRfoY/Ilt5mXZjleXl5eXl5eXl5eUmNnRsbChq5Ds0k3BcfmA0YpF0QUFy5JbkZuTk5OTk5OTk5OTkWetYZkyJnUd/kYyfVpoi6zfrLTEjmmWbn5+d6+vr6+vr6+vr6zJBhm3WDWfWeyjWd9bW1nXWioSA1oqI1nZy1tbW1tbW1tbW1tYcTHRiazBp23pIbNtMeCGB29trMmx5eIyJ29vb29vb29vb29vbEF/CcmA9b8J1N8JxaVBxVGx2wsLCWMLCZTBxwsLCwsLCwsLCwhOvYGOvKa+vrzpjX681r69Zr684r6+vY6+vY6+vr6+vr6+vr68WqKioRiNcqFg/XKioRlxYW6hYXKhYqFeoXKioqKioqKioqKioU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTnWEwV4/xRp9SjZ9ldjmgc4UaPyxqjmuLSPHx8fHx8fHx8fHxFjiwXmRLsLCwTGJXYDewMLBkYVliZLCwXUWwsLCwsLCwsLCwsBU2bFu7u1+7u09uYlVVRypku2VKR7u7u2xsu7u7u7u7u7u7u7shLEJrc3UlwcE6dVpUbnJJbHLBWWxMb8FJb8HBwcHBwcHBwcHBLk2LKz1ZcGt4hfKXY4UrdXShHUVaenqGe6Sj8vLy8vLy8vLy8h5hXrBdsGKwYCRksENZXWRkYUw2sDtesFVhYLCwsLCwsLCwsLAZsVxkYUlSZWVasbGxUERaPbEnRGKxsVBbZbGxsbGxsbGxsbGxJjCAboApgICCKs7OboB+L2xqUVJhznrObEB8zs7Ozs7Ozs7OziuAjy1KRWndfoR/YTZxIX5Ej0lIRd1lkWTdbt3d3d3d3d3d3d0WUU+fn1OfnztRn5+fUUpMTE5On09PU59MU1Gfn5+fn5+fn5+fI1+sPaw1Rx2sPaxgXWCsrF+srEZBrKysrKxfrKysrKysrKysrEQh6I/oIejo6CSZmZScfjOCmpV6fD1ul+hH6Ojo6Ojo6Ojo6OgSRWFeXjKuUa6uQ19XXq5LrmFeSq5fX65drlmurq6urq6urq6uGihdY7FRYEthXmJcWmNdXjhkWLFUYbFhY19MsbGxsbGxsbGxsUiMioBaj4OTiDiYbzmRNE1H6SQfT194X5icmenp6enp6enp6ekzRnZ2ZB95i2g0jtovhnM9hIsuW2t6cdqNUo7a2tra2tra2traEEmlUqVWpVNYRKVYVqWlpaU8P6VWTqWlpVRWpaWlpaWlpaWlpVJppZ7zGZvzojCXo6LzohGlkKKBlHKdopiYovPz8/Pz8/Pz8/MNYoKDcDhnY1VHg3LSaIBmWG5uZUtPbmyCXIDS0tLS0tLS0tLSJEaLgog2kJBQHNzccmyCO2zcXjuQSIyN3Ex13Nzc3Nzc3Nzc3DrPJoODz31yz15/zy9gW89LgjU0IHt/z4OCac/Pz8/Pz8/Pz88fYVxNWTxaW1itXlQ4rV1MXK1UNFtdQkytXlytra2tra2tra2tEz6iU0OiUlSiolOiVkZWoqKioi+iVKKiolBRoqKioqKioqKiog+oXFpUXElcqFGoV6hHXFqoqKhZVlxXWlhZWqioqKioqKioqKgeWn88OG9SUHNVb2xfTVtlPGVLTzFeXW1ha9TU1NTU1NTU1NTUEldYpFVXpFhUUVhRWFdUpFdVWFJUVVekV1OkpKSkpKSkpKSkpFNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTDz1DX2i2aLa2SzRWQGS2arZSZ7a2ara2tra2tra2tra2tra2thVMmEeYPEuYmJhImJhJmEyYmJiYNpiYOJiYQ5iYmJiYmJiYmJgbOVNTo1ZQTaNWUVNXo0ZDo6NMV0ajVkCjo06jo6Ojo6Ojo6OjFUKkUUKkVqRTVk+kpDw8pFakR0CkpKRUpFSkpKSkpKSkpKSkpBxPL69grzWvY2FcYDxAr2OvY69cr2BBWFdYWa+vr6+vr6+vr68Snzufn59Pn0FCU5+fRlCfU5+fTZ9Qn59QUE2fn5+fn5+fn5+fFExQRE1RUU1OoqJWokVUQ6KiPlSiolOioqKioqKioqKioqKiog+enk+enp5KnktSLFKenp6eTJ6eT56enk1Qnp6enp6enp6enp4VRj5OPqlZqVhYVKlGqVypWalbVFdSqVpVWlupqampqampqampGTIyj4+Pj0GPj4+Pj4+Pj4+PQTyPj49DPkGPj4+Pj4+Pj4+PjwyYmJiYTEhIR5iYSZiYmJhMTJiYmJiYmJhKTJiYmJiYmJiYmJgOPLpVVLpES2dNurpOurpuRbpYulhUurppum66urq6urq6urq6Fk9RoaGhoaGhoVWhoSqhU0uhUqFSU1JRREFRoaGhoaGhoaGhoQ5DnJycnJxNSFCcnJxQTkacnJycRE6cnE6cTpycnJycnJycnJwPk5OTk5OTQkOTR5OTk0STPZOTNZOTRJOTk5OTk5OTk5OTk5OTF5tPT09Lm0KbS0mbRZtLm5ubS0WbRps+m06bm5ubm5ubm5ubmxNEq6swq05Pq11YP0hOW6urXFyrq6urX1qrXKurq6urq6urq6sVUZ2dnZ2dnVFNnZ2dnVGdnZ0/OD9OUZ1KOlCdnZ2dnZ2dnZ2dEVJHOFemWEpTVqamTKampqamplc/plhGpqampqampqampqamphU8WKSkUFekTT1VpKRXVaRUWE+kPqRYVKRQWKSkpKSkpKSkpKRSIXPa2hVx2own2tra2nQ2etp0jNp62oR9hYfa2tra2tra2traFkdDlZVFlZVFlUeVlUeVlUGVNZWVP5WVlZVFlZWVlZWVlZWVlRWXQpdJMZc2l5dLS0iXl5eXl5dLl5dJS5eXl5eXl5eXl5eXl5cUlUWVSZVJRUiVlZWVlZVDSEmVlUaVO5VGlZWVlZWVlZWVlZWVF1FTnzCfNp9TRTWfn0mfn5+fn5+fn59QT59Ln5+fn5+fn5+fnw1Ll5eXl5dHSkZLl5eXRpeXS5eXSkeXl5eXl5eXl5eXl5eXl5dTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU0yMTzNKhF9OmkWNi0Q8K6o9pFlYJXRgYaBXiPv7+/v7+/v7+/seMr1xZj5vU70tvb1Scb0qbb1SWr1bvXFxTG+9vb29vb29vb29MzeJbIIdZNkhR9nZTWWHP3HZ2Vd9TtmGi4XZ2dnZ2dnZ2dnZ2RdddmN4KmuJbyqNb1Nw2WNeh2UxjWmDZ4xwjdnZ2dnZ2dnZ2dk3N3Q3N09DTntwg5VKTUF6P1tdK0uDT2qDk4r/////////////JC2/SWk1c79sQHFuNlS/MW2/VExdSb+/b3O/v7+/v7+/v7+/vzE3T1rPHHt1zz2Cz89jWElOz30qdE1qe3lsgM/Pz8/Pz8/Pz88lQ0msRjOsrKxCrKxdrFcoW2BcSlpHXKxaSFysrKysrKysrKysVDlCO002VUz5q6SHa1AoSUOqq0g1rUz5dZBJ+fn5+fn5+fn5+Rg+UJycPZycnE1QnJycTlCcnJwonEGcnEqcTJycnJycnJycnJwdXFZ5QylRe2o5f39Qy8vLfMtyKlhUy1tff3XLy8vLy8vLy8vLIzV/YEY3aoLOLmjOZ86CPU98cEbOV3yAzi2Azs7Ozs7Ozs7OziYdhGNrOFrdcyiPb3CR3UV03Y47c1t7et3dkd3d3d3d3d3d3d0gHm9kfS/RZYIvg4WFaoVIaNGCRHPRgoCFZIPR0dHR0dHR0dHRSlpFP0d+XVWSbVZpRj1BUjqaS0lDMUJIWXZt9/f39/f39/f39ycxVjpaUsrKQGbKclVheyx9fStjRWp7fX1pysrKysrKysrKysoNQpSUlJSUlJSUlJQqlJSUlJSUlJQplJSUlJSUlJSUlJSUlJSUNi+MhXYe2ojaMNp+jH52JNqMiW9zRIt42kSE2tra2tra2tra2gxSo2uHKvCjUjuf8I2hmVNigYmGTXyRiqCAoPDw8PDw8PDw8PAfQmhmeS10mUYl6OhjZVxeho58NoFNmomVTXXo6Ojo6Ojo6OjoRGRNJF1ZaWSIXYnYQzok2EDYdDFJW9jYidiI2NjY2NjY2NjY2C8odsh2FcjIyCZ3yHp4Z8h8fGtrc3p5ech5dsjIyMjIyMjIyMghILW1ZU5ntWkttbVRYLVptbUutbW1tWM8YbW1tbW1tbW1tbW1C1KhoaGhTqFTVaFToTyhoVWhoVNSoVOhoaFVoaGhoaGhoaGhoQdbdYFkc4qD2E/YinvYjHI02HdYbIJ7f4qIidjY2NjY2NjY2NgPm5tOmzybTktPm0+bTptKm5ubm5ubm09OTE+bm5ubm5ubm5ubU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1MzXDxRY2lBRoxigmo4NzdrTNxATTV7RWSHYdzc3Nzc3Nzc3NzcGkNMPEZmtrZqNrZqtlNIRmq2tmRmNWS2VVC2tra2tra2tra2tjsolH+URZJ/NUHhjVdtlSl84SFiXE95iuHh4eHh4eHh4eHh4eEbQktrXThGvr4yW09XXWtHSr5eWldcWb5qvnK+vr6+vr6+vr6+JVGLQjpZem+cirCZRVU+iF9bKDczcXGGeqaF/Pz8/Pz8/Pz8/CFka7e3Nmu3XTO3a7dotyS3Z0xVSTa3Z2VXa7e3t7e3t7e3t7cUVbZIVVJpWGMwZrZWX2lfV7Y8RVe2tmK2aLa2tra2tra2tra2IyZklmcqa4XiK5TiaVpyL5DiZ45kWI3ijpSU4uLi4uLi4uLi4kxrRlRCY2Ay8qak8lxCLSqMo28+MJVO8mvyR/Ly8vLy8vLy8vIXn5+fUE6fUJ82U59Rn58nn5+fNp+fSlOfn5+fn5+fn5+fn5+fGXFvab8qv2ttInO/bG2/v2e/vzRTY3NtcV2/v7+/v7+/v7+/vycifmXPRHnPbieBbWl5bDBog89jdkvPz888z8/Pz8/Pz8/Pz88fJ3JVw0DDw3Qow8Now3M1UsNaUkfDZcNxw3TDw8PDw8PDw8PDHiC/v79Kv2+/Nm+/c1xwLW1iv2lOSXNkv2htv7+/v7+/v7+/v0J9ez9rkFCJkmji4i1CIHJw4iZxZzGOgojiluLi4uLi4uLi4uI+I314aByKl01M4+M2k4Yqlo9XcpZq4+N+eePj4+Pj4+Pj4+PjPFm5ubm5ubm5aLlrD2S5bbm5S2BoH225ubm5ubm5ubm5ubm5uR46uSlpPEtouT5tuWlquUZeuWtdZko/bWu5Yrm5ubm5ubm5ubkbSXaAcStshV8jgpRVb3ZGZJJ6aGpCe2Psh4bs7Ozs7Ozs7OzsJyR/ZlwzeHZ6OqOZeWxxP3D/JkyRWo6es2P//////////////1dRGU5tVFlZ6EyE6Ek1Vegy6DBQZ5ma6JeYnOjo6Ojo6Ojo6OgWSbU3tUZUL7VpWFJWZF61WLViQLVpZLW1aGO1tbW1tbW1tbW1JiO/Yk4vbmtuIb+/YFy/Pmq/a3O/v3O/v7+/v7+/v7+/v7+/vwxYp6dYV1dap6enp1RbWKdbp1enp1dXRFZbV6enp6enp6enp6cxy2dmfX3Lf8t5y8vLKxrLf39wG3/Ly314fHzLy8vLy8vLy8vLDKFVoaFUoaFVUU+hoaFUoaFRoVJOUlGhUlGhoaGhoaGhoaGhoVNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTOZMxO2mhckqCO4liNV42pmaVO0snenukXX/4+Pj4+Pj4+Pj4+CxWaWdgPFVftTVkaS5laSy1Z1RNtTZptbVBtbW1tbW1tbW1tbU7UNVsWHB2hA6JdYdSgmwwWNWGXGRUhmqJhoTV1dXV1dXV1dXVIjlSVl41ar9xJ2RuRW6/ML9wa1hwbFW/bm+/v7+/v7+/v7+/vyhsjFsndn1it5m5nldEPJFx/yAycoaCmlD/i/////////////8eUsJVTWJywm4nwsJUa1I1SG1MRFhLU3RywnTCwsLCwsLCwsLCIV6tXK2trV9ePlteYVxfQK1eH1NVX19eWlhIra2tra2tra2trR5J6oJ1I+qIfjuE6mJabiuD6jlUe06Xiupmfurq6urq6urq6uphS3I8bldRbZ+puKtDQCoWYJWBZ1K2QP+cu23/////////////E6NVV05FVFdXVUWjo1dXo1ejozmjo1NXo1NUo6Ojo6Ojo6OjoxpVql2qI1tdqjxcXaqqVapcXapdqj9bU1xcWKqqqqqqqqqqqqozQ4HRdyV90YUqf37Rb1lJcdF5RtHRftF3HNHR0dHR0dHR0dHRJynFdcUxaMV3cXd4M3TFMTxVWlxIUXh4xWhxxcXFxcXFxcXFxSQcV7xvK2tuZUu8vLxsbUS8vF5KVElvvG+8XLy8vLy8vLy8vLw+g1xTWIFpUHhukEpUOEVCR/EWUFhVg214mfHx8fHx8fHx8fHxJDhbWkpfZ3h1X3rINW15PmHIKVFUOsh7YE92yMjIyMjIyMjIyBNHnp43nlGeUFFPnlA6UJ6enp6enkSeTJ5Qnp6enp6enp6enp4/G/VsnTiBm/Ugpal7m4Y5hvWTeYc0i6f1R6n19fX19fX19fX1BHqDaHJX7Ozsbp+faZqIcGF9oJJLaIh6i56c7Ozs7Ozs7Ozs7Dg9jd6LGIqBaS/eiETeb1o83jRmed6QkIFJkN7e3t7e3t7e3t5GNkdsQ2Jwbtpk2tqGV0aBNoMVVTpvZ9qL2oza2tra2tra2traGxuqqqo/XKpeRapcqqpYSVSqXqqqW1xbXqpZqqqqqqqqqqqqqjE/t2ZiKFpcZihot2u3tx9bt1C3t7e3a2dra7e3t7e3t7e3t7cLsLCwsLCwsGJgU7BcV1VhsGKwXTNfZF5gVrCwsLCwsLCwsLCwDnWSZ3OQkuDgkX3gRuDg4BjgkXZw4JLgkuCN4ODg4ODg4ODg4A2vWE5LYa+vYUyvr0pgRkWvr69iXWCvYV5gYq+vr6+vr6+vr69TU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU0FhY4FqfYFM0XLR0RdeNoHR0S1PKYSCgtF90dHR0dHR0dHR0dEvWVRFRDhjVoBmYV4xRGhcQWJlKzxij5CNaNzc3Nzc3Nzc3NzcQF5+OIAqhNE5P2s5cdF50dGE0XYXbYR/hH6E0dHR0dHR0dHR0SJKdsVkH0lOxSvFxW9xcT1OxVtSxWR5xXhUxcXFxcXFxcXFxcUZbWxwSnDYhXlzh9hMcDKKbdgtKGdAitjYiIrY2NjY2NjY2NjYH01Vu2dmE227Yru7VVq7u7tlW0lpX2praLtsu7u7u7u7u7u7uyJMXHh3RFkpJTV6yFFUyFfIe8hMe1XIcsjIe8jIyMjIyMjIyMgcPkBBU1FToVJQVTWhUzxMoaGhoaGhoVFTU6GhoaGhoaGhoaGhN2rRQS9g0dHR0YLRJIU+0WCFNjos0UbRgtFr0dHR0dHR0dHR0RWenp6eSp6enp6ePp5Lnk6eTp6eniRMTU+eUZ6enp6enp6enp4VL6BBU1KgUVM4oFKgoE6goKCgoKBQQ6BSoKCgoKCgoKCgoKCgNiF6llQydIKTSeJ/MOJXcGWLgGogZeKSk3Li4uLi4uLi4uLi4iJLN3zaHnOKjkyOimc+WY0xjtpL2lNwh43ajtra2tra2tra2tpGTGUtKktobWgx8U9ZXFJwR3FMQTJ0imCfjoLx8fHx8fHx8fHxLrFbsWKxsbGxZGRlsVxlsbFlRrESJbFlsWKxsbGxsbGxsbGxsR9icF9GMXZUiFTb2zHbZl0u2289O49ye9th29vb29vb29vb29sSly6Xl5eXl0pJl5dKl5eXl0iXNJdJl5eXl0qXl5eXl5eXl5eXNzZqPHQgZ2rpQumFOIVDaV2aOj1gmlaMl3Dp6enp6enp6enp6SFOb+SHIOTkSzjk5E2Kk5NXkm9TJGaNl5FzleTk5OTk5OTk5OQuRXdeai9fjjEgnetbfp8tZetvUFZi6+vrgZ/r6+vr6+vr6+vrF6mpW1lWW1qpKqmpqUxaqV2pqVtHWy6pRqmpqampqampqampqSBIXqysIl2srDSsXzZerKysrFxUX15bRlpeXqysrKysrKysrKwUmZmZmT+ZTUpCmZmZmZlNTEmZO02ZSplKmUqZmZmZmZmZmZmZCkayV0ZMsmVlVGSyZLJlS7KysrJOW7KyYbKysrKysrKysrKyshCZmZmZM0uZmUpJmU2ZS5lISk2ZSJmZmZmZmZmZmZmZmZmZmZkZpaVZWaVYVVilWValVqWlR6WlpaWlpaWlpRWlpaWlpaWlpaWlU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1ND21ZfiIvbjo5O24MV20DbiNsjXTBbiYuJ29vb29vb29vb29vbEy9ZqalaqampPqlUV1k8VampqalbWkdbWKmpqampqampqampqRRKY2ZiskCyVk9SsmROslBHZkNTPWOysmRkYrKysrKysrKysrIRnFBKnJxLnJwuOZycnJycnJycTEtHnJxNnJycnJycnJycnJycIWfzXEaliYOSp6ekO2s483bzFT9/joKhjH578/Pz8/Pz8/Pz8w9ZWKWlPVelWFClpVhYpVhTpVNPpaVQpUBUpaWlpaWlpaWlpaUQV6amWkKmWlZFpqZXWKZFWKZSU6ZaWkJVpqampqampqampqamEqGhoT5AoaGhoUlDoaGhRqE7SD+hoVKhoaFRoaGhoaGhoaGhoVFJcjoyM3JRkpHeklV0M0R53kAjPd5m3t7eYd7e3t7e3t7e3t4PTp1BRJ2dnZ2dUZ2dTZ1PT09MT1GdnZ1LnZ2dnZ2dnZ2dnZ2dDkiampo1mpqaNzyampqampqampqamppOmk5HmpqampqampqamhooWVZVS1anpzKnVKenpy6np1hVp6enp6enV6enp6enp6enp6cTNEOmplSmplhYWqZPUKZLWqZYTaZapkxUplqmpqampqampqamEVJcqEdbXKhcqKhcqFVCVFhcPFioR6ioVqhXqKioqKioqKioqDluczh2xMTEeCjENSLEdnBueEFdO0jEVXRUeMTExMTExMTExMQPPltLUKioqFpYqFqoWEmoWaioUltbVKioTFqoqKioqKioqKioGZxMnE2cT01PnJxQnE+cnFAcnFBNnJycnJycnJycnJycnJycnA5KUqqqTFmqqlqqXldeTk9dqqqqS0OqqltbXaqqqqqqqqqqqqoVXlw/XFewsGFdsLCwX1hMUF9hMj+wsLBhRFuwsLCwsLCwsLCwElSkpFRSpKSkpKQ7VEBXPaSkVqRDpFikVkxUpKSkpKSkpKSkpBxYXVlMPqldqV2pWR5cXKldqVlOqVypqaldSKmpqampqampqakOQVmrX1pJXKurq6urq1urW6tbX6tbLFxfq6urq6urq6urq6urD0ecnE2cnE+cUJycnJycTU2cnEtMnJxPNpxNnJycnJycnJycnA5UoaFKU6GhT6GhVDuhVKFQoaFSU6GhoVFUU6GhoaGhoaGhoaEKT0lMMJ+fn06fU5+fn5+fn1Ofn5+fn5+fn5+fn5+fn5+fn5+fC02cnECcTpycnJycnEtOnJycSU6cnEucTpycnJycnJycnJycnFNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTTXdlhIXUf2LUONRkNNRC1Ep/Gko3hlKBbTaF1NTU1NTU1NTU1BY4SlNPPE+fnzxRnz9Dn0yfn5+fn0ifn5+fn5+fn5+fn5+fn58YUahVqE+oV0CoqEdaTVoxqKhYTEGoW1pQWluoqKioqKioqKioEE6rX6s6W6urSVyrTVxfR1Srq0NaUlyrW6urq6urq6urq6urqztAJGo3PoNphEGE0ELQUdDQ0CNCbNBhg37Q0NDQ0NDQ0NDQ0NAXQlelVFFWWaU5SKU8U6WlpaVEVqVWV6VRVVOlpaWlpaWlpaWlD6ioV1lJqC1cVlmoXFioqFmoqDyoqKhcqFqoqKioqKioqKioqDY1vmRyG3JvciW+vky+vjK+vmpdaly+vm5aX76+vr6+vr6+vr5A0IFmLoNScIHQhEs7cB7QV9BNNyvQfoCEgWLQ0NDQ0NDQ0NDQEUVEk5OTk0NDk5OTk5OTk5OTkyqTRZNHk5OTk5OTk5OTk5OTkxOkSKSkN6SkpERYpKSkVKSkpFYyOKSkSVSkpKSkpKSkpKSkpKQdYbBcsCOwYrAtT7BdX2Q+U7CwYmRZsLCwQGSwsLCwsLCwsLCwETlTUZ+fUJ+fn5+fSp+fNZ+fTVNKn02fTp+fn5+fn5+fn5+fnxBbw11eNnVnd0dxwzR1d8N0dXdBbHNjYFnDdMPDw8PDw8PDw8M5yspresp3eGpua35sXEdgfMoIaGhTynd8fnzKysrKysrKysrKITioQqioV1VHVaioRlxZOltMPFNDqKhcXEhcqKioqKioqKioqBFGkpKSQ0KSkkOSQ0aSkkaSkpKSkpKSkkSSRJKSkpKSkpKSkpI/G3G/bWBzv78Tv79rcG88v79ucHG/v79xc7+/v7+/v7+/v7+/DHK+X2E7bEBNWr5sTr5yb1W+XV9Par6+cb6+vr6+vr6+vr6+vhSmVaZXWkpYTVhYWqamVi1UUVSmWqZaWqZOpqampqampqampqYVnp5SSlKeUD9Qnk+enkyeOU9PT0+enp5LnlKenp6enp6enp6eFy5JUp5Pnp5PUp5SnjpSnlCenp5SUkqeTp6enp6enp6enp6eng5WoqJUP6JLokOiU6KiVqJToqKiU6JUOqKioqKioqKioqKioqIVplqmpqZWplSmWFFMWFlYUKY0UKZZVKZVOk6mpqampqampqamEpycQ5xInE6cnJycnJycPE2cTJw/nE5KUE5OnJycnJycnJycnBKZTZlNmUuZmUmZTZlLS5lKmZmZSplJR0lKmZmZmZmZmZmZmZlTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUypZNjVETVxKtk+2tmAhSba2tjy2YLZpalK2tra2tra2tra2trYkOEVEREZFoKBDUKBPTqA3UVGgR0+goKCgSaCgoKCgoKCgoKCgOGRlZFUWY09CS3NwKb+/SL+/cVpcYnFwcL9wv7+/v7+/v7+/vyAzQVJROVNUVTRhra2tra2trWFZOExdrVphWq2tra2tra2tra01YWwhMW1qx8fHx3pTPGPHdMcrKHF7esdnx3jHx8fHx8fHx8fHHDZEUVIxOl+rS6urq1leq6urQFSrV19fq1lbq6urq6urq6urqxGaTk6aSJpGTJpLmppGTJqami+ampqaTpqampqampqampqampoYKFtaq6tdq0c4WqurX1+rWF1SXEtfq11WWl+rq6urq6urq6urNcNTQ11MUHDDdnTDZTQsXsPDXiEsd3fDw3PDw8PDw8PDw8PDww9ST5+fn59Nn59Qn1JQn59On1FNn1KfUVBCUZ+fn5+fn5+fn58OnVA6nT09nU6dnZ2dnZ2dnVCdUJ2dnUtMnZ2dnZ2dnZ2dnZ2d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XV2qqqqqqqqqqqqqqg9Rnp6enp5Snk5InjaeRp6enk2enp5NnlJRUp6enp6enp6enp4RQ6NXo6NVo6Ojo1JUo1c9VaNXo6Ojo1ejLFKjo6Ojo6Ojo6OjFKenVFYjW1tDS6enWKenp1inp1unp6enVVZJp6enp6enp6enp1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTLL9JTnO/br+/Zr+/UnO/v2K/Rr8Lc7+/v79bv7+/v7+/v7+/vxacRUhMnJycnEacnJycSEZMTUycRDpMnJycUJycnJycnJycnJwUPkmdT51OnZ1KnZ0/S0+dnVGdnZ1OTj+dT52dnZ2dnZ2dnZ2dEECjo1NPUqNUVqOjVlNUo6NSV1NXT1Kjo1ZWo6Ojo6Ojo6OjoxVy2HUgf3pziYbYh3mMSXWG2Co7doGI2NjYidjY2NjY2NjY2NgPU5+fn59Tn1I7U1NNTFKfTZ9PSZ+fTJ+fn5+fn5+fn5+fn5+fD5qamppKSJqaS5qamk6amppKmppNS01OSUtOmpqampqampqamhI3RFNQoFSgTVBRoKA8oKBToKCgoFCgoFGgUKCgoKCgoKCgoKAuubliuVO5Urm5bLlGSRe5ILlpubm5arltbFi5ubm5ubm5ubm5DkeaSk6amppOmppMmpqaR5qamppOS0iamktMmpqampqampqamgqVR5WVSJWVlZVHlZWVlZWVR5VIlZWVlUhGlZWVlZWVlZWVlZUWUFA2UECenp49T55QnlBFnk9Qnp5RnlCenp6enp6enp6enp6eFzOkpFZUUqRUVaRVS1akQ1ikV1dTpFKkVlVDpKSkpKSkpKSkpBBIU1dYRKampqZZWFhVWaZSWVZTVVdYpqamVqampqampqampqYmr69eU69ar2GvY6+vrxI0TK9Zr2Ovr05hr2Ovr6+vr6+vr6+vDp9TOZ+fn59Tn5+fSlBRUJ+fT5+fTZ+fTlNTn5+fn5+fn5+fnw1OmkuamkuamktLmk6aTj6aSZpOmpqampqampqampqampqampoNmZlNmUyZmZlGmZmZmZlMmUqZTJlETUxKmZmZmZmZmZmZmZmZGFZKSlZWpaVFU6WlpVelV0JWpUcxpVdTU1SlpaWlpaWlpaWlpRFJnp6enp6enlCeUJ5QT56eUDWeS02enk86np6enp6enp6enp4TWampXFpdqalcWaktTUWpVlwwqV2pqampWqmpqampqampqampE6FLQ1FKTqFRUVWhUKFPoVGhVVOhoVWhTlFPoaGhoaGhoaGhoRI+U1dDo1Ojo6Ojo6NWSaNWVkijo1RWVFFRVqOjo6Ojo6Ojo6MUVKCgoKBNoFJQKaCgUT+goE+gU6CgVFRUoFKgoKCgoKCgoKCgDVZWVqWlpVilWFWlpaVYUkNXPVmlpaWlV6VZpaWlpaWlpaWlpRNIUa+vMGCvr1Rdr0evYk2vX69iYl9fYGJAVa+vr6+vr6+vr69TU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTIt/f39/f39/f39/f39/f39/f39/f39/f39/fEkhFTlBVUk9QThrMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzDU5Q0I4QkNCRjsWycnJycnJycnJycnJycnJycnJycnJycnJyck6OkNAP0ZFQj9HGsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjINUlFQz5ERzk6ORfIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyDw+PkM7QEtEQjwZyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMg5QUA8QEM/SDs9Hc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OSUQ3NjVBPT0+QxbIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyDY+SkU7REVCP0gYyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgzQD5CPEZAQz9MGMrKysrKysrKysrKysrKysrKysrKysrKysrKOz9AOUlDOjpKRVNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUxrLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyzQ+PEVCRDpHPT4bysrKysrKysrKysrKysrKysrKysrKysrKyspEOTw8PD08O0VFGsvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLSD1GNkQ3P0M4QBnHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx0A8P0JBPzc+REAYycnJycnJycnJycnJycnJycnJycnJycnJyclFQEA+OkJAPkE9F8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjITj0/OUFBOUBFPxnJycnJycnJycnJycnJycnJycnJycnJycnJyT89RT1BREE8OjscyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMg+Oj08O0c/PTs7GcjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIO0E/Nz8+Pj9HRBjJycnJycnJycnJycnJycnJycnJycnJycnJyUFEPDxAOT5KPkFTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1MZzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMw4OT1BPEJDQkJFGMnJycnJycnJycnJycnJycnJycnJycnJycnJOUQ5PEc8QT1ESxnJycnJycnJycnJycnJycnJycnJycnJycnJyT9AO0I+QT04R0IXx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8dBPj9GP0NJOT1AGMbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGREI8QTw9P0E+QRnLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyzZBPj47Pj9GQU4WyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMg4N0NLRDs+T0FGGcjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIQkI9RDxASDg6PhXHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxzdHQkRDSUFGQzoWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsZLQEc+O0Y8RT49U1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTGsnJycnJycnJycnJycnJycnJycnJycnJycnJN0NFSkRDO0A1OBfIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyD9FPUU9PEBAP0EZyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMg7OzlMR0A8Pz5AHMrKysrKysrKysrKysrKysrKysrKysrKysrKRz84ODs6QD4/RBnIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyDw/QT1CNj5DRj4WyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMhIPUJFPj8/RD09GcjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIQz89Qjw6QzxCPxnHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxz5BQ0FCPEc7OD0aycnJycnJycnJycnJycnJycnJycnJycnJyclGPkI5PD5DO0Y5F8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHNkU9TEM+Rz49P1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUxzJycnJycnJycnJycnJycnJycnJycnJycnJyT03OT08P0JEQjsZyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMg+Oj1APUI/Q0BAFMfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHSTxGSEI7Q0BDQBbIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyEFIOT8+Rz1AQ0IaysrKysrKysrKysrKysrKysrKysrKysrKyspAOj49PUI9Qj9AFMbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGQEM+SEM9N1RIQBfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxzw9P0I8PkxARkAYxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsY/Rz9DPj1AQTlAFcTExMTExMTExMTExMTExMTExMTExMTExMTEN1ZBQUBCR0A6QRjHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx0JDOz1JNkM+RD5TU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1MZycnJycnJycnJycnJycnJycnJycnJycnJyck3RDtPQj09PUQ8GMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIPD45PkI6TkpCPBjJycnJycnJycnJycnJycnJycnJycnJycnJyUNBQ0E+PTxFQDsVxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcU+RUA8REc/Rj9DGMfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHQUA6PUI/PDxHQRXJycnJycnJycnJycnJycnJycnJycnJycnJyT9DTUI+PDxBQkQZycnJycnJycnJycnJycnJycnJycnJycnJyclCPUZBQz1EODo+FsTExMTExMTExMTExMTExMTExMTExMTExMTEQUQ5QlJEPEE/OhXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxT4+QUE9QkpNP0AYx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8dBNkI8TEA9RkE7U1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTFsnJycnJycnJycnJycnJycnJycnJycnJycnJOUJLPU47PEBJQRXJycnJycnJycnJycnJycnJycnJycnJycnJyUZBQERARzs5TEIXxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsY9R0FASztCPjs+G8nJycnJycnJycnJycnJycnJycnJycnJycnJQTxGPT4/Pj41QRnIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyEQ4Pz9COD9JQEAbx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8c5QjpEQTk5OUhIGcfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHPjw8Oz1DO0c9TBXIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyDpLTz47Rj5HO0QZxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsZDQEBAO0M+PDpEE8bGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGPUlCQUlJRjxAQVNTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTUxnHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxzlAPD9BRzs8Q0QXxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsZASDo/QkM6QzxEGMXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFOEU4PD44RERSQhjGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxjk9P0M5QEFETDwXyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMhHSENASz88Ozw6GMXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFODs7RDw+QkhOPhnGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxj07PztQOkM+QUAYycnJycnJycnJycnJycnJycnJycnJycnJyclBQzlGQzo/N0VEGcrKysrKysrKysrKysrKysrKysrKysrKysrKQT1EQTw9QjpIORvIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyD5DQjhCPT07OUdTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1MVysrKysrKysrKysrKysrKysrKysrKysrKysoxQ0NJRUtFRTtFFsTExMTExMTExMTExMTExMTExMTExMTExMTEQUY6Sj49R0RAOxvHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxzhHQj9APj4+OjwUxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsY/O0hJQUJBSD9FF8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIQEhAPTY/REJAQRzHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxzw8PEhBNz88QzoXxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcVDRkA3PEJFQUk5FsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGREBLRTlBSEE2QBbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxjtAQ0c4Qj9FP0cVxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsZDOUBCR0dGSD46U1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTGcbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGQUc/QTxFQkE4NxjHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxztBQT1JPEA9QkAWx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8dAQD9DRjw/QD1NFsnJycnJycnJycnJycnJycnJycnJycnJycnJTDxMPj83REU8QhfDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwzc9NzVLQzxFUFQax8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8c8PkI9P0E1RkFAGMfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHQTtEP0BEOjZJRxjHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx0JISDg4Q0Q6QzoXxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsY+Qz5EPUJCST06GMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIRz1BQUI0PkVIOg==";