1 Abstract

2 Introduction

3 Results

3.1 Experiment 1:

3.1.1 Behavioral results

3.1.1.1 Encoding strength

Experiment 1: Behavioural performance

Figure 3.1: Experiment 1: Behavioural performance

  Accuracy Accuracy Accuracy Accuracy
Predictors Odds Ratios CI p Odds Ratios CI p Odds Ratios CI p Odds Ratios CI p
(Intercept) 1.29 1.00 – 1.66 0.053 1.39 1.06 – 1.82 0.016 0.05 0.03 – 0.11 <0.001 0.02 0.01 – 0.05 <0.001
Hierarchy [Recent] 0.86 0.74 – 1.00 0.045 0.55 0.46 – 0.65 <0.001 4.65 1.97 – 10.96 <0.001
Encoding strength 101.13 40.23 – 254.26 <0.001 315.68 112.33 – 887.16 <0.001
Hierarchy [Recent] ×
Encoding strength
0.06 0.02 – 0.18 <0.001
Random Effects
σ2 3.29 3.29 3.29 3.29
τ00 1.08 participant 1.08 participant 1.45 participant 1.44 participant
ICC 0.25 0.25 0.31 0.31
N 70 participant 70 participant 70 participant 70 participant
Observations 3360 3360 3360 3360
Marginal R2 / Conditional R2 0.000 / 0.247 0.001 / 0.249 0.100 / 0.375 0.105 / 0.378

Question: With or without scatterplot?

Plotting model predicted interaction between Hierarchy and Encoding strength

Figure 3.2: Plotting model predicted interaction between Hierarchy and Encoding strength

3.1.1.2 Distance

  Accuracy Accuracy Accuracy Accuracy
Predictors Odds Ratios CI p Odds Ratios CI p Odds Ratios CI p Odds Ratios CI p
(Intercept) 0.02 0.01 – 0.05 <0.001 0.01 0.01 – 0.03 <0.001 0.01 0.00 – 0.03 <0.001 0.03 0.00 – 0.28 0.003
Hierarchy [Recent] 4.65 1.97 – 10.96 <0.001 4.67 1.98 – 11.02 <0.001 6.15 1.97 – 19.24 0.002 16.26 0.40 – 663.23 0.140
Encoding strength 315.68 112.33 – 887.16 <0.001 321.91 114.47 – 905.28 <0.001 322.49 114.64 – 907.21 <0.001 106.33 3.75 – 3012.65 0.006
Hierarchy [Recent] ×
Encoding strength
0.06 0.02 – 0.18 <0.001 0.06 0.02 – 0.18 <0.001 0.06 0.02 – 0.18 <0.001 0.02 0.00 – 2.47 0.112
Distance 1.29 1.10 – 1.51 0.002 1.37 1.09 – 1.72 0.007 0.98 0.37 – 2.62 0.966
Hierarchy [Recent] ×
Distance
0.89 0.64 – 1.23 0.472 0.59 0.12 – 2.76 0.500
Encoding strength ×
Distance
1.62 0.41 – 6.37 0.493
(Hierarchy [Recent] ×
Encoding strength) ×
Distance
1.59 0.21 – 11.92 0.651
Random Effects
σ2 3.29 3.29 3.29 3.29
τ00 1.44 participant 1.45 participant 1.45 participant 1.46 participant
ICC 0.31 0.31 0.31 0.31
N 70 participant 70 participant 70 participant 70 participant
Observations 3360 3360 3360 3360
Marginal R2 / Conditional R2 0.105 / 0.378 0.108 / 0.381 0.108 / 0.381 0.109 / 0.382

3.1.1.3 Jointrank

  Accuracy Accuracy Accuracy Accuracy
Predictors Odds Ratios CI p Odds Ratios CI p Odds Ratios CI p Odds Ratios CI p
(Intercept) 0.02 0.01 – 0.05 <0.001 0.03 0.01 – 0.08 <0.001 0.05 0.02 – 0.18 <0.001 0.05 0.00 – 3.07 0.157
Hierarchy [Recent] 4.65 1.97 – 10.96 <0.001 4.65 1.97 – 10.96 <0.001 1.45 0.31 – 6.86 0.637 5526.47 9.94 – 3073432.49 0.008
Encoding strength 315.68 112.33 – 887.16 <0.001 315.92 112.43 – 887.70 <0.001 318.04 113.09 – 894.40 <0.001 313.78 1.16 – 85123.18 0.044
Hierarchy [Recent] ×
Encoding strength
0.06 0.02 – 0.18 <0.001 0.06 0.02 – 0.18 <0.001 0.06 0.02 – 0.18 <0.001 0.00 0.00 – 0.01 0.002
Jointrank 0.97 0.89 – 1.07 0.537 0.89 0.78 – 1.02 0.092 0.89 0.50 – 1.57 0.687
Hierarchy [Recent] ×
Jointrank
1.18 0.98 – 1.42 0.078 0.36 0.15 – 0.89 0.027
Encoding strength ×
Jointrank
1.00 0.46 – 2.21 0.991
(Hierarchy [Recent] ×
Encoding strength) ×
Jointrank
4.39 1.38 – 14.02 0.012
Random Effects
σ2 3.29 3.29 3.29 3.29
τ00 1.44 participant 1.44 participant 1.45 participant 1.46 participant
ICC 0.31 0.31 0.31 0.31
N 70 participant 70 participant 70 participant 70 participant
Observations 3360 3360 3360 3360
Marginal R2 / Conditional R2 0.105 / 0.378 0.105 / 0.378 0.106 / 0.379 0.109 / 0.383
Plotting model predicted interaction between Hierarchy, Encoding strength and Jointrank

Figure 3.3: Plotting model predicted interaction between Hierarchy, Encoding strength and Jointrank

3.2 Experiment 2:

3.2.1 Behavioral results

Experiment 2: Behavioural performance

Figure 3.4: Experiment 2: Behavioural performance

3.2.1.1 Encoding strength

  Accuracy Accuracy Accuracy Accuracy
Predictors Odds Ratios CI p Odds Ratios CI p Odds Ratios CI p Odds Ratios CI p
(Intercept) 1.53 1.00 – 2.34 0.049 2.04 1.14 – 3.67 0.017 3.99 1.75 – 9.07 0.001 1.05 0.38 – 2.91 0.932
Group [Wake] 0.56 0.25 – 1.28 0.170 0.57 0.24 – 1.35 0.199 4.98 1.28 – 19.30 0.020
Encoding strength 0.38 0.18 – 0.83 0.015 2.64 0.77 – 8.99 0.121
Group [Wake] × Encoding
strength
0.04 0.01 – 0.21 <0.001
Random Effects
σ2 3.29 3.29 3.29 3.29
τ00 1.05 participant 0.97 participant 1.10 participant 0.93 participant
ICC 0.24 0.23 0.25 0.22
N 24 participant 24 participant 24 participant 24 participant
Observations 1728 1728 1728 1728
Marginal R2 / Conditional R2 0.000 / 0.241 0.019 / 0.242 0.028 / 0.271 0.050 / 0.258
Plotting model predicted interaction between Hierarchy and Encoding strength

Figure 3.5: Plotting model predicted interaction between Hierarchy and Encoding strength

3.2.1.2 Distance

  Accuracy Accuracy Accuracy Accuracy
Predictors Odds Ratios CI p Odds Ratios CI p Odds Ratios CI p Odds Ratios CI p
(Intercept) 1.05 0.38 – 2.91 0.932 0.96 0.30 – 3.01 0.941 0.47 0.13 – 1.69 0.249 0.12 0.01 – 1.95 0.137
Group [Wake] 4.98 1.28 – 19.30 0.020 4.98 1.28 – 19.29 0.020 18.94 3.42 – 104.79 0.001 11.72 0.30 – 462.62 0.189
Encoding strength 2.64 0.77 – 8.99 0.121 2.64 0.77 – 8.99 0.121 2.65 0.77 – 9.06 0.120 20.57 0.41 – 1037.19 0.131
Group [Wake] × Encoding
strength
0.04 0.01 – 0.21 <0.001 0.04 0.01 – 0.21 <0.001 0.04 0.01 – 0.21 <0.001 0.08 0.00 – 12.44 0.324
Distance 1.04 0.83 – 1.29 0.736 1.41 1.02 – 1.94 0.039 2.51 0.83 – 7.54 0.102
Group [Wake] × Distance 0.57 0.36 – 0.88 0.011 0.69 0.16 – 3.02 0.627
Encoding strength ×
Distance
0.41 0.08 – 2.05 0.280
(Group [Wake] × Encoding
strength) × Distance
0.78 0.10 – 6.23 0.816
Random Effects
σ2 3.29 3.29 3.29 3.29
τ00 0.93 participant 0.93 participant 0.93 participant 0.93 participant
ICC 0.22 0.22 0.22 0.22
N 24 participant 24 participant 24 participant 24 participant
Observations 1728 1728 1728 1728
Marginal R2 / Conditional R2 0.050 / 0.258 0.050 / 0.258 0.054 / 0.263 0.056 / 0.265
Plotting model predicted interaction between Hierarchy and Distance

Figure 3.6: Plotting model predicted interaction between Hierarchy and Distance

3.2.1.3 Jointrank

  Accuracy Accuracy Accuracy Accuracy Accuracy
Predictors Odds Ratios CI p Odds Ratios CI p Odds Ratios CI p Odds Ratios CI p Odds Ratios CI p
(Intercept) 1.05 0.38 – 2.91 0.932 1.36 0.35 – 5.28 0.655 2.50 0.48 – 13.00 0.277 0.00 0.00 – 0.27 0.012 0.00 0.00 – 0.27 0.012
Group [Wake] 4.98 1.28 – 19.30 0.020 4.98 1.29 – 19.30 0.020 1.58 0.17 – 14.75 0.689 415.68 0.92 – 188676.08 0.053 415.68 0.92 – 188676.08 0.053
Encoding strength 2.64 0.77 – 8.99 0.121 2.64 0.77 – 8.99 0.121 2.64 0.77 – 9.02 0.121 93674.98 108.23 – 81079248.72 0.001 93674.98 108.23 – 81079248.72 0.001
Group [Wake] × Encoding
strength
0.04 0.01 – 0.21 <0.001 0.04 0.01 – 0.21 <0.001 0.04 0.01 – 0.21 <0.001 0.00 0.00 – 0.04 0.008 0.00 0.00 – 0.04 0.008
Jointrank 0.96 0.85 – 1.09 0.560 0.88 0.73 – 1.06 0.187 2.35 1.23 – 4.47 0.009 2.35 1.23 – 4.47 0.009
Group [Wake] × Jointrank 1.18 0.91 – 1.52 0.205 0.53 0.23 – 1.25 0.147 0.53 0.23 – 1.25 0.147
Encoding strength ×
Jointrank
0.22 0.09 – 0.58 0.002 0.22 0.09 – 0.58 0.002
(Group [Wake] × Encoding
strength) × Jointrank
3.42 1.02 – 11.48 0.046 3.42 1.02 – 11.48 0.046
Random Effects
σ2 3.29 3.29 3.29 3.29 3.29
τ00 0.93 participant 0.93 participant 0.93 participant 0.96 participant 0.96 participant
ICC 0.22 0.22 0.22 0.23 0.23
N 24 participant 24 participant 24 participant 24 participant 24 participant
Observations 1728 1728 1728 1728 1728
Marginal R2 / Conditional R2 0.050 / 0.258 0.050 / 0.259 0.051 / 0.260 0.060 / 0.272 0.060 / 0.272
Plotting model predicted interaction between Hierarchy, Encoding strength and Jointrank

Figure 3.7: Plotting model predicted interaction between Hierarchy, Encoding strength and Jointrank

4 Discussion

5 Materials and Methods

5.1 Participants

5.2 Procedure

5.2.1 Experiment 1

5.2.2 Experiment 2

5.3 Stimuli

5.4 Statistical analyses

5.5 Behavioral analyses

LS0tDQp0aXRsZTogIkwmTSBtYW51c2NyaXB0Ig0Kb3V0cHV0Og0KICBib29rZG93bjo6aHRtbF9kb2N1bWVudDI6DQogICAgdG9jOiB0cnVlDQogICAgdG9jX2RlcHRoOiA0DQogICAgZmlnX2NhcHRpb246IHRydWUNCiAgICB0YWJsZV9jYXB0aW9uOiB0cnVlDQogICAgdGhlbWU6IHVuaXRlZA0KICAgIGhpZ2hsaWdodDogdGFuZ28NCiAgICBkZl9wcmludDoga2FibGUNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQogICAgY29kZV9mb2xkaW5nOiBzaG93DQogICAgY29kZV9leHRlcm5hbDogdHJ1ZQ0KICAgIGtlZXBfbWQ6IHRydWUNCiAgICBrZWVwX3RleDogdHJ1ZQ0KICAgIGNpdGVwcm9jOiB5ZXMNCiAgICBsb2Y6IHllcyANCiAgICBsb3Q6IHllcw0KDQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiDQpmaWd1cmVsaXN0OiB5ZXMNCmFsd2F5c19hbGxvd19odG1sOiB0cnVlDQpoZWFkZXItaW5jbHVkZXM6IA0KLSBcdXNlcGFja2FnZVtub3R0b2Nde3RvY2JpYmluZH0gDQotIFx1c2VwYWNrYWdlW3V0Zjhde2lucHV0ZW5jfQ0KLSBcdXNlcGFja2FnZVtUMV17Zm9udGVuY30NCi0gXERlY2xhcmVVbmljb2RlQ2hhcmFjdGVyezAzQzN9e8+DfQ0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD04LCBmaWcuZnVsbHdpZHRoPVRSVUUsZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgY2FjaGUgPSBUUlVFKQ0KDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoZW1tZWFucykNCmxpYnJhcnkoZ2dzdGF0c3Bsb3QpDQpsaWJyYXJ5KHNqUGxvdCkNCmxpYnJhcnkoRFQpDQpyZXF1aXJlKGxtZTQpDQpsaWJyYXJ5KHJlcG9ydCkNCmxpYnJhcnkocGVyZm9ybWFuY2UpDQpsaWJyYXJ5KHBhcGFqYSkNCmxpYnJhcnkoZ2doNHgpDQpsaWJyYXJ5KHNqUGxvdCkNCg0KYGBgDQoNCiMgQWJzdHJhY3QNCg0KIyBJbnRyb2R1Y3Rpb24NCg0KLSAgIFJlbGF0aW9uYWwgbWVtb3J5L0xhdGVudCBsZWFybmluZw0KLSAgIFJlbGF0aW9uYWwgbWVtb3J5L0xhdGVudCBsZWFybmluZyBpbiB0aW1lIGFuZCBzbGVlcC1kZXBlbmRlbnQgY29uc29saWRhdGlvbnMNCi0gICBXaGF0IGFyZSBpbXBvcnRhbnQgbW9kZXJhdG9yIHZhcmlhYmxlcyBpbiB0aW1lIGFuZCBzbGVlcC1kZXBlbmRlbnQgY29uc29saWRhdGlvbiBhcyBpdCBwZXJ0YWlucyB0byBnZW5lcmFsaXphdGlvbiBbd2UgZG9uJ3Qga25vd10NCiAgICAtICAgRW5jb2RpbmcgU3RyZW5ndGggW0JlcnJlbnMgbWV0YV0gaW4gdGltZSBhbmQgc2xlZXAtZGVwZW5kZW50IG1lbW9yeSBjb25zb2xpZGF0aW9uIGluIGdlbmVyYWwNCiAgICAtICAgU3R1ZHkgZGVzaWduDQotICAgV2hhdCBhcmUgaW1wb3J0YW50ICJxdWFsaXR5IiBtZWFzdXJlcyBvZiBsYXRlbnQgbGVhcm5pbmcgaW4gVEkNCiAgICAtICAgRGlzdGFuY2UgKGR1aCkgRWxsZW5ib2dlbjogeWVzIC8gR29tZXo6IGtpbmRhLCBjbG9zZSBidXQgbm90IHNpZ25pZmljYW50DQogICAgLSAgIEpvaW50cmFuayAobmV3KSBcfiB0d28gcGFwZXJzIChLYW86R3JlZyBKZW5zZW4gbGFiKQ0KDQojIFJlc3VsdHMNCg0KIyMgRXhwZXJpbWVudCAxOg0KDQojIyMgQmVoYXZpb3JhbCByZXN1bHRzDQoNCiMjIyMgRW5jb2Rpbmcgc3RyZW5ndGgNCg0KYGBge3IgZXhwMSwgaW5jbHVkZT1GQUxTRX0NCmV4cDEuZmFjZXNjZW5lIDwtIHJlYWRSRFMoImJ5dHJpYWwuZXhwLXdzdGlvbmxpbmVfdmVyLWZhY2VzY2VuZS5yZHMiKQ0KZXhwMS5zY2VuZXMgPC0gcmVhZFJEUygiYnl0cmlhbC5leHAtd3N0aW9ubGluZV92ZXItc2NlbmVzLnJkcyIpDQpleHAxLm9iamVjdHMxIDwtIHJlYWRSRFMoImJ5dHJpYWwuZXhwLXdzdGlvbmxpbmVfdmVyLW9iamVjdHMucmRzIikNCmV4cDEub2JqZWN0czIgPC0gcmVhZFJEUygiYnl0cmlhbC5leHAtd3N0aW9ubGluZV92ZXItb2JqZWN0cy1zaHAucmRzIikNCg0KIyBub3RlIHRvIHNlbGYgLSBmaXggZmVlZGJhY2sgY29sdW1uIGluIGV4cDEub2JqZWN0cw0KZXhwMS5jb21iaW5lZCA8LSBiaW5kX3Jvd3MoZXhwMS5mYWNlc2NlbmUsZXhwMS5zY2VuZXMsZXhwMS5vYmplY3RzMSxleHAxLm9iamVjdHMyKSAlPiUgbXV0YXRlKHBhcnRpY2lwYW50X3UgPSBwYXN0ZShwYXJ0aWNpcGFudCxleHBWZXJzaW9uLCBzZXAgPSAiXyIpLCBjUmFuaz0gcGFzdGUwKHBtaW4oUmFuazEsUmFuazIpLHBtYXgoUmFuazEsUmFuazIpKSwgcGFpclR5cGU9IGlmZWxzZShjUmFuayAlaW4lIGMoIjEyIiwiMjMiLCIzNCIsIjQ1IiwiNTYiKSwicHJlbWlzZSIsIGlmZWxzZShjUmFuayAlaW4lIGMoIjI0IiwiMjUiLCIzNSIpLCAiaW5mZXJlbmNlIiwiYW5jaG9yIikpKSAlPiUgZmlsdGVyKCFwYXJ0aWNpcGFudF91ICVpbiUgYygiQURQT01aX29iamVjdHMiLCJBS09YWVNfb2JqZWN0c19zaHAiKSApDQoNCiMgbm90ZSB0byBzZWxmIC0gZml4IGZlZWRiYWNrIGNvbHVtbiBpbiBleHAxLm9iamVjdHMNCmV4cDEuY29tYmluZWQgPC0gYmluZF9yb3dzKGV4cDEuZmFjZXNjZW5lLGV4cDEuc2NlbmVzLGV4cDEub2JqZWN0czEsZXhwMS5vYmplY3RzMikgJT4lIG11dGF0ZShwYXJ0aWNpcGFudF91ID0gcGFzdGUocGFydGljaXBhbnQsZXhwVmVyc2lvbiwgc2VwID0gIl8iKSwgY1Jhbms9IHBhc3RlMChwbWluKFJhbmsxLFJhbmsyKSxwbWF4KFJhbmsxLFJhbmsyKSksIHBhaXJUeXBlPSBpZmVsc2UoY1JhbmsgJWluJSBjKCIxMiIsIjIzIiwiMzQiLCI0NSIsIjU2IiksInByZW1pc2UiLCBpZmVsc2UoY1JhbmsgJWluJSBjKCIyNCIsIjI1IiwiMzUiKSwgImluZmVyZW5jZSIsImFuY2hvciIpKSkgJT4lIGZpbHRlcighcGFydGljaXBhbnRfdSAlaW4lIGMoIkFEUE9NWl9vYmplY3RzIiwiQUtPWFlTX29iamVjdHNfc2hwIikgKQ0KDQp3cml0ZS5jc3YoZXhwMS5jb21iaW5lZCwiZWxscmVwX3dzLmNzdiIpDQoNCmdsaW1wc2UoZXhwMS5jb21iaW5lZCkNCg0KIyBudW1iZXIgb2YgcGFydGljaXBhbnRzDQpuX2Rpc3RpbmN0KGV4cDEuY29tYmluZWQkcGFydGljaXBhbnRfdSkNCiMgZXhwZXJpbWVudCBzdHJ1Y3R1cmUNCkRUOjpkYXRhdGFibGUoZXhwMS5jb21iaW5lZCAlPiUgZ3JvdXBfYnkocGFydGljaXBhbnRfdSwgc2Vzc2lvbiwgcGFydCkgJT4lIGNvdW50KCkpDQoNCmV4cDEuY29tYmluZWQuaW1BdmcgPC0gZXhwMS5jb21iaW5lZCAlPiUgZmlsdGVyKHBhcnQgPT0gImltbWVkaWF0ZSB0ZXN0aW5nIikgJT4lIGdyb3VwX2J5KHBhcnRpY2lwYW50X3UsIGhpZXJhcmNoeSkgJT4lIHN1bW1hcmlzZShtZWFuUHJlbWlzZVBlcmZvcm1hbmNlID0gbWVhbihjb3JyKSkNCg0KZXhwMS5pbmYgPC0gZXhwMS5jb21iaW5lZCAlPiUgZmlsdGVyKHBhcnQgPT0gImRlbGF5ZWQgdGVzdGluZyIsIHBhaXJUeXBlPT0iaW5mZXJlbmNlIikgJT4lIGxlZnRfam9pbihleHAxLmNvbWJpbmVkLmltQXZnKQ0KDQpncm91cGVkX2dnd2l0aGluc3RhdHMoDQogIGRhdGEgICAgICAgICAgICAgPSBleHAxLmNvbWJpbmVkICU+JSBncm91cF9ieShwYXJ0aWNpcGFudF91LCBwYXJ0LCBwYWlyVHlwZSwgaGllcmFyY2h5KSAlPiUgc3VtbWFyaXNlKG1lYW5QZXJmID0gbWVhbihjb3JyKSkgJT4lIGZpbHRlcihwYWlyVHlwZSAhPSAiYW5jaG9yIiwgcGFydCAhPSAibGVhcm5pbmciKSAlPiUgbXV0YXRlKHBhcnRYcGFpclR5cGUgPSBpbnRlcmFjdGlvbihwYXJ0LCBwYWlyVHlwZSkpLA0KICB4ICAgICAgICAgICAgICAgID0gaGllcmFyY2h5LA0KICB5ICAgICAgICAgICAgICAgID0gbWVhblBlcmYsDQogIGdyb3VwaW5nLnZhciAgICAgPSBwYXJ0WHBhaXJUeXBlLA0KICB0eXBlICAgICAgICAgICAgID0gInAiLA0KICBiZi5tZXNzYWdlID0gRkFMU0UsDQogIHJlc3VsdHMuc3VidGl0bGUgPSBGQUxTRSwNCikNCg0KYGBgDQoNCmBgYHtyIGUxZjEsIGZpZy5jYXAgPSAiRXhwZXJpbWVudCAxOiBCZWhhdmlvdXJhbCBwZXJmb3JtYW5jZSJ9DQoNCiMgQ3JlYXRlIGNvbWJpbmVkIGJveCBhbmQgdmlvbGluIHBsb3Qgd2l0aCBvdmVybGFwIGZvciBjYXRlZ29yeSAyDQpkYXRhIDwtIGV4cDEuY29tYmluZWQgJT4lIGdyb3VwX2J5KHBhcnRpY2lwYW50X3UsIHBhcnQsIHBhaXJUeXBlLCBoaWVyYXJjaHkpICU+JSBzdW1tYXJpc2UobWVhblBlcmYgPSBtZWFuKGNvcnIpKSAlPiUgZmlsdGVyKHBhaXJUeXBlICE9ICJhbmNob3IiLCBwYXJ0ICE9ICJsZWFybmluZyIpICU+JSBtdXRhdGUocGFydFhwYWlyVHlwZSA9IGludGVyYWN0aW9uKHBhcnQsIHBhaXJUeXBlLHNlcCA9ICI6ICIpKSAlPiUgbXV0YXRlKCBoaWVyYXJjaHk9cmVjb2RlKGhpZXJhcmNoeSAsICJIMSIgPSAiUmVtb3RlIiwgIkgyIiA9ICJSZWNlbnQiKSkgJT4lIG11dGF0ZShoaWVyYXJjaHk9ZmFjdG9yKGhpZXJhcmNoeSxsZXZlbHM9YygiUmVtb3RlIiwiUmVjZW50IikpKSAlPiUgbXV0YXRlKHBhaXJUeXBlID0gIGZhY3RvcihzdHJfdG9fdGl0bGUocGFpclR5cGUpLCBsZXZlbHMgPSBjKCJQcmVtaXNlIiwiSW5mZXJlbmNlIikpLCBwYXJ0PWZhY3RvcihzdHJfdG9fdGl0bGUocGFydCksbGV2ZWxzID0gYygiSW1tZWRpYXRlIFRlc3RpbmciLCJEZWxheWVkIFRlc3RpbmciKSkpDQoNCg0KZ2dwbG90KGRhdGEsIGFlcyh4ID0gaGllcmFyY2h5LCB5ID0gbWVhblBlcmYsIGZpbGwgPSBoaWVyYXJjaHkpKSArDQogIGdlb21fdmlvbGluKGFscGhhID0gMC41LCB3aWR0aCA9IDAuNCwgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNzUpLCANCiAgICAgICAgICAgICAgdHJpbSA9IEZBTFNFLCBzY2FsZSA9ICJ3aWR0aCIpICsNCiAgZ2VvbV9ib3hwbG90KGFscGhhID0gMC41LCBvdXRsaWVyLnNoYXBlID0gTkEsIHdpZHRoID0gMC4yLCANCiAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjc1KSkgKw0KICBsYWJzKHggPSAiSGllcmFyY2h5IiwgeSA9ICJNZWFuIHBlcmZvcm1hbmNlIiwgZmlsbCA9ICIiKSArDQogIGdndGl0bGUoIlBlcmZvcm1hbmNlIikgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQ9MC41LCBsaW5ldHlwZT0iZGFzaGVkIiwgDQogICAgICAgICAgICAgICAgY29sb3IgPSAiZ3JleSIsIHNpemU9MC44KSArIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpKw0KICBzdGF0X3N1bW1hcnkoZnVuID0gbWVhbiwgZ2VvbSA9ICJwb2ludCIsIHNoYXBlPTMsIHNpemUgPSAyLCBjb2xvciA9ICJibGFjayIsIHN0cm9rZSA9IDEsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjc1KSkgKyANCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpICArIHRoZW1lX2FwYShiYXNlX3NpemUgPSAxNCkgKyAgZmFjZXRfbmVzdGVkKH4gcGFydCArIHBhaXJUeXBlKSArIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCJmaXJlYnJpY2siLCAiY29ybmZsb3dlcmJsdWUiKSkNCg0KYGBgDQoNCmBgYHtyIGUxZjIsIGVjaG89RkFMU0UsIGNhcHRpb249Ik1vZGVsIGNvbXBhcmlzb24gbG9va2luZyBhdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBIaWVyYXJjaHkgYW5kIEVuY29kaW5nIHN0cmVuZ3RoIn0NCg0KZXhwMS5pbmYgPC0gZXhwMS5pbmYgJT4lIG11dGF0ZShBY2N1cmFjeSA9IGNvcnIpICU+JSBtdXRhdGUoIEhpZXJhcmNoeT1yZWNvZGUoaGllcmFyY2h5ICwgIkgxIiA9ICJSZW1vdGUiLCAiSDIiID0gIlJlY2VudCIpLCBwYXJ0aWNpcGFudCA9IHBhcnRpY2lwYW50X3UsIEVuY29kaW5nX3N0cmVuZ3RoID1tZWFuUHJlbWlzZVBlcmZvcm1hbmNlKSAlPiUgbXV0YXRlKEhpZXJhcmNoeT1mYWN0b3IoSGllcmFyY2h5LGxldmVscz1jKCJSZW1vdGUiLCJSZWNlbnQiKSkpDQoNCm0xIDwtIGdsbWVyKEFjY3VyYWN5IH4gMSArDQogICAgKDEgfCBwYXJ0aWNpcGFudCksIGRhdGEgPSBleHAxLmluZiwgZmFtaWx5ID0gYmlub21pYWwsIGNvbnRyb2wgPSBnbG1lckNvbnRyb2wob3B0aW1pemVyID0gImJvYnlxYSIpKQ0KbTIgPC0gZ2xtZXIoQWNjdXJhY3kgfiBIaWVyYXJjaHkgKw0KICAgICgxIHwgcGFydGljaXBhbnQpLCBkYXRhID0gZXhwMS5pbmYsIGZhbWlseSA9IGJpbm9taWFsLCBjb250cm9sID0gZ2xtZXJDb250cm9sKG9wdGltaXplciA9ICJib2J5cWEiKSkNCm0zIDwtIGdsbWVyKEFjY3VyYWN5IH4gSGllcmFyY2h5ICsgRW5jb2Rpbmdfc3RyZW5ndGggKw0KICAgICgxIHwgcGFydGljaXBhbnQpLCBkYXRhID0gZXhwMS5pbmYsIGZhbWlseSA9IGJpbm9taWFsLCBjb250cm9sID0gZ2xtZXJDb250cm9sKG9wdGltaXplciA9ICJib2J5cWEiKSkNCm00IDwtIGdsbWVyKEFjY3VyYWN5IH4gSGllcmFyY2h5ICogRW5jb2Rpbmdfc3RyZW5ndGggKw0KICAgICgxIHwgcGFydGljaXBhbnQpLCBkYXRhID0gZXhwMS5pbmYsIGZhbWlseSA9IGJpbm9taWFsLCBjb250cm9sID0gZ2xtZXJDb250cm9sKG9wdGltaXplciA9ICJib2J5cWEiKSkNCg0KdGFiX21vZGVsKG0xLG0yLG0zLG00KQ0KI2Fub3ZhKG0xLG0yLG0zLG00KQ0KYGBgDQoNClF1ZXN0aW9uOiBXaXRoIG9yIHdpdGhvdXQgc2NhdHRlcnBsb3Q/DQoNCmBgYHtyIGUxZjMsIGZpZy5jYXA9IlBsb3R0aW5nIG1vZGVsIHByZWRpY3RlZCBpbnRlcmFjdGlvbiBiZXR3ZWVuIEhpZXJhcmNoeSBhbmQgRW5jb2Rpbmcgc3RyZW5ndGgifQ0KbGlicmFyeShzalBsb3QpDQoNCiMgcGxvdF9tb2RlbChtNCwgdHlwZSA9ICJlZmYiLCB0ZXJtcyA9IGMoIkVuY29kaW5nX3N0cmVuZ3RoW2FsbF0iLCJIaWVyYXJjaHkiKSwgYXhpcy50aXRsZT1jKCJFbmNvZGluZyBzdHJlbmd0aCIsIkluZmVyZW5jZSBwZXJmb3JtYW5jZSIpLCBjb2xvcnMgPSBjKCJmaXJlYnJpY2siLCAiY29ybmZsb3dlcmJsdWUiKSkgKyB0aGVtZV9hcGEoYmFzZV9zaXplID0gMTQpICsgc2NhbGVfeF9jb250aW51b3VzKGxhYmVscyA9IHNjYWxlczo6cGVyY2VudCkgKyBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQ9MC41LCBsaW5ldHlwZT0iZGFzaGVkIiwgY29sb3IgPSAiZ3JleSIsIHNpemU9MC44KQ0KDQpleHAxLmluZi5zdW1tYXJ5IDwtIGV4cDEuaW5mICU+JSBncm91cF9ieShwYXJ0aWNpcGFudCxIaWVyYXJjaHksRW5jb2Rpbmdfc3RyZW5ndGgpICU+JSBzdW1tYXJpc2UocHJlZGljdGVkPW1lYW4oY29ycikpICU+JSBtdXRhdGUoeD1FbmNvZGluZ19zdHJlbmd0aCwgZ3JvdXBfY29sPUhpZXJhcmNoeSkNCg0KdG1wIDwtIHRpYmJsZShnZXRfbW9kZWxfZGF0YShtNCwgdHlwZSA9ICJwcmVkIiwgdGVybXMgPSBjKCJFbmNvZGluZ19zdHJlbmd0aFthbGxdIiwiSGllcmFyY2h5IikpKQ0KIyBjcmVhdGUgYSBnZ3Bsb3Qgb2JqZWN0DQojIENyZWF0ZSBnZ3Bsb3Qgb2JqZWN0DQpnZ3Bsb3QodG1wLCBhZXMoeCA9IHgsIHkgPSBwcmVkaWN0ZWQsIGNvbG9yID0gZ3JvdXBfY29sLGZpbGw9Z3JvdXBfY29sKSkgKyANCiAgZ2VvbV9saW5lKCkgKyANCiAgZ2VvbV9yaWJib24oYWVzKHltaW4gPSBjb25mLmxvdywgeW1heCA9IGNvbmYuaGlnaCksIGFscGhhID0gMC4zKSArDQogIHhsYWIoIkVuY29kaW5nIHN0cmVuZ3RoIikgKw0KICB5bGFiKCJJbmZlcmVuY2UgcGVyZm9ybWFuY2UiKSArDQogIGdndGl0bGUoIkVmZmVjdCBvZiBFbmNvZGluZyBzdHJlbmd0aCBvbiBBY2N1cmFjeSBieSBIaWVyYXJjaHkiKSArIHNjYWxlX3hfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpICsgZ2VvbV92bGluZSh4aW50ZXJjZXB0PTAuNSwgbGluZXR5cGU9ImRhc2hlZCIsIGNvbG9yID0gImdyZXkiLCBzaXplPTAuOCkgKyBnZW9tX3BvaW50KGRhdGE9ZXhwMS5pbmYuc3VtbWFyeSwgYWVzKHggPSB4LCB5ID0gcHJlZGljdGVkLCBjb2xvciA9IGdyb3VwX2NvbCxmaWxsPWdyb3VwX2NvbCksYWxwaGEgPSAwLjUsIHBvc2l0aW9uPXBvc2l0aW9uX2ppdHRlcihoZWlnaHQ9LjAxLCB3aWR0aD0uMDEpKSAgICsgdGhlbWVfYXBhKGJhc2Vfc2l6ZSA9IDE0KSArIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCJmaXJlYnJpY2siLCAiY29ybmZsb3dlcmJsdWUiKSkgKyBsYWJzKGNvbG9yID0gIkhpZXJhcmNoeSIsIGZpbGw9IkhpZXJhcmNoeSIpDQoNCmBgYA0KDQojIyMjIERpc3RhbmNlDQoNCmBgYHtyIGUxZjQsIGNhcHRpb249Ik1vZGVsIGNvbXBhcmlzb24gbG9va2luZyBhdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBIaWVyYXJjaHksIEVuY29kaW5nIHN0cmVuZ3RoIGFuZCBEaXN0YW5jZSJ9DQpleHAxLmluZl9tYXAgPC0gZXhwMS5jb21iaW5lZCAlPiUgZmlsdGVyKHBhcnQgPT0gImRlbGF5ZWQgdGVzdGluZyIsIHBhaXJUeXBlPT0iaW5mZXJlbmNlIikgJT4lIGxlZnRfam9pbihleHAxLmNvbWJpbmVkLmltQXZnKSAlPiUgbXV0YXRlKERpc3RhbmNlID0gYWJzKFJhbmsxLVJhbmsyKSwgSm9pbnRyYW5rID0gUmFuazErUmFuazIpICU+JSBtdXRhdGUoQWNjdXJhY3kgPSBjb3JyKSAlPiUgbXV0YXRlKCBIaWVyYXJjaHk9cmVjb2RlKGhpZXJhcmNoeSAsICJIMSIgPSAiUmVtb3RlIiwgIkgyIiA9ICJSZWNlbnQiKSwgcGFydGljaXBhbnQgPSBwYXJ0aWNpcGFudF91LCBFbmNvZGluZ19zdHJlbmd0aCA9bWVhblByZW1pc2VQZXJmb3JtYW5jZSkgJT4lIG11dGF0ZShIaWVyYXJjaHk9ZmFjdG9yKEhpZXJhcmNoeSxsZXZlbHM9YygiUmVtb3RlIiwiUmVjZW50IikpKQ0KDQptMS5kIDwtIGdsbWVyKEFjY3VyYWN5IH4gSGllcmFyY2h5ICogRW5jb2Rpbmdfc3RyZW5ndGggKw0KICAgICgxIHwgcGFydGljaXBhbnQpLCBkYXRhID0gZXhwMS5pbmZfbWFwLCBmYW1pbHkgPSBiaW5vbWlhbCwgY29udHJvbCA9IGdsbWVyQ29udHJvbChvcHRpbWl6ZXIgPSAiYm9ieXFhIikpDQoNCm0yLmQgPC0gZ2xtZXIoQWNjdXJhY3kgfiBIaWVyYXJjaHkgKiBFbmNvZGluZ19zdHJlbmd0aCArIERpc3RhbmNlICsNCiAgICAoMSB8IHBhcnRpY2lwYW50KSwgZGF0YSA9IGV4cDEuaW5mX21hcCwgZmFtaWx5ID0gYmlub21pYWwsIGNvbnRyb2wgPSBnbG1lckNvbnRyb2wob3B0aW1pemVyID0gImJvYnlxYSIpKQ0KbTMuZCA8LSBnbG1lcihBY2N1cmFjeSB+IEhpZXJhcmNoeSAqIEVuY29kaW5nX3N0cmVuZ3RoICsgRGlzdGFuY2UgKiBIaWVyYXJjaHkgKw0KICAgICgxIHwgcGFydGljaXBhbnQpLCBkYXRhID0gZXhwMS5pbmZfbWFwLCBmYW1pbHkgPSBiaW5vbWlhbCwgY29udHJvbCA9IGdsbWVyQ29udHJvbChvcHRpbWl6ZXIgPSAiYm9ieXFhIikpDQptNC5kIDwtIGdsbWVyKEFjY3VyYWN5IH4gSGllcmFyY2h5ICogRW5jb2Rpbmdfc3RyZW5ndGggKiBEaXN0YW5jZSArDQogICAgKDEgfCBwYXJ0aWNpcGFudCksIGRhdGEgPSBleHAxLmluZl9tYXAsIGZhbWlseSA9IGJpbm9taWFsLCBjb250cm9sID0gZ2xtZXJDb250cm9sKG9wdGltaXplciA9ICJib2J5cWEiKSkNCg0KdGFiX21vZGVsKG0xLmQsbTIuZCxtMy5kLG00LmQpDQojYW5vdmEobTEuZCxtMi5kLG0zLmQsbTQuZCkgIyBtMiB3aW5zDQpgYGANCg0KYGBge3IgZTFmeCwgZXZhbD1GQUxTRX0NCiMgVXNpbmcgYSBtaXhlZCBsb2dpc3RpYyBtb2RlbCB0byBhbmFseXNlIGludGVyYWN0aW9uIGJldHdlZW4gaGllcmFyY2h5IGFuZCBkaXN0YW5jZQ0KDQojY3JlYXRlIHNjYXR0ZXJwbG90DQojcGxvdChleHAxLmluZl9kaXN0JGRpc3RhbmNlLCBleHAxLmluZl9kaXN0JGpvaW50cmFuaywgbWFpbj0gIkpvaW50IHJhbmsgdnMgRGlzdGFuY2UiKQ0KI2FkZCBsYWJlbHMgdG8gZXZlcnkgcG9pbnQNCngjdGV4dChleHAxLmluZl9kaXN0JGRpc3RhbmNlKzAuMDIsZXhwMS5pbmZfZGlzdCRqb2ludHJhbmssIGxhYmVscz1leHAxLmluZl9kaXN0JGNSYW5rKQ0KDQoNCg0KYGBgDQoNCiMjIyMgSm9pbnRyYW5rDQoNCmBgYHtyIGUxZjUsIGNhcHRpb249Ik1vZGVsIGNvbXBhcmlzb24gbG9va2luZyBhdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBIaWVyYXJjaHksIEVuY29kaW5nIHN0cmVuZ3RoIGFuZCBKb2ludHJhbmsifQ0KbTEuaiA8LSBnbG1lcihBY2N1cmFjeSB+IEhpZXJhcmNoeSAqIEVuY29kaW5nX3N0cmVuZ3RoICsNCiAgICAoMSB8IHBhcnRpY2lwYW50KSwgZGF0YSA9IGV4cDEuaW5mX21hcCwgZmFtaWx5ID0gYmlub21pYWwsIGNvbnRyb2wgPSBnbG1lckNvbnRyb2wob3B0aW1pemVyID0gImJvYnlxYSIpKQ0KbTIuaiA8LSBnbG1lcihBY2N1cmFjeSB+IEhpZXJhcmNoeSAqIEVuY29kaW5nX3N0cmVuZ3RoICsgSm9pbnRyYW5rICsNCiAgICAoMSB8IHBhcnRpY2lwYW50KSwgZGF0YSA9IGV4cDEuaW5mX21hcCwgZmFtaWx5ID0gYmlub21pYWwsIGNvbnRyb2wgPSBnbG1lckNvbnRyb2wob3B0aW1pemVyID0gImJvYnlxYSIpKQ0KbTMuaiA8LSBnbG1lcihBY2N1cmFjeSB+IEhpZXJhcmNoeSAqIEVuY29kaW5nX3N0cmVuZ3RoICsgSm9pbnRyYW5rICogSGllcmFyY2h5ICsNCiAgICAoMSB8IHBhcnRpY2lwYW50KSwgZGF0YSA9IGV4cDEuaW5mX21hcCwgZmFtaWx5ID0gYmlub21pYWwsIGNvbnRyb2wgPSBnbG1lckNvbnRyb2wob3B0aW1pemVyID0gImJvYnlxYSIpKQ0KbTQuaiA8LSBnbG1lcihBY2N1cmFjeSB+IEhpZXJhcmNoeSAqIEVuY29kaW5nX3N0cmVuZ3RoICogSm9pbnRyYW5rICsNCiAgICAoMSB8IHBhcnRpY2lwYW50KSwgZGF0YSA9IGV4cDEuaW5mX21hcCwgZmFtaWx5ID0gYmlub21pYWwsIGNvbnRyb2wgPSBnbG1lckNvbnRyb2wob3B0aW1pemVyID0gImJvYnlxYSIpKQ0KDQp0YWJfbW9kZWwobTEuaixtMi5qLG0zLmosbTQuaikNCiNhbm92YShtMS5qLG0yLmosbTMuaixtNC5qKSAjbTQgd2lucw0KDQpgYGANCg0KYGBge3IgZTFmNiwgZmlnLmNhcD0iUGxvdHRpbmcgbW9kZWwgcHJlZGljdGVkIGludGVyYWN0aW9uIGJldHdlZW4gSGllcmFyY2h5LCBFbmNvZGluZyBzdHJlbmd0aCBhbmQgSm9pbnRyYW5rIn0NCg0KIyBwbG90X21vZGVsKG0zLmosIHR5cGUgPSAicHJlZCIsIHRlcm1zID0gYygiSm9pbnRyYW5rWzYsNyw4XSIsICJIaWVyYXJjaHkiKSxheGlzLnRpdGxlPWMoIkluZmVyZW5jZSBwZXJmb3JtYW5jZSIpKSAgKyB0aGVtZV9hcGEoYmFzZV9zaXplID0gMTQpICsgZ2d0aXRsZSgiRWZmZWN0IG9mIEpvaW50cmFuayBvbiBBY2N1cmFjeSBieSBIaWVyYXJjaHkiKSArIHNjYWxlX3hfY29udGludW91cyhicmVha3M9c2VxKDYsIDgsIDEpKQ0KDQpwbG90X21vZGVsKG00LmosIHR5cGUgPSAicHJlZCIsIHRlcm1zID0gYygiRW5jb2Rpbmdfc3RyZW5ndGhbYWxsXSIsIkpvaW50cmFuayIsICJIaWVyYXJjaHkiKSwgYXhpcy50aXRsZT1jKCJFbmNvZGluZyBzdHJlbmd0aCIsIkluZmVyZW5jZSBwZXJmb3JtYW5jZSIpICkgICsgdGhlbWVfYXBhKGJhc2Vfc2l6ZSA9IDE0KSArIHNjYWxlX3hfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpICsgZ2VvbV92bGluZSh4aW50ZXJjZXB0PTAuNSwgbGluZXR5cGU9ImRhc2hlZCIsIGNvbG9yID0gImdyZXkiLCBzaXplPTAuOCkgKyBnZ3RpdGxlKCJFZmZlY3Qgb2YgRW5jb2Rpbmcgc3RyZW5ndGggb24gQWNjdXJhY3kgYnkgSGllcmFyY2h5IGFuZCBKb2ludHJhbmsiKSAgDQoNCmBgYA0KDQojIyBFeHBlcmltZW50IDI6DQoNCiMjIyBCZWhhdmlvcmFsIHJlc3VsdHMNCg0KYGBge3IgZXhwMiwgaW5jbHVkZT1GQUxTRX0NCmVsbHJlcC5sYWIubGVhcm5pbmcgPC0gcmVhZF9jc3YoImxvcmVuYS10aS1waWxvdC1lbGxyZXAvTGVhcm5pbmdfQmVoMi5jc3YiKSAlPiUgZmlsdGVyKENvbmRpdGlvbj09InByZSIpICU+JSBtdXRhdGUocGFydCA9ICJsZWFybmluZyIsIFJUID0gYXMuY2hhcmFjdGVyKFJUKSkNCg0KZWxscmVwLmxhYi5pbSA8LSByZWFkX2RlbGltKCJsb3JlbmEtdGktcGlsb3QtZWxscmVwL1RfcHJlbWlzZXNfcHJlIC0gY29waWEuY3N2IiwgDQogICAgZGVsaW0gPSAiOyIsIGVzY2FwZV9kb3VibGUgPSBGQUxTRSwgdHJpbV93cyA9IFRSVUUpICU+JSBncm91cF9ieShJRF9TMSxHcm91cF9TMSxTdGltX1MxKQ0KDQoNCmVsbHJlcC5sYWIuaW0uYWdnciA8LSByZWFkX2RlbGltKCJsb3JlbmEtdGktcGlsb3QtZWxscmVwL1RfcHJlbWlzZXNfcHJlIC0gY29waWEuY3N2IiwgDQogICAgZGVsaW0gPSAiOyIsIGVzY2FwZV9kb3VibGUgPSBGQUxTRSwgdHJpbV93cyA9IFRSVUUpICU+JSBncm91cF9ieShJRF9TMSxHcm91cF9TMSxTdGltX1MxKSAlPiUgc3VtbWFyaXNlKG1lYW5JbSA9IG1lYW4oYWNjX1MxKSkNCg0KcmVhZF9jc3YoImxvcmVuYS10aS1waWxvdC1lbGxyZXAvTGVhcm5pbmdfQmVoMi5jc3YiKSAlPiUgZ3JvdXBfYnkoR3JvdXAsQ29uZGl0aW9uKSAlPiUgc3VtbWFyaXNlKG5fZGlzdGluY3QoSUQpKQ0KDQplbGxyZXAubGFiIDwtIHJlYWRfZGVsaW0oImxvcmVuYS10aS1waWxvdC1lbGxyZXAvVF9wcmVtaXNlc19wcmUgLSBjb3BpYS5jc3YiLGRlbGltID0nOycpICU+JSBwaXZvdF9sb25nZXIoDQogICAgY29scyA9IGNvbnRhaW5zKCJfIiksIA0KICAgIG5hbWVzX3RvID0gYygnLnZhbHVlJywgJ3Nlc3Npb24nKSwNCiAgICB2YWx1ZXNfZHJvcF9uYSA9IFRSVUUsDQogICAgbmFtZXNfcGF0dGVybiA9ICcoLiopXFxfKFNcXGQrKScsDQogICAgbmFtZXNfcmVwYWlyID0gInVuaXF1ZSINCiAgKSAlPiUgcmVuYW1lKHNlc3Npb24gPSAic2Vzc2lvbi4uLjEiKSAlPiUgc2VsZWN0KC1zZXNzaW9uLi4uOSkgLT4gZWxscmVwLmxhYi50bXAgDQplbGxyZXAubGFiIDwtIHJiaW5kKGVsbHJlcC5sYWIgLHJlYWRfZGVsaW0oImxvcmVuYS10aS1waWxvdC1lbGxyZXAvVF9pbmZlcmVuY2VzX3ByZSAtIGNvcGlhLmNzdiIsZGVsaW0gPSc7JykscmVhZF9kZWxpbSgibG9yZW5hLXRpLXBpbG90LWVsbHJlcC9UX2FuY2hvcl9wcmUgLSBjb3BpYS5jc3YiLGRlbGltID0nOycpKQ0KDQplbGxyZXAubGFiIDwtIGJpbmRfcm93cyhlbGxyZXAubGFiLGVsbHJlcC5sYWIubGVhcm5pbmcpICU+JSByb3d3aXNlKCkgJT4lIG11dGF0ZShwYXJ0ID0gaWZlbHNlKHNlc3Npb24gPT0gIlMxIiAmJiBpcy5uYShwYXJ0KSwgImltbWVkaWF0ZSB0ZXN0aW5nIixwYXJ0KSkgJT4lIG11dGF0ZShwYXJ0ID0gaWZlbHNlKHNlc3Npb24gPT0gIlMyIiAmJiBpcy5uYShwYXJ0KSwgImRlbGF5ZWQgdGVzdGluZyIscGFydCkpDQoNCiMgU3BsaXQgdGhlICJwYWlyIiBjb2x1bW4gaW50byB0d28gc2VwYXJhdGUgY29sdW1ucw0Kc3BsaXRfZGYgPC0gbGFwcGx5KHN0cnNwbGl0KGVsbHJlcC5sYWIkUGFpciwgIiIpLCBmdW5jdGlvbih4KSB4WzE6Ml0pDQplbGxyZXAubGFiW2MoIlJhbmsxIiwgIlJhbmsyIildIDwtIGRhdGEuZnJhbWUoZG8uY2FsbChyYmluZCwgc3BsaXRfZGYpKQ0KIyBDb252ZXJ0IGVhY2ggbGV0dGVyIHRvIGl0cyBjb3JyZXNwb25kaW5nIHBvc2l0aW9uIGluIHRoZSBhbHBoYWJldA0KZWxscmVwLmxhYiRSYW5rMSA8LSBhcy5udW1lcmljKGNoYXJ0cigiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiLCAiMTIzNDU2Nzg5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNiIsIGVsbHJlcC5sYWIkUmFuazEpKQ0KZWxscmVwLmxhYiRSYW5rMiA8LSBhcy5udW1lcmljKGNoYXJ0cigiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiLCAiMTIzNDU2Nzg5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNiIsIGVsbHJlcC5sYWIkUmFuazIpKQ0KDQplbGxyZXAubGFiICU+JSByZW5hbWUocGFydGljaXBhbnQ9SUQsIGdyb3VwPUdyb3VwLCBwYWlyPVBhaXIsIHBhaXJUeXBlPVBhaXJUeXBlLHN0aW1DYXRlZ29yeT1TdGltKSAlPiUgbXV0YXRlKHNlc3Npb24gPSBmYWN0b3IoIHJlYWRyOjpwYXJzZV9udW1iZXIoYXMuY2hhcmFjdGVyKHNlc3Npb24pKSksc3RpbUNhdGVnb3J5ID0gaWZlbHNlKHN0aW1DYXRlZ29yeT09IkYiLCJmYWNlcyIsaWZlbHNlKHN0aW1DYXRlZ29yeT09Ik8iLCJvYmplY3RzIiwic2NlbmVzIikpLCBwYWlyVHlwZT10b2xvd2VyKHBhaXJUeXBlKSwgZ3JvdXA9dG9sb3dlcihncm91cCksIHBhcnRpY2lwYW50PXRvbG93ZXIocGFydGljaXBhbnQpLCBkaXN0YW5jZSA9IGFicyhSYW5rMS1SYW5rMiksIGpvaW50cmFuaz1SYW5rMStSYW5rMikgLT4gZXhwMi5jb21iaW5lZA0KDQpgYGANCg0KYGBge3IgZTJmMSwgZmlnLmNhcCA9ICJFeHBlcmltZW50IDI6IEJlaGF2aW91cmFsIHBlcmZvcm1hbmNlIn0NCg0KZGF0YSA8LSBleHAyLmNvbWJpbmVkICU+JSBncm91cF9ieShwYXJ0aWNpcGFudCwgZ3JvdXAsIHBhaXJUeXBlLCBwYXJ0LCBzdGltQ2F0ZWdvcnkpICU+JSBzdW1tYXJpc2UobWVhblBlcmYgPSBtZWFuKGFjYykpICU+JSBmaWx0ZXIocGFpclR5cGUgIT0gImFuY2hvciIsIHBhcnQgIT0gImxlYXJuaW5nIikgJT4lIG11dGF0ZShwYXJ0WHBhaXJUeXBlID0gZmFjdG9yKGludGVyYWN0aW9uKHBhcnQsIHBhaXJUeXBlKSwgbGV2ZWxzPWMoImltbWVkaWF0ZSB0ZXN0aW5nLnByZW1pc2UiLCAiZGVsYXllZCB0ZXN0aW5nLnByZW1pc2UiLCAiZGVsYXllZCB0ZXN0aW5nLmluZmVyZW5jZSIpKSkgJT4lIG11dGF0ZSggR3JvdXA9cmVjb2RlKGdyb3VwICwgInNsZWVwIiA9ICJTbGVlcCIsICJ3YWtlIiA9ICJXYWtlIikpICU+JSBtdXRhdGUoR3JvdXA9ZmFjdG9yKEdyb3VwLGxldmVscz1jKCJTbGVlcCIsIldha2UiKSkpICU+JSBtdXRhdGUocGFpclR5cGUgPSAgZmFjdG9yKHN0cl90b190aXRsZShwYWlyVHlwZSksIGxldmVscyA9IGMoIlByZW1pc2UiLCJJbmZlcmVuY2UiKSksIHBhcnQ9ZmFjdG9yKHN0cl90b190aXRsZShwYXJ0KSxsZXZlbHMgPSBjKCJJbW1lZGlhdGUgVGVzdGluZyIsIkRlbGF5ZWQgVGVzdGluZyIpKSkNCg0KZ2dwbG90KGRhdGEsIGFlcyh4ID0gR3JvdXAsIHkgPSBtZWFuUGVyZiwgZmlsbCA9IEdyb3VwKSkgKw0KICBnZW9tX3Zpb2xpbihhbHBoYSA9IDAuNSwgd2lkdGggPSAwLjQsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjc1KSwgDQogICAgICAgICAgICAgIHRyaW0gPSBGQUxTRSwgc2NhbGUgPSAid2lkdGgiKSArDQogIGdlb21fYm94cGxvdChhbHBoYSA9IDAuNSwgb3V0bGllci5zaGFwZSA9IE5BLCB3aWR0aCA9IDAuMiwgDQogICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC43NSkpICsNCiAgbGFicyh4ID0gIkhpZXJhcmNoeSIsIHkgPSAiTWVhbiBwZXJmb3JtYW5jZSIsIGZpbGwgPSAiIikgKw0KICBnZ3RpdGxlKCJQZXJmb3JtYW5jZSIpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0PTAuNSwgbGluZXR5cGU9ImRhc2hlZCIsIA0KICAgICAgICAgICAgICAgIGNvbG9yID0gImdyZXkiLCBzaXplPTAuOCkgKyBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpwZXJjZW50KSsNCiAgc3RhdF9zdW1tYXJ5KGZ1biA9IG1lYW4sIGdlb20gPSAicG9pbnQiLCBzaGFwZT0zLCBzaXplID0gMiwgY29sb3IgPSAiYmxhY2siLCBzdHJva2UgPSAxLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC43NSkpICsgDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKSAgKyB0aGVtZV9hcGEoYmFzZV9zaXplID0gMTQpICsgIGZhY2V0X25lc3RlZCh+IHBhcnQgKyBwYWlyVHlwZSkgKyBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9YygiZmlyZWJyaWNrIiwgImNvcm5mbG93ZXJibHVlIikpDQpgYGANCg0KIyMjIyBFbmNvZGluZyBzdHJlbmd0aA0KDQpgYGB7ciBlMmYyLCBjYXB0aW9uID0gIk1vZGVsIGNvbXBhcmlzb24gbG9va2luZyBhdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBIaWVyYXJjaHkgYW5kIEVuY29kaW5nIHN0cmVuZ3RoIn0NCmV4cDIuY29tYmluZWQuaW1BdmcgPC0gZXhwMi5jb21iaW5lZCAlPiUgZmlsdGVyKHBhcnQgPT0gImltbWVkaWF0ZSB0ZXN0aW5nIikgJT4lIGdyb3VwX2J5KHBhcnRpY2lwYW50LCBncm91cCwgc3RpbUNhdGVnb3J5KSAlPiUgc3VtbWFyaXNlKG1lYW5QcmVtaXNlUGVyZm9ybWFuY2UgPSBtZWFuKGFjYykpDQoNCmV4cDIuaW5mIDwtIGV4cDIuY29tYmluZWQgJT4lIGZpbHRlcihwYXJ0ID09ICJkZWxheWVkIHRlc3RpbmciLCBwYWlyVHlwZT09ImluZmVyZW5jZSIpICU+JSBsZWZ0X2pvaW4oZXhwMi5jb21iaW5lZC5pbUF2ZykgJT4lIG11dGF0ZShBY2N1cmFjeSA9IGFjYykgJT4lIG11dGF0ZShwYXJ0aWNpcGFudCA9IHBhcnRpY2lwYW50LCBFbmNvZGluZ19zdHJlbmd0aCA9bWVhblByZW1pc2VQZXJmb3JtYW5jZSkgJT4lIG11dGF0ZSggR3JvdXA9cmVjb2RlKGdyb3VwICwgInNsZWVwIiA9ICJTbGVlcCIsICJ3YWtlIiA9ICJXYWtlIikpICU+JSBtdXRhdGUoR3JvdXA9ZmFjdG9yKEdyb3VwLGxldmVscz1jKCJTbGVlcCIsIldha2UiKSkpDQoNCm0xIDwtIGdsbWVyKEFjY3VyYWN5IH4gMSArDQogICAgKDEgfCBwYXJ0aWNpcGFudCksIGRhdGEgPSBleHAyLmluZiwgZmFtaWx5ID0gYmlub21pYWwsIGNvbnRyb2wgPSBnbG1lckNvbnRyb2wob3B0aW1pemVyID0gImJvYnlxYSIpKQ0KbTIgPC0gZ2xtZXIoQWNjdXJhY3kgfiBHcm91cCArDQogICAgKDEgfCBwYXJ0aWNpcGFudCksIGRhdGEgPSBleHAyLmluZiwgZmFtaWx5ID0gYmlub21pYWwsIGNvbnRyb2wgPSBnbG1lckNvbnRyb2wob3B0aW1pemVyID0gImJvYnlxYSIpKQ0KbTMgPC0gZ2xtZXIoQWNjdXJhY3kgfiBHcm91cCArIEVuY29kaW5nX3N0cmVuZ3RoICsNCiAgICAoMSB8IHBhcnRpY2lwYW50KSwgZGF0YSA9IGV4cDIuaW5mLCBmYW1pbHkgPSBiaW5vbWlhbCwgY29udHJvbCA9IGdsbWVyQ29udHJvbChvcHRpbWl6ZXIgPSAiYm9ieXFhIikpDQptNCA8LSBnbG1lcihBY2N1cmFjeSB+IEdyb3VwICogRW5jb2Rpbmdfc3RyZW5ndGggKw0KICAgICgxIHwgcGFydGljaXBhbnQpLCBkYXRhID0gZXhwMi5pbmYsIGZhbWlseSA9IGJpbm9taWFsLCBjb250cm9sID0gZ2xtZXJDb250cm9sKG9wdGltaXplciA9ICJib2J5cWEiKSkNCg0KdGFiX21vZGVsKG0xLG0yLG0zLG00KQ0KYGBgDQoNCmBgYHtyIGUyZjMsIGZpZy5jYXA9IlBsb3R0aW5nIG1vZGVsIHByZWRpY3RlZCBpbnRlcmFjdGlvbiBiZXR3ZWVuIEhpZXJhcmNoeSBhbmQgRW5jb2Rpbmcgc3RyZW5ndGgifQ0KbGlicmFyeShzalBsb3QpDQoNCnBsb3RfbW9kZWwobTQsIHR5cGUgPSAicHJlZCIsIHRlcm1zID0gYygiRW5jb2Rpbmdfc3RyZW5ndGhbYWxsXSIsIkdyb3VwIiksIGF4aXMudGl0bGU9YygiRW5jb2Rpbmcgc3RyZW5ndGgiLCJJbmZlcmVuY2UgcGVyZm9ybWFuY2UiKSwgY29sb3JzID0gYygiZmlyZWJyaWNrIiwgImNvcm5mbG93ZXJibHVlIikpICsgdGhlbWVfYXBhKGJhc2Vfc2l6ZSA9IDE0KSArIHNjYWxlX3hfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpICsgZ2VvbV92bGluZSh4aW50ZXJjZXB0PTAuNSwgbGluZXR5cGU9ImRhc2hlZCIsIGNvbG9yID0gImdyZXkiLCBzaXplPTAuOCkNCg0KIyBleHAxLmluZi5zdW1tYXJ5IDwtIGV4cDEuaW5mICU+JSBncm91cF9ieShwYXJ0aWNpcGFudCxIaWVyYXJjaHksRW5jb2Rpbmdfc3RyZW5ndGgpICU+JSBzdW1tYXJpc2UocHJlZGljdGVkPW1lYW4oY29ycikpICU+JSBtdXRhdGUoeD1FbmNvZGluZ19zdHJlbmd0aCwgZ3JvdXBfY29sPUhpZXJhcmNoeSkNCg0KIyB0bXAgPC0gdGliYmxlKGdldF9tb2RlbF9kYXRhKG00LCB0eXBlID0gInByZWQiLCB0ZXJtcyA9IGMoIkVuY29kaW5nX3N0cmVuZ3RoW2FsbF0iLCJIaWVyYXJjaHkiKSkpDQojICMgY3JlYXRlIGEgZ2dwbG90IG9iamVjdA0KIyAjIENyZWF0ZSBnZ3Bsb3Qgb2JqZWN0DQojIGdncGxvdCh0bXAsIGFlcyh4ID0geCwgeSA9IHByZWRpY3RlZCwgY29sb3IgPSBncm91cF9jb2wsZmlsbD1ncm91cF9jb2wpKSArIA0KIyAgIGdlb21fbGluZSgpICsgDQojICAgZ2VvbV9yaWJib24oYWVzKHltaW4gPSBjb25mLmxvdywgeW1heCA9IGNvbmYuaGlnaCksIGFscGhhID0gMC4zKSArDQojICAgeGxhYigiRW5jb2Rpbmcgc3RyZW5ndGgiKSArDQojICAgeWxhYigiSW5mZXJlbmNlIHBlcmZvcm1hbmNlIikgKw0KIyAgIGdndGl0bGUoIkVmZmVjdCBvZiBFbmNvZGluZyBzdHJlbmd0aCBvbiBBY2N1cmFjeSBieSBIaWVyYXJjaHkiKSArIHNjYWxlX3hfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpICsgZ2VvbV92bGluZSh4aW50ZXJjZXB0PTAuNSwgbGluZXR5cGU9ImRhc2hlZCIsIGNvbG9yID0gImdyZXkiLCBzaXplPTAuOCkgKyBnZW9tX3BvaW50KGRhdGE9ZXhwMS5pbmYuc3VtbWFyeSwgYWVzKHggPSB4LCB5ID0gcHJlZGljdGVkLCBjb2xvciA9IGdyb3VwX2NvbCxmaWxsPWdyb3VwX2NvbCksYWxwaGEgPSAwLjUsIHBvc2l0aW9uPXBvc2l0aW9uX2ppdHRlcihoZWlnaHQ9LjAxLCB3aWR0aD0uMDEpKSAgICsgdGhlbWVfYXBhKGJhc2Vfc2l6ZSA9IDE0KSArIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCJmaXJlYnJpY2siLCAiY29ybmZsb3dlcmJsdWUiKSkgKyBsYWJzKGNvbG9yID0gIkhpZXJhcmNoeSIsIGZpbGw9IkhpZXJhcmNoeSIpDQoNCmBgYA0KDQojIyMjIERpc3RhbmNlDQoNCmBgYHtyIGUyZjQsIGNhcHRpb249Ik1vZGVsIGNvbXBhcmlzb24gbG9va2luZyBhdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBIaWVyYXJjaHksIEVuY29kaW5nIHN0cmVuZ3RoIGFuZCBEaXN0YW5jZSJ9DQpleHAyLmluZl9tYXAgPC0gZXhwMi5jb21iaW5lZCAlPiUgZmlsdGVyKHBhcnQgPT0gImRlbGF5ZWQgdGVzdGluZyIsIHBhaXJUeXBlPT0iaW5mZXJlbmNlIikgJT4lIGxlZnRfam9pbihleHAyLmNvbWJpbmVkLmltQXZnKSAlPiUgbXV0YXRlKEFjY3VyYWN5ID0gYWNjKSAlPiUgbXV0YXRlKHBhcnRpY2lwYW50ID0gcGFydGljaXBhbnQsIEVuY29kaW5nX3N0cmVuZ3RoID1tZWFuUHJlbWlzZVBlcmZvcm1hbmNlKSAlPiUgbXV0YXRlKCBHcm91cD1yZWNvZGUoZ3JvdXAgLCAic2xlZXAiID0gIlNsZWVwIiwgIndha2UiID0gIldha2UiKSkgJT4lIG11dGF0ZShHcm91cD1mYWN0b3IoR3JvdXAsbGV2ZWxzPWMoIlNsZWVwIiwiV2FrZSIpKSkgJT4lIG11dGF0ZShEaXN0YW5jZT1kaXN0YW5jZSwgSm9pbnRyYW5rPWpvaW50cmFuaykNCg0KbTEuZCA8LSBnbG1lcihBY2N1cmFjeSB+IEdyb3VwICogRW5jb2Rpbmdfc3RyZW5ndGggKw0KICAgICgxIHwgcGFydGljaXBhbnQpLCBkYXRhID0gZXhwMi5pbmZfbWFwLCBmYW1pbHkgPSBiaW5vbWlhbCwgY29udHJvbCA9IGdsbWVyQ29udHJvbChvcHRpbWl6ZXIgPSAiYm9ieXFhIikpDQoNCm0yLmQgPC0gZ2xtZXIoQWNjdXJhY3kgfiBHcm91cCAqIEVuY29kaW5nX3N0cmVuZ3RoICsgRGlzdGFuY2UgKw0KICAgICgxIHwgcGFydGljaXBhbnQpLCBkYXRhID0gZXhwMi5pbmZfbWFwLCBmYW1pbHkgPSBiaW5vbWlhbCwgY29udHJvbCA9IGdsbWVyQ29udHJvbChvcHRpbWl6ZXIgPSAiYm9ieXFhIikpDQptMy5kIDwtIGdsbWVyKEFjY3VyYWN5IH4gR3JvdXAgKiBFbmNvZGluZ19zdHJlbmd0aCArIERpc3RhbmNlICogR3JvdXAgKw0KICAgICgxIHwgcGFydGljaXBhbnQpLCBkYXRhID0gZXhwMi5pbmZfbWFwLCBmYW1pbHkgPSBiaW5vbWlhbCwgY29udHJvbCA9IGdsbWVyQ29udHJvbChvcHRpbWl6ZXIgPSAiYm9ieXFhIikpDQptNC5kIDwtIGdsbWVyKEFjY3VyYWN5IH4gR3JvdXAgKiBFbmNvZGluZ19zdHJlbmd0aCAqIERpc3RhbmNlICsNCiAgICAoMSB8IHBhcnRpY2lwYW50KSwgZGF0YSA9IGV4cDIuaW5mX21hcCwgZmFtaWx5ID0gYmlub21pYWwsIGNvbnRyb2wgPSBnbG1lckNvbnRyb2wob3B0aW1pemVyID0gImJvYnlxYSIpKQ0KDQp0YWJfbW9kZWwobTEuZCxtMi5kLG0zLmQsbTQuZCkNCiNhbm92YShtMS5kLG0yLmQsbTMuZCxtNC5kKSAjIG0zIHdpbnMNCmBgYA0KDQpgYGB7ciBlMmY1LCBmaWcuY2FwPSJQbG90dGluZyBtb2RlbCBwcmVkaWN0ZWQgaW50ZXJhY3Rpb24gYmV0d2VlbiBIaWVyYXJjaHkgYW5kIERpc3RhbmNlIn0NCg0KcGxvdF9tb2RlbChtMy5kLHR5cGUgPSAicHJlZCIsdGVybXMgPSBjKCJEaXN0YW5jZSIsIkdyb3VwIikpICArIHRoZW1lX2FwYShiYXNlX3NpemUgPSAxNCkgICsgZ2d0aXRsZSgiRWZmZWN0IG9mIERpc3RhbmNlIG9uIEFjY3VyYWN5IGJ5IEhpZXJhcmNoeSIpICsgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcz1zZXEoMiwgMywgMSkpDQoNCmBgYA0KDQojIyMjIEpvaW50cmFuaw0KDQpgYGB7ciBlMmY2LCBjYXB0aW9uPSJNb2RlbCBjb21wYXJpc29uIGxvb2tpbmcgYXQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gSGllcmFyY2h5LCBFbmNvZGluZyBzdHJlbmd0aCBhbmQgSm9pbnRyYW5rIn0NCm0xLmogPC0gZ2xtZXIoQWNjdXJhY3kgfiBHcm91cCAqIEVuY29kaW5nX3N0cmVuZ3RoICsNCiAgICAoMSB8IHBhcnRpY2lwYW50KSwgZGF0YSA9IGV4cDIuaW5mX21hcCwgZmFtaWx5ID0gYmlub21pYWwsIGNvbnRyb2wgPSBnbG1lckNvbnRyb2wob3B0aW1pemVyID0gImJvYnlxYSIpKQ0KbTIuaiA8LSBnbG1lcihBY2N1cmFjeSB+IEdyb3VwICogRW5jb2Rpbmdfc3RyZW5ndGggKyBKb2ludHJhbmsgKw0KICAgICgxIHwgcGFydGljaXBhbnQpLCBkYXRhID0gZXhwMi5pbmZfbWFwLCBmYW1pbHkgPSBiaW5vbWlhbCwgY29udHJvbCA9IGdsbWVyQ29udHJvbChvcHRpbWl6ZXIgPSAiYm9ieXFhIikpDQptMy5qIDwtIGdsbWVyKEFjY3VyYWN5IH4gR3JvdXAgKiBFbmNvZGluZ19zdHJlbmd0aCArIEpvaW50cmFuayAqIEdyb3VwICsNCiAgICAoMSB8IHBhcnRpY2lwYW50KSwgZGF0YSA9IGV4cDIuaW5mX21hcCwgZmFtaWx5ID0gYmlub21pYWwsIGNvbnRyb2wgPSBnbG1lckNvbnRyb2wob3B0aW1pemVyID0gImJvYnlxYSIpKQ0KbTQuaiA8LSBnbG1lcihBY2N1cmFjeSB+IEdyb3VwICogRW5jb2Rpbmdfc3RyZW5ndGggKiBKb2ludHJhbmsgKw0KICAgICgxIHwgcGFydGljaXBhbnQpLCBkYXRhID0gZXhwMi5pbmZfbWFwLCBmYW1pbHkgPSBiaW5vbWlhbCwgY29udHJvbCA9IGdsbWVyQ29udHJvbChvcHRpbWl6ZXIgPSAiYm9ieXFhIikpDQptNS5qIDwtIGdsbWVyKEFjY3VyYWN5IH4gR3JvdXAgKiBFbmNvZGluZ19zdHJlbmd0aCAqIEpvaW50cmFuayArDQogICAgKDEgfCBwYXJ0aWNpcGFudCksIGRhdGEgPSBleHAyLmluZl9tYXAsIGZhbWlseSA9IGJpbm9taWFsLCBjb250cm9sID0gZ2xtZXJDb250cm9sKG9wdGltaXplciA9ICJib2J5cWEiKSkNCg0KdGFiX21vZGVsKG0xLmosbTIuaixtMy5qLG00LmosbTUuaikNCiNhbm92YShtMS5qLG0yLmosbTMuaixtNC5qKSAjbTQgd2lucw0KYGBgDQoNCmBgYHtyIGUyZjcsIGZpZy5jYXA9IlBsb3R0aW5nIG1vZGVsIHByZWRpY3RlZCBpbnRlcmFjdGlvbiBiZXR3ZWVuIEhpZXJhcmNoeSwgRW5jb2Rpbmcgc3RyZW5ndGggYW5kIEpvaW50cmFuayJ9DQoNCiMgcGxvdF9tb2RlbChtMy5qLCB0eXBlID0gInByZWQiLCB0ZXJtcyA9IGMoIkpvaW50cmFua1s2LDcsOF0iLCAiSGllcmFyY2h5IiksYXhpcy50aXRsZT1jKCJJbmZlcmVuY2UgcGVyZm9ybWFuY2UiKSkgICsgdGhlbWVfYXBhKGJhc2Vfc2l6ZSA9IDE0KSArIGdndGl0bGUoIkVmZmVjdCBvZiBKb2ludHJhbmsgb24gQWNjdXJhY3kgYnkgSGllcmFyY2h5IikgKyBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzPXNlcSg2LCA4LCAxKSkNCg0KcGxvdF9tb2RlbChtNC5qLCB0eXBlID0gInByZWQiLCB0ZXJtcyA9IGMoIkVuY29kaW5nX3N0cmVuZ3RoW2FsbF0iLCJKb2ludHJhbmsiLCAiR3JvdXAiKSwgYXhpcy50aXRsZT1jKCJFbmNvZGluZyBzdHJlbmd0aCIsIkluZmVyZW5jZSBwZXJmb3JtYW5jZSIpICkgICsgdGhlbWVfYXBhKGJhc2Vfc2l6ZSA9IDE0KSArIHNjYWxlX3hfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpICsgZ2VvbV92bGluZSh4aW50ZXJjZXB0PTAuNSwgbGluZXR5cGU9ImRhc2hlZCIsIGNvbG9yID0gImdyZXkiLCBzaXplPTAuOCkgKyBnZ3RpdGxlKCJFZmZlY3Qgb2YgRW5jb2Rpbmcgc3RyZW5ndGggb24gQWNjdXJhY3kgYnkgSGllcmFyY2h5IGFuZCBKb2ludHJhbmsiKSAgDQoNCmBgYA0KDQojIERpc2N1c3Npb24NCg0KIyBNYXRlcmlhbHMgYW5kIE1ldGhvZHMNCg0KIyMgUGFydGljaXBhbnRzDQoNCiMjIFByb2NlZHVyZQ0KDQojIyMgRXhwZXJpbWVudCAxDQoNCiMjIyBFeHBlcmltZW50IDINCg0KIyMgU3RpbXVsaQ0KDQojIyBTdGF0aXN0aWNhbCBhbmFseXNlcw0KDQojIyBCZWhhdmlvcmFsIGFuYWx5c2VzDQo=