Nombre de personnes incluses par sexe et par association
Au 11/03/2020, 783 personnes ont été incluses dans l’étude. Parmi elles, 581 sont des adultes et 202 sont des enfants. Parmi les adultes, 36% sont des hommes et 64% des femmes. Parmi les enfants, 43.1% sont des filles et 56.9% sont des garçons.
Table 1 : Nombre de personnes incluses dans l'étude par association et par du sexe au 11/03/2020- Etude sur la santé des Gens du voyage en Nouvelle Aquitaine
|
Adultes |
Enfants |
|
| Associations |
Femmes |
Hommes |
Sous-total |
Filles |
Garçons |
Sous-total |
TOTAL |
| AAISC |
6 |
4 |
10 |
2 |
1 |
3 |
13 |
| ALQR |
55 |
35 |
90 |
18 |
21 |
39 |
129 |
| Chemin du hérisson |
99 |
30 |
129 |
22 |
32 |
54 |
183 |
| CS Les Alliers |
24 |
18 |
42 |
9 |
11 |
20 |
62 |
| AAPIQ |
15 |
7 |
22 |
3 |
2 |
5 |
27 |
| CSC Royan |
16 |
4 |
20 |
2 |
4 |
6 |
26 |
| CAC de Surgères |
1 |
7 |
8 |
1 |
1 |
2 |
10 |
| La mission Fraternité |
7 |
8 |
15 |
0 |
0 |
0 |
15 |
| CS Tsigane UDAF |
8 |
11 |
19 |
4 |
3 |
7 |
26 |
| ADAV |
141 |
85 |
226 |
26 |
40 |
66 |
292 |
| Total |
372 |
209 |
581 |
87 |
115 |
202 |
783 |
Âge moyen des adultes et des enfants inclus
En moyenne, les adultes sont âgés de 42.3 ans (sd = 15.4 ans) et les enfants de 10.2 ans (sd = 1.9 ans). L’âge moyen des femmes est de 41.5 ans (sd = 15.7 ans) et des hommes de 43.6 ans (sd = 14.8 ans).
L’âge moyen des filles est de 10 ans (sd = 1.9 ans) et des garçons de 10.4 ans (sd = 1.9 ans).

Ratio selon le sexe des personnes
Le ratio femmes / hommes est de 1.8. Le ratio filles / garçons est de 0.8. La ratio adultes / enfants est de 2.9. Ces ratios sont présentés par association dans la table ci-dessous (Table 2).
Nombre de personnes incluses en fonction des semaines

Questionnaires transmis vs questionnaires attendus selon les territoires

Questionnaires transmis Vs questionnaires attendus selon les associations
Table 3 : Questionnaires transmis et attendus par association au 11/03/2020
- Etude sur la santé des Gens du voyage en Nouvelle Aquitaine
|
Nb de questionnaires |
Pourcentages |
| Associations |
à transmettre |
attendus |
transmis |
réalisé vs attendu |
réalisé vs à transmettre |
attendu vs à transmettre |
| AAISC |
49 |
48 |
13 |
27% |
27% |
98% |
| ALQR |
162 |
144 |
129 |
90% |
80% |
89% |
| Chemin du hérisson |
245 |
184 |
183 |
99% |
75% |
75% |
| CS Les Alliers |
183 |
144 |
62 |
43% |
34% |
79% |
| AAPIQ |
44 |
44 |
27 |
61% |
61% |
100% |
| CSC Royan |
117 |
97 |
26 |
27% |
22% |
83% |
| CAC de Surgères |
49 |
48 |
10 |
21% |
20% |
98% |
| La mission Fraternité |
109 |
83 |
15 |
18% |
14% |
76% |
| CS Tsigane UDAF |
83 |
79 |
26 |
33% |
31% |
95% |
| ADAV |
1008 |
700 |
292 |
42% |
29% |
69% |
| TOTAL |
2033 |
1571 |
783 |
50% |
39% |
77% |
Sur les 2033 questionnaires nécessaires pour cette étude, 783 ont été collectés et transmis à ce jour, ce qui veut dire que le niveau global de réalisation au 11/03/2020 est de 39%.

Table 4 : Questionnaires transmis par semaine et par association au 11/03/2020
- Etude sur la santé des Gens du voyage en Nouvelle Aquitaine
| Associations |
Semaine 48 |
Semaine 49 |
Semaine 50 |
Semaine 51 |
Semaine 52 |
Semaine 1 |
Semaine 2 |
Semaine 3 |
Semaine 4 |
Semaine 5 |
Semaine 6 |
Semaine 7 |
Semaine 8 |
Semaine 9 |
Semaine 10 |
TOTAL |
| AAISC |
0 |
0 |
0 |
0 |
0 |
0 |
4 |
0 |
0 |
0 |
0 |
0 |
4 |
0 |
5 |
13 |
| ALQR |
1 |
8 |
7 |
9 |
0 |
1 |
18 |
6 |
18 |
9 |
15 |
11 |
7 |
6 |
8 |
129 |
| Chemin du hérisson |
0 |
0 |
0 |
11 |
12 |
10 |
12 |
15 |
20 |
19 |
13 |
3 |
23 |
20 |
22 |
183 |
| CS Les Alliers |
0 |
1 |
5 |
7 |
2 |
0 |
8 |
3 |
7 |
2 |
8 |
11 |
8 |
0 |
0 |
62 |
| AAPIQ |
0 |
0 |
0 |
2 |
0 |
9 |
0 |
4 |
3 |
3 |
1 |
2 |
0 |
3 |
0 |
27 |
| CSC Royan |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
4 |
7 |
4 |
4 |
2 |
2 |
0 |
26 |
| CAC de Surgères |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
2 |
0 |
0 |
3 |
4 |
1 |
0 |
10 |
| La mission Fraternité |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
7 |
6 |
0 |
0 |
0 |
15 |
| CS Tsigane UDAF |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
5 |
0 |
2 |
5 |
13 |
0 |
1 |
26 |
| ADAV |
0 |
11 |
16 |
13 |
0 |
0 |
9 |
26 |
7 |
26 |
34 |
26 |
38 |
27 |
46 |
292 |
| TOTAL |
1 |
20 |
28 |
43 |
14 |
20 |
51 |
54 |
66 |
67 |
84 |
71 |
99 |
59 |
82 |
783 |
Effectifs actualisés recensement, tirage au sort et population cible
Table 5 : effectifs ménages et personnes tirages au sort 11/03/2020
Etude sur la santé des Gens du voyage en Nouvelle Aquitaine
|
Ménages recensés |
Ménages à tirer au sort |
Personnes cible |
| Associations |
Initial |
Actualisé |
Initial |
Actualisé |
Initial |
Actualisé |
| AAISC |
78 |
73 |
38 |
39 |
49 |
49 |
| ALQR |
185 |
187 |
152 |
150 |
164 |
162 |
| Chemin du hérisson |
296 |
264 |
251 |
220 |
280 |
245 |
| CS Les Alliers |
230 |
211 |
173 |
143 |
192 |
175 |
| AAPIQ |
70 |
68 |
36 |
36 |
44 |
44 |
| CSC Royan |
201 |
112 |
111 |
72 |
128 |
101 |
| CAC de Surgères |
70 |
69 |
44 |
44 |
49 |
49 |
| La mission Fraternité |
163 |
85 |
86 |
80 |
109 |
92 |
| CS Tsigane UDAF |
102 |
106 |
76 |
76 |
84 |
84 |
| ADAV |
1718 |
1443 |
804 |
754 |
1015 |
970 |
| TOTAL |
3113 |
2618 |
1771 |
1614 |
2114 |
1971 |
Refus
Les associations ont réporté que 45 personnes n’ont pas répondu ou répondu partiellement aux questionnaires, ce qui représente un taux de non-participation de 5.7%.
Données Manquantes
Lieux de vie
LS0tCnRpdGxlOiA8aW1nIHNyYz0nL1VzZXJzL0VsaXNlZS9HQl9Pd25DbG91ZC9TUEYvR0RWL2xvZ29fU1BGLnBuZycgd2lkdGg9JzE1MCc+IFRBQkxFQVUKICBERSBCT1JEIC0gU3VpdmkgZGVzIGluY2x1c2lvbnMKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICBjb2RlX2ZvbGRpbmc6IG5vbmUKICAgIHRoZW1lOiB5ZXRpCiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKICB3b3JkX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKZGF0ZTogJ0RhdGUgZCcnYWN0dWFsaXNhdGlvbiA6IGByIGZvcm1hdChTeXMuRGF0ZSgpLCAiJWQvJW0vJVkiKWAnCnN1YnRpdGxlOiBFdHVkZSBzdXIgbGUgc2FudMOpIGRlcyBHZW5zIGR1IHZveWFnZSBlbiBOb3V2ZWxsZSBBcXVpdGFpbmUKLS0tCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CmJvZHkgICAgICB7LyogTm9ybWFsICovICBmb250LWZhbWlseToiQ2FsaWJyaSI7IGZvbnQtc2l6ZToxNnB4OyBmb250LXN0eWxlOmJvbGQ7IGNvbG9yOmJsYWNrICB9CnRkICAgICAgICB7LyogVGFibGUgKi8gICBmb250LWZhbWlseToiQ2FsaWJyaSI7IGZvbnQtc2l6ZToxMnB4OyB9CmgxLnRpdGxlICB7LyogVGl0bGUgKi8gICBmb250LWZhbWlseToiQ2FsaWJyaSI7IGZvbnQtc2l6ZTozMHB4OyBmb250LXN0eWxlOmJvbGQ7IGNvbG9yOnJlZCB9CmgxLnN1YnRpdGxlIHsvKiBTdWJ0aXRsZSAqLyAgIGZvbnQtZmFtaWx5OiJDYWxpYnJpIjsgZm9udC1zaXplOjUwcHg7IGZvbnQtc3R5bGU6Ym9sZDsgY29sb3I6cmVkIH0KaDEgICAgICAgIHsvKiBIZWFkZXIgMSAqLyAgZm9udC1mYW1pbHk6IkNhbGlicmkiOyBmb250LXNpemU6MjJweDsgZm9udC1zdHlsZTpib2xkOyBjb2xvcjpibHVlOyAgfQpoMiAgICAgICAgey8qIEhlYWRlciAyICovICBmb250LWZhbWlseToiQ2FsaWJyaSI7IGZvbnQtc2l6ZToxOHB4OyBmb250LXN0eWxlczpib2xkOyBjb2xvcjpncmVlbjsgIH0KaDMgICAgICAgIHsvKiBIZWFkZXIgMyAqLyAgZm9udC1mYW1pbHk6IkNhbGlicmkiOyBmb250LXNpemU6MzBweDsgZm9udC1zdHlsZXM6Ym9sZDsgY29sb3I6cmVkIH0KY29kZS5yICAgIHsvKiBDb2RlIGJsb2NrICovIGZvbnQtZmFtaWx5OiJDYWxpYnJpIjsgZm9udC1zaXplOjEycHg7IH0KcHJlICAgICAgIHsvKiBDb2RlIGJsb2NrIC0gZGV0ZXJtaW5lcyBjb2RlIHNwYWNpbmcgYmV0d2VlbiBsaW5lcyAqLyBmb250LXNpemU6IDhweDsgfQo8L3N0eWxlPgoKLS0tCmBgYHtyIHNldHVwIGNodW5rLCBjaGFyZ2VtZW50IGRlcyBwYWNrYWdlcywgZWNobz1GLCBpbmNsdWRlPUYsIG1lc3NhZ2U9Riwgd2FybmluZz1GfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEYsIGluY2x1ZGUgPSBGLCBmaWcuYWxpZ249ImNlbnRlciIsIGZpZy53aWR0aCA9IDIwLCBkcGk9NTAwKQpsaWJyYXJ5KGdncGxvdDIpOyBsaWJyYXJ5KGRwbHlyKTsgbGlicmFyeSh0aWR5cik7IGxpYnJhcnkoZ2d0aGVtZXMpOyBsaWJyYXJ5KHNjYWxlcyk7IGxpYnJhcnkocmVhZHIpOwpsaWJyYXJ5KGtuaXRyKTsgbGlicmFyeShrYWJsZUV4dHJhKTsgbGlicmFyeShmbGV4dGFibGUpOyBsaWJyYXJ5KGx1YnJpZGF0ZSk7IGxpYnJhcnkoc3RyaW5ncik7CmxpYnJhcnkocmVhZHhsKTsgbGlicmFyeShncmlkRXh0cmEpOyBsaWJyYXJ5KHJtYXJrZG93bikKcGF0aCA8LSAiL1VzZXJzL0VsaXNlZS9HQl9Pd25DbG91ZC9TUEYvR0RWL0JERC1HRFYvIgpgYGAKCmBgYHtyIENvcGllIGRlcyBmaWNoaWVycyBleHBvcnQsIGV2YWw9VH0KIyBDb3BpZSBkdSBmaWNoaWVyIGV4cG9ydCBkb25uw6llcyBhZHVsdGVzIGRhbnMgcsOpcGVydG9pcmUKZXhwb3J0LmFkdSA8LSBncmVwKHBhdHRlcm4gPSBwYXN0ZTAoImV4cG9ydC1hIiksIGxpc3QuZmlsZXMoIn4vRG93bmxvYWRzIiksIHZhbHVlID0gVCkKZmlsZS5jb3B5KHBhc3RlMCgifi9Eb3dubG9hZHMvIixleHBvcnQuYWR1KSwgZmlsZS5wYXRoKHBhdGgsImRhdGEvR0RWX2V4cG9ydF9BZHVsdGUuY3N2IiksCiAgICAgICAgICBvdmVyd3JpdGUgPSBUKQpmaWxlLnJlbW92ZShwYXN0ZTAoIn4vRG93bmxvYWRzLyIsZXhwb3J0LmFkdSkpOyBybShleHBvcnQuYWR1KQoKIyBDb3BpZSBkdSBmaWNoaWVyIGV4cG9ydCBkb25uw6llcyBlbmZhbnRzIGRhbnMgcsOpcGVydG9pcmUKZXhwb3J0LmVuZiA8LSBncmVwKHBhdHRlcm4gPSBwYXN0ZTAoImV4cG9ydC1lIiksIGxpc3QuZmlsZXMoIn4vRG93bmxvYWRzIiksIHZhbHVlID0gVCkKZmlsZS5jb3B5KHBhc3RlMCgifi9Eb3dubG9hZHMvIixleHBvcnQuZW5mKSwgZmlsZS5wYXRoKHBhdGgsImRhdGEvR0RWX2V4cG9ydF9FbmZhbnQuY3N2IiksCiAgICAgICAgICBvdmVyd3JpdGUgPSBUKQpmaWxlLnJlbW92ZShwYXN0ZTAoIn4vRG93bmxvYWRzLyIsZXhwb3J0LmVuZikpOyBybShleHBvcnQuZW5mKQpgYGAKCmBgYHtyIEltcG9ydGF0aW9uIGRlcyBkb25uw6llcyBjcsOpYXRpb24gZGUgbGEgdmFyaWFibGUgUGVyc29ubmUgbWVyZ2UgZGVzIGRhdGEgZnJhbWVzLCBpbmNsdWRlPUZBTFNFfQptZGZBIDwtIHJlYWRfZGVsaW0oZmlsZS5wYXRoKHBhdGgsImRhdGEvR0RWX2V4cG9ydF9BZHVsdGUuY3N2IiksICI7IiwKICAgICAgICAgICAgICAgICAgIGVzY2FwZV9kb3VibGUgPSBGQUxTRSwgdHJpbV93cyA9IFRSVUUpCm1kZkUgPC0gcmVhZF9kZWxpbShmaWxlLnBhdGgocGF0aCwiZGF0YS9HRFZfZXhwb3J0X0VuZmFudC5jc3YiKSwgIjsiLAogICAgICAgICAgICAgICAgICAgZXNjYXBlX2RvdWJsZSA9IEZBTFNFLCB0cmltX3dzID0gVFJVRSkKIyBDcsOpYXRpb24gZGUgbGEgdmFyaWFibGUgIlBlcnNvbm5lIgptZGZBJFBlcnNvbm5lIDwtICJBZHVsdGUiCm1kZkUkUGVyc29ubmUgPC0gIkVuZmFudCIKIyBNZXJnZSBtZGZBIGFuZCBtZGZFCm1kZiA8LSByYmluZChtZGZBLCBtZGZFKQpgYGAKCgpgYGB7ciBDcsOpYXRpb24gZGUgbm91dmVsbGVzIHZhcmlhYmxlc30KIyBDcsOpYXRpb24gZGUgbGEgdmFyaWFibGVzIGFzc28KYXNzbyA8LSBjKCJBQUlTQyIsICJBTFFSIiwgIkNoZW1pbiBkdSBow6lyaXNzb24iLCAiQ1MgTGVzIEFsbGllcnMiLAogICAgICAgICAgIkFBUElRIiwgIkNTQyBSb3lhbiIsICJDQUMgZGUgU3VyZ8OocmVzIiwgIkxhIG1pc3Npb24gRnJhdGVybml0w6kiLAogICAgICAgICAgIkNTIFRzaWdhbmUgVURBRiIsCiAgICAgICAgICAiQURBViIpCnRlcnJpIDwtIGMoIlN1ZCBDaGFyZW50ZSIsICJHcmFuZCBDb2duYWMiLCAiQ29uZm9sZW50YWlzIiwgIlJ1ZmZlY29pcyIsICJHcmFuZCBBbmdvdWzDqm1lIiwKICAgICAgICAgICAiQ0EgUm9jaGVmb3J0IiwgIkNBIFJveWFuIiwgIkNBIFN1cmfDqHJlcyIsICJDQUMgTGEgUm9jaGVsbGUiLAogICAgICAgICAgICJDQSBHdcOpcmV0IiwgIkNBIE1WIE91ZXN0LUNyZXVzZSIsCiAgICAgICAgICAgIkJhc3NpbiBkJ0FyY2FjaG9uIiwgIkJvcmRlYXV4IE3DqXRyb3BvbGUiLCAiSGF1dGUgR2lyb25kZSIsICJMaWJvdXJuYWlzIiwgIk3DqWRvYyIsICJTdWQgR2lyb25kZSIpCnNlbSA8LSBjKCJTZW1haW5lIDQ4IiwgIlNlbWFpbmUgNDkiLCAiU2VtYWluZSA1MCIsICJTZW1haW5lIDUxIiwgIlNlbWFpbmUgNTIiLCAiU2VtYWluZSAxIiwgCiAgICAgICAgICJTZW1haW5lIDIiLCAiU2VtYWluZSAzIiwgIlNlbWFpbmUgNCIsICJTZW1haW5lIDUiLCAiU2VtYWluZSA2IiwgIlNlbWFpbmUgNyIsCiAgICAgICAgICJTZW1haW5lIDgiLCAiU2VtYWluZSA5IiwgIlNlbWFpbmUgMTAiLCAiU2VtYWluZSAxMSIsICJTZW1haW5lIDEyIiwgIlNlbWFpbmUgMTMiLAogICAgICAgICAiU2VtYWluZSAxNCIsICJTZW1haW5lIDE1IiwgIlNlbWFpbmUgMTYiLCAiU2VtYWluZSAxNyIsICJTZW1haW5lIDE4IiwgIlNlbWFpbmUgMTkiLAogICAgICAgICAiU2VtYWluZSAyMCIsICJTZW1haW5lIDIxIiwgIlNlbWFpbmUgMjIiLCAiU2VtYWluZSAyMyIsICJTZW1haW5lIDI0IiwgIlNlbWFpbmUgMjUiLAogICAgICAgICAiU2VtYWluZSAyNiIsICJTZW1haW5lIDI3IiwgIlNlbWFpbmUgMjgiLCAiU2VtYWluZSAyOSIsICJTZW1haW5lIDMwIiwgIlNlbWFpbmUgMzEiKQoKIyBDcsOpYXRpb24gdmFyaWFibGUgbm9tYnJlIGRlIHF1ZXN0aW9ubmFpcmVzIGNpYmxlcyBwYXIgYXNzbwpuYi5xdWVzdC5hcmVhbGlzZXIuYXNzbyA8LSBjKDQ5LCAxNjIsIDI0NSwgMTgzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0LCAxMTcsIDQ5LCAxMDksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDMzKQpuYi5xdWVzdC5hcmVhbGlzZXIudGVycmkgPC0gYyg0OSwgMTYzLCAxMzcsIDkxLCAxODMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQsIDExNywgNDksIDEwOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MiwgMzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzksIDY5NywgNzEsIDg3LCA0MSwgNzMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAzMykKCiMgQ3LDqWF0aW9uIGRlIGxhIHZhcmlhYmxlICJQZXJzb25uZSIKbWRmQSRQZXJzb25uZSA8LSAiQWR1bHRlIgptZGZFJFBlcnNvbm5lIDwtICJFbmZhbnQiCgojIENyZWF0ZSBTZXhlMgptZGYkU2V4ZTIgPC0gYXMuZmFjdG9yKGlmZWxzZShtZGYkU2V4ZSA9PSAiRmlsbGUiIHwgbWRmJFNleGUgPT0gICJHYXLDp29uIiwgIkVuZmFudCIsCiAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UobWRmJFNleGUgPT0gIkhvbW1lIiwgIkhvbW1lIiwgIkZlbW1lIikpKQptZGYkU2V4ZTIgPC0gZmFjdG9yKG1kZiRTZXhlMiwgbGV2ZWxzID0gYygiRmVtbWUiLCAiSG9tbWUiLCAiRW5mYW50IikpCgojIFRyYW5zZm9ybWF0aW9uIHZhcmlhYmxlIEFzc29jaWF0aW9uIGV0IGNsYXNzZW1lbnQKbWRmJEFzc29jaWF0aW9uIDwtIGFzLmZhY3RvcihtZGYkQXNzb2NpYXRpb24pCmxldmVscyhtZGYkQXNzb2NpYXRpb24pIDwtIGMoIkNTIFRzaWdhbmUgVURBRiIsICJBREFWIiwgIkFBSVNDIiwgIkFBUElRIiwgIkFMUVIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDQUMgZGUgU3VyZ8OocmVzIiwgIkNoZW1pbiBkdSBow6lyaXNzb24iLCAiQ1NDIFJveWFuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGEgbWlzc2lvbiBGcmF0ZXJuaXTDqSIsICJDUyBMZXMgQWxsaWVycyIpCm1kZiRBc3NvY2lhdGlvbiA8LSBmYWN0b3IobWRmJEFzc29jaWF0aW9uLCBsZXZlbHMgPSBhc3NvKQpgYGAKCiMgTm9tYnJlIGRlIHBlcnNvbm5lcyBpbmNsdXNlcyBwYXIgc2V4ZSBldCBwYXIgYXNzb2NpYXRpb24KQXUgYHIgZm9ybWF0KFN5cy5EYXRlKCksICIlZC8lbS8lWSIpYCwgKipgciBucm93KG1kZilgIHBlcnNvbm5lcyoqIG9udCDDqXTDqSBpbmNsdXNlcyBkYW5zIGwnw6l0dWRlLiBQYXJtaSBlbGxlcywgYHIgc3VtKG1kZiRQZXJzb25uZSA9PSAiQWR1bHRlIilgIHNvbnQgZGVzIGFkdWx0ZXMgZXQgYHIgc3VtKG1kZiRQZXJzb25uZSA9PSAiRW5mYW50IilgIHNvbnQgZGVzIGVuZmFudHMuIFBhcm1pIGxlcyBhZHVsdGVzLCBgciByb3VuZChzdW0obWRmJFNleGUgPT0gIkhvbW1lIikvc3VtKG1kZiRQZXJzb25uZSA9PSAiQWR1bHRlIiksIDMpKjEwMGAlIHNvbnQgZGVzIGhvbW1lcyBldCBgciByb3VuZChzdW0obWRmJFNleGUgPT0gIkZlbW1lIikvc3VtKG1kZiRQZXJzb25uZSA9PSAiQWR1bHRlIiksIDMpKjEwMGAlIGRlcyBmZW1tZXMuIFBhcm1pIGxlcyBlbmZhbnRzLCBgciByb3VuZChzdW0obWRmJFNleGUgPT0gIkZpbGxlIikvc3VtKG1kZiRQZXJzb25uZSA9PSAiRW5mYW50IiksIDMpKjEwMGAlIHNvbnQgZGVzIGZpbGxlcyBldCBgciByb3VuZChzdW0obWRmJFNleGUgPT0gIkdhcsOnb24iKS9zdW0obWRmJFBlcnNvbm5lID09ICJFbmZhbnQiKSwgMykqMTAwYCUgc29udCBkZXMgZ2Fyw6dvbnMuCgpgYGB7ciBUYWIgMSA6IG5vbWJyZSBkZSBwZXJzb25uZXMgaW5jbHVzZXMgcGFyIHNleGUgZXQgcGFyIGFzc29jaWF0aW9ufQojIENvbnN0cnVjdGlvbiB0YWIxCnRhYjEgPC0gYXMuZGF0YS5mcmFtZShhZGRtYXJnaW5zKHh0YWJzKH5Bc3NvY2lhdGlvbitTZXhlLCBkYXRhPW1kZikpKSAlPiUKICBzcHJlYWQoU2V4ZSwgRnJlcSkKdGFiMSR0b3RhbC5hIDwtIHRhYjEkSG9tbWUgKyB0YWIxJEZlbW1lCnRhYjEkdG90YWwuZSA8LSB0YWIxJEdhcsOnb24gKyB0YWIxJEZpbGxlCnRhYjEgPC0gdGFiMVtjKDE6Miw1LDcsMzo0LDgsNildCmNvbG5hbWVzKHRhYjEpIDwtIGMoIkFzc29jaWF0aW9ucyIsICJGZW1tZXMiLCAiSG9tbWVzIiwgIlRvdGFsMSIsICJGaWxsZXMiLCAiR2Fyw6dvbnMiLCAiVG90YWwyIiwgIlRPVEFMIikKbGV2ZWxzKHRhYjEkQXNzb2NpYXRpb25zKVsxMV0gPC0gIlRvdGFsIgpjb2xuYW1lcyh0YWIxKVs0XSA8LSAiU291cy10b3RhbCAiOyBjb2xuYW1lcyh0YWIxKVs3XSA8LSAiU291cy10b3RhbCIKYGBgCgpgYGB7ciBQbG90IHRhYjEsIGluY2x1ZGU9VH0KIyBQbG90IHRhYjEgMQp0YWIxICU+JQogIG11dGF0ZShgU291cy10b3RhbCBgID0gY2VsbF9zcGVjKGBTb3VzLXRvdGFsIGAsIGJvbGQgPSBUKSkgJT4lCiAgbXV0YXRlKGBTb3VzLXRvdGFsYCA9IGNlbGxfc3BlYyhgU291cy10b3RhbGAsIGJvbGQgPSBUKSkgJT4lCiAgbXV0YXRlKFRPVEFMID0gY2VsbF9zcGVjKFRPVEFMLCBib2xkID0gVCkpICU+JQogIGthYmxlKGNhcHRpb24gPSBwYXN0ZTAoIlRhYmxlIDEgOiBOb21icmUgZGUgcGVyc29ubmVzIGluY2x1c2VzIGRhbnMgbCfDqXR1ZGUgcGFyIGFzc29jaWF0aW9uIGV0IHBhciBkdSBzZXhlIGF1ICIsIGZvcm1hdChTeXMuRGF0ZSgpLCAiJWQvJW0vJVkiKSwgIi0gRXR1ZGUgc3VyIGxhIHNhbnTDqSBkZXMgR2VucyBkdSB2b3lhZ2UgZW4gTm91dmVsbGUgQXF1aXRhaW5lIiksCmZvcm1hdCA9ICJodG1sIiwgcG9zaXRpb24gPSAiY2VudGVyIiwgZXNjYXBlID0gRiwgYWxpZ24gPSBjKCJsIiwiYyIsImMiLCAiYyIsImMiLCJjIiwiYyIsImMiLCJjIikpICU+JQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSAic3RyaXBlZCIsIGZ1bGxfd2lkdGggPSBGLAogICAgICAgIGZvbnRfc2l6ZSA9IDEyKSAlPiUKICByb3dfc3BlYygxMSwgYm9sZCA9IFQpICU+JQogIGFkZF9oZWFkZXJfYWJvdmUoYygiICIgPSAxLCAiQWR1bHRlcyIgPSAzLCAiRW5mYW50cyIgPSAzLCAiICIgPSAxKSkKYGBgCgojIMOCZ2UgbW95ZW4gZGVzIGFkdWx0ZXMgZXQgZGVzIGVuZmFudHMgaW5jbHVzCkVuIG1veWVubmUsIGxlcyBhZHVsdGVzIHNvbnQgw6Jnw6lzIGRlCmByIHJvdW5kKHdpdGgobWRmLCB0YXBwbHkoQWdlLCBQZXJzb25uZSwgbWVhbiwgbmEucm09VCkpWzFdLDEpYCBhbnMgKHNkID0gYHIgcm91bmQod2l0aChtZGYsIHRhcHBseShBZ2UsIFBlcnNvbm5lLCBzZCwgbmEucm09VCkpWzFdLDEpYCBhbnMpCmV0IGxlcyBlbmZhbnRzIGRlIGByIHJvdW5kKHdpdGgobWRmLCB0YXBwbHkoQWdlLCBQZXJzb25uZSwgbWVhbiwgbmEucm09VCkpWzJdLDEpYCBhbnMgKHNkID0gYHIgcm91bmQod2l0aChtZGYsIHRhcHBseShBZ2UsIFBlcnNvbm5lLCBzZCwgbmEucm09VCkpWzJdLDEpYCBhbnMpLgpMJ8OiZ2UgbW95ZW4gZGVzIGZlbW1lcyBlc3QgZGUgYHIgcm91bmQod2l0aChtZGZBLCB0YXBwbHkoQWdlLCBTZXhlLCBtZWFuLCBuYS5ybT1UKSlbMV0sMSlgCiBhbnMgKHNkID0gYHIgcm91bmQod2l0aChtZGZBLCB0YXBwbHkoQWdlLCBTZXhlLCBzZCwgbmEucm09VClbMV0pLDEpYCBhbnMpIGV0IGRlcyBob21tZXMgZGUgYHIgcm91bmQod2l0aChtZGZBLCB0YXBwbHkoQWdlLCBTZXhlLCBtZWFuLCBuYS5ybT1UKSlbMl0sMSlgIGFucyAoc2QgPSBgciByb3VuZCh3aXRoKG1kZkEsIHRhcHBseShBZ2UsIFNleGUsIHNkLCBuYS5ybT1UKSlbMl0sMSlgIGFucykuICAKIEwnw6JnZSBtb3llbiBkZXMgZmlsbGVzIGVzdCBkZSBgciByb3VuZCh3aXRoKG1kZkUsIHRhcHBseShBZ2UsIFNleGUsIG1lYW4sIG5hLnJtPVQpKVsxXSwxKWAgYW5zIChzZCA9IGByIHJvdW5kKHdpdGgobWRmRSwgdGFwcGx5KEFnZSwgU2V4ZSwgc2QsIG5hLnJtPVQpWzFdKSwxKWAgYW5zKSBldCBkZXMgZ2Fyw6dvbnMgZGUgYHIgcm91bmQod2l0aChtZGZFLCB0YXBwbHkoQWdlLCBTZXhlLCBtZWFuLCBuYS5ybT1UKSlbMl0sMSlgIGFucyAoc2QgPSBgciByb3VuZCh3aXRoKG1kZkUsIHRhcHBseShBZ2UsIFNleGUsIHNkLCBuYS5ybT1UKSlbMl0sMSlgIGFucykuCgo8Y2VudGVyPiAgICAKYGBge3IgUGxvdCBGaWd1cmUgMSA6IGJveHBsb3RzIMOiZ2UgZGVzIGFkdWx0ZXMgZXQgZGVzIGVuZmFudHMsIGluY2x1ZGUgPSBULCBmaWcud2lkdGg9NywgZGV2PSJzdmciLCBkcGk9MzAwfQojIEFkdWx0ZXMKZ2dwbG90KG1kZkEpICsgdGhlbWVfY2xhc3NpYyhiYXNlX3NpemUgPSAxMCkgKwogICBhZXMoeCA9IFNleGUsIHkgPSBBZ2UsIGNvbG9yID0gU2V4ZSkgKwogICBnZW9tX2JveHBsb3QoKSArCiAgIGxhYnModGl0bGUgPSAiRmlndXJlIDEgOiBCb8OudGUgw6AgbW91c3RhY2hlIGRlIGxhIHZhcmlhYmxlIMOiZ2UgXG5lbiBmb25jdGlvbiBkdSBzZXhlIGNoZXMgbGVzIGFkdWx0ZXMiLAogICAgICAgIHkgPSAiw4JnZSAoZW4gYW5uw6llcykiLAogICAgICAgIHggPSAiIikgKwogIHRoZW1lKAogICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCBjb2xvciA9ICJncmV5NTAiKSwKICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJncmV5NTAiKSwKICAgIGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShjb2xvciA9ICJncmV5NTAiKSwKICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiZ3JleTUwIiwgc2l6ZSA9IDEwLCBoanVzdCA9IDAuNSkKICAgICkgKwogIHNjYWxlX3hfZGlzY3JldGUobGFiZWxzID0gYygiRmVtbWVzIiwgIkhvbW1lcyIpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cz1jKDE4LCAxMDApLCBicmVha3M9c2VxKDAsMTAwLDEwKSkgLT4gcDEKCiMgRW5mYW50cwpnZ3Bsb3QobWRmRSkgKyB0aGVtZV9jbGFzc2ljKGJhc2Vfc2l6ZSA9IDEwKSArCiAgIGFlcyh4ID0gU2V4ZSwgeSA9IEFnZSwgY29sb3IgPSBTZXhlKSArCiAgIGdlb21fYm94cGxvdCgpICsKICAgbGFicyh0aXRsZSA9ICJGaWd1cmUgMiA6IEJvw650ZSDDoCBtb3VzdGFjaGUgZGUgbGEgdmFyaWFibGUgw6JnZSBcbmVuIGZvbmN0aW9uIGR1IHNleGUgY2hleiBsZXMgZW5mYW50cyIsCiAgICAgICAgeSA9ICLDgmdlIChlbiBhbm7DqWVzKSIsCiAgICAgICAgeCA9ICIiKSArCiAgdGhlbWUoCiAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIGNvbG9yID0gImdyZXk1MCIpLAogICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KGNvbG9yID0gImdyZXk1MCIpLAogICAgYXhpcy5saW5lID0gZWxlbWVudF9saW5lKGNvbG9yID0gImdyZXk1MCIpLAogICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiLAogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJncmV5NTAiLCBzaXplID0gMTAsIGhqdXN0ID0gMC41KQogICAgKSArCiAgc2NhbGVfeF9kaXNjcmV0ZShsYWJlbHMgPSBjKCJGaWxsZXMiLCAiR2Fyw6dvbnMiKSkgKwogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHM9Yyg2LCAxNCksIGJyZWFrcz1zZXEoNiwxNCwxKSkgLT4gcDIKCmdyaWQuYXJyYW5nZShwMSwgcDIsIG5yb3c9MSwgbmNvbD0yKQpybShwMSxwMikKYGBgCjxjZW50ZXI+IAoKCiMgUmF0aW8gc2Vsb24gbGUgc2V4ZSBkZXMgcGVyc29ubmVzCkxlIHJhdGlvIGZlbW1lcyAvIGhvbW1lcyBlc3QgZGUgYHIgcm91bmQoc3VtKG1kZiRTZXhlID09ICJGZW1tZSIpL3N1bShtZGYkU2V4ZSA9PSAiSG9tbWUiKSwxKWAuCkxlIHJhdGlvIGZpbGxlcyAvIGdhcsOnb25zIGVzdCBkZSBgciByb3VuZChzdW0obWRmJFNleGUgPT0gIkZpbGxlIikvc3VtKG1kZiRTZXhlID09ICJHYXLDp29uIiksMSlgLgpMYSByYXRpbyBhZHVsdGVzIC8gZW5mYW50cyBlc3QgZGUgYHIgcm91bmQoc3VtKG1kZiRQZXJzb25uZSA9PSAiQWR1bHRlIikvc3VtKG1kZiRQZXJzb25uZSA9PSAiRW5mYW50IiksMSlgLgpDZXMgcmF0aW9zIHNvbnQgcHLDqXNlbnTDqXMgcGFyIGFzc29jaWF0aW9uIGRhbnMgbGEgdGFibGUgY2ktZGVzc291cyAoVGFibGUgMikuCmBgYHtyIFRhYiAyIDogcmF0aW9zIHNleGUgZGVzIHBlcnNvbm5lcywgaW5jbHVkZT1UfQp0YWIyIDwtIHRhYjEgJT4lIG11dGF0ZShSYXRpb0hGID0gaWZlbHNlKEZlbW1lcyA9PSAwIHwgSG9tbWVzID09IDAsIE5BX2NoYXJhY3Rlcl8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmQoRmVtbWVzL0hvbW1lcywxKSkpICU+JQogIG11dGF0ZShSYXRpb0ZHICA9IGlmZWxzZShGaWxsZXMgPT0gMCB8IEdhcsOnb25zID09IDAsIE5BX2NoYXJhY3Rlcl8sIHJvdW5kKEZpbGxlcy9HYXLDp29ucywxKSkpICU+JQogIG11dGF0ZShSYXRpb25BRSA9IGlmZWxzZShGZW1tZXMgPT0gMCB8IEhvbW1lcyA9PSAwIHwgRmlsbGVzID09IDAgfCBHYXLDp29ucyA9PSAwLCBOQV9jaGFyYWN0ZXJfLAogICAgICAgICAgICAgICAgICAgICAgICAgICByb3VuZChgU291cy10b3RhbGAvYFNvdXMtdG90YWwgYCwxKSkpICU+JQogIGRwbHlyOjpzZWxlY3QoQXNzb2NpYXRpb25zLCBSYXRpb0hGLCBSYXRpb0ZHLCBSYXRpb25BRSwgVE9UQUwpCmNvbG5hbWVzKHRhYjIpIDwtIGMoIkFzc29jaWF0aW9ucyIsICJGZW1tZXMvSG9tbWVzIiwgIkZpbGxlcy9HYXLDp29ucyIsCiAgICAgICAgICAgICAgICAgICAgIkFkdWx0ZXMvRW5mYW50cyIsICJOb21icmUgZGUgcGVyc29ubmVzIGluY2x1c2VzIikKYGBgCgoKYGBge3IgaW5jbHVkZSA9IFR9CnRhYjIgJT4lIAogIGthYmxlKGNhcHRpb24gPSBwYXN0ZTAoIlRhYmxlIDIgOiBSYXRpb3MgZW4gZm9uY3Rpb24gZHUgc2V4ZSBkZXMgcGVyc29ubmVzIGluY2x1c2VzIGF1ICIsCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoU3lzLkRhdGUoKSwgIiVkLyVtLyVZIiksCiAgICAgICAgICAgICAgICAgICAgICAgICJcbiBFdHVkZSBzdXIgbGEgc2FudMOpIGRlcyBHZW5zIGR1IHZveWFnZSBlbiBOb3V2ZWxsZSBBcXVpdGFpbmUiKSwgZm9ybWF0ID0gImh0bWwiLCBwb3NpdGlvbiA9ICJjZW50ZXIiLCBlc2NhcGUgPSBGLCBhbGlnbiA9IGMoImwiLCByZXAoImMiLG5jb2wodGFiMikpKSkgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9ICJzdHJpcGVkIiwgZnVsbF93aWR0aCA9IEYsIGZvbnRfc2l6ZSA9IDEyKSAlPiUKICBjb2xsYXBzZV9yb3dzKGNvbHVtbnMgPSAxLCB2YWxpZ24gPSAibWlkZGxlIikgJT4lCiAgcm93X3NwZWMoMTEsIGJvbGQgPSBUKSAlPiUKICBhZGRfaGVhZGVyX2Fib3ZlKGMoIiAiID0gMSwgIlJhdGlvIiA9IDMsICIgIiA9IDEpKQpgYGAKCgotLS0KCiMgTm9tYnJlIGRlIHBlcnNvbm5lcyBpbmNsdXNlcyBlbiBmb25jdGlvbiBkZXMgc2VtYWluZXMKYGBge3IgVGFiMyA6IG5vbWJyZSBkZSBwZXJzb25uZXMgaW5jbHVzZXMgZW4gZm9uY3Rpb24gZGVzIHNlbWFpbmVzLCBpbmNsdWRlID0gVH0KdGFiMyA8LSBtZGYgJT4lIGRwbHlyOjpzZWxlY3QoQXNzb2NpYXRpb24sIENvZGUsIGBEYXRlIGNyZWF0aW9uYCkgJT4lCiAgbXV0YXRlKFRlcnJpdG9pcmUgPSBzdHJfc3ViKG1kZiRDb2RlLCA3LDgpKSAlPiUKICBtdXRhdGUoU2VtYWluZSA9IGFzLmZhY3RvcihwYXN0ZSgiU2VtYWluZSIsaXNvd2VlayhtZGYkYERhdGUgY3JlYXRpb25gKSwgc2VwID0gIiAiKSkpCnRhYjMkU2VtYWluZSA8LSBmYWN0b3IodGFiMyRTZW1haW5lLCBsZXZlbHMgPSBzZW1bMTpubGV2ZWxzKHRhYjMkU2VtYWluZSldKQpgYGAKCjxjZW50ZXI+CmBgYHtyIFBsb3QgRmlndXJlIDMsIGZpZy53aWR0aD01LjIsIGRldj0ic3ZnIiwgZHBpPTMwMCwgaW5jbHVkZT1UfQpnZ3Bsb3QodGFiMykgKyB0aGVtZV9jbGFzc2ljKGJhc2Vfc2l6ZSA9IDEwKSArIGFlcyh4ID0gU2VtYWluZSwgYmlud2lkdGggPSAwKSArCiAgZ2VvbV9iYXIoY29sb3VyID0gIndoaXRlIiwgZmlsbCA9ICJ0b21hdG8iLCB3aWR0aCA9IDAuOCwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSg1KSkgKwogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiZ3JleTUwIiwgc2l6ZSA9IDksIGhqdXN0ID0gMC41KSkgKwogIHlsaW0oYygwLDEwMCkpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIGNvbG9yID0gImdyZXk1MCIpLAogICAgICAgICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KGNvbG9yID0gImdyZXk1MCIpKSArCiAgbGFicyh5ID0gIk5iIGRlIHF1ZXN0aW9ubmFpcmVzIiwgeCA9ICIiKSArCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJncmV5NTAiLCBzaXplID0gMTAsIGhqdXN0ID0gMC41KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZTAoIk5vbWJyZSBkJ2luY2x1c2lvbnMgc2Vsb24gbGVzIHNlbWFpbmVzIGF1ICIsCiAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoU3lzLkRhdGUoKSwgIiVkLyVtLyVZIiksCiAgICAgICAgICAgICAgICAgICAgIi5cbiBFdHVkZSBzdXIgbGEgc2FudMOpIGRlcyBHZW5zIGR1IHZveWFnZSBlbiBOb3V2ZWxsZSBBcXVpdGFpbmUgMjAxOS0yMDIwIikpCmBgYAo8Y2VudGVyPgoKIyBRdWVzdGlvbm5haXJlcyB0cmFuc21pcyB2cyBxdWVzdGlvbm5haXJlcyBhdHRlbmR1cyBzZWxvbiBsZXMgdGVycml0b2lyZXMKYGBge3IgVGFiNCA6IHRyYW5zbWlzIHZzIGF0dGVuZHVzIHBhciB0ZXJyaXRvaXJlcywgd2FybmluZz1GLCBtZXNzYWdlPUZ9CiMgQ29ycmVjdGlvbiBjb2RlIGFkdWx0ZQptZGZbd2hpY2gobWRmJENvZGUgPT0gIjMzX0FEX01CXzAwMl9XX0FMRV8xIiksIkNvZGUiXSA8LSAiMzNfQURfQk1fMDAyX1dfQUxFXzEiCnRhYjQgPC0gbWRmICU+JSBkcGx5cjo6c2VsZWN0KEFzc29jaWF0aW9uLCBDb2RlLCBgRGF0ZSBjcmVhdGlvbmApICU+JQogIG11dGF0ZShUZXJyaXRvaXJlID0gc3RyX3N1YihtZGYkQ29kZSwgNyw4KSkgJT4lCiAgbXV0YXRlKFNlbWFpbmUgPSBpc293ZWVrKG1kZiRgRGF0ZSBjcmVhdGlvbmApKSAlPiUKICBncm91cF9ieShBc3NvY2lhdGlvbiwgVGVycml0b2lyZSwgU2VtYWluZSkgJT4lCiAgc3VtbWFyaXNlKG4gPSBuKCkpICU+JQogIHNwcmVhZChTZW1haW5lLCBuKQp0YWI0IDwtIHRhYjQgJT4lIGRwbHlyOjpzZWxlY3QoMSwyLChuY29sKHRhYjQpIC0gNCk6bmNvbCh0YWI0KSwzOihuY29sKHRhYjQpLTUpKQp0YWI0IDwtIGRhdGEuZnJhbWUodGFiNCkKdGFiNFtpcy5uYSh0YWI0KV0gPC0gMAoKIyMgw6AgZXhlY3V0ZXIgdW5pcXVlbWVudCBzaSBkZXMgdGVycml0b2lyZXMgbidvbnQgcGFzIGVuY29yZSB0cmFuc21pcyBkZSBxdWVzdGlvbm5haXJlcyAjIyMKaSA8LSBucm93KHRhYjQpCnRhYjRbaSArIDEsXSA8LSBjKCJBREFWIiwgIkFSIiwgcmVwKDAsKG5jb2wodGFiNCkgLSAyKSkpICMgdsOpcmlmaWVyCnRhYjRbaSArIDIsXSA8LSBjKCJDUyBUc2lnYW5lIFVEQUYiLCAiTVYiLCByZXAoMCwobmNvbCh0YWI0KSAtIDIpKSkgIyB2w6lyaWZpZXIKdGFiNCA8LSB0YWI0ICU+JSBhcnJhbmdlKGZhY3RvcihBc3NvY2lhdGlvbiwgbGV2ZWxzID0gYXNzbykpICMgY2xhc3NlbWVudApkZiA8LSB0YWI0WzEyOjE3LF0gJT4lIGFycmFuZ2UoVGVycml0b2lyZSkgIyBjbGFzc2VtZW50IHRlcnJpdG9pcmVzIEFEQVYKdGFiNCA8LSByYmluZCh0YWI0WzE6MTEsXSwgZGYpOyBybShkZikKIyMgRklOICMjIwoKdGFiNFssMzpuY29sKHRhYjQpXSA8LSBsYXBwbHkodGFiNFssMzpuY29sKHRhYjQpXSwgYXMubnVtZXJpYykKY29sbmFtZXModGFiNClbMzpuY29sKHRhYjQpXSA8LSBzZW1bMToobmNvbCh0YWI0KS0yKV0KdGFiNCRUT1RBTCA8LSByb3dTdW1zKHRhYjRbLCBjKDM6bmNvbCh0YWI0KSldKQp0YWI0IDwtIHRhYjQgJT4lIG11dGF0ZShUZXJyaXRvaXJlcyA9IGlmZWxzZShUZXJyaXRvaXJlID09ICJTRCIsIHRlcnJpWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUZXJyaXRvaXJlID09ICJHQyIsIHRlcnJpWzJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUZXJyaXRvaXJlID09ICJDRiIsIHRlcnJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUZXJyaXRvaXJlID09ICJSRiIsIHRlcnJpWzRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUZXJyaXRvaXJlID09ICJHQSIsIHRlcnJpWzVdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUZXJyaXRvaXJlID09ICJSTyIsIHRlcnJpWzZdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUZXJyaXRvaXJlID09ICJPTCIsIHRlcnJpWzddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUZXJyaXRvaXJlID09ICJBVSIsIHRlcnJpWzhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUZXJyaXRvaXJlID09ICJMUiIsIHRlcnJpWzldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUZXJyaXRvaXJlID09ICJHVSIsIHRlcnJpWzEwXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVGVycml0b2lyZSA9PSAiTVYiLCB0ZXJyaVsxMV0sICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUZXJyaXRvaXJlID09ICJBUiIsIHRlcnJpWzEyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVGVycml0b2lyZSA9PSAiQk0iLCB0ZXJyaVsxM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRlcnJpdG9pcmUgPT0gIkhHIiwgdGVycmlbMTRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUZXJyaXRvaXJlID09ICJMQiIsIHRlcnJpWzE1XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVGVycml0b2lyZSA9PSAiTUMiLCB0ZXJyaVsxNl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRlcnJpdG9pcmUgPT0gIlNHIiwgdGVycmlbMTddLCBOQV9jaGFyYWN0ZXJfKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpKSkpKSkpKSkpKSkpKSkpCnRhYjQgPC0gdGFiNCAlPiUgIGRwbHlyOjpzZWxlY3QoMSxuY29sKHRhYjQpLCAzOihuY29sKHRhYjQpLTEpKQp0YWI0Wyhucm93KHRhYjQpKzEpLF0gPC0gYygiIiwgIlRPVEFMIiwgY29sU3Vtcyh0YWI0WzM6bmNvbCh0YWI0KV0pKQp0YWI0WywzOm5jb2wodGFiNCldIDwtIGxhcHBseSh0YWI0WywzOm5jb2wodGFiNCldLCBhcy5udW1lcmljKQoKCiMgSW1wb3J0YXRpb24gZHUgbm9tYnJlIGRlIHF1ZXN0aW9ubmFpcmVzIGF0dGVuZHUgZGVzIGZpY2hpZXJzIHByw6l2aXNpb25uZWxzCiMgMTYgLSBDaGFyZW50ZQpmaWxlIDwtICJHRFZfUGxhbm5pbmdfUHJldmlzaW9ubmVsX0VudHJldGllbnMueGxzeCIKcGF0aDIgPC0gIi9Vc2Vycy9FbGlzZWUvR0JfT3duQ2xvdWQvU1BGL0dEVi8yX1ByZXZpc2lvbm5lbHNfRW50cmV0aWVucy8iCnNoZWV0IDwtICIxNl9QcmV2IgphMSA8LSByZWFkX2V4Y2VsKHBhc3RlMChwYXRoMixmaWxlKSwgc2hlZXQsIHJhbmdlID0gIkE3OkExMiIpICMgbm9tcyB0ZXJyaXRvaXJlcwphMiA8LSByZWFkX2V4Y2VsKHBhc3RlMChwYXRoMixmaWxlKSwgc2hlZXQsIHJhbmdlID0gIko1MTpKNTYiKSAjIG5iIGVudHJldGllbnMgcmVzdGFudHMgdGjDqW9yaXF1ZW1lbnQKZGYgPC0gY2JpbmQoYTEsYTIpCgojIDE3IC0gQ2hhcmVudGUtTWFyaXRpbWUKc2hlZXQgPC0gIjE3X1ByZXYiCmExIDwtIHJlYWRfZXhjZWwocGFzdGUwKHBhdGgyLGZpbGUpLCBzaGVldCwgcmFuZ2UgPSAiQTc6QTExIikgIyBub21zIHRlcnJpdG9pcmVzCmEyIDwtIHJlYWRfZXhjZWwocGFzdGUwKHBhdGgyLGZpbGUpLCBzaGVldCwgcmFuZ2UgPSAiSjQ3Oko1MSIpICMgbmIgZW50cmV0aWVucyByZXN0YW50cyB0aMOpb3JpcXVlbWVudApkZiA8LSByYmluZChkZiwgY2JpbmQoYTEsYTIpKQoKIyAyMyAtIENTIFRzaWdhbmUgVURBRgpzaGVldCA8LSAiMjNfUHJldiIKYTEgPC0gcmVhZF9leGNlbChwYXN0ZTAocGF0aDIsZmlsZSksIHNoZWV0LCByYW5nZSA9ICJBNzpBOSIpICMgbm9tcyB0ZXJyaXRvaXJlcwphMiA8LSByZWFkX2V4Y2VsKHBhc3RlMChwYXRoMixmaWxlKSwgc2hlZXQsIHJhbmdlID0gIko0NzpKNDkiKSAjIG5iIGVudHJldGllbnMgcmVzdGFudHMgdGjDqW9yaXF1ZW1lbnQKZGYgPC0gcmJpbmQoZGYsIGNiaW5kKGExLGEyKSkKCiMgMzMgLSBBREFWCnNoZWV0IDwtICJBREFWX1ByZXYiCmExIDwtIHJlYWRfZXhjZWwocGFzdGUwKHBhdGgyLGZpbGUpLCBzaGVldCwgcmFuZ2UgPSAiQTEzOkExOSIpICMgbm9tcyB0ZXJyaXRvaXJlcwphMiA8LSByZWFkX2V4Y2VsKHBhc3RlMChwYXRoMixmaWxlKSwgc2hlZXQsIHJhbmdlID0gIko2MTpKNjciKSAjIG5iIGVudHJldGllbnMgcmVzdGFudHMgdGjDqW9yaXF1ZW1lbnQKZGYgPC0gcmJpbmQoZGYsIGNiaW5kKGExLGEyKSkKcm0oYTEsYTIpCgpkZlsobnJvdyhkZikgKyAxKSxdIDwtIGMoIlRPVEFMIiwgY29sU3VtcyhkZltuY29sKGRmKV0pKQpkZiRgUXVlc3Rpb25uYWlyZXMgcmVzdGFudHMgdGjDqW9yaXF1ZW1lbnRgIDwtIGFzLm51bWVyaWMoZGYkYFF1ZXN0aW9ubmFpcmVzIHJlc3RhbnRzIHRow6lvcmlxdWVtZW50YCkKCnRhYjQgPC0gY2JpbmQodGFiNCwgZGYpCnRhYjQkYFF1ZXN0aW9ubmFpcmVzIGF0dGVuZHVzYCA8LSBuYi5xdWVzdC5hcmVhbGlzZXIudGVycmkgLSB0YWI0JGBRdWVzdGlvbm5haXJlcyByZXN0YW50cyB0aMOpb3JpcXVlbWVudGAKdGFiNCA8LSB0YWI0WyxjKDEsKG5jb2wodGFiNCkgLSAyKSwgMzoobmNvbCh0YWI0KSAtIDMpLCBuY29sKHRhYjQpKV0KCiMgQ2FsY3VsIGRlcyBwb3VyY2VudGFnZXMKdGFiNCRgUG91cmNlbnRhZ2UgcsOpYWxpc8OpIHZzIGF0dGVuZHVgIDwtIGlmZWxzZSh0YWI0JFRPVEFMID49IHRhYjQkYFF1ZXN0aW9ubmFpcmVzIGF0dGVuZHVzYCwxMDAsCiAgcm91bmQodGFiNCRUT1RBTC90YWI0JGBRdWVzdGlvbm5haXJlcyBhdHRlbmR1c2AsMikqMTAwKQp0YWI0JGBQb3VyY2VudGFnZSByw6lhbGlzw6kgdnMgdG90YWxgIDwtIHJvdW5kKHRhYjQkVE9UQUwvbmIucXVlc3QuYXJlYWxpc2VyLnRlcnJpLDIpKjEwMAp0YWI0JGBQb3VyY2VudGFnZSBhdHRlbmR1IHZzIHRvdGFsYCA8LSByb3VuZCh0YWI0JGBRdWVzdGlvbm5haXJlcyBhdHRlbmR1c2AvbmIucXVlc3QuYXJlYWxpc2VyLnRlcnJpLDIpKjEwMAoKdGFiNCRUZXJyaXRvaXJlcyA8LSBmYWN0b3IodGFiNCRUZXJyaXRvaXJlcywgbGV2ZWxzID0gYyh0ZXJyaSwgIlRPVEFMIikpCnRhYjQkQXNzb2NpYXRpb24gPC0gYXMuY2hhcmFjdGVyKHRhYjQkQXNzb2NpYXRpb24pCnRhYjQkQXNzb2NpYXRpb25bMThdIDwtICIiCnRhYjQkQXNzb2NpYXRpb24gPC0gYXMuZmFjdG9yKHRhYjQkQXNzb2NpYXRpb24pCnRhYjQuYmlzIDwtIHRhYjRbLGMoMSwyLChuY29sKHRhYjQpLTQpOm5jb2wodGFiNCkpXQpgYGAKCmBgYHtyIFBsb3QgdGFiNC5iaXMsIGluY2x1ZGU9Rn0KdGFiNC5iaXMgJT4lIAogIGthYmxlKGNhcHRpb24gPSBwYXN0ZTAoIlRhYmxlIDMgOiBOb21icmUgZGUgcGVyc29ubmVzIGluY2x1c2VzIGRhbnMgbCfDqXR1ZGUgcGFyIGFzc29jaWF0aW9uIGV0IHRlcnJpdG9pcmVzIGV0IHBhciBzZXhlIGF1ICIsIGZvcm1hdChTeXMuRGF0ZSgpLCAiJWQvJW0vJVkiKSwgIlxuIEV0dWRlIHN1ciBsYSBzYW50w6kgZGVzIEdlbnMgZHUgdm95YWdlIGVuIE5vdXZlbGxlIEFxdWl0YWluZSIpLCBmb3JtYXQgPSAiaHRtbCIsIHBvc2l0aW9uID0gImNlbnRlciIsIGVzY2FwZSA9IEYsIGFsaWduID0gYygibCIsIHJlcCgiYyIsbmNvbCh0YWI0LmJpcykpKSkgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9ICJzdHJpcGVkIiwgZnVsbF93aWR0aCA9IEYsCiAgICAgICAgZm9udF9zaXplID0gMTIpICU+JQogIGNvbGxhcHNlX3Jvd3MoY29sdW1ucyA9IDEsIHZhbGlnbiA9ICJtaWRkbGUiKSAlPiUKICByb3dfc3BlYygxMSwgYm9sZCA9IFQpCmBgYAoKPGNlbnRlcj4KYGBge3IgUGxvdCBGaWd1cmUgNCA6IGJhcnBsb3QgcG91cmNlbnRhZ2UgcsOpYWxpc8OpIHNlbG9uIGxlcyB0ZXJyaXRvaXJlcywgaW5jbHVkZSA9IFQsIGRwaT00MDB9CmdncGxvdCh0YWI0KSArIHRoZW1lX21pbmltYWwoKSArCiAgZ2VvbV9iYXIoYWVzKHkgPSBjKHJlcCgxMDAsMTgpKSwgeCA9IFRlcnJpdG9pcmVzKSwgc3RhdD0iaWRlbnRpdHkiLCBmaWxsID0gImdyZXk5MCIpICsKICBnZW9tX2JhcihhZXMoeSA9IGBQb3VyY2VudGFnZSByw6lhbGlzw6kgdnMgYXR0ZW5kdWAsIHggPSBUZXJyaXRvaXJlcyksIHN0YXQ9ImlkZW50aXR5IiwgZmlsbCA9ICJtZWRpdW1zcHJpbmdncmVlbiIpICsKICBnZW9tX3RleHQoZGF0YSA9IHRhYjQsIGFlcyh4ID0gVGVycml0b2lyZXMsIHkgPSByZXAoMTAzLDE4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBwYXN0ZTAoYFF1ZXN0aW9ubmFpcmVzIGF0dGVuZHVzYCkpLCBzaXplID0gMy41LCBjb2xvciA9ICJibGFjayIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IGRvbGxhcl9mb3JtYXQoc3VmZml4ID0gIiUiLCBwcmVmaXggPSAiIikpICsKICAKICBsYWJzKHRpdGxlID0gcGFzdGUwKCJGaWd1cmUgNCA6IE5pdmVhdSBkZSByw6lhbGlzYXRpb24gZGVzIHF1ZXN0aW9ubmFpcmVzIChlbiAlKSBzZWxvbiBsZXMgdGVycml0b2lyZXMgYXUgIiwKICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChTeXMuRGF0ZSgpLCAiJWQvJW0vJVkiKSwgIlxuIEV0dWRlIHN1ciBsYSBzYW50w6kgZGVzIEdlbnMgZHUgdm95YWdlIGVuIE5vdXZlbGxlIEFxdWl0YWluZSIpKSArCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJncmV5NTAiLCBzaXplID0gMTAsIGhqdXN0ID0gMC41KSkgKwogIGxhYnMoeCA9ICJUZXJyaXRvaXJlcyIsIHkgPSAiUG91cmNlbnRhZ2UiKSAjKwogICNhbm5vdGF0ZSgidGV4dCIsIDgsIDk3LCBsYWJlbD0iTm9tYnJlIGRlIHF1ZXN0aW9ubmFpcmVzIMOgIHLDqWFsaXNlciIsIGNvbG9yID0gImJsYWNrIiwgaGp1c3QgPSAxLCBzaXplID0gNCkKYGBgCjxjZW50ZXI+CiAKCgojIFF1ZXN0aW9ubmFpcmVzIHRyYW5zbWlzIFZzIHF1ZXN0aW9ubmFpcmVzIGF0dGVuZHVzIHNlbG9uIGxlcyBhc3NvY2lhdGlvbnMKYGBge3IgVGFiNSA6IHRyYW5zbWlzIHZzIGF0dGVuZHVzIHBhciBhc3NvY2lhdGlvbiwgd2FybmluZz1GLCBtZXNzYWdlPUZ9CnRhYjUgPC0gdGFiNAp0YWI1IDwtIHRhYjVbLGMoMSwzOihuY29sKHRhYjQpLTMpKV0gCnRhYjUgPC0gdGFiNVsxOjE3LF0KdGFiNSA8LSB0YWI1ICU+JSBncm91cF9ieShBc3NvY2lhdGlvbikKCiMjIEFqb3V0ZXIgbWFudWVsbGVtZW50IGBTZW1haW5lIHhgIMOgIGNoYXF1ZSBub3V2ZWxsZSBzZW1haW5lCnRhYjUgPC0gd2l0aCh0YWI1LCBhZ2dyZWdhdGUoY2JpbmQoYFNlbWFpbmUgNDhgLCBgU2VtYWluZSA0OWAsIGBTZW1haW5lIDUwYCwgYFNlbWFpbmUgNTFgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBTZW1haW5lIDUyYCwgYFNlbWFpbmUgMWAsIGBTZW1haW5lIDJgLCBgU2VtYWluZSAzYCwgYFNlbWFpbmUgNGAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFNlbWFpbmUgNWAsIGBTZW1haW5lIDZgLCBgU2VtYWluZSA3YCwgYFNlbWFpbmUgOGAsIGBTZW1haW5lIDlgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBTZW1haW5lIDEwYCwgVE9UQUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFF1ZXN0aW9ubmFpcmVzIGF0dGVuZHVzYCksIGJ5PWxpc3QoQXNzb2NpYXRpb25zPUFzc29jaWF0aW9uKSwgRlVOPXN1bSkpCnRhYjVbKG5yb3codGFiNSkgKyAxKSxdIDwtIGFzLm51bWVyaWMoYygiMCIsIGNvbFN1bXModGFiNVsyOm5jb2wodGFiNSldKSkpCnRhYjUkQXNzb2NpYXRpb25zIDwtIGFzLmNoYXJhY3Rlcih0YWI1JEFzc29jaWF0aW9uKQp0YWI1JEFzc29jaWF0aW9uc1sxMV0gPC0gIlRPVEFMIgp0YWI1JEFzc29jaWF0aW9ucyA8LSBhcy5mYWN0b3IodGFiNSRBc3NvY2lhdGlvbnMpCnRhYjUgPC0gdGFiNSAlPiUgYXJyYW5nZShmYWN0b3IoQXNzb2NpYXRpb25zLCBsZXZlbHMgPSBjKGFzc28sIlRPVEFMIikpKSAjIGNsYXNzZW1lbnQKdGFiNSRBc3NvY2lhdGlvbnMgPC0gZmFjdG9yKHRhYjUkQXNzb2NpYXRpb25zLCBsZXZlbHMgPSBjKGFzc28sIlRPVEFMIikpCnRhYjUuc2Nyb2xsIDwtIHRhYjVbLC1uY29sKHRhYjUpXQogCiMgQ2FsY3VsIGRlcyBwb3VyY2VudGFnZXMKdGFiNSRgUG91cmNlbnRhZ2UgcsOpYWxpc8OpIHZzIGF0dGVuZHVgIDwtIGlmZWxzZSh0YWI1JFRPVEFMID49IHRhYjUkYFF1ZXN0aW9ubmFpcmVzIGF0dGVuZHVzYCwxMDAsCiAgcm91bmQodGFiNSRUT1RBTC90YWI1JGBRdWVzdGlvbm5haXJlcyBhdHRlbmR1c2AsMikqMTAwKQp0YWI1JGBQb3VyY2VudGFnZSByw6lhbGlzw6kgdnMgw6AgdHJhbnNtZXR0cmVgIDwtIHJvdW5kKHRhYjUkVE9UQUwvbmIucXVlc3QuYXJlYWxpc2VyLmFzc28sMikqMTAwCnRhYjUkYFBvdXJjZW50YWdlIGF0dGVuZHUgdnMgw6AgdHJhbnNtZXR0cmVgIDwtIHJvdW5kKHRhYjUkYFF1ZXN0aW9ubmFpcmVzIGF0dGVuZHVzYC9uYi5xdWVzdC5hcmVhbGlzZXIuYXNzbywyKSoxMDAKdGFiNSRgUXVlc3Rpb25uYWlyZXMgdHJhbnNtaXNgIDwtIHRhYjEkVE9UQUwKdGFiNSRgUXVlc3Rpb25uYWlyZXMgw6AgdHJhbnNtZXR0cmVgIDwtIG5iLnF1ZXN0LmFyZWFsaXNlci5hc3NvCnRhYjUuYmlzIDwtIHRhYjVbLGMoMSxuY29sKHRhYjUpLChuY29sKHRhYjUpLTUpLChuY29sKHRhYjUpLTEpLCAobmNvbCh0YWI1KS00KToobmNvbCh0YWI1KS0yKSldCmBgYAoKYGBge3IgUGxvdCB0YWI1LmJpcywgaW5jbHVkZSA9IFR9CmRmIDwtIHJlbmFtZSh0YWI1LmJpcywKICAgICAgICAgICAgIGDDoCB0cmFuc21ldHRyZWAgPSBgUXVlc3Rpb25uYWlyZXMgw6AgdHJhbnNtZXR0cmVgLAogICAgICAgICAgICAgYXR0ZW5kdXMgPSBgUXVlc3Rpb25uYWlyZXMgYXR0ZW5kdXNgLAogICAgICAgICAgICAgdHJhbnNtaXMgPSBgUXVlc3Rpb25uYWlyZXMgdHJhbnNtaXNgLAogICAgICAgICAgICAgYHLDqWFsaXPDqSB2cyBhdHRlbmR1YCA9IGBQb3VyY2VudGFnZSByw6lhbGlzw6kgdnMgYXR0ZW5kdWAsCiAgICAgICAgICAgICBgcsOpYWxpc8OpIHZzIMOgIHRyYW5zbWV0dHJlYCA9IGBQb3VyY2VudGFnZSByw6lhbGlzw6kgdnMgw6AgdHJhbnNtZXR0cmVgLAogICAgICAgICAgICAgYGF0dGVuZHUgdnMgw6AgdHJhbnNtZXR0cmVgID0gYFBvdXJjZW50YWdlIGF0dGVuZHUgdnMgw6AgdHJhbnNtZXR0cmVgKQpkZiRgcsOpYWxpc8OpIHZzIGF0dGVuZHVgIDwtIHN1YigiJCIsICIlIiwgYXMuY2hhcmFjdGVyKGRmJGByw6lhbGlzw6kgdnMgYXR0ZW5kdWApKQpkZiRgcsOpYWxpc8OpIHZzIMOgIHRyYW5zbWV0dHJlYCA8LSBzdWIoIiQiLCAiJSIsIGFzLmNoYXJhY3RlcihkZiRgcsOpYWxpc8OpIHZzIMOgIHRyYW5zbWV0dHJlYCkpICAKZGYkYGF0dGVuZHUgdnMgw6AgdHJhbnNtZXR0cmVgIDwtIHN1YigiJCIsICIlIiwgYXMuY2hhcmFjdGVyKGRmJGBhdHRlbmR1IHZzIMOgIHRyYW5zbWV0dHJlYCkpICAKCmRmICU+JQogIGthYmxlKGNhcHRpb24gPSBwYXN0ZTAoIlRhYmxlIDMgOiBRdWVzdGlvbm5haXJlcyB0cmFuc21pcyBldCBhdHRlbmR1cyBwYXIgYXNzb2NpYXRpb24gYXUgIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChTeXMuRGF0ZSgpLCAiJWQvJW0vJVkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJcbiAtIEV0dWRlIHN1ciBsYSBzYW50w6kgZGVzIEdlbnMgZHUgdm95YWdlIGVuIE5vdXZlbGxlIEFxdWl0YWluZSIpLAogICAgICAgIGZvcm1hdCA9ICJodG1sIiwgcG9zaXRpb24gPSAiY2VudGVyIiwgZXNjYXBlID0gRiwgYWxpZ24gPSBjKCJsIiwgcmVwKCJjIixuY29sKGRmKSkpKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJyZXNwb25zaXZlIiksCiAgICAgICAgICAgICAgICBmdWxsX3dpZHRoID0gRiwKICAgICAgICBmb250X3NpemUgPSAxMikgJT4lCiAgY29sbGFwc2Vfcm93cyhjb2x1bW5zID0gMSwgdmFsaWduID0gIm1pZGRsZSIpICU+JQogIHJvd19zcGVjKDExLCBib2xkID0gVCkgJT4lCiAgY29sdW1uX3NwZWMoYygzLDUsNiw3KSwgd2lkdGggPSAiOGVtIikgJT4lCiAgYWRkX2hlYWRlcl9hYm92ZShjKCIgIiA9IDEsICJOYiBkZSBxdWVzdGlvbm5haXJlcyIgPSAzLCAiUG91cmNlbnRhZ2VzIiA9IDMpKQogIApgYGAKU3VyIGxlcyAyMDMzIHF1ZXN0aW9ubmFpcmVzIG7DqWNlc3NhaXJlcyBwb3VyIGNldHRlIMOpdHVkZSwgYHIgbnJvdyhtZGYpYCBvbnQgw6l0w6kgY29sbGVjdMOpcyBldCB0cmFuc21pcyDDoCBjZSBqb3VyLCBjZSBxdWkgdmV1dCBkaXJlIHF1ZSBsZSAqKm5pdmVhdSBnbG9iYWwgZGUgcsOpYWxpc2F0aW9uIGF1IGByIGZvcm1hdChTeXMuRGF0ZSgpLCAiJWQvJW0vJVkiKWAgZXN0IGRlIGByIHJvdW5kKG5yb3cobWRmKS8yMDMzLDIpKjEwMGAlKiouICAgCgoKPGNlbnRlcj4KYGBge3IgUGxvdCBGaWd1cmUgNSA6IGJhcnBsb3QgcG91cmNlbnRhZ2UgcsOpYWxpc8OpIHNlbG9uIGxlcyBhYXNvY2lhdGlvbnMsIGluY2x1ZGUgPSBULCBkcGk9NDAwfQpnZ3Bsb3QodGFiNSkgKyB0aGVtZV9taW5pbWFsKCkgKwogIAogIGdlb21fYmFyKGFlcyh5ID0gYyhyZXAoMTAwLDExKSksIHggPSBBc3NvY2lhdGlvbnMpLCBzdGF0PSJpZGVudGl0eSIsIGZpbGwgPSAiZ3JleTgwIikgKwogIGdlb21fYmFyKGFlcyh5ID0gYFBvdXJjZW50YWdlIHLDqWFsaXPDqSB2cyBhdHRlbmR1YCwgeCA9IEFzc29jaWF0aW9ucyksIHN0YXQ9ImlkZW50aXR5IiwKICAgICAgICAgICBmaWxsID0gIm1lZGl1bXNwcmluZ2dyZWVuIikgKwogIAogIGdlb21fdGV4dChkYXRhID0gdGFiNSwgYWVzKHggPSBBc3NvY2lhdGlvbnMsIHkgPSByZXAoMTAzLDExKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBwYXN0ZTAoYFF1ZXN0aW9ubmFpcmVzIGF0dGVuZHVzYCkpLCBzaXplID0gMy41LCBjb2xvciA9ICJkZWVwc2t5Ymx1ZSIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IGRvbGxhcl9mb3JtYXQoc3VmZml4ID0gIiUiLCBwcmVmaXggPSAiIikpICsKICAKICBsYWJzKHRpdGxlID0gcGFzdGUwKCJGaWd1cmUgNSA6IE5pdmVhdSBkZSByw6lhbGlzYXRpb24gZGVzIHF1ZXN0aW9ubmFpcmVzIChlbiAlKSBzZWxvbiBsZXMgYXNzb2NpYXRpb25zIGF1ICIsCiAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoU3lzLkRhdGUoKSwgIiVkLyVtLyVZIiksICJcbiBFdHVkZSBzdXIgbGEgc2FudMOpIGRlcyBHZW5zIGR1IHZveWFnZSBlbiBOb3V2ZWxsZSBBcXVpdGFpbmUiKSkgKwogIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiR1JFWTUwIiwgc2l6ZSA9IDEwLCBoanVzdCA9IDAuNSkpICsKICBsYWJzKHggPSAiQXNzb2NpYXRpb25zIiwgeSA9ICJQb3VyY2VudGFnZSIsIGNvbG9yID0gInJlZCIpICsKICB0aGVtZShheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoY29sb3IgPSAiZ3JleTUwIikpICsKICB0aGVtZShheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoY29sb3IgPSAiZ3JleTUwIikpICsKICBhbm5vdGF0ZSgidGV4dCIsIDgsIDExMCwgbGFiZWw9Ik5vbWJyZSBkZSBxdWVzdGlvbm5haXJlcyBhdHRlbmR1cyIsIGNvbG9yID0gImRlZXBza3libHVlIiwgaGp1c3QgPSAxLCBzaXplID0gNCkKYGBgCgo8Y2VudGVyPgpgYGB7ciB0YWI1LnNjcm9sbCwgaW5jbHVkZT1UfQp0YWI1LnNjcm9sbCAlPiUKICBrYWJsZShjYXB0aW9uID0gcGFzdGUwKCJUYWJsZSA0IDogUXVlc3Rpb25uYWlyZXMgdHJhbnNtaXMgcGFyIHNlbWFpbmUgZXQgcGFyIGFzc29jaWF0aW9uIGF1ICIsCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoU3lzLkRhdGUoKSwgIiVkLyVtLyVZIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAiXG4gLSBFdHVkZSBzdXIgbGEgc2FudMOpIGRlcyBHZW5zIGR1IHZveWFnZSBlbiBOb3V2ZWxsZSBBcXVpdGFpbmUiKSwKICAgICAgICBmb3JtYXQgPSAiaHRtbCIsIHBvc2l0aW9uID0gImNlbnRlciIsIGVzY2FwZSA9IEYsIGFsaWduID0gYygibCIsIHJlcCgiYyIsbmNvbCh0YWI1LnNjcm9sbCkpKSkgJT4lCiAga2FibGVfc3R5bGluZyhib290c3RyYXBfb3B0aW9ucyA9IGMoInN0cmlwZWQiLCAicmVzcG9uc2l2ZSIpLAogICAgICAgICAgICAgICAgZnVsbF93aWR0aCA9IEYsIGZvbnRfc2l6ZSA9IDEyKSAlPiUKICBjb2xsYXBzZV9yb3dzKGNvbHVtbnMgPSAxLCB2YWxpZ24gPSAibWlkZGxlIikgJT4lCiAgcm93X3NwZWMoMTEsIGJvbGQgPSBUKSAlPiUKICBzY3JvbGxfYm94KHdpZHRoID0gIjEwMCUiLCBoZWlnaHQgPSAiNTEwcHgiKQpgYGAKCiMgRWZmZWN0aWZzIGFjdHVhbGlzw6lzIHJlY2Vuc2VtZW50LCB0aXJhZ2UgYXUgc29ydCBldCBwb3B1bGF0aW9uIGNpYmxlCmBgYHtyIHRhYjYgc3VpdmkgIGR1IG5vbWJyZSBkZSBwZXJzb25uZXMgY2libGVzLCB3YXJuaW5nPVQsIG1lc3NhZ2U9Rn0KIyBJbXBvcnRhdGlvbiBkZXMgY2hpZmZyZXMgZHUgZmljaGllciB0aXJhZ2VzIGFsw6lhdG9pcmVzCnRhYjYgPC0gZGF0YS5mcmFtZShyX2luaXRpYWw9aW50ZWdlcigpLCByX2FjdHVhbGlzZT1pbnRlZ2VyKCksCiAgICAgICAgICAgICAgICAgbXRhc19pbml0aWFsID0gaW50ZWdlcigpLCBtdGFzX2FjdHVhbGlzZSA9IGludGVnZXIoKSwKICAgICAgICAgICAgICAgICBwY19pbml0aWFsZT1pbnRlZ2VyKCksIHBjX2FjdHVhbGlzZWU9aW50ZWdlcigpKQpwYXRoMyA8LSAiL1VzZXJzL0VsaXNlZS9HQl9Pd25DbG91ZC9TUEYvR0RWLzFfVEFTLyIKCiMgQUFJU0MKZmlsZSA8LSAiR0RWX1RpcmFnZXNfQWxlYXRvaXJlc19BQUlTQy54bHN4IgpzaGVldCA8LSAiVEEgQUFJU0MiCmExIDwtIHJlYWRfZXhjZWwocGFzdGUwKHBhdGgzLGZpbGUpLCBzaGVldCwgcmFuZ2UgPSAiSDE0Ok0xNCIsIGNvbF9uYW1lcyA9IEYpICMgdsOpcmlmaWVyCm5hbWVzKGExKSA8LSBjb2xuYW1lcyh0YWI2KQp0YWI2IDwtIHJiaW5kKHRhYjYsYTEpCgojIEFMUVIKZmlsZSA8LSAiR0RWX1RpcmFnZXNfQWxlYXRvaXJlc19BTFFSLnhsc3giCnNoZWV0IDwtICJUQSBBTFFSIgphMSA8LSByZWFkX2V4Y2VsKHBhc3RlMChwYXRoMyxmaWxlKSwgc2hlZXQsIHJhbmdlID0gIkgxMzg6TTEzOCIsIGNvbF9uYW1lcyA9IEYpICMgdsOpcmlmaWVyCm5hbWVzKGExKSA8LSBjb2xuYW1lcyh0YWI2KQp0YWI2IDwtIHJiaW5kKHRhYjYsYTEpCgojIENoZW1pbiBkdSBow6lyaXNzb24KZmlsZSA8LSAiR0RWX1RpcmFnZXNfQWxlYXRvaXJlc19DaGVtaW4tSGVyaXNzb24ueGxzeCIKc2hlZXQgPC0gIlRBIENoZW1pbiBkdSBoZXJpc3NvbiIKYTEgPC0gcmVhZF9leGNlbChwYXN0ZTAocGF0aDMsZmlsZSksIHNoZWV0LCByYW5nZSA9ICJIMTk0Ok0xOTQiLCBjb2xfbmFtZXMgPSBGKSAjIHbDqXJpZmllcgpzaGVldCA8LSAiVEEgQ2hlbWluIGR1IGhlcmlzc29uICgyKSIKYTIgPC0gcmVhZF9leGNlbChwYXN0ZTAocGF0aDMsZmlsZSksIHNoZWV0LCByYW5nZSA9ICJINDI6TTQyIiwgY29sX25hbWVzID0gRikgIyB2w6lyaWZpZXIKYTMgPC0gcmJpbmQoYTEsYTIpCmEzW25yb3coYTMpKzEsXSA8LSBhcy5udW1lcmljKGNvbFN1bXMoYTMpKQphMyA8LSBhM1stYygxOjIpLF0KbmFtZXMoYTMpIDwtIGNvbG5hbWVzKHRhYjYpCnRhYjYgPC0gcmJpbmQodGFiNixhMykKcm0oYTMsYTIpCgojIENTIExlcyBBbGxpZXJzCmZpbGUgPC0gIkdEVl9UaXJhZ2VzX0FsZWF0b2lyZXNfTGVzQWxsaWVycy54bHN4IgpzaGVldCA8LSAiVEEgTGVzIEFsbGllcnMiCmExIDwtIHJlYWRfZXhjZWwocGFzdGUwKHBhdGgzLGZpbGUpLCBzaGVldCwgcmFuZ2UgPSAiSDExMTpNMTExIiwgY29sX25hbWVzID0gRikgIyB2w6lyaWZpZXIKbmFtZXMoYTEpIDwtIGNvbG5hbWVzKHRhYjYpCnRhYjYgPC0gcmJpbmQodGFiNixhMSkKCiMgQUFQSVEKZmlsZSA8LSAiR0RWX1RpcmFnZXNfQWxlYXRvaXJlc19BQVBJUS54bHN4IgpzaGVldCA8LSAiVEEgQUFQSVEiCmExIDwtIHJlYWRfZXhjZWwocGFzdGUwKHBhdGgzLGZpbGUpLCBzaGVldCwgcmFuZ2UgPSAiSDE0Ok0xNCIsIGNvbF9uYW1lcyA9IEYpICMgdsOpcmlmaWVyCm5hbWVzKGExKSA8LSBjb2xuYW1lcyh0YWI2KQp0YWI2IDwtIHJiaW5kKHRhYjYsYTEpCgojIENTQyBSb3lhbgpmaWxlIDwtICJHRFZfVGlyYWdlc19BbGVhdG9pcmVzX0NTQy1Sb3lhbi54bHN4IgpzaGVldCA8LSAiVEEgQ1NDIFJveWFuIgphMSA8LSByZWFkX2V4Y2VsKHBhc3RlMChwYXRoMyxmaWxlKSwgc2hlZXQsIHJhbmdlID0gIkgzMTpNMzEiLCBjb2xfbmFtZXMgPSBGKSAjIHbDqXJpZmllcgpuYW1lcyhhMSkgPC0gY29sbmFtZXModGFiNikKdGFiNiA8LSByYmluZCh0YWI2LGExKQoKIyBDQUMgU3VyZ8OocmVzCmZpbGUgPC0gIkdEVl9UaXJhZ2VzX0FsZWF0b2lyZXNfQ0FDLVN1cmdlcmVzLnhsc3giCnNoZWV0IDwtICJUQSBDQUMgU3VyZ2VyZXMiCmExIDwtIHJlYWRfZXhjZWwocGFzdGUwKHBhdGgzLGZpbGUpLCBzaGVldCwgcmFuZ2UgPSAiSDMzOk0zMyIsIGNvbF9uYW1lcyA9IEYpICMgdsOpcmlmaWVyCm5hbWVzKGExKSA8LSBjb2xuYW1lcyh0YWI2KQp0YWI2IDwtIHJiaW5kKHRhYjYsYTEpCgojIExhIG1pc3Npb24gRnJhdGVybml0w6kKZmlsZSA8LSAiR0RWX1RpcmFnZXNfQWxlYXRvaXJlc19NaXNzaW9uLUZyYXRlcm5pdGUueGxzeCIKc2hlZXQgPC0gIlRBIE1pc3Npb24gRnJhdGVybml0ZSIKYTEgPC0gcmVhZF9leGNlbChwYXN0ZTAocGF0aDMsZmlsZSksIHNoZWV0LCByYW5nZSA9ICJIMTY6TTE2IiwgY29sX25hbWVzID0gRikgIyB2w6lyaWZpZXIKbmFtZXMoYTEpIDwtIGNvbG5hbWVzKHRhYjYpCnRhYjYgPC0gcmJpbmQodGFiNixhMSkKCiMgQ1MgVHNpZ2FuZXMgVURBRgpmaWxlIDwtICJHRFZfVGlyYWdlc19BbGVhdG9pcmVzX0NTLVRzaWdhbmVzLVVEQUYueGxzeCIKc2hlZXQgPC0gIlRBIENTIFRzaWdhbmVzIFVEQUYiCmExIDwtIHJlYWRfZXhjZWwocGFzdGUwKHBhdGgzLGZpbGUpLCBzaGVldCwgcmFuZ2UgPSAiSDYwOk02MCIsIGNvbF9uYW1lcyA9IEYpICMgdsOpcmlmaWVyCm5hbWVzKGExKSA8LSBjb2xuYW1lcyh0YWI2KQp0YWI2IDwtIHJiaW5kKHRhYjYsYTEpCgojIEFEQVYKZmlsZSA8LSAiR0RWX1RpcmFnZXNfQWxlYXRvaXJlc19BREFWMzMueGxzeCIKc2hlZXQgPC0gIlRBIEFEQVYgMzMiCmExIDwtIGFzLnZlY3RvcihyZWFkX2V4Y2VsKHBhc3RlMChwYXRoMyxmaWxlKSwgc2hlZXQsIHJhbmdlID0gIkgxMDk6TTEwOSIsIGNvbF9uYW1lcyA9IEYpKSAjIG5vbXMgdmFyaWFibGVzCmNvbG5hbWVzIChhMSkgPC0gY29sbmFtZXModGFiNikKdGFiNiA8LSByYmluZCh0YWI2LGExKQpybShhMSkKCnRhYjYkQXNzb2NpYXRpb25zIDwtIGFzc28KdGFiNiA8LSB0YWI2WyxjKDcsIDE6NildCnRhYjZbKG5yb3codGFiNikgKyAxKSxdIDwtIGFzLm51bWVyaWMoYygiMCIsIGNvbFN1bXModGFiNlsyOm5jb2wodGFiNildKSkpCnRhYjYkQXNzb2NpYXRpb25zW25yb3codGFiNildIDwtICJUT1RBTCIKYGBgCgpgYGB7ciBwbG90IHRhYjYsIGluY2x1ZGU9VH0KdGFiNiAlPiUgCiAga2FibGUoY2FwdGlvbiA9IHBhc3RlMCgiVGFibGUgNSA6IGVmZmVjdGlmcyBtw6luYWdlcyBldCBwZXJzb25uZXMgdGlyYWdlcyBhdSBzb3J0ICIsIGZvcm1hdChTeXMuRGF0ZSgpLCAiJWQvJW0vJVkiKSwgIlxuIEV0dWRlIHN1ciBsYSBzYW50w6kgZGVzIEdlbnMgZHUgdm95YWdlIGVuIE5vdXZlbGxlIEFxdWl0YWluZSIpLCBmb3JtYXQgPSAiaHRtbCIsIHBvc2l0aW9uID0gImNlbnRlciIsIGNvbC5uYW1lcyA9IGMoIkFzc29jaWF0aW9ucyIsIHJlcChjKCJJbml0aWFsIiwiQWN0dWFsaXPDqSIpLDMpKSwgZXNjYXBlID0gRiwgYWxpZ24gPSBjKCJsIiwgcmVwKCJjIixuY29sKHRhYjYpKSkpICU+JQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSAic3RyaXBlZCIsIGZ1bGxfd2lkdGggPSBGLAogICAgICAgIGZvbnRfc2l6ZSA9IDEyKSAlPiUKICBjb2xsYXBzZV9yb3dzKGNvbHVtbnMgPSAxLCB2YWxpZ24gPSAibWlkZGxlIikgJT4lCiAgcm93X3NwZWMoMTEsIGJvbGQgPSBUKSAlPiUKICBhZGRfaGVhZGVyX2Fib3ZlKGMoIiAiID0gMSwgIk3DqW5hZ2VzIHJlY2Vuc8OpcyIgPSAyLCAiTcOpbmFnZXMgw6AgdGlyZXIgYXUgc29ydCIgPSAyLAogICAgICAgICAgICAgICAgICAgICAiUGVyc29ubmVzIGNpYmxlIiA9IDIpKQpgYGAKCiMgUmVmdXMKTGVzIGFzc29jaWF0aW9ucyBvbnQgcsOpcG9ydMOpIHF1ZSBgciBucm93KHRhYjcpYCBwZXJzb25uZXMgbidvbnQgcGFzIHLDqXBvbmR1IG91IHLDqXBvbmR1IHBhcnRpZWxsZW1lbnQgYXV4IHF1ZXN0aW9ubmFpcmVzLCBjZSBxdWkgcmVwcsOpc2VudGUgdW4gdGF1eCBkZSBub24tcGFydGljaXBhdGlvbiBkZSBgciByb3VuZChucm93KHRhYjcpL25yb3cobWRmKSoxMDAsMSlgJS4KCmBgYHtyfQpwYXRoNCA8LSAiL1VzZXJzL0VsaXNlZS9HQl9Pd25DbG91ZC9TUEYvR0RWLzJfU3VpdmlfRW50cmV0aWVucy8iCnRhYjcgPC0gZGF0YS5mcmFtZShDb2RlX0xkVj1jaGFyYWN0ZXIoKSwKICAgICAgICAgICAgICAgICAgIFNleGU9ZmFjdG9yKCksCiAgICAgICAgICAgICAgICAgICBBZ2U9Y2hhcmFjdGVyKCksCiAgICAgICAgICAgICAgICAgICBNb3RpZnM9Y2hhcmFjdGVyKCkpCgoKIyBBQUlTQwpmaWxlIDwtICJHRFZfU3VpdmlfRW50cmV0aWVuc19BQUlTQy54bHN4IgpzaGVldCA8LSAiU3VpdmkgQUFJU0MiCmExIDwtIHJlYWRfZXhjZWwocGFzdGUwKHBhdGg0LGZpbGUpLCBzaGVldCwgcmFuZ2UgPSAiRDU6SzEwMDAiLCBjb2xfbmFtZXMgPSBUKQphMSA8LSBhMVssYygxLDY6OCldCmExIDwtIGExWyFpcy5uYShhMSRTZXhlKSxdCm5hbWVzKGExKSA8LSBjb2xuYW1lcyh0YWI3KQp0YWI3IDwtIHJiaW5kKHRhYjcsYTEpCgojIEFMUVIKZmlsZSA8LSAiR0RWX1N1aXZpX0VudHJldGllbnNfQUxRUi54bHN4IgpzaGVldCA8LSAiU3VpdmkgQUxRUiIKYTEgPC0gcmVhZF9leGNlbChwYXN0ZTAocGF0aDQsZmlsZSksIHNoZWV0LCByYW5nZSA9ICJENjpLMTAwMCIsIGNvbF9uYW1lcyA9IFQpCmExIDwtIGExWyxjKDEsNjo4KV0KYTEgPC0gYTFbIWlzLm5hKGExJFNleGUpLF0KbmFtZXMoYTEpIDwtIGNvbG5hbWVzKHRhYjcpCnRhYjcgPC0gcmJpbmQodGFiNyxhMSkKCiMgQ2hlbWluIGR1IGjDqXJpc3NvbgpmaWxlIDwtICJHRFZfU3VpdmlfRW50cmV0aWVuc19DaGVtaW4gZHUgaMOpcmlzc29uLnhsc3giCnNoZWV0IDwtICJTdWl2aSBDaGVtaW4gZHUgaMOpcmlzc29uIgphMSA8LSByZWFkX2V4Y2VsKHBhc3RlMChwYXRoNCxmaWxlKSwgc2hlZXQsIHJhbmdlID0gIkQ2OksxMDAwIiwgY29sX25hbWVzID0gVCkKYTEgPC0gYTFbLGMoMSw2OjgpXQphMSA8LSBhMVshaXMubmEoYTEkU2V4ZSksXQpuYW1lcyhhMSkgPC0gY29sbmFtZXModGFiNykKdGFiNyA8LSByYmluZCh0YWI3LGExKQoKIyBDUyBMZXMgQWxsaWVycwpmaWxlIDwtICJHRFZfU3VpdmlfRW50cmV0aWVuc19DUyBMZXMgQWxsaWVycy54bHN4IgpzaGVldCA8LSAiU3VpdmkgQ1MgTGVzIEFsbGllcnMiCmExIDwtIHJlYWRfZXhjZWwocGFzdGUwKHBhdGg0LGZpbGUpLCBzaGVldCwgcmFuZ2UgPSAiRDU6SzEwMDAiLCBjb2xfbmFtZXMgPSBUKQphMSA8LSBhMVssYygxLDY6OCldCmExIDwtIGExWyFpcy5uYShhMSRTZXhlKSxdCm5hbWVzKGExKSA8LSBjb2xuYW1lcyh0YWI3KQp0YWI3IDwtIHJiaW5kKHRhYjcsYTEpCgojIEFBUElRCmZpbGUgPC0gIkdEVl9TdWl2aV9FbnRyZXRpZW5zX0FBUElRLnhsc3giCnNoZWV0IDwtICJTdWl2aSBBQVBJUSIKYTEgPC0gcmVhZF9leGNlbChwYXN0ZTAocGF0aDQsZmlsZSksIHNoZWV0LCByYW5nZSA9ICJENTpLMTAwMCIsIGNvbF9uYW1lcyA9IFQpCmExIDwtIGExWyxjKDEsNjo4KV0KYTEgPC0gYTFbIWlzLm5hKGExJFNleGUpLF0KbmFtZXMoYTEpIDwtIGNvbG5hbWVzKHRhYjcpCnRhYjcgPC0gcmJpbmQodGFiNyxhMSkKCiMgQ1NDIFJveWFuCmZpbGUgPC0gIkdEVl9TdWl2aV9FbnRyZXRpZW5zX0NTQyBSb3lhbi54bHN4IgpzaGVldCA8LSAiU3VpdmkgQ1NDIFJveWFuIgphMSA8LSByZWFkX2V4Y2VsKHBhc3RlMChwYXRoNCxmaWxlKSwgc2hlZXQsIHJhbmdlID0gIkQ1OksxMDAwIiwgY29sX25hbWVzID0gVCkKYTEgPC0gYTFbLGMoMSw2OjgpXQphMSA8LSBhMVshaXMubmEoYTEkU2V4ZSksXQpuYW1lcyhhMSkgPC0gY29sbmFtZXModGFiNykKdGFiNyA8LSByYmluZCh0YWI3LGExKQoKIyBDQUMgU3VyZ8OocmVzCmZpbGUgPC0gIkdEVl9TdWl2aV9FbnRyZXRpZW5zX0NBQyBTdXJnZXJlcy54bHN4IgpzaGVldCA8LSAiU3VpdmkgQ0FDIFN1cmdlcmVzIgphMSA8LSByZWFkX2V4Y2VsKHBhc3RlMChwYXRoNCxmaWxlKSwgc2hlZXQsIHJhbmdlID0gIkQ1OksxMDAwIiwgY29sX25hbWVzID0gVCkKYTEgPC0gYTFbLGMoMSw2OjgpXQphMSA8LSBhMVshaXMubmEoYTEkU2V4ZSksXQpuYW1lcyhhMSkgPC0gY29sbmFtZXModGFiNykKdGFiNyA8LSByYmluZCh0YWI3LGExKQoKIyBMYSBtaXNzaW9uIEZyYXRlcm5pdMOpCmZpbGUgPC0gIkdEVl9TdWl2aV9FbnRyZXRpZW5zX01pc3Npb24tRnJhdGVybml0ZS54bHN4IgpzaGVldCA8LSAiU3VpdmkgTWlzc2lvbiBGcmF0ZXJuaXRlIgphMSA8LSByZWFkX2V4Y2VsKHBhc3RlMChwYXRoNCxmaWxlKSwgc2hlZXQsIHJhbmdlID0gIkQ1OksxMDAwIiwgY29sX25hbWVzID0gVCkKYTEgPC0gYTFbLGMoMSw2OjgpXQphMSA8LSBhMVshaXMubmEoYTEkU2V4ZSksXQpuYW1lcyhhMSkgPC0gY29sbmFtZXModGFiNykKdGFiNyA8LSByYmluZCh0YWI3LGExKQoKIyBDUyBUc2lnYW5lcyBVREFGCmZpbGUgPC0gIkdEVl9TdWl2aV9FbnRyZXRpZW5zX0NTIFRzaWdhbmUgVURBRi54bHN4IgpzaGVldCA8LSAiU3VpdmkgQ1MgVHNpZ2FuZSBVREFGIgphMSA8LSByZWFkX2V4Y2VsKHBhc3RlMChwYXRoNCxmaWxlKSwgc2hlZXQsIHJhbmdlID0gIkQ1OksxMDAwIiwgY29sX25hbWVzID0gVCkKYTEgPC0gYTFbLGMoMSw2OjgpXQphMSA8LSBhMVshaXMubmEoYTEkU2V4ZSksXQpuYW1lcyhhMSkgPC0gY29sbmFtZXModGFiNykKdGFiNyA8LSByYmluZCh0YWI3LGExKQoKIyBBREFWCmZpbGUgPC0gIkdEVl9TdWl2aV9FbnRyZXRpZW5zX0FEQVYueGxzeCIKc2hlZXQgPC0gIlN1aXZpIEFEQVYiCmExIDwtIHJlYWRfZXhjZWwocGFzdGUwKHBhdGg0LGZpbGUpLCBzaGVldCwgcmFuZ2UgPSAiRDU6SzEwMDAiLCBjb2xfbmFtZXMgPSBUKQphMSA8LSBhMVssYygxLDY6OCldCmExIDwtIGExWyFpcy5uYShhMSRTZXhlKSxdCm5hbWVzKGExKSA8LSBjb2xuYW1lcyh0YWI3KQp0YWI3IDwtIHJiaW5kKHRhYjcsYTEpCnJtKGExKQp0YWI3IDwtIHRhYjcgJT4lIG11dGF0ZShBc3NvY2lhdGlvbnMgPSBpZmVsc2UoZ3JlcGwoIkFDIiwgdGFiNyRDb2RlX0xkViksIGFzc29bMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGdyZXBsKCJRUiIsIHRhYjckQ29kZV9MZFYpLCBhc3NvWzJdLAogICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiSEUiLCB0YWI3JENvZGVfTGRWKSwgYXNzb1szXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZ3JlcGwoIkFMIiwgdGFiNyRDb2RlX0xkViksIGFzc29bNF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGdyZXBsKCJBQSIsIHRhYjckQ29kZV9MZFYpLCBhc3NvWzVdLAogICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiUlkiLCB0YWI3JENvZGVfTGRWKSwgYXNzb1s2XSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZ3JlcGwoIlNVIiwgdGFiNyRDb2RlX0xkViksIGFzc29bN10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGdyZXBsKCJGUiIsIHRhYjckQ29kZV9MZFYpLCBhc3NvWzhdLAogICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShncmVwbCgiVUQiLCB0YWI3JENvZGVfTGRWKSwgYXNzb1s5XSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZ3JlcGwoIkFEIiwgdGFiNyRDb2RlX0xkViksIGFzc29bMTBdLCBOQV9jaGFyYWN0ZXJfKSkpKSkpKSkpKSkgJT4lIGRwbHlyOjpzZWxlY3QoQXNzb2NpYXRpb25zLCBDb2RlX0xkViwgU2V4ZSwgQWdlLCBNb3RpZnMpCmBgYAoKIyBEb25uw6llcyBNYW5xdWFudGVzCiMjIExpZXV4IGRlIHZpZQpgYGB7cn0KIyBDaGFyZ2VtZW50IGRlcyBkb25uw6llcwpkZl9sZHYgPC0gcmVhZF9kZWxpbSgiZGF0YS9HRFZfZXhwb3J0X2xkdi5jc3YiLCAiOyIsIGVzY2FwZV9kb3VibGUgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9jYWxlKGRhdGVfbmFtZXMgPSAiZnIiLCBkYXRlX2Zvcm1hdCA9ICIlZCVtJVkiLCBkZWNpbWFsX21hcmsgPSAiLCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cGluZ19tYXJrID0gIjsiKSwKICAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9ICIjIiwgdHJpbV93cyA9IFRSVUUpCgojIFN1cHByZXNzaW9uIGRlcyBxdWVzdGlvbm5haXJlcyBsaWV1IGRlIHZpZSB2aWRlcwpkZl9sZHYgPC0gZGZfbGR2W2FwcGx5KGRmX2xkdlssLWMoMSwyLDc5OjgyKV0sIDEsIGZ1bmN0aW9uKHkpICFhbGwoaXMubmEoeSkpKSxdCgojIFPDqWxlY3Rpb24gZGVzIHZhcmlhYmxlcyBzdWl2aWVzIHBvdXIgbGVzIGRvbm7DqWVzIG1hbnF1YW50ZXMKdmFyc19sZHYgPC0gYygiY29kZV9saWV1ZGV2aWUiLCJlMDEiLCJlMDMiLCJlMDZfMSIsImUwOCIsImUwOSIsImUxMCIsImUxNCIsImUxNSIsImUxNiIsImUxNyIsImUxOCIsImUxOSIsImUyMCIsImUyMSIsCiAgICAgICAgICAiZTIzIiwiZTI0IiwiZTI1IiwiZTI2IiwiZTI3IiwiZTI5IiwiZTMwIiwiZTMxIiwiZTMyIikKZGZfbGR2X25hIDwtIGRmX2xkdlssdmFyc19sZHZdCgojIFbDqXJpZmljYXRpb24gZGVzIGRvdWJsb25zIGRlIGxhIHZhcmlhYmxlIGNvZGUgbGlldSBkZSB2aWUKZGZfbGR2X25hMlt3aGljaChkdXBsaWNhdGVkKGRmX2xkdl9uYTIkY29kZV9saWV1ZGV2aWUpKSxjKCJjb2RlX2xpZXVkZXZpZSIpXQoKIyBEw6lkb3VibG9ubmVtZW50IGR1IGRhdGEgZnJhbWUKZGZfbGR2X25hMiA8LSBkaXN0aW5jdChkZl9sZHZfbmEyKQoKIyBDb25zdHJ1Y3Rpb24gZHUgdGFibGVhdSBkZXMgZG9ubsOpZXMgbWFucXVhbnRlcwp0YWJfbmFfbGR2MiA8LSBkYXRhLmZyYW1lKG5iX25hID0gc29ydChzYXBwbHkoZGZfbGR2X25hMiwgZnVuY3Rpb24oeCkgeyBzdW0oaXMubmEoeCkpIH0pLCBkZWNyZWFzaW5nID0gVFJVRSkpCnRhYl9uYV9sZHYyJHZhcnNfbmEgPC0gcm93bmFtZXModGFiX25hX2xkdjIpIDsgdGFiX25hX2xkdjIgPC0gdGFiX25hX2xkdjJbLGMoMiwxKV0Kcm93bmFtZXModGFiX25hX2xkdjIpIDwtIDE6bnJvdyh0YWJfbmFfbGR2MikKcm91bmQoc29ydChzYXBwbHkoZGZfbGR2X25hMiwgZnVuY3Rpb24oeCkgeyBzdW0oaXMubmEoeCkpIH0pLCBkZWNyZWFzaW5nID0gVFJVRSkvbnJvdyhkZl9sZHZfbmEyKSoxMDAsMykKCiMgUGxvdCBkb25uw6llcyBtYW5xdWFudGVzIHF1ZXN0aW9ubmFpcmVzIGxpZXV4IGRlIHZpZQpnZ3Bsb3QodGFiX25hX2xkdjIpICsgdGhlbWVfYncoKSArIHRoZW1lKHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2JsYW5rKCksIHBhbmVsLmJvcmRlciA9IGVsZW1lbnRfYmxhbmsoKSkgKwogIGNvb3JkX2ZsaXAoKSArCiAgZ2VvbV9iYXIoYWVzKHkgPSBuYl9uYSwgeCA9IHJlb3JkZXIodmFyc19uYSwgLW5iX25hKSksIHN0YXQ9ImlkZW50aXR5IiwgZmlsbCA9ICJncmV5ODAiKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IDA6bWF4KHRhYl9uYV9sZHYyJG5iX25hKSkKYGBgCgoKCgoKCmBgYHtyIGVucmVnaXN0cmVtZW50IGRlcyB0YWJsZXMgZW4gdGFudCBxdW9iamV0cyBSLCBldmFsPVR9CiMgRW5yZWdpc3RyZW1lbnQgZW4gdGFudCBxdeKAmW9iamV0cyBSIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRwdXQodGFiMSwgICAgIGZpbGUgPSBwYXN0ZTAocGF0aCwgIndvcmtzcGFjZS8iLCAidGFiMSIsIi5SIikpCmRwdXQodGFiMiwgICAgIGZpbGUgPSBwYXN0ZTAocGF0aCwgIndvcmtzcGFjZS8iLCAidGFiMiIsIi5SIikpCmRwdXQodGFiMywgICAgIGZpbGUgPSBwYXN0ZTAocGF0aCwgIndvcmtzcGFjZS8iLCAidGFiMyIsIi5SIikpCmRwdXQodGFiNCwgICAgIGZpbGUgPSBwYXN0ZTAocGF0aCwgIndvcmtzcGFjZS8iLCAidGFiNCIsIi5SIikpCmRwdXQodGFiNC5iaXMsIGZpbGUgPSBwYXN0ZTAocGF0aCwgIndvcmtzcGFjZS8iLCAidGFiNC5iaXMiLCIuUiIpKQpkcHV0KHRhYjUsICAgICBmaWxlID0gcGFzdGUwKHBhdGgsICJ3b3Jrc3BhY2UvIiwgInRhYjUiLCIuUiIpKQpkcHV0KHRhYjUuYmlzLCBmaWxlID0gcGFzdGUwKHBhdGgsICJ3b3Jrc3BhY2UvIiwgInRhYjUuYmlzIiwiLlIiKSkKZHB1dCh0YWI2LCBmaWxlID0gcGFzdGUwKHBhdGgsICJ3b3Jrc3BhY2UvIiwgInRhYjYiLCIuUiIpKQoKYGBgCgo=