{"incidents":[],"invalidated":false,"decision_mode":"provisional_reward_v2","required_api_capability":"competition.reward.v2.runtime-blob.v1","seal":{"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","environment":"main","competition_id":"sim-latency-season-1","season_id":"sim-latency-production-20261028-r2","epoch":1,"sealed_at":"2026-11-07T23:02:10.137364Z","publication_at":"2026-11-07T23:02:10.137364Z","source_choice_at":"2026-11-07T23:02:10.137364Z","policy_sha256":"f47edb14422afca61d0ad252f6954e97f1301a18f15350d3a8b9fc4f704eb998","baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_raw_score":19556.11259999998,"takeover_margin":0.269,"inventory_sha256":"40c9f0442360af13e4a12b43ca647721786b53b496fd467c4576552780396f3c","ranking_sha256":"2191b3a8b63d726acbd36f9d4e5fd7adee732d9c0f7e296bd807b8e41b44fa1b","seal_sha256":"d30784937500bdbd2cd15551c79e6ac317a95367f6256fd5a943756360d9fb54","terminal_counts":{"succeeded":69},"entries":[{"job_id":"01a18d92-598a-3def-3a23-132b3e3cc85e","patch_sha256":"a54a0d07c9fcc9cfe86a8a2b7d3d3ae5ed9ca5cfa79f7344f58fe2f541704a9f","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-30T16:09:00.992183Z","started_at":"2026-11-01T09:06:42.820244Z","completed_at":"2026-11-01T10:31:02.29225Z","score":{"score_schema":1,"raw_score":5330.191549999998,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3652485261,"candidate_requests":2964,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0904900813970875}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":39.53892822265621,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9349277777777778,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":5366.824172222222,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":34264.68532370362,"observed_improvement_percent":71.86954772632913,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.423121068076306,"required_improvement_percent":26.900000000000002,"one_sided_p_value":2.770130542109681e-7,"welch_t":14.167782976904402,"welch_degrees_of_freedom":8.0653008084269,"statistically_significant":true,"next_epoch_minimum_improvement_percent":3.0234803592241137,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0904900813970875,"findproviders_load_p95_ms":39.53892822265621,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9349277777777778,"raw_score":5330.191549999998,"received_bytes":3652485261,"request_count":2964,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.0904900813970875,"evaluation_id":"candidate-01-01a18d92","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.53892822265621,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9393888888888889,"findproviders_samples":218,"provider_egress_bytes":4072218666,"raw_score":5222.7041,"received_bytes":3734301426,"request_count":3003,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1040041201681887,"evaluation_id":"candidate-02-01a18d92","findproviders_empty_pools":0,"findproviders_load_p95_ms":50.68888702392576,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398111111111112,"findproviders_samples":218,"provider_egress_bytes":4072194126,"raw_score":5379.8607,"received_bytes":3688567870,"request_count":2967,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1192147740326455,"evaluation_id":"candidate-03-01a18d92","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.5459337234497,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9367055555555556,"findproviders_samples":218,"provider_egress_bytes":4072199610,"raw_score":5330.191549999998,"received_bytes":3638443402,"request_count":2940,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1240184393998025,"evaluation_id":"candidate-04-01a18d92","findproviders_empty_pools":0,"findproviders_load_p95_ms":51.05449333190917,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398944444444445,"findproviders_samples":218,"provider_egress_bytes":4105460783,"raw_score":5302.08075,"received_bytes":3652485261,"request_count":2966,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1253569291451992,"evaluation_id":"candidate-05-01a18d92","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.91315612792968,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9401666666666667,"findproviders_samples":218,"provider_egress_bytes":4105465171,"raw_score":5406.152,"received_bytes":3648144926,"request_count":2951,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1063893013870807,"evaluation_id":"candidate-06-01a18d92","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.693528747558524,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9394833333333333,"findproviders_samples":218,"provider_egress_bytes":4072175686,"raw_score":5329.577,"received_bytes":3680599298,"request_count":2976,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.108091417589953,"evaluation_id":"candidate-07-01a18d92","findproviders_empty_pools":0,"findproviders_load_p95_ms":50.832479667663485,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394611111111111,"findproviders_samples":218,"provider_egress_bytes":4072205086,"raw_score":5668.98495,"received_bytes":3674972138,"request_count":2964,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1180769078455766,"evaluation_id":"candidate-08-01a18d92","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.65722980499264,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9387555555555556,"findproviders_samples":218,"provider_egress_bytes":4072101990,"raw_score":5056.3137,"received_bytes":3642058933,"request_count":2958,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1283427786418538,"evaluation_id":"candidate-09-01a18d92","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.98562192916869,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9349277777777778,"findproviders_samples":218,"provider_egress_bytes":4072244026,"raw_score":5605.552799999996,"received_bytes":3609048689,"request_count":2934,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"19af7e05638e082cfbbdfb37e93b74709f52de5c0e50b39214891cf5c5aed8ac","artifact_manifest_sha256":"3dd6a094ef99cc5b6d5c6f744ed4c22801913de0f388171a1c641501b3820d12","rank":1,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a18ef7-f6c0-7cd5-0e5e-56f8adeae7c3","patch_sha256":"6c74d59d4dd55c042080d63b765a7c7cdbb14199ddabc9bf8ae7141215d1dd9e","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-30T22:39:37.543701Z","started_at":"2026-11-01T10:31:09.014413Z","completed_at":"2026-11-01T11:55:21.433458Z","score":{"score_schema":1,"raw_score":5373.08525,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3682334355,"candidate_requests":2971,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0854337754433048}},"G4_matchmaking":{"passed":false,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":46.537122917175296,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9354666666666667,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":5366.108516666666,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":123854.72596499894,"observed_improvement_percent":71.87329886737716,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.44790069474215,"required_improvement_percent":26.900000000000002,"one_sided_p_value":2.3541965084119644e-7,"welch_t":14.093826083801327,"welch_degrees_of_freedom":8.235991910718743,"statistically_significant":true,"next_epoch_minimum_improvement_percent":5.7490751472448665,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0854337754433048,"findproviders_load_p95_ms":46.537122917175296,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9354666666666667,"raw_score":5373.08525,"received_bytes":3682334355,"request_count":2971,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.093287139120028,"evaluation_id":"candidate-01-01a18ef7","findproviders_empty_pools":0,"findproviders_load_p95_ms":47.747097206115576,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9396388888888889,"findproviders_samples":218,"provider_egress_bytes":4072225626,"raw_score":5130.364,"received_bytes":3724753983,"request_count":2991,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.117272322785626,"evaluation_id":"candidate-02-01a18ef7","findproviders_empty_pools":0,"findproviders_load_p95_ms":46.537122917175296,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397666666666666,"findproviders_samples":218,"provider_egress_bytes":4072369647,"raw_score":5886.161600000002,"received_bytes":3644921264,"request_count":2943,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1252319016051278,"evaluation_id":"candidate-03-01a18ef7","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.99911060333244,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9392944444444444,"findproviders_samples":218,"provider_egress_bytes":4072309918,"raw_score":5277.06795,"received_bytes":3619085019,"request_count":2904,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0854337754433048,"evaluation_id":"candidate-04-01a18ef7","findproviders_empty_pools":0,"findproviders_load_p95_ms":46.43547039031976,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395611111111111,"findproviders_samples":218,"provider_egress_bytes":4072191666,"raw_score":4870.522699999999,"received_bytes":3751672150,"request_count":3012,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1087092205336195,"evaluation_id":"candidate-05-01a18ef7","findproviders_empty_pools":0,"findproviders_load_p95_ms":48.30497932434075,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9391111111111111,"findproviders_samples":218,"provider_egress_bytes":4072267794,"raw_score":5870.411,"received_bytes":3672980903,"request_count":2961,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0981029979229902,"evaluation_id":"candidate-06-01a18ef7","findproviders_empty_pools":0,"findproviders_load_p95_ms":44.45066242218012,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394166666666667,"findproviders_samples":218,"provider_egress_bytes":4072236762,"raw_score":4988.4292499999965,"received_bytes":3708428781,"request_count":3000,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1028947713897332,"evaluation_id":"candidate-07-01a18ef7","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.31002845764154,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9354666666666667,"findproviders_samples":218,"provider_egress_bytes":4072262178,"raw_score":5435.9605,"received_bytes":3692339726,"request_count":2971,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.121715363305764,"evaluation_id":"candidate-08-01a18ef7","findproviders_empty_pools":0,"findproviders_load_p95_ms":49.18404388427732,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392611111111111,"findproviders_samples":218,"provider_egress_bytes":4072311038,"raw_score":5462.9744,"received_bytes":3630431722,"request_count":2928,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1058953906427653,"evaluation_id":"candidate-09-01a18ef7","findproviders_empty_pools":0,"findproviders_load_p95_ms":48.754615592956526,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399277777777778,"findproviders_samples":218,"provider_egress_bytes":4072276590,"raw_score":5373.08525,"received_bytes":3682334355,"request_count":2976,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"09b6d38308f20e5afe668e2ec62dfecce2dfad5988c874111f46a120414a4225","artifact_manifest_sha256":"d884e40d2119519a7380883622497d436d0b4b2a7d417652fae9c4d77a7db3ad","rank":2,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a9e1-ca26-ab2a-d712-45f54ff04a7b","patch_sha256":"83df2408bfa3c4779dbea3396162fe83a642bc5c58d37d01f52c1eff316f5149","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-05T04:05:09.255634Z","started_at":"2026-11-06T15:36:21.418875Z","completed_at":"2026-11-07T06:55:05.325236Z","score":{"score_schema":1,"raw_score":5592.229349999993,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3775507768,"candidate_requests":3060,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0673437933646224}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":29.07329683303832,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9358833333333333,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":5663.885933333327,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":701493.8064189442,"observed_improvement_percent":70.31248503429605,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.6214342575758,"required_improvement_percent":26.900000000000002,"one_sided_p_value":1.0889352963514752e-7,"welch_t":13.342831510244197,"welch_degrees_of_freedom":9.327642893434167,"statistically_significant":true,"next_epoch_minimum_improvement_percent":12.962792438577422,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0673437933646224,"findproviders_load_p95_ms":29.07329683303832,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9358833333333333,"raw_score":5592.229349999993,"received_bytes":3775507768,"request_count":3060,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.0698199782677016,"evaluation_id":"candidate-01-01a1a9e1","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.168736076354982,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9358833333333333,"findproviders_samples":218,"provider_egress_bytes":4073173850,"raw_score":5904.7128,"received_bytes":3807345098,"request_count":3075,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0673437933646224,"evaluation_id":"candidate-02-01a1a9e1","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.88412246704101,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9394944444444444,"findproviders_samples":218,"provider_egress_bytes":4076567629,"raw_score":5592.229349999993,"received_bytes":3819357600,"request_count":3084,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1121973828514768,"evaluation_id":"candidate-03-01a1a9e1","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.29037704467773,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9392944444444444,"findproviders_samples":218,"provider_egress_bytes":4074384753,"raw_score":6095.128799999963,"received_bytes":3663364809,"request_count":2965,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0791154423073088,"evaluation_id":"candidate-04-01a1a9e1","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.617538928985592,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9389055555555555,"findproviders_samples":218,"provider_egress_bytes":4074208735,"raw_score":4972.149949999989,"received_bytes":3775507768,"request_count":3060,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0819893970450871,"evaluation_id":"candidate-05-01a1a9e1","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.07329683303832,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.93935,"findproviders_samples":218,"provider_egress_bytes":4075236154,"raw_score":5133.058899999999,"received_bytes":3766428918,"request_count":3039,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0881729334761014,"evaluation_id":"candidate-06-01a1a9e1","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.588124847412104,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394166666666667,"findproviders_samples":218,"provider_egress_bytes":4074872249,"raw_score":4946.833500000001,"received_bytes":3744691789,"request_count":3031,"resource_findings":[],"stability_findings":[],"success_rate":0.999670075882547},{"accounting_coverage":1.1125790277130887,"evaluation_id":"candidate-07-01a1a9e1","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.160492038726797,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9395111111111111,"findproviders_samples":218,"provider_egress_bytes":4074137373,"raw_score":5116.899,"received_bytes":3661885827,"request_count":2961,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.074280182801642,"evaluation_id":"candidate-08-01a1a9e1","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.789198112487785,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93915,"findproviders_samples":218,"provider_egress_bytes":4073851536,"raw_score":7609.5666999999985,"received_bytes":3792168562,"request_count":3072,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0738248379105908,"evaluation_id":"candidate-09-01a1a9e1","findproviders_empty_pools":0,"findproviders_load_p95_ms":24.885014533996532,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9392666666666667,"findproviders_samples":218,"provider_egress_bytes":4073364563,"raw_score":5604.394399999998,"received_bytes":3793323100,"request_count":3060,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"b5edabb179288f36b755959c047127e86ee6e66972db745d37d583a2a533fba7","artifact_manifest_sha256":"ad9f7c7f2cdfeee7d54c318bf20094dbb86ac6b15c18ccd43c99244d2572334f","rank":3,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a512-cbb1-f62d-6fc5-6f4d23faa3cf","patch_sha256":"3f8585138fe8aebb93b95664bc289102c3e5b4b0eadc88da3213f8d55a0e4d9a","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-04T05:40:34.628269Z","started_at":"2026-11-06T02:17:20.233588Z","completed_at":"2026-11-07T04:09:41.009534Z","score":{"score_schema":1,"raw_score":6108.663599999995,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3629916307,"candidate_requests":2940,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.091495811072063}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.463048171997052,"candidate_pool_p05":2547.85,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9389833333333333,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":6044.143216666664,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":116839.97857822248,"observed_improvement_percent":68.3193492397811,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.445936891236894,"required_improvement_percent":26.900000000000002,"one_sided_p_value":3.561109634334555e-7,"welch_t":13.402441583098966,"welch_degrees_of_freedom":8.222631393103581,"statistically_significant":true,"next_epoch_minimum_improvement_percent":4.957493265734837,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.091495811072063,"findproviders_load_p95_ms":31.463048171997052,"findproviders_pool_p05":2547.85,"findproviders_sample_span_fraction":0.9389833333333333,"raw_score":6108.663599999995,"received_bytes":3629916307,"request_count":2940,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1320024719730788,"evaluation_id":"candidate-01-01a1a512","findproviders_empty_pools":0,"findproviders_load_p95_ms":47.23208580017086,"findproviders_pool_p05":2549,"findproviders_sample_span_fraction":0.9389833333333333,"findproviders_samples":218,"provider_egress_bytes":4072179622,"raw_score":6196.244,"received_bytes":3597323966,"request_count":2916,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1078939067845188,"evaluation_id":"candidate-02-01a1a512","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.925685310363765,"findproviders_pool_p05":2547.85,"findproviders_sample_span_fraction":0.9395,"findproviders_samples":218,"provider_egress_bytes":4072246242,"raw_score":5622.554599999999,"received_bytes":3675664445,"request_count":2964,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1194789775803489,"evaluation_id":"candidate-03-01a1a512","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.88686904907218,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9391111111111111,"findproviders_samples":218,"provider_egress_bytes":4062657190,"raw_score":6439.160449999985,"received_bytes":3629060725,"request_count":2930,"resource_findings":[],"stability_findings":[],"success_rate":0.9993174061433447},{"accounting_coverage":1.1401107297724742,"evaluation_id":"candidate-04-01a1a512","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.433397102355954,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9397333333333333,"findproviders_samples":218,"provider_egress_bytes":4072143498,"raw_score":6108.663599999995,"received_bytes":3571708775,"request_count":2889,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1218441004127537,"evaluation_id":"candidate-05-01a1a512","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.565360260009733,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9389833333333333,"findproviders_samples":218,"provider_egress_bytes":4072200194,"raw_score":6070.4045,"received_bytes":3629916307,"request_count":2946,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.091495811072063,"evaluation_id":"candidate-06-01a1a512","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.19310169219967,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9399166666666666,"findproviders_samples":218,"provider_egress_bytes":4105385179,"raw_score":5504.0862,"received_bytes":3761246848,"request_count":3017,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1021172527521188,"evaluation_id":"candidate-07-01a1a512","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.463048171997052,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395888888888889,"findproviders_samples":218,"provider_egress_bytes":4072179934,"raw_score":6331.527499999999,"received_bytes":3694869964,"request_count":2979,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1202505310173296,"evaluation_id":"candidate-08-01a1a512","findproviders_empty_pools":0,"findproviders_load_p95_ms":25.633791160583495,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9394944444444444,"findproviders_samples":218,"provider_egress_bytes":4072165018,"raw_score":5747.645899999999,"received_bytes":3635048505,"request_count":2940,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1362422715734692,"evaluation_id":"candidate-09-01a1a512","findproviders_empty_pools":0,"findproviders_load_p95_ms":50.23943023681639,"findproviders_pool_p05":2549,"findproviders_sample_span_fraction":0.9396277777777777,"findproviders_samples":218,"provider_egress_bytes":4072106770,"raw_score":6377.002200000001,"received_bytes":3583836715,"request_count":2913,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"8211a5dd62e02bf15a6b1a31dd473b20f2ff7824d0736939452fd795a9df2098","artifact_manifest_sha256":"494ca5e70848ffc592d2ab11ebf2905155c6a9b97e035c032867be043aa3be3c","rank":4,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a467-a555-0533-6db4-fd546a9fa8b9","patch_sha256":"6d81be8001c816117b4b097ea7519ea2eea7708ac8383b40a840b988526f2f58","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-04T02:33:38.327059Z","started_at":"2026-11-05T09:44:52.484657Z","completed_at":"2026-11-05T11:10:07.990396Z","score":{"score_schema":1,"raw_score":6190.16815,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3624127976,"candidate_requests":2925,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0823326578613968}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":28.739171504974347,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9388277777777778,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":6188.243155555555,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":61795.26367375413,"observed_improvement_percent":67.56404287544488,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.430665201718929,"required_improvement_percent":26.900000000000002,"one_sided_p_value":4.2693230974536743e-7,"welch_t":13.297334164603786,"welch_degrees_of_freedom":8.117763500136526,"statistically_significant":true,"next_epoch_minimum_improvement_percent":3.521367646439202,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0823326578613968,"findproviders_load_p95_ms":28.739171504974347,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9388277777777778,"raw_score":6190.16815,"received_bytes":3624127976,"request_count":2925,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1538562225599827,"evaluation_id":"candidate-01-01a1a467","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.150482177734375,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9388277777777778,"findproviders_samples":218,"provider_egress_bytes":4072369538,"raw_score":6111.501349999996,"received_bytes":3529356135,"request_count":2862,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1126946878892683,"evaluation_id":"candidate-02-01a1a467","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.826762485504144,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9401,"findproviders_samples":218,"provider_egress_bytes":4105566571,"raw_score":6367.717,"received_bytes":3689751210,"request_count":2951,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.138771356410762,"evaluation_id":"candidate-03-01a1a467","findproviders_empty_pools":0,"findproviders_load_p95_ms":26.843282794952376,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9397833333333333,"findproviders_samples":218,"provider_egress_bytes":4072278370,"raw_score":6190.16815,"received_bytes":3576028100,"request_count":2904,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1085921977324786,"evaluation_id":"candidate-04-01a1a467","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.309252357482876,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9399388888888889,"findproviders_samples":218,"provider_egress_bytes":4105598035,"raw_score":6414.75425,"received_bytes":3703433998,"request_count":2996,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.151067490109085,"evaluation_id":"candidate-05-01a1a467","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.81130180358886,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9396555555555556,"findproviders_samples":218,"provider_egress_bytes":4072299610,"raw_score":6519.4325,"received_bytes":3537846082,"request_count":2871,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1304898262666885,"evaluation_id":"candidate-06-01a1a467","findproviders_empty_pools":0,"findproviders_load_p95_ms":25.57656154632565,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9389,"findproviders_samples":218,"provider_egress_bytes":4072141430,"raw_score":5759.29,"received_bytes":3602103562,"request_count":2925,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.132842071303279,"evaluation_id":"candidate-07-01a1a467","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.98217153549169,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9401,"findproviders_samples":218,"provider_egress_bytes":4105564643,"raw_score":6088.035699999999,"received_bytes":3624127976,"request_count":2924,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0823326578613968,"evaluation_id":"candidate-08-01a1a467","findproviders_empty_pools":0,"findproviders_load_p95_ms":25.58346281051634,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9398333333333333,"findproviders_samples":218,"provider_egress_bytes":4072216546,"raw_score":5906.759249999999,"received_bytes":3762444491,"request_count":3024,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1073158599937027,"evaluation_id":"candidate-09-01a1a467","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.739171504974347,"findproviders_pool_p05":2547.85,"findproviders_sample_span_fraction":0.9400777777777778,"findproviders_samples":218,"provider_egress_bytes":4105520319,"raw_score":6336.530199999999,"received_bytes":3707632544,"request_count":2987,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"62d14d900b87b66e5a9df19aeaa48d0572001c2bafa7b58601fd9a5912170aff","artifact_manifest_sha256":"05ceb57dbfcd79019046dc84e36b02aa13a6f2cfa55e090eb46865141d8233d6","rank":5,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a6bf-2efb-6e93-390b-dbff8eb76ec8","patch_sha256":"4f87f5499a5bf8ce54fd10a934b353a865b9f9c8bc5b1e9491372c97bf9c1995","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-04T13:28:29.480731Z","started_at":"2026-11-06T09:49:06.659308Z","completed_at":"2026-11-06T11:14:31.801482Z","score":{"score_schema":1,"raw_score":6251.399299999996,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3618539532,"candidate_requests":2908,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1055858653899477}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":30.789101505279532,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9372555555555555,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":6302.599072222223,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":58673.76274222293,"observed_improvement_percent":66.96464115241963,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.429806631297152,"required_improvement_percent":26.900000000000002,"one_sided_p_value":4.6006759900582863e-7,"welch_t":13.181798313643185,"welch_degrees_of_freedom":8.111815438900988,"statistically_significant":true,"next_epoch_minimum_improvement_percent":3.3690187966500535,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1055858653899477,"findproviders_load_p95_ms":30.789101505279532,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9372555555555555,"raw_score":6251.399299999996,"received_bytes":3618539532,"request_count":2908,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1221424578106574,"evaluation_id":"candidate-01-01a1a6bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.21501817703246,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9372555555555555,"findproviders_samples":218,"provider_egress_bytes":4072194414,"raw_score":6070.199399999996,"received_bytes":3628946027,"request_count":2904,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1254174171614384,"evaluation_id":"candidate-02-01a1a6bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.407440376281734,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394944444444444,"findproviders_samples":218,"provider_egress_bytes":4072367414,"raw_score":6298.1184,"received_bytes":3618539532,"request_count":2928,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1352217039270485,"evaluation_id":"candidate-03-01a1a6bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.5125726699829,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9400555555555555,"findproviders_samples":218,"provider_egress_bytes":4105569579,"raw_score":6845.639300000001,"received_bytes":3616535488,"request_count":2908,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1181471833362655,"evaluation_id":"candidate-04-01a1a6bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.71569442749023,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9398888888888889,"findproviders_samples":218,"provider_egress_bytes":4105600839,"raw_score":6457.137000000001,"received_bytes":3671789278,"request_count":2966,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1055858653899477,"evaluation_id":"candidate-05-01a1a6bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.533753776550274,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9390944444444445,"findproviders_samples":218,"provider_egress_bytes":4072303442,"raw_score":6367.722850000001,"received_bytes":3683389567,"request_count":2958,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1386470625584981,"evaluation_id":"candidate-06-01a1a6bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":41.895583724975566,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9396055555555556,"findproviders_samples":218,"provider_egress_bytes":4072300154,"raw_score":6161.644450000001,"received_bytes":3576437588,"request_count":2898,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1405603598283298,"evaluation_id":"candidate-07-01a1a6bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.832389831542937,"findproviders_pool_p05":2546.85,"findproviders_sample_span_fraction":0.9404888888888889,"findproviders_samples":218,"provider_egress_bytes":4105646603,"raw_score":6051.5392,"received_bytes":3599674991,"request_count":2897,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1118418276871642,"evaluation_id":"candidate-08-01a1a6bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.7808292388916,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9403166666666667,"findproviders_samples":218,"provider_egress_bytes":4105573395,"raw_score":6219.991750000001,"received_bytes":3692587644,"request_count":2978,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1362488166983882,"evaluation_id":"candidate-09-01a1a6bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.789101505279532,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9396055555555556,"findproviders_samples":218,"provider_egress_bytes":4072351310,"raw_score":6251.399299999996,"received_bytes":3584031288,"request_count":2895,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"004d2373844c572545a4da8914e65173076a73c43947e4f3344dbe05f4d45d67","artifact_manifest_sha256":"4040639445020d67e64084b922bfc5edfa06b001642c4beafbc546cc236defbd","rank":6,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a18c78-335b-e7e7-9e68-ea28fdc441da","patch_sha256":"66115e6a49db74e37c729d72f8e2728a5b8258c2e9983ddda537031c7082e735","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-30T11:00:50.073555Z","started_at":"2026-11-01T04:48:10.372576Z","completed_at":"2026-11-01T06:13:45.691016Z","score":{"score_schema":1,"raw_score":6517.956699999996,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3672287808,"candidate_requests":2961,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0975741004274524}},"G4_matchmaking":{"passed":false,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":49.13933372497556,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9350277777777778,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":6417.8536055555505,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":180587.462871963,"observed_improvement_percent":66.36052928938558,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.463925573795375,"required_improvement_percent":26.900000000000002,"one_sided_p_value":4.0332677963608597e-7,"welch_t":12.96969915548717,"welch_degrees_of_freedom":8.34400578197589,"statistically_significant":true,"next_epoch_minimum_improvement_percent":5.804370643017683,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0975741004274524,"findproviders_load_p95_ms":49.13933372497556,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9350277777777778,"raw_score":6517.956699999996,"received_bytes":3672287808,"request_count":2961,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1116925342578339,"evaluation_id":"candidate-01-01a18c78","findproviders_empty_pools":0,"findproviders_load_p95_ms":54.43297462463374,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9394333333333333,"findproviders_samples":218,"provider_egress_bytes":4071956210,"raw_score":6759.141,"received_bytes":3662843893,"request_count":2961,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.108459246339232,"evaluation_id":"candidate-02-01a18c78","findproviders_empty_pools":0,"findproviders_load_p95_ms":55.493902969360285,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9396777777777777,"findproviders_samples":218,"provider_egress_bytes":4071936320,"raw_score":6940.170999999996,"received_bytes":3673510175,"request_count":2949,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1226676835466263,"evaluation_id":"candidate-03-01a18c78","findproviders_empty_pools":0,"findproviders_load_p95_ms":49.13933372497556,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392,"findproviders_samples":218,"provider_egress_bytes":4071886674,"raw_score":5771.523699999991,"received_bytes":3626974156,"request_count":2910,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0975741004274524,"evaluation_id":"candidate-04-01a18c78","findproviders_empty_pools":0,"findproviders_load_p95_ms":52.14201259613029,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9397666666666666,"findproviders_samples":218,"provider_egress_bytes":4071918286,"raw_score":6051.976949999998,"received_bytes":3709925630,"request_count":3012,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1192468414987076,"evaluation_id":"candidate-05-01a18c78","findproviders_empty_pools":0,"findproviders_load_p95_ms":49.30173912048338,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393166666666667,"findproviders_samples":218,"provider_egress_bytes":4071929878,"raw_score":6517.956699999996,"received_bytes":3638098163,"request_count":2955,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.100509671967796,"evaluation_id":"candidate-06-01a18c78","findproviders_empty_pools":0,"findproviders_load_p95_ms":46.33504905700681,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9350277777777778,"findproviders_samples":218,"provider_egress_bytes":4069881395,"raw_score":6557.2885,"received_bytes":3698178670,"request_count":2976,"resource_findings":[],"stability_findings":[],"success_rate":0.9996639784946236},{"accounting_coverage":1.1084583203068492,"evaluation_id":"candidate-07-01a18c78","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.46244831085205,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93985,"findproviders_samples":218,"provider_egress_bytes":4072049446,"raw_score":6911.4716,"received_bytes":3673615301,"request_count":2967,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.13708820428813,"evaluation_id":"candidate-08-01a18c78","findproviders_empty_pools":0,"findproviders_load_p95_ms":44.853534317016575,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9363555555555556,"findproviders_samples":218,"provider_egress_bytes":4071903142,"raw_score":6298.529999999981,"received_bytes":3580991454,"request_count":2880,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1088196042612573,"evaluation_id":"candidate-09-01a18c78","findproviders_empty_pools":0,"findproviders_load_p95_ms":47.934736824035646,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9398,"findproviders_samples":218,"provider_egress_bytes":4071904714,"raw_score":5952.6230000000005,"received_bytes":3672287808,"request_count":2988,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"df9cceb14ce6b4b03469365d31e8eb7e0a0c4b39f9ab10cfba3c62ff66e30b4f","artifact_manifest_sha256":"c712d22b82526728768219fd31eb78b1829dbc045546cd9434636d06061a0d74","rank":7,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a50d-3d3e-98c6-2d43-df8559fba97f","patch_sha256":"9f91481849c14a8677ebd5c5f3bf376218b61b32541857fba00436e0f4353449","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-04T05:34:30.160584Z","started_at":"2026-11-06T00:34:19.301512Z","completed_at":"2026-11-06T02:17:09.82557Z","score":{"score_schema":1,"raw_score":6791.5605,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3637484542,"candidate_requests":2928,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.116303379911817}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":34.20321617126463,"candidate_pool_p05":2546.85,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9391055555555555,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":7342.129122222221,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":1100601.776291288,"observed_improvement_percent":61.515897254692256,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.752256137381416,"required_improvement_percent":26.900000000000002,"one_sided_p_value":2.1879302670431455e-7,"welch_t":11.425601625350746,"welch_degrees_of_freedom":10.062095699487877,"statistically_significant":true,"next_epoch_minimum_improvement_percent":12.525475787743293,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.116303379911817,"findproviders_load_p95_ms":34.20321617126463,"findproviders_pool_p05":2546.85,"findproviders_sample_span_fraction":0.9391055555555555,"raw_score":6791.5605,"received_bytes":3637484542,"request_count":2928,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.135416318755307,"evaluation_id":"candidate-01-01a1a50d","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.20321617126463,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393833333333333,"findproviders_samples":218,"provider_egress_bytes":4072297334,"raw_score":8463.083650000011,"received_bytes":3586611595,"request_count":2888,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1175085543422811,"evaluation_id":"candidate-02-01a1a50d","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.354961872100823,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9398444444444445,"findproviders_samples":218,"provider_egress_bytes":4072159594,"raw_score":6504.5655,"received_bytes":3643962794,"request_count":2931,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1305346195296757,"evaluation_id":"candidate-03-01a1a50d","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.06854839324946,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9391055555555555,"findproviders_samples":218,"provider_egress_bytes":4072156378,"raw_score":7255.611000000002,"received_bytes":3601974064,"request_count":2928,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1278464007775697,"evaluation_id":"candidate-04-01a1a50d","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.09243488311765,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9410555555555555,"findproviders_samples":218,"provider_egress_bytes":4105501927,"raw_score":6352.207699999999,"received_bytes":3640125042,"request_count":2915,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.119506424558161,"evaluation_id":"candidate-05-01a1a50d","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.146797943115196,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9397944444444445,"findproviders_samples":218,"provider_egress_bytes":4072187314,"raw_score":8043.8863499999925,"received_bytes":3637484542,"request_count":2940,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.129605200707443,"evaluation_id":"candidate-06-01a1a50d","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.13954982757567,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395388888888889,"findproviders_samples":218,"provider_egress_bytes":4072268466,"raw_score":6791.5605,"received_bytes":3605036931,"request_count":2916,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.145467335072889,"evaluation_id":"candidate-07-01a1a50d","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.36944427490229,"findproviders_pool_p05":2546.85,"findproviders_sample_span_fraction":0.9394166666666667,"findproviders_samples":218,"provider_egress_bytes":4072264814,"raw_score":9365.475399999987,"received_bytes":3555112127,"request_count":2865,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1175249943088776,"evaluation_id":"candidate-08-01a1a50d","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.159069252014085,"findproviders_pool_p05":2546.85,"findproviders_sample_span_fraction":0.9395777777777777,"findproviders_samples":218,"provider_egress_bytes":4072148226,"raw_score":6739.593800000002,"received_bytes":3643899015,"request_count":2943,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.116303379911817,"evaluation_id":"candidate-09-01a1a50d","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.42034168243402,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395833333333333,"findproviders_samples":218,"provider_egress_bytes":4072193050,"raw_score":6563.1781999999985,"received_bytes":3647926830,"request_count":2937,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"be6c2f8d56f0054fd042d9e86066709b42ecd82969a6175adf64c3765c898706","artifact_manifest_sha256":"dc8b8eff1e61702de87a059d48bf9b63df3c21d3089eda779108047ba05449d8","rank":8,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a442-95bf-ecfa-a68b-9aa7e015ac03","patch_sha256":"df1b178935d0665b7431110f0862a952aa384502a0a3907917587edc6f6070aa","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-04T01:53:09.504272Z","started_at":"2026-11-05T07:55:48.481424Z","completed_at":"2026-11-05T09:44:46.365749Z","score":{"score_schema":1,"raw_score":6815.066050000001,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3628541070,"candidate_requests":2921,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0918370903137933}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.026469612121563,"candidate_pool_p05":2547.85,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9394444444444444,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":6833.402005555555,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":38792.058145068186,"observed_improvement_percent":64.18241350647925,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.42435730664989,"required_improvement_percent":26.900000000000002,"one_sided_p_value":6.608783431797435e-7,"welch_t":12.649007048858364,"welch_degrees_of_freedom":8.073928619112102,"statistically_significant":true,"next_epoch_minimum_improvement_percent":2.52659472609078,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0918370903137933,"findproviders_load_p95_ms":31.026469612121563,"findproviders_pool_p05":2547.85,"findproviders_sample_span_fraction":0.9394444444444444,"raw_score":6815.066050000001,"received_bytes":3628541070,"request_count":2921,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.130335540937153,"evaluation_id":"candidate-01-01a1a442","findproviders_empty_pools":0,"findproviders_load_p95_ms":40.00247325897205,"findproviders_pool_p05":2547.85,"findproviders_sample_span_fraction":0.9398388888888889,"findproviders_samples":218,"provider_egress_bytes":4072380034,"raw_score":6713.3765999999905,"received_bytes":3602806323,"request_count":2897,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.10559632997327,"evaluation_id":"candidate-02-01a1a442","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.366684722900374,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9394444444444444,"findproviders_samples":218,"provider_egress_bytes":4072224690,"raw_score":6690.921599999999,"received_bytes":3683283473,"request_count":2964,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0918370903137933,"evaluation_id":"candidate-03-01a1a442","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.65594234466549,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9394888888888889,"findproviders_samples":218,"provider_egress_bytes":4072386178,"raw_score":7097.331199999998,"received_bytes":3729847808,"request_count":3030,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1333186957712742,"evaluation_id":"candidate-04-01a1a442","findproviders_empty_pools":0,"findproviders_load_p95_ms":37.92241382598871,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9396444444444444,"findproviders_samples":218,"provider_egress_bytes":4054797731,"raw_score":6851.368800000002,"received_bytes":3577808913,"request_count":2883,"resource_findings":[],"stability_findings":[],"success_rate":0.9996531390912244},{"accounting_coverage":1.1720147304298656,"evaluation_id":"candidate-05-01a1a442","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.627129745483398,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9399555555555555,"findproviders_samples":218,"provider_egress_bytes":4105681551,"raw_score":7188.188,"received_bytes":3503097226,"request_count":2816,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.131372839142625,"evaluation_id":"candidate-06-01a1a442","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.026469612121563,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399333333333333,"findproviders_samples":218,"provider_egress_bytes":4105669615,"raw_score":6852.614,"received_bytes":3628927152,"request_count":2921,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1202052915995908,"evaluation_id":"candidate-07-01a1a442","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.90087127685546,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9397888888888889,"findproviders_samples":218,"provider_egress_bytes":4072332978,"raw_score":6711.973500000006,"received_bytes":3635345243,"request_count":2943,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1314850039715825,"evaluation_id":"candidate-08-01a1a442","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.11637010574338,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9399944444444445,"findproviders_samples":218,"provider_egress_bytes":4105639807,"raw_score":6579.778299999994,"received_bytes":3628541070,"request_count":2927,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1303616676076493,"evaluation_id":"candidate-09-01a1a442","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.057759761810303,"findproviders_pool_p05":2547.85,"findproviders_sample_span_fraction":0.9395,"findproviders_samples":218,"provider_egress_bytes":4072388578,"raw_score":6815.066050000001,"received_bytes":3602730608,"request_count":2898,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"76ad35199ef362c920128473d722177c87332eec14280fa4cd8dc08576e4549d","artifact_manifest_sha256":"b4a9dea208661e0bdacef8136c99087eb8a9a6b58d565e36ca8d6864b4232e7e","rank":9,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a440-fd2e-538a-365c-f4b23eed4739","patch_sha256":"b8800b3a52176e5e33ccab86536d5751ea0a42cade6f64be0d2586d765573aff","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-04T01:51:24.868473Z","started_at":"2026-11-04T20:54:56.924383Z","completed_at":"2026-11-04T22:21:29.896796Z","score":{"score_schema":1,"raw_score":7062.416,"normalized_score":200,"placeable":true,"takeover_eligible":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3544698658,"candidate_requests":2862,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0950859184906747}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":32.304207420349115,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9350166666666667,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":7170.679155555554,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":152045.68072914105,"observed_improvement_percent":62.41456002989588,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.455832178572116,"required_improvement_percent":26.900000000000002,"one_sided_p_value":6.867270780174778e-7,"welch_t":12.21883694014157,"welch_degrees_of_freedom":8.289674795445364,"statistically_significant":true,"next_epoch_minimum_improvement_percent":4.766810615381403,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":true,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0950859184906747,"findproviders_load_p95_ms":32.304207420349115,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9350166666666667,"raw_score":7062.416,"received_bytes":3544698658,"request_count":2862,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1586305619558301,"evaluation_id":"candidate-01-01a1a440","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.381172466278073,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9350166666666667,"findproviders_samples":218,"provider_egress_bytes":4072363974,"raw_score":6979.352899999993,"received_bytes":3514808005,"request_count":2847,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1693047726908357,"evaluation_id":"candidate-02-01a1a440","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.950255203247057,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9401777777777778,"findproviders_samples":218,"provider_egress_bytes":4105677823,"raw_score":7234.820200000004,"received_bytes":3511212747,"request_count":2843,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.148864870871063,"evaluation_id":"candidate-03-01a1a440","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.56330070495604,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9395055555555556,"findproviders_samples":218,"provider_egress_bytes":4072379766,"raw_score":8072.638949999999,"received_bytes":3544698658,"request_count":2844,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.137177307647108,"evaluation_id":"candidate-04-01a1a440","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.304207420349115,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395777777777777,"findproviders_samples":218,"provider_egress_bytes":4072414384,"raw_score":7049.171899999998,"received_bytes":3581160437,"request_count":2867,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.167121229185093,"evaluation_id":"candidate-05-01a1a440","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.10112361907953,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9392666666666667,"findproviders_samples":218,"provider_egress_bytes":4072450666,"raw_score":6888.127200000001,"received_bytes":3489312476,"request_count":2823,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0950859184906747,"evaluation_id":"candidate-06-01a1a440","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.637925529479965,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392222222222222,"findproviders_samples":218,"provider_egress_bytes":4072367938,"raw_score":6707.271999999999,"received_bytes":3718765687,"request_count":2982,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1513933738173874,"evaluation_id":"candidate-07-01a1a440","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.38722610473633,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9394888888888889,"findproviders_samples":218,"provider_egress_bytes":4072431186,"raw_score":7169.0390499999985,"received_bytes":3536959026,"request_count":2862,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1232665438643337,"evaluation_id":"candidate-08-01a1a440","findproviders_empty_pools":0,"findproviders_load_p95_ms":37.01998710632317,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9388722222222222,"findproviders_samples":218,"provider_egress_bytes":4072429766,"raw_score":7062.416,"received_bytes":3625523958,"request_count":2936,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1119277981698488,"evaluation_id":"candidate-09-01a1a440","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.650027561187713,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9390666666666667,"findproviders_samples":218,"provider_egress_bytes":4072475926,"raw_score":7373.274199999998,"received_bytes":3662536302,"request_count":2967,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"ebe45b20f5fc3fc5b5342ebb869714d06de3d132ba68a707497a6918122ff7d8","artifact_manifest_sha256":"29a51d59b16237d403696bb5b19ec2c3c37caa8675c9199a9dbd264ade7313b8","rank":10,"eligible_candidate_rank":1,"eligible":true},{"job_id":"01a1a3c4-6a91-74a6-e0d6-1caa1f832af2","patch_sha256":"2df3edc04c46185a1b9ba3b0874fec7334af9a5220896099cadba0a09f595a2d","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-03T23:35:20.809112Z","started_at":"2026-11-04T15:56:08.019257Z","completed_at":"2026-11-07T02:46:28.681739Z","score":{"score_schema":1,"raw_score":7114.575599999998,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3572012512,"candidate_requests":2880,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.102745649452238}},"G4_matchmaking":{"passed":false,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":47.19937839508056,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9371888888888888,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":7281.827672222215,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":335573.37645386223,"observed_improvement_percent":61.83197003941998,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.508930720933979,"required_improvement_percent":26.900000000000002,"one_sided_p_value":5.625396552509376e-7,"welch_t":11.976884949297482,"welch_degrees_of_freedom":8.63851812086818,"statistically_significant":true,"next_epoch_minimum_improvement_percent":6.973559278250245,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.102745649452238,"findproviders_load_p95_ms":47.19937839508056,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9371888888888888,"raw_score":7114.575599999998,"received_bytes":3572012512,"request_count":2880,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1409422759350776,"evaluation_id":"candidate-01-01a1a3c4","findproviders_empty_pools":0,"findproviders_load_p95_ms":50.79698200225828,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9371888888888888,"findproviders_samples":218,"provider_egress_bytes":4072403098,"raw_score":7114.575599999998,"received_bytes":3569333159,"request_count":2895,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1870323226269999,"evaluation_id":"candidate-02-01a1a3c4","findproviders_empty_pools":0,"findproviders_load_p95_ms":43.07240734100333,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393,"findproviders_samples":218,"provider_egress_bytes":4072407594,"raw_score":6944.278699999999,"received_bytes":3430747012,"request_count":2742,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1247660467362484,"evaluation_id":"candidate-03-01a1a3c4","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.984845638275118,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9391833333333334,"findproviders_samples":218,"provider_egress_bytes":4072396762,"raw_score":7271.404649999991,"received_bytes":3620661180,"request_count":2910,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1314329080379213,"evaluation_id":"candidate-04-01a1a3c4","findproviders_empty_pools":0,"findproviders_load_p95_ms":44.29403419494625,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397055555555556,"findproviders_samples":218,"provider_egress_bytes":4041492504,"raw_score":7172.681999999988,"received_bytes":3572012512,"request_count":2875,"resource_findings":[],"stability_findings":[],"success_rate":0.9982608695652174},{"accounting_coverage":1.142421901087199,"evaluation_id":"candidate-05-01a1a3c4","findproviders_empty_pools":0,"findproviders_load_p95_ms":52.69458847045896,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9392444444444444,"findproviders_samples":218,"provider_egress_bytes":4072408839,"raw_score":6981.258399999994,"received_bytes":3564715308,"request_count":2862,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1380540728181145,"evaluation_id":"candidate-06-01a1a3c4","findproviders_empty_pools":0,"findproviders_load_p95_ms":45.939009094238244,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9396722222222222,"findproviders_samples":218,"provider_egress_bytes":4072378886,"raw_score":6919.406099999997,"received_bytes":3578370293,"request_count":2880,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1233856764673784,"evaluation_id":"candidate-07-01a1a3c4","findproviders_empty_pools":0,"findproviders_load_p95_ms":52.892263031005854,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9395777777777777,"findproviders_samples":218,"provider_egress_bytes":4072471366,"raw_score":8231.965099999987,"received_bytes":3625176510,"request_count":2919,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1419168516158889,"evaluation_id":"candidate-08-01a1a3c4","findproviders_empty_pools":0,"findproviders_load_p95_ms":51.61404972076416,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9397055555555556,"findproviders_samples":218,"provider_egress_bytes":4042461824,"raw_score":8271.82249999999,"received_bytes":3540066703,"request_count":2834,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.102745649452238,"evaluation_id":"candidate-09-01a1a3c4","findproviders_empty_pools":0,"findproviders_load_p95_ms":47.19937839508056,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9389166666666666,"findproviders_samples":218,"provider_egress_bytes":4072352518,"raw_score":6629.0560000000005,"received_bytes":3692920956,"request_count":2991,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"949e935fd09ff4eabeaa9a1532c44be4b98118ce2dfdc081170f2ff377bc7ae8","artifact_manifest_sha256":"fc2b897ac5b7c7b8cf1a3815b2869eb135290a8e4da4c8babdabcbaa07a68b07","rank":11,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a276-d169-0104-8a72-b7997a4b846f","patch_sha256":"30d319314ae9b5d3c065181bdb409952b5644cdab8bf51ba8441032c960d3648","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-03T17:30:58.080546Z","started_at":"2026-11-03T22:19:28.527097Z","completed_at":"2026-11-04T00:54:24.939375Z","score":{"score_schema":1,"raw_score":7186.276799999995,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3575097570,"candidate_requests":2902,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1079653645364904}},"G4_matchmaking":{"passed":false,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":46.53056182861313,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9390388888888889,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":7243.496755555552,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":326271.4365927533,"observed_improvement_percent":62.032883277360305,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.506181267634652,"required_improvement_percent":26.900000000000002,"one_sided_p_value":5.552769666372465e-7,"welch_t":12.022207864882942,"welch_degrees_of_freedom":8.620872836690507,"statistically_significant":true,"next_epoch_minimum_improvement_percent":6.912615529903879,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1079653645364904,"findproviders_load_p95_ms":46.53056182861313,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9390388888888889,"raw_score":7186.276799999995,"received_bytes":3575097570,"request_count":2902,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1247518790457474,"evaluation_id":"candidate-01-01a1a276","findproviders_empty_pools":0,"findproviders_load_p95_ms":46.53056182861313,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395722222222223,"findproviders_samples":218,"provider_egress_bytes":4072294890,"raw_score":7195.073299999999,"received_bytes":3620616214,"request_count":2907,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.163011003099479,"evaluation_id":"candidate-02-01a1a276","findproviders_empty_pools":0,"findproviders_load_p95_ms":50.08618431091308,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9396833333333333,"findproviders_samples":218,"provider_egress_bytes":4072496134,"raw_score":8074.855949999993,"received_bytes":3501683237,"request_count":2830,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1532178933519872,"evaluation_id":"candidate-03-01a1a276","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.41488704681395,"findproviders_pool_p05":2550,"findproviders_sample_span_fraction":0.9390388888888889,"findproviders_samples":218,"provider_egress_bytes":4072441134,"raw_score":7186.276799999995,"received_bytes":3531371788,"request_count":2865,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1195240880383595,"evaluation_id":"candidate-04-01a1a276","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.294485282897945,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399777777777778,"findproviders_samples":218,"provider_egress_bytes":4072416222,"raw_score":7723.3984,"received_bytes":3637631620,"request_count":2927,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1420993238289703,"evaluation_id":"candidate-05-01a1a276","findproviders_empty_pools":0,"findproviders_load_p95_ms":56.49794883728023,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397222222222222,"findproviders_samples":218,"provider_egress_bytes":4072401394,"raw_score":8009.688999999999,"received_bytes":3565715616,"request_count":2856,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1456042774798096,"evaluation_id":"candidate-06-01a1a276","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.056262779235695,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397833333333333,"findproviders_samples":218,"provider_egress_bytes":4072368046,"raw_score":6527.948049999996,"received_bytes":3554777270,"request_count":2874,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1079653645364904,"evaluation_id":"candidate-07-01a1a276","findproviders_empty_pools":0,"findproviders_load_p95_ms":50.41128234863275,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395222222222223,"findproviders_samples":218,"provider_egress_bytes":4072360282,"raw_score":7014.60074999999,"received_bytes":3675530312,"request_count":2970,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1390877429955009,"evaluation_id":"candidate-08-01a1a276","findproviders_empty_pools":0,"findproviders_load_p95_ms":56.719756698608386,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9396111111111111,"findproviders_samples":218,"provider_egress_bytes":4072349822,"raw_score":6685.680549999995,"received_bytes":3575097570,"request_count":2902,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1188917026998006,"evaluation_id":"candidate-09-01a1a276","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.445469856262186,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9391222222222222,"findproviders_samples":218,"provider_egress_bytes":4072310918,"raw_score":6773.948,"received_bytes":3639593455,"request_count":2961,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"58ba3bbb00a1bf76b70c366c83c46f5f9f7c1d8e4bc419bff8c464f8b4769488","artifact_manifest_sha256":"84025af4cad331509895a3fafd3fca8806fc01e1b7fb36c74bf5bcf3cc8cf1d5","rank":12,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a18b8b-691d-3b37-090f-07113daed8a6","patch_sha256":"8785521c3d0db10fd63c32fee1629415be81a0530a8a0777f3910240dbeec800","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-30T06:42:11.488472Z","started_at":"2026-11-01T03:22:01.534229Z","completed_at":"2026-11-01T04:48:03.067865Z","score":{"score_schema":1,"raw_score":7237.9712500000005,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3674265241,"candidate_requests":2970,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1014220056894082}},"G4_matchmaking":{"passed":false,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":45.667422676086375,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9394833333333333,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":7179.345866666663,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":242339.7699088468,"observed_improvement_percent":62.369133070588624,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.481647931752045,"required_improvement_percent":26.900000000000002,"one_sided_p_value":6.019457273905276e-7,"welch_t":12.145958073565904,"welch_degrees_of_freedom":8.461468452842938,"statistically_significant":true,"next_epoch_minimum_improvement_percent":6.01074930058448,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1014220056894082,"findproviders_load_p95_ms":45.667422676086375,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394833333333333,"raw_score":7237.9712500000005,"received_bytes":3674265241,"request_count":2970,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1315332282133308,"evaluation_id":"candidate-01-01a18b8b","findproviders_empty_pools":0,"findproviders_load_p95_ms":47.21782951354979,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9397833333333333,"findproviders_samples":218,"provider_egress_bytes":4072023299,"raw_score":7360.554249999999,"received_bytes":3598677615,"request_count":2904,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1014220056894082,"evaluation_id":"candidate-02-01a18b8b","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.50735836029046,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.93955,"findproviders_samples":218,"provider_egress_bytes":4072015298,"raw_score":7316.893899999998,"received_bytes":3697052789,"request_count":2994,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.105395273961913,"evaluation_id":"candidate-03-01a18b8b","findproviders_empty_pools":0,"findproviders_load_p95_ms":50.068897056579566,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9402555555555555,"findproviders_samples":218,"provider_egress_bytes":4105200959,"raw_score":6881.040099999999,"received_bytes":3713785517,"request_count":2999,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.119021889795832,"evaluation_id":"candidate-04-01a18b8b","findproviders_empty_pools":0,"findproviders_load_p95_ms":59.2034748077392,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9406277777777777,"findproviders_samples":218,"provider_egress_bytes":4072042594,"raw_score":7549.997,"received_bytes":3638930240,"request_count":2901,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1082543297532177,"evaluation_id":"candidate-05-01a18b8b","findproviders_empty_pools":0,"findproviders_load_p95_ms":45.667422676086375,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9397611111111112,"findproviders_samples":218,"provider_egress_bytes":4072020362,"raw_score":7028.624799999998,"received_bytes":3674265241,"request_count":2985,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1175466584222211,"evaluation_id":"candidate-06-01a18b8b","findproviders_empty_pools":0,"findproviders_load_p95_ms":44.98063793182373,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9396666666666667,"findproviders_samples":218,"provider_egress_bytes":4071994926,"raw_score":6501.67575,"received_bytes":3643691201,"request_count":2946,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1090859877561572,"evaluation_id":"candidate-07-01a18b8b","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.05677738189693,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9402277777777778,"findproviders_samples":218,"provider_egress_bytes":4105299681,"raw_score":6625.8758,"received_bytes":3701516137,"request_count":2993,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1018633368350004,"evaluation_id":"candidate-08-01a18b8b","findproviders_empty_pools":0,"findproviders_load_p95_ms":43.06209812164306,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394833333333333,"findproviders_samples":218,"provider_egress_bytes":4072362746,"raw_score":8111.47994999997,"received_bytes":3695887330,"request_count":2970,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1408402518629697,"evaluation_id":"candidate-09-01a18b8b","findproviders_empty_pools":0,"findproviders_load_p95_ms":46.14329013824462,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9400444444444445,"findproviders_samples":218,"provider_egress_bytes":4072051762,"raw_score":7237.9712500000005,"received_bytes":3569344398,"request_count":2898,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"1240473ed7c433f1275bfbd14e00dbc3f2b12e583e91762d3ce1a732d8c2a970","artifact_manifest_sha256":"6b9578766fa1cb28d599f7358ed9cc760745bc9454952b635451d66eb5706b2a","rank":13,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a66b-0a4f-1214-84d0-d02b6dfe77a8","patch_sha256":"756e2ddd1cb9823480aec90d76963c92a6dede35eb67e24db2f5b365a186785b","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-04T11:56:35.180833Z","started_at":"2026-11-06T05:20:05.441084Z","completed_at":"2026-11-06T06:46:31.687744Z","score":{"score_schema":1,"raw_score":7270.923999999998,"normalized_score":200,"placeable":true,"takeover_eligible":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3586688022,"candidate_requests":2894,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1019184080331388}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.074090671539295,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.93935,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":8031.2921,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":3123481.5751889828,"observed_improvement_percent":57.90361825447836,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.487472556122116,"required_improvement_percent":26.900000000000002,"one_sided_p_value":1.0213170643103536e-7,"welch_t":9.764783500835726,"welch_degrees_of_freedom":13.228966016969817,"statistically_significant":true,"next_epoch_minimum_improvement_percent":19.29013192049679,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":true,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1019184080331388,"findproviders_load_p95_ms":31.074090671539295,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.93935,"raw_score":7270.923999999998,"received_bytes":3586688022,"request_count":2894,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1877602890556198,"evaluation_id":"candidate-01-01a1a66b","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.098134994506793,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397888888888889,"findproviders_samples":218,"provider_egress_bytes":4072217774,"raw_score":6967.189650000001,"received_bytes":3428484528,"request_count":2778,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1953131462578732,"evaluation_id":"candidate-02-01a1a66b","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.820663547515867,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.94,"findproviders_samples":218,"provider_egress_bytes":4105616547,"raw_score":7502.681799999991,"received_bytes":3434762313,"request_count":2787,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1019184080331388,"evaluation_id":"candidate-03-01a1a66b","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.389912414550757,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9398,"findproviders_samples":218,"provider_egress_bytes":4072123574,"raw_score":6509.798,"received_bytes":3695485568,"request_count":2961,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1550331329635422,"evaluation_id":"candidate-04-01a1a66b","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.982775688171376,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9396277777777777,"findproviders_samples":218,"provider_egress_bytes":4072242638,"raw_score":11824.1872,"received_bytes":3525650063,"request_count":2849,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1446423134150139,"evaluation_id":"candidate-05-01a1a66b","findproviders_empty_pools":0,"findproviders_load_p95_ms":26.184228038787786,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9399666666666666,"findproviders_samples":218,"provider_egress_bytes":4105474875,"raw_score":7930.123199999991,"received_bytes":3586688022,"request_count":2894,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1039719434104687,"evaluation_id":"candidate-06-01a1a66b","findproviders_empty_pools":0,"findproviders_load_p95_ms":26.95796041488647,"findproviders_pool_p05":2546.85,"findproviders_sample_span_fraction":0.9395444444444444,"findproviders_samples":218,"provider_egress_bytes":4072182046,"raw_score":7221.668449999996,"received_bytes":3688664436,"request_count":2970,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.140830645654542,"evaluation_id":"candidate-07-01a1a66b","findproviders_empty_pools":0,"findproviders_load_p95_ms":45.30656547546381,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397611111111112,"findproviders_samples":218,"provider_egress_bytes":4072211850,"raw_score":10130.45160000003,"received_bytes":3569514779,"request_count":2888,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1091632835689131,"evaluation_id":"candidate-08-01a1a66b","findproviders_empty_pools":0,"findproviders_load_p95_ms":40.4338018417358,"findproviders_pool_p05":2547.85,"findproviders_sample_span_fraction":0.93935,"findproviders_samples":218,"provider_egress_bytes":4072197622,"raw_score":6924.605,"received_bytes":3671414013,"request_count":2961,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1259584419651352,"evaluation_id":"candidate-09-01a1a66b","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.074090671539295,"findproviders_pool_p05":2546.85,"findproviders_sample_span_fraction":0.9399444444444445,"findproviders_samples":218,"provider_egress_bytes":4105446947,"raw_score":7270.923999999998,"received_bytes":3646179818,"request_count":2954,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"379263c0b7432f372999d6c6bb76418fa2ab79ab76f7ed743975987d52b5d3d0","artifact_manifest_sha256":"f608881ab8c51189fbdf78d374be33f68da09340e1fb095bb8f1192f87176a7c","rank":14,"eligible_candidate_rank":2,"eligible":true},{"job_id":"01a1a8d6-2e43-9d83-5005-f49e03ee96f1","patch_sha256":"d8105cd91cde3b8f01926a3710894549f18b540d2db7a9a2e63b1fee7bc871cc","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-04T23:12:51.229583Z","started_at":"2026-11-06T14:09:02.400977Z","completed_at":"2026-11-06T15:36:16.154233Z","score":{"score_schema":1,"raw_score":7287.8586000000105,"normalized_score":200,"placeable":true,"takeover_eligible":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3542082414,"candidate_requests":2862,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1215517502938186}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":32.684550094604475,"candidate_pool_p05":2546.85,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9343166666666667,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":7791.564327777774,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":2882208.4816648224,"observed_improvement_percent":59.16016224376624,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.396099220102052,"required_improvement_percent":26.900000000000002,"one_sided_p_value":8.667346555791076e-8,"welch_t":10.082841172679585,"welch_degrees_of_freedom":12.913791894116429,"statistically_significant":true,"next_epoch_minimum_improvement_percent":19.100255659912634,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":true,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1215517502938186,"findproviders_load_p95_ms":32.684550094604475,"findproviders_pool_p05":2546.85,"findproviders_sample_span_fraction":0.9343166666666667,"raw_score":7287.8586000000105,"received_bytes":3542082414,"request_count":2862,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.204961971882779,"evaluation_id":"candidate-01-01a1a8d6","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.97511472702024,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397611111111112,"findproviders_samples":218,"provider_egress_bytes":4072238150,"raw_score":7656.090699999987,"received_bytes":3379557401,"request_count":2754,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1215517502938186,"evaluation_id":"candidate-02-01a1a8d6","findproviders_empty_pools":0,"findproviders_load_p95_ms":37.46657772064208,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9392166666666667,"findproviders_samples":218,"provider_egress_bytes":4072297020,"raw_score":7287.8586000000105,"received_bytes":3630948834,"request_count":2943,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1396059736421233,"evaluation_id":"candidate-03-01a1a8d6","findproviders_empty_pools":0,"findproviders_load_p95_ms":44.902323150634736,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9395722222222223,"findproviders_samples":218,"provider_egress_bytes":4072131858,"raw_score":6714.811,"received_bytes":3573280548,"request_count":2871,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1401061038869402,"evaluation_id":"candidate-04-01a1a8d6","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.394540786743086,"findproviders_pool_p05":2546.85,"findproviders_sample_span_fraction":0.93975,"findproviders_samples":218,"provider_egress_bytes":4018881737,"raw_score":10369.884349999975,"received_bytes":3525006772,"request_count":2862,"resource_findings":[],"stability_findings":[],"success_rate":0.9989517819706499},{"accounting_coverage":1.1337780392026244,"evaluation_id":"candidate-05-01a1a8d6","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.684550094604475,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393944444444444,"findproviders_samples":218,"provider_egress_bytes":4072267398,"raw_score":6323.1460499999985,"received_bytes":3591767751,"request_count":2910,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1496747094038677,"evaluation_id":"candidate-06-01a1a8d6","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.38436031341553,"findproviders_pool_p05":2546.85,"findproviders_sample_span_fraction":0.9397111111111112,"findproviders_samples":218,"provider_egress_bytes":4072242570,"raw_score":6850.50575,"received_bytes":3542082414,"request_count":2856,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.160910603702624,"evaluation_id":"candidate-07-01a1a8d6","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.51415100097652,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9343166666666667,"findproviders_samples":218,"provider_egress_bytes":4060335819,"raw_score":6581.185,"received_bytes":3497543916,"request_count":2801,"resource_findings":[],"stability_findings":[],"success_rate":0.9996429846483399},{"accounting_coverage":1.1710981388091153,"evaluation_id":"candidate-08-01a1a8d6","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.790247535705557,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397111111111112,"findproviders_samples":218,"provider_egress_bytes":4072249010,"raw_score":10996.467499999999,"received_bytes":3477290993,"request_count":2811,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1370111031345524,"evaluation_id":"candidate-09-01a1a8d6","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.32506847381589,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399388888888889,"findproviders_samples":218,"provider_egress_bytes":4105531955,"raw_score":7344.13,"received_bytes":3610810786,"request_count":2906,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"61b460bb9022b6df0349fb80e79c1a0c5a8d16b4958d87a4cdc514817c146456","artifact_manifest_sha256":"036d431c683a6a2461efc21740c68422febb9739f79cafe543cb3b88ad61aa82","rank":15,"eligible_candidate_rank":3,"eligible":true},{"job_id":"01a1aaf3-335c-dd5a-9771-6559e3df5d1f","patch_sha256":"d6b9e4e38c97873e0268c7eb39e7316070d15254acc99ce67fe3b259ed85186f","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-05T09:03:46.861184Z","started_at":"2026-11-07T09:43:20.306142Z","completed_at":"2026-11-07T11:08:51.607041Z","score":{"score_schema":1,"raw_score":7407.307800000002,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3708697721,"candidate_requests":3000,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.073291578228082}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.463202667236324,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9389888888888889,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":7029.336844444443,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":699779.1464515561,"observed_improvement_percent":63.15541216318184,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.620888951257951,"required_improvement_percent":26.900000000000002,"one_sided_p_value":2.824665005323398e-7,"welch_t":11.985800976101942,"welch_degrees_of_freedom":9.324442574817505,"statistically_significant":true,"next_epoch_minimum_improvement_percent":10.431993026154927,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.073291578228082,"findproviders_load_p95_ms":31.463202667236324,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9389888888888889,"raw_score":7407.307800000002,"received_bytes":3708697721,"request_count":3000,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1017919141948886,"evaluation_id":"candidate-01-01a1aaf3","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.341002082824694,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9403166666666667,"findproviders_samples":218,"provider_egress_bytes":4108501972,"raw_score":7857.58,"received_bytes":3728927322,"request_count":3011,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1048051958205003,"evaluation_id":"candidate-02-01a1aaf3","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.028184890747056,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9390944444444445,"findproviders_samples":218,"provider_egress_bytes":4073216247,"raw_score":7460.455,"received_bytes":3686818511,"request_count":2976,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0984736493707894,"evaluation_id":"candidate-03-01a1aaf3","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.85546932220455,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9400611111111111,"findproviders_samples":218,"provider_egress_bytes":4073906720,"raw_score":7540.395099999986,"received_bytes":3708697721,"request_count":3000,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1070595946082693,"evaluation_id":"candidate-04-01a1aaf3","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.13393850326537,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9390444444444445,"findproviders_samples":218,"provider_egress_bytes":4074386943,"raw_score":7407.307800000002,"received_bytes":3680368214,"request_count":2973,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1014111765239816,"evaluation_id":"candidate-05-01a1aaf3","findproviders_empty_pools":0,"findproviders_load_p95_ms":26.279497623443564,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9400222222222222,"findproviders_samples":218,"provider_egress_bytes":4107867328,"raw_score":6877.972750000001,"received_bytes":3729640134,"request_count":3016,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1225792563734036,"evaluation_id":"candidate-06-01a1aaf3","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.096130943298334,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9393166666666667,"findproviders_samples":218,"provider_egress_bytes":4075038294,"raw_score":8101.607199999998,"received_bytes":3630067339,"request_count":2949,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.073291578228082,"evaluation_id":"candidate-07-01a1aaf3","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.961392021179165,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394,"findproviders_samples":218,"provider_egress_bytes":4054608696,"raw_score":5939.089999999991,"received_bytes":3777732704,"request_count":3060,"resource_findings":[],"stability_findings":[],"success_rate":0.9993464052287582},{"accounting_coverage":1.1173224376829587,"evaluation_id":"candidate-08-01a1aaf3","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.463202667236324,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9389888888888889,"findproviders_samples":218,"provider_egress_bytes":4074448922,"raw_score":6003.010500000001,"received_bytes":3646618724,"request_count":2943,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0801242216035276,"evaluation_id":"candidate-09-01a1aaf3","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.54089841842651,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9396111111111111,"findproviders_samples":218,"provider_egress_bytes":4072716579,"raw_score":6076.613249999999,"received_bytes":3770600175,"request_count":3036,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"fd91963387c46059387ddc492f001181087dfbf6993c92edf217c2af1f39dfa4","artifact_manifest_sha256":"586b03ec1a4d66890511b3350e5dfc34de66c8b6b2af6f987acb020281313181","rank":16,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a3c5-34e5-826c-8a15-6c10cfe89a50","patch_sha256":"db782bce9e4d1320a09625a722f77a8451321382c7d734d16f0da63861b40650","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-03T23:36:12.647398Z","started_at":"2026-11-04T19:27:33.311323Z","completed_at":"2026-11-04T20:54:50.199456Z","score":{"score_schema":1,"raw_score":7414.916100000002,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3588154985,"candidate_requests":2888,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1112184846741917}},"G4_matchmaking":{"passed":false,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":44.543037414550724,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9351,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":7304.69331111111,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":142142.89640639827,"observed_improvement_percent":61.712118756271884,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.453038911448267,"required_improvement_percent":26.900000000000002,"one_sided_p_value":7.623109150084805e-7,"welch_t":12.088325304946123,"welch_degrees_of_freedom":8.270819372621514,"statistically_significant":true,"next_epoch_minimum_improvement_percent":4.524407760791318,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1112184846741917,"findproviders_load_p95_ms":44.543037414550724,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9351,"raw_score":7414.916100000002,"received_bytes":3588154985,"request_count":2888,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1194333386769113,"evaluation_id":"candidate-01-01a1a3c5","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.34675941467278,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393888888888889,"findproviders_samples":218,"provider_egress_bytes":4072407034,"raw_score":7544.238899999996,"received_bytes":3637918305,"request_count":2924,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1748686147064782,"evaluation_id":"candidate-02-01a1a3c5","findproviders_empty_pools":0,"findproviders_load_p95_ms":44.59274501800536,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9351,"findproviders_samples":218,"provider_egress_bytes":4072365098,"raw_score":6770.1759999999995,"received_bytes":3466230221,"request_count":2786,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.134946710781502,"evaluation_id":"candidate-03-01a1a3c5","findproviders_empty_pools":0,"findproviders_load_p95_ms":50.997900962829554,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395388888888889,"findproviders_samples":218,"provider_egress_bytes":4072364698,"raw_score":7414.916100000002,"received_bytes":3588154985,"request_count":2888,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1112184846741917,"evaluation_id":"candidate-04-01a1a3c5","findproviders_empty_pools":0,"findproviders_load_p95_ms":51.157975578307955,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9397166666666666,"findproviders_samples":218,"provider_egress_bytes":4072336346,"raw_score":7229.203399999998,"received_bytes":3664748564,"request_count":2949,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1233251717967339,"evaluation_id":"candidate-05-01a1a3c5","findproviders_empty_pools":0,"findproviders_load_p95_ms":52.2248647689819,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9400833333333334,"findproviders_samples":218,"provider_egress_bytes":4105667764,"raw_score":7082.025000000001,"received_bytes":3654923674,"request_count":2936,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1684467141186188,"evaluation_id":"candidate-06-01a1a3c5","findproviders_empty_pools":0,"findproviders_load_p95_ms":44.543037414550724,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392444444444444,"findproviders_samples":218,"provider_egress_bytes":4072284680,"raw_score":7795.880599999999,"received_bytes":3485212146,"request_count":2814,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1627998424175692,"evaluation_id":"candidate-07-01a1a3c5","findproviders_empty_pools":0,"findproviders_load_p95_ms":42.173575019836385,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.94,"findproviders_samples":218,"provider_egress_bytes":4105654663,"raw_score":7580.2034,"received_bytes":3530835242,"request_count":2855,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1431841426696208,"evaluation_id":"candidate-08-01a1a3c5","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.71576271057127,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394166666666667,"findproviders_samples":218,"provider_egress_bytes":4072327902,"raw_score":6733.1564,"received_bytes":3562267661,"request_count":2883,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1297107185754787,"evaluation_id":"candidate-09-01a1a3c5","findproviders_empty_pools":0,"findproviders_load_p95_ms":37.98286514282226,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397333333333333,"findproviders_samples":218,"provider_egress_bytes":4072367182,"raw_score":7592.439999999999,"received_bytes":3604787593,"request_count":2919,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"2a029a11941717eb07f62f73197ac9b00da693b103de7b88f46e4ca5c32e5306","artifact_manifest_sha256":"4697298ccaf610dd2118555a7200bca949910af9e68a779e9249e0e4222a522a","rank":17,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a18d04-d75d-308a-2885-5cd60bc31865","patch_sha256":"16f1e90aff4b3a0b96913849d440d5b0b1a2ea1c65dd119a944e99a3f0af6c2f","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-30T13:34:27.037742Z","started_at":"2026-11-01T07:40:58.829561Z","completed_at":"2026-11-01T09:06:35.278107Z","score":{"score_schema":1,"raw_score":7769.2062,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3685366506,"candidate_requests":2969,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0797691728550536}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":30.668100070953354,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9350388888888889,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":7958.289116666669,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":990047.271918767,"observed_improvement_percent":58.28626670216236,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.71529154287286,"required_improvement_percent":26.900000000000002,"one_sided_p_value":4.082495650812495e-7,"welch_t":10.889322564000313,"welch_degrees_of_freedom":9.860959415305922,"statistically_significant":true,"next_epoch_minimum_improvement_percent":10.959970827232908,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0797691728550536,"findproviders_load_p95_ms":30.668100070953354,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9350388888888889,"raw_score":7769.2062,"received_bytes":3685366506,"request_count":2969,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1469981256743091,"evaluation_id":"candidate-01-01a18d04","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.259026908874503,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9389388888888889,"findproviders_samples":218,"provider_egress_bytes":4069403368,"raw_score":8371.574099999998,"received_bytes":3547872727,"request_count":2859,"resource_findings":[],"stability_findings":[],"success_rate":0.9989506820566632},{"accounting_coverage":1.0902724847172032,"evaluation_id":"candidate-02-01a18d04","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.63709812164303,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.94045,"findproviders_samples":218,"provider_egress_bytes":4074143580,"raw_score":7597.501400000004,"received_bytes":3736812253,"request_count":3003,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0797691728550536,"evaluation_id":"candidate-03-01a18d04","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.808395576476826,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9397722222222222,"findproviders_samples":218,"provider_egress_bytes":4073809211,"raw_score":6986.6176,"received_bytes":3772851933,"request_count":3024,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1051674199483268,"evaluation_id":"candidate-04-01a18d04","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.06204795837401,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394444444444444,"findproviders_samples":218,"provider_egress_bytes":4072946993,"raw_score":7769.2062,"received_bytes":3685366506,"request_count":2969,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0915165656896186,"evaluation_id":"candidate-05-01a18d04","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.668100070953354,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9393,"findproviders_samples":218,"provider_egress_bytes":4073831937,"raw_score":6617.471750000002,"received_bytes":3732267622,"request_count":3018,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1177304499831757,"evaluation_id":"candidate-06-01a18d04","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.205333518981927,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9350388888888889,"findproviders_samples":218,"provider_egress_bytes":4074264515,"raw_score":8209.712199999998,"received_bytes":3645122592,"request_count":2945,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1179513484539787,"evaluation_id":"candidate-07-01a18d04","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.168890571594215,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9389722222222222,"findproviders_samples":218,"provider_egress_bytes":4064736325,"raw_score":8622.600199999997,"received_bytes":3635879442,"request_count":2925,"resource_findings":[],"stability_findings":[],"success_rate":0.9996581196581197},{"accounting_coverage":1.092264246123249,"evaluation_id":"candidate-08-01a18d04","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.482070159912105,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9396333333333333,"findproviders_samples":218,"provider_egress_bytes":4073414851,"raw_score":7467.655100000004,"received_bytes":3729330943,"request_count":3003,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1161608522820794,"evaluation_id":"candidate-09-01a18d04","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.790217590331984,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9396277777777777,"findproviders_samples":218,"provider_egress_bytes":4076180781,"raw_score":9982.263500000001,"received_bytes":3651965371,"request_count":2966,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"6f7bb7c489343b1397871ca5470746b4e3a47cc91540552a7d4ec420be088d08","artifact_manifest_sha256":"cd182fa0ab05bb4a236ed6507d1c7cea0839ccdf3c93339745e8fe3c5a8563db","rank":18,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a2e6-a91f-6821-f96e-a36f83cfa543","patch_sha256":"f93747ad26b6c07ea94dab115eeb532caf0ffc6e0dd772abc956d54ca19060bd","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-03T19:33:07.96374Z","started_at":"2026-11-04T11:39:26.788177Z","completed_at":"2026-11-04T13:04:32.203378Z","score":{"score_schema":1,"raw_score":8049.1122999999925,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3710405967,"candidate_requests":3003,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0741453159550773}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":30.35931663513183,"candidate_pool_p05":2546.85,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9351777777777778,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":7900.221155555551,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":634568.0959065141,"observed_improvement_percent":58.590632553594624,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.600268189669098,"required_improvement_percent":26.900000000000002,"one_sided_p_value":5.909819220945004e-7,"welch_t":11.159563233470784,"welch_degrees_of_freedom":9.20249465576573,"statistically_significant":true,"next_epoch_minimum_improvement_percent":8.83895683016175,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0741453159550773,"findproviders_load_p95_ms":30.35931663513183,"findproviders_pool_p05":2546.85,"findproviders_sample_span_fraction":0.9351777777777778,"raw_score":8049.1122999999925,"received_bytes":3710405967,"request_count":3003,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1124018472003692,"evaluation_id":"candidate-01-01a1a2e6","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.808008956909173,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9377666666666666,"findproviders_samples":218,"provider_egress_bytes":4075237344,"raw_score":9522.630299999999,"received_bytes":3663457908,"request_count":2964,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1014498469766698,"evaluation_id":"candidate-02-01a1a2e6","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.479277038574196,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9394333333333333,"findproviders_samples":218,"provider_egress_bytes":4075863091,"raw_score":8072.7002,"received_bytes":3700452728,"request_count":3003,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.081137418117413,"evaluation_id":"candidate-03-01a1a2e6","findproviders_empty_pools":0,"findproviders_load_p95_ms":26.724921035766595,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9398333333333333,"findproviders_samples":218,"provider_egress_bytes":4073411867,"raw_score":7054.898599999999,"received_bytes":3767709635,"request_count":3049,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0952981911923958,"evaluation_id":"candidate-04-01a1a2e6","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.66477432250959,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9351777777777778,"findproviders_samples":218,"provider_egress_bytes":4036817446,"raw_score":8197.17575,"received_bytes":3685587613,"request_count":2976,"resource_findings":[],"stability_findings":[],"success_rate":0.9993279569892473},{"accounting_coverage":1.0982277627411976,"evaluation_id":"candidate-05-01a1a2e6","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.35931663513183,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9383444444444444,"findproviders_samples":218,"provider_egress_bytes":4074870844,"raw_score":7979.243200000004,"received_bytes":3710405967,"request_count":2993,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0741453159550773,"evaluation_id":"candidate-06-01a1a2e6","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.279476356506326,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395111111111111,"findproviders_samples":218,"provider_egress_bytes":4076248381,"raw_score":7157.436599999981,"received_bytes":3794876094,"request_count":3057,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0967744726585098,"evaluation_id":"candidate-07-01a1a2e6","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.556711101531956,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9382388888888888,"findproviders_samples":218,"provider_egress_bytes":4071764296,"raw_score":8152.472400000001,"received_bytes":3712490031,"request_count":3003,"resource_findings":[],"stability_findings":[],"success_rate":0.9996669996669997},{"accounting_coverage":1.1492189872413057,"evaluation_id":"candidate-08-01a1a2e6","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.92734603881836,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9357611111111112,"findproviders_samples":218,"provider_egress_bytes":4074991194,"raw_score":6916.3210500000005,"received_bytes":3545878757,"request_count":2868,"resource_findings":[],"stability_findings":[],"success_rate":0.9996513249651325},{"accounting_coverage":1.091727398241586,"evaluation_id":"candidate-09-01a1a2e6","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.357884883880597,"findproviders_pool_p05":2546.85,"findproviders_sample_span_fraction":0.9393555555555556,"findproviders_samples":218,"provider_egress_bytes":4073711785,"raw_score":8049.1122999999925,"received_bytes":3731436796,"request_count":3015,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"8318a6e40e9e74e5b7fb784f4e168c7fbdf7180cf2f23d9fd2faf1579b8dc53f","artifact_manifest_sha256":"5421c3f1e1791b5411b2ffa8716e3df3d4b50086aaa1eec31ac13d2a9b7fd79f","rank":19,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a305-ba07-8edc-4ee9-1c79c389ebf2","patch_sha256":"f42eabb3a4b4aaae231ebfcbb3a38adc847f6f1a5e93047b32bcac5dc1375982","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-03T20:07:03.911451Z","started_at":"2026-11-04T14:30:58.047652Z","completed_at":"2026-11-04T15:56:02.732655Z","score":{"score_schema":1,"raw_score":8192.901899999993,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3755829032,"candidate_requests":3027,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.078100676877943}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":29.4700249671936,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9385833333333333,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":8328.19609444444,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":461070.1645078652,"observed_improvement_percent":56.347382503583,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.546590033093734,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.0000010217603737469067,"welch_t":10.836911766834824,"welch_degrees_of_freedom":8.876068653402687,"statistically_significant":true,"next_epoch_minimum_improvement_percent":7.147163425844144,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.078100676877943,"findproviders_load_p95_ms":29.4700249671936,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9385833333333333,"raw_score":8192.901899999993,"received_bytes":3755829032,"request_count":3027,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.0805074204617526,"evaluation_id":"candidate-01-01a1a305","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.142532253265372,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9385833333333333,"findproviders_samples":218,"provider_egress_bytes":4074873455,"raw_score":7784.627599999998,"received_bytes":3771259112,"request_count":3042,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0982947975620652,"evaluation_id":"candidate-02-01a1a305","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.959685611724847,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9407,"findproviders_samples":218,"provider_egress_bytes":4074438386,"raw_score":8502.33125,"received_bytes":3709785747,"request_count":2996,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1082460656621829,"evaluation_id":"candidate-03-01a1a305","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.4700249671936,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9389777777777778,"findproviders_samples":218,"provider_egress_bytes":4074117093,"raw_score":8879.885699999999,"received_bytes":3676184576,"request_count":2979,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0792397569925465,"evaluation_id":"candidate-04-01a1a305","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.76497650146481,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395777777777777,"findproviders_samples":218,"provider_egress_bytes":4073722838,"raw_score":8079.837749999995,"received_bytes":3774622656,"request_count":3044,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1066465353876005,"evaluation_id":"candidate-05-01a1a305","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.890883064270014,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9392444444444444,"findproviders_samples":218,"provider_egress_bytes":4074136964,"raw_score":8077.7865999999985,"received_bytes":3681516034,"request_count":2972,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0815508979024844,"evaluation_id":"candidate-06-01a1a305","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.583568191528286,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9395777777777777,"findproviders_samples":218,"provider_egress_bytes":4073685900,"raw_score":8207.378599999996,"received_bytes":3766522600,"request_count":3042,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.083442289659579,"evaluation_id":"candidate-07-01a1a305","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.538910865783635,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.93925,"findproviders_samples":218,"provider_egress_bytes":4069224006,"raw_score":8192.901899999993,"received_bytes":3755829032,"request_count":3027,"resource_findings":[],"stability_findings":[],"success_rate":0.9983481995374959},{"accounting_coverage":1.0925576021952337,"evaluation_id":"candidate-08-01a1a305","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.011313533782864,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9397166666666666,"findproviders_samples":218,"provider_egress_bytes":4073143862,"raw_score":7444.641649999992,"received_bytes":3728081571,"request_count":2994,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.078100676877943,"evaluation_id":"candidate-09-01a1a305","findproviders_empty_pools":0,"findproviders_load_p95_ms":26.85572128295894,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9393055555555555,"findproviders_samples":218,"provider_egress_bytes":4066645445,"raw_score":9784.373800000005,"received_bytes":3772046092,"request_count":3033,"resource_findings":[],"stability_findings":[],"success_rate":0.9986811737553577}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"d579329c10efdd3f0dd54e5ca4ef8f3a13fcf38259f47e83d9ca2b5fcf5dcdd4","artifact_manifest_sha256":"5ec3dc74b3cf261f5821b5d787fdb70cf2cdf5a8e88a6ba98201e5340ed6d6b1","rank":20,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1965a-0c4c-cddf-bd5e-34c51204e889","patch_sha256":"4baa099e94baa151c92b2573231cb815b7ee4f89836dfb836ce27aca6b757a45","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-01T09:04:06.107225Z","started_at":"2026-11-02T07:17:35.378221Z","completed_at":"2026-11-02T08:43:30.91121Z","score":{"score_schema":1,"raw_score":8461.928999999991,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3761158474,"candidate_requests":3030,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0729065915515472}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":30.535839653015014,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9388777777777778,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":8362.009655555554,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":307171.995803963,"observed_improvement_percent":56.1701471896403,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.500554663086135,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.0000012769577426185772,"welch_t":10.897926537562897,"welch_degrees_of_freedom":8.584628072292304,"statistically_significant":true,"next_epoch_minimum_improvement_percent":5.81006900025994,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0729065915515472,"findproviders_load_p95_ms":30.535839653015014,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9388777777777778,"raw_score":8461.928999999991,"received_bytes":3761158474,"request_count":3030,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.082679928311896,"evaluation_id":"candidate-01-01a1965a","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.729505157470676,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393333333333334,"findproviders_samples":218,"provider_egress_bytes":4072130787,"raw_score":7875.018849999999,"received_bytes":3761158474,"request_count":3030,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0729065915515472,"evaluation_id":"candidate-02-01a1965a","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.904379463195795,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9395555555555556,"findproviders_samples":218,"provider_egress_bytes":4073104895,"raw_score":7873.333250000001,"received_bytes":3796327590,"request_count":3066,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0848124435376791,"evaluation_id":"candidate-03-01a1965a","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.74178266525268,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9392833333333334,"findproviders_samples":218,"provider_egress_bytes":4072510993,"raw_score":9006.0667,"received_bytes":3754115301,"request_count":3027,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0786249529974272,"evaluation_id":"candidate-04-01a1965a","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.655210304260244,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9388777777777778,"findproviders_samples":218,"provider_egress_bytes":4072418200,"raw_score":7712.440199999999,"received_bytes":3775564610,"request_count":3045,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.080448587764976,"evaluation_id":"candidate-05-01a1965a","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.014005947113013,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395277777777777,"findproviders_samples":218,"provider_egress_bytes":4072170634,"raw_score":8933.666549999998,"received_bytes":3768962892,"request_count":3042,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.086994584153036,"evaluation_id":"candidate-06-01a1965a","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.198664951324456,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9396666666666667,"findproviders_samples":218,"provider_egress_bytes":4072953940,"raw_score":8906.5325,"received_bytes":3746986415,"request_count":3015,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0838335272016388,"evaluation_id":"candidate-07-01a1965a","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.00171337127685,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9399,"findproviders_samples":218,"provider_egress_bytes":4072499870,"raw_score":8736.376699999993,"received_bytes":3757495748,"request_count":3024,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0789896905981549,"evaluation_id":"candidate-08-01a1965a","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.340428352355953,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397,"findproviders_samples":218,"provider_egress_bytes":4072407619,"raw_score":8461.928999999991,"received_bytes":3774278526,"request_count":3044,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0841636524935203,"evaluation_id":"candidate-09-01a1965a","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.535839653015014,"findproviders_pool_p05":2545.85,"findproviders_sample_span_fraction":0.9394,"findproviders_samples":218,"provider_egress_bytes":4072174369,"raw_score":7752.72315,"received_bytes":3756051367,"request_count":3024,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"178ef9080b5c531a92c6ec8a962e779d59a50b7dbc0f50f8f68251e1b77fbd3c","artifact_manifest_sha256":"a42905fa86d7f4943ae350546eb69387f78573ddbb6ccabd4c2f3ed2048b594a","rank":21,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1aaf0-79d0-d5b2-a36c-0b3a49113e19","patch_sha256":"228e9b43215d4ad3cb14810665436a60d4af2c9ab2309501a169181e02b63fe4","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-05T09:00:48.953013Z","started_at":"2026-11-07T08:17:05.090406Z","completed_at":"2026-11-07T09:43:13.838202Z","score":{"score_schema":1,"raw_score":8643.623199999996,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3720401647,"candidate_requests":2997,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0790335250041354}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":34.01394596099846,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9389277777777778,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":8619.16775555555,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":358855.1887216409,"observed_improvement_percent":54.822241346874,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.515838271545988,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.00000145478605832304,"welch_t":10.604966753158811,"welch_degrees_of_freedom":8.682661655383315,"statistically_significant":true,"next_epoch_minimum_improvement_percent":6.092498439193108,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0790335250041354,"findproviders_load_p95_ms":34.01394596099846,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9389277777777778,"raw_score":8643.623199999996,"received_bytes":3720401647,"request_count":2997,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.0985753980716333,"evaluation_id":"candidate-01-01a1aaf0","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.077221298217665,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394833333333333,"findproviders_samples":218,"provider_egress_bytes":4069046127,"raw_score":8541.04,"received_bytes":3703929775,"request_count":2991,"resource_findings":[],"stability_findings":[],"success_rate":0.9989969909729187},{"accounting_coverage":1.0790335250041354,"evaluation_id":"candidate-02-01a1aaf0","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.84375877380369,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9392833333333334,"findproviders_samples":218,"provider_egress_bytes":4075885761,"raw_score":8643.623199999996,"received_bytes":3777348587,"request_count":3039,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0833523749965595,"evaluation_id":"candidate-03-01a1aaf0","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.24745903015136,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9395111111111111,"findproviders_samples":218,"provider_egress_bytes":4074932316,"raw_score":9194.148600000006,"received_bytes":3761409870,"request_count":3033,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1106715784618695,"evaluation_id":"candidate-04-01a1aaf0","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.0211715698242,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9392388888888888,"findproviders_samples":218,"provider_egress_bytes":4073525895,"raw_score":7812.643400000006,"received_bytes":3667624142,"request_count":2943,"resource_findings":[],"stability_findings":[],"success_rate":0.99932042133877},{"accounting_coverage":1.0897934692069642,"evaluation_id":"candidate-05-01a1aaf0","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.64435119628901,"findproviders_pool_p05":2284.4,"findproviders_sample_span_fraction":0.9389277777777778,"findproviders_samples":218,"provider_egress_bytes":4073777718,"raw_score":8296.740399999999,"received_bytes":3738119041,"request_count":3009,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1327371058187403,"evaluation_id":"candidate-06-01a1aaf0","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.968511772155736,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393611111111111,"findproviders_samples":218,"provider_egress_bytes":4074482911,"raw_score":9375.296399999996,"received_bytes":3597024314,"request_count":2892,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0943475728612342,"evaluation_id":"candidate-07-01a1aaf0","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.637878036498996,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9392722222222222,"findproviders_samples":218,"provider_egress_bytes":4073140774,"raw_score":8724.757999999987,"received_bytes":3721980909,"request_count":2997,"resource_findings":[],"stability_findings":[],"success_rate":0.998998998998999},{"accounting_coverage":1.11533304543522,"evaluation_id":"candidate-08-01a1aaf0","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.01394596099846,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398666666666666,"findproviders_samples":218,"provider_egress_bytes":4074766914,"raw_score":9254.998999999974,"received_bytes":3653408218,"request_count":2955,"resource_findings":[],"stability_findings":[],"success_rate":0.9996615905245347},{"accounting_coverage":1.0951098743022356,"evaluation_id":"candidate-09-01a1aaf0","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.772279548645017,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395055555555556,"findproviders_samples":218,"provider_egress_bytes":4074248580,"raw_score":7729.2608000000055,"received_bytes":3720401647,"request_count":3003,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"9c9eeee11c8391eaa082db49769f750e7b74a4be3f66fb864802d6c3ae7ef7c5","artifact_manifest_sha256":"3ea5b76daa173a31b763b99cbcc640b88dd6cb3821690fa71273e3b7e0b753ee","rank":22,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1aad5-5827-a79a-ed06-52df34194821","patch_sha256":"589adee34d34326eac94a77693335462154dde02ae858e7a1af228a45705f19f","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-05T08:31:10.853592Z","started_at":"2026-11-06T18:37:22.081579Z","completed_at":"2026-11-07T08:16:58.343456Z","score":{"score_schema":1,"raw_score":8749.587799999992,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3709813734,"candidate_requests":2989,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0853307070397624}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":29.737987804412807,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9390777777777778,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":8709.873099999993,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":683212.5758016919,"observed_improvement_percent":54.34680517065868,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.615628452763456,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.0000010670340872676243,"welch_t":10.323486509290925,"welch_degrees_of_freedom":9.293505295179838,"statistically_significant":true,"next_epoch_minimum_improvement_percent":8.318925660781568,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0853307070397624,"findproviders_load_p95_ms":29.737987804412807,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9390777777777778,"raw_score":8749.587799999992,"received_bytes":3709813734,"request_count":2989,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.0919578871947606,"evaluation_id":"candidate-01-01a1aad5","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.105462646484362,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9390777777777778,"findproviders_samples":218,"provider_egress_bytes":4073709143,"raw_score":7425.846399999993,"received_bytes":3730646750,"request_count":3027,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0853307070397624,"evaluation_id":"candidate-02-01a1aad5","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.80817279815672,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9395111111111111,"findproviders_samples":218,"provider_egress_bytes":4074062831,"raw_score":8876.3344,"received_bytes":3753752478,"request_count":3009,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.116804512754451,"evaluation_id":"candidate-03-01a1aad5","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.8196012496948,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9394666666666667,"findproviders_samples":218,"provider_egress_bytes":4074526089,"raw_score":9398.5578,"received_bytes":3648378962,"request_count":2934,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.131572576780293,"evaluation_id":"candidate-04-01a1aad5","findproviders_empty_pools":0,"findproviders_load_p95_ms":42.14524364471431,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392277777777778,"findproviders_samples":218,"provider_egress_bytes":4074860448,"raw_score":9016.615099999983,"received_bytes":3601059739,"request_count":2922,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0983404494561073,"evaluation_id":"candidate-05-01a1aad5","findproviders_empty_pools":0,"findproviders_load_p95_ms":26.878994464874253,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393722222222223,"findproviders_samples":218,"provider_egress_bytes":4074638484,"raw_score":8749.587799999992,"received_bytes":3709813734,"request_count":2989,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0946738274816443,"evaluation_id":"candidate-06-01a1aad5","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.966689300537,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9404833333333333,"findproviders_samples":218,"provider_egress_bytes":4068597090,"raw_score":10262.208199999995,"received_bytes":3716720897,"request_count":2997,"resource_findings":[],"stability_findings":[],"success_rate":0.998998998998999},{"accounting_coverage":1.1360653405311736,"evaluation_id":"candidate-07-01a1aad5","findproviders_empty_pools":0,"findproviders_load_p95_ms":26.78629217147822,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395277777777777,"findproviders_samples":218,"provider_egress_bytes":4074276226,"raw_score":8436.8574,"received_bytes":3586304485,"request_count":2873,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.095620586859499,"evaluation_id":"candidate-08-01a1aad5","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.737987804412807,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93985,"findproviders_samples":218,"provider_egress_bytes":4074458537,"raw_score":8014.598199999994,"received_bytes":3718859052,"request_count":2997,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1135436254191413,"evaluation_id":"candidate-09-01a1aad5","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.759875106811492,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9391888888888889,"findproviders_samples":218,"provider_egress_bytes":4073677823,"raw_score":8208.252599999985,"received_bytes":3658301058,"request_count":2937,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"919c034263eb2c4640d7ec2c09cad120e4766fb4530fbd95bbea1daa204f6388","artifact_manifest_sha256":"da59707a0125dc36fbbbe7226f371ace75351f7b6306a8810e2668ac33ecc1b3","rank":23,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a7bf-290f-1096-4a2d-952811c1a0f2","patch_sha256":"9f8e32cfbab5fe4a6bb281dfdd064b556a5a22aa1a89a9a5f9ce626692288890","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-04T18:08:05.35813Z","started_at":"2026-11-06T12:41:36.79765Z","completed_at":"2026-11-06T14:08:56.863169Z","score":{"score_schema":1,"raw_score":8754.880399999991,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3684734533,"candidate_requests":2973,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0838652518241751}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":32.08394298553466,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9390833333333334,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":8908.990105555557,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":136973.11122352592,"observed_improvement_percent":53.303124356472864,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.451583735585762,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.00000240918436514575,"welch_t":10.444312978722778,"welch_degrees_of_freedom":8.260974921842543,"statistically_significant":true,"next_epoch_minimum_improvement_percent":3.6415839702777224,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0838652518241751,"findproviders_load_p95_ms":32.08394298553466,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9390833333333334,"raw_score":8754.880399999991,"received_bytes":3684734533,"request_count":2973,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1131728808309327,"evaluation_id":"candidate-01-01a1a7bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.789170646667465,"findproviders_pool_p05":2549,"findproviders_sample_span_fraction":0.9431944444444444,"findproviders_samples":220,"provider_egress_bytes":4051888035,"raw_score":8413.994299999991,"received_bytes":3639944976,"request_count":2955,"resource_findings":[],"stability_findings":[],"success_rate":0.9989847715736041},{"accounting_coverage":1.0838652518241751,"evaluation_id":"candidate-02-01a1a7bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.65013580322265,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.93915,"findproviders_samples":218,"provider_egress_bytes":4059616878,"raw_score":8715.148500000001,"received_bytes":3745499610,"request_count":3026,"resource_findings":[],"stability_findings":[],"success_rate":0.9990085922009253},{"accounting_coverage":1.1055714943684927,"evaluation_id":"candidate-03-01a1a7bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.44328289031981,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398222222222222,"findproviders_samples":218,"provider_egress_bytes":4073737464,"raw_score":8988.871400000007,"received_bytes":3684734533,"request_count":2973,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1207489482368074,"evaluation_id":"candidate-04-01a1a7bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.08394298553466,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392722222222222,"findproviders_samples":218,"provider_egress_bytes":4074085776,"raw_score":8687.866800000009,"received_bytes":3635145750,"request_count":2943,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.092378252353074,"evaluation_id":"candidate-05-01a1a7bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.4755500793457,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395666666666667,"findproviders_samples":218,"provider_egress_bytes":4074681395,"raw_score":8754.880399999991,"received_bytes":3730101168,"request_count":3012,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1166498227700585,"evaluation_id":"candidate-06-01a1a7bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.24584369659421,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398611111111111,"findproviders_samples":218,"provider_egress_bytes":4109135035,"raw_score":9554.014549999998,"received_bytes":3679877927,"request_count":2994,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1044633355747775,"evaluation_id":"candidate-07-01a1a7bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.628577995300066,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397,"findproviders_samples":218,"provider_egress_bytes":4075780491,"raw_score":8617.2935,"received_bytes":3690281388,"request_count":2971,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1012473727630248,"evaluation_id":"candidate-08-01a1a7bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.71665420532226,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9390833333333334,"findproviders_samples":218,"provider_egress_bytes":4076580932,"raw_score":9354.856,"received_bytes":3701784933,"request_count":2991,"resource_findings":[],"stability_findings":[],"success_rate":0.9996656636576395},{"accounting_coverage":1.1159782350099563,"evaluation_id":"candidate-09-01a1a7bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.333229827880857,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9392055555555555,"findproviders_samples":218,"provider_egress_bytes":4075104603,"raw_score":9093.985499999999,"received_bytes":3651598638,"request_count":2931,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"ed13a51678ea05ea6c7c2bbb377e8d8acb15163caa300a9c59a0c1419fc4177a","artifact_manifest_sha256":"6340442eb0f70f30a7f2752c6d11c8caa15a892231114dff76fd2822859a4c15","rank":24,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a18b89-8032-6304-c279-23421b98c369","patch_sha256":"2523262e03e9df5d1d41374d5f62d206673c71db8fc366ef04ac65d2000b62b7","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-30T06:40:06.667187Z","started_at":"2026-11-01T01:51:11.021583Z","completed_at":"2026-11-01T03:21:54.318682Z","score":{"score_schema":1,"raw_score":8788.039499999999,"normalized_score":200,"placeable":true,"takeover_eligible":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3557807931,"candidate_requests":2867,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1191088241766205}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":43.258273315429605,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9386722222222222,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":8891.266177777778,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":309202.3019129358,"observed_improvement_percent":53.39602512766552,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.501151574592411,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.0000019134913686088862,"welch_t":10.358493273705852,"welch_degrees_of_freedom":8.58848183742317,"statistically_significant":true,"next_epoch_minimum_improvement_percent":5.482250708444288,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":true,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1191088241766205,"findproviders_load_p95_ms":43.258273315429605,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9386722222222222,"raw_score":8788.039499999999,"received_bytes":3557807931,"request_count":2867,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.164400582481497,"evaluation_id":"candidate-01-01a18b89","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.60218830108638,"findproviders_pool_p05":2550,"findproviders_sample_span_fraction":0.9398222222222222,"findproviders_samples":218,"provider_egress_bytes":4072093958,"raw_score":8029.871,"received_bytes":3497158984,"request_count":2826,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.151246893038909,"evaluation_id":"candidate-02-01a18b89","findproviders_empty_pools":0,"findproviders_load_p95_ms":48.24656753540035,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9399166666666666,"findproviders_samples":218,"provider_egress_bytes":4105479073,"raw_score":8763.881499999998,"received_bytes":3566115225,"request_count":2867,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1346884649571176,"evaluation_id":"candidate-03-01a18b89","findproviders_empty_pools":0,"findproviders_load_p95_ms":49.23303413391107,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9395944444444444,"findproviders_samples":218,"provider_egress_bytes":4072118910,"raw_score":8770.672300000002,"received_bytes":3588755007,"request_count":2883,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1640789654333281,"evaluation_id":"candidate-04-01a18b89","findproviders_empty_pools":0,"findproviders_load_p95_ms":43.258273315429605,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395333333333333,"findproviders_samples":218,"provider_egress_bytes":4072338730,"raw_score":8955.590200000002,"received_bytes":3498335466,"request_count":2823,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1447078288049384,"evaluation_id":"candidate-05-01a18b89","findproviders_empty_pools":0,"findproviders_load_p95_ms":48.66970806121822,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395611111111111,"findproviders_samples":218,"provider_egress_bytes":4072650592,"raw_score":10173.569500000001,"received_bytes":3557807931,"request_count":2871,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1191088241766205,"evaluation_id":"candidate-06-01a18b89","findproviders_empty_pools":0,"findproviders_load_p95_ms":40.35800418853748,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93935,"findproviders_samples":218,"provider_egress_bytes":4072216070,"raw_score":8788.039499999999,"received_bytes":3638802574,"request_count":2931,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1499603777503813,"evaluation_id":"candidate-07-01a18b89","findproviders_empty_pools":0,"findproviders_load_p95_ms":46.20399703979484,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9398277777777778,"findproviders_samples":218,"provider_egress_bytes":4072358384,"raw_score":8985.887600000007,"received_bytes":3541303216,"request_count":2853,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1429846031616984,"evaluation_id":"candidate-08-01a18b89","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.0994337081909,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9386722222222222,"findproviders_samples":218,"provider_egress_bytes":4068980620,"raw_score":8834.642249999994,"received_bytes":3559961008,"request_count":2880,"resource_findings":[],"stability_findings":[],"success_rate":0.9993055555555556},{"accounting_coverage":1.1652759195755322,"evaluation_id":"candidate-09-01a18b89","findproviders_empty_pools":0,"findproviders_load_p95_ms":41.662983894348145,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9398944444444445,"findproviders_samples":218,"provider_egress_bytes":4105465221,"raw_score":8719.241750000001,"received_bytes":3523170051,"request_count":2846,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"2fed48ecdfe8f91a04c5fd978914d15cca368200bb6695e8bf9f3b845388b025","artifact_manifest_sha256":"92493c84d59a01eeec3e687d5d1a7493514a30bdfc0cad0fa3db3b3bc7d7e95d","rank":25,"eligible_candidate_rank":4,"eligible":true},{"job_id":"01a19010-a73f-a09c-9f04-aa030bbdf469","patch_sha256":"16a168c6b3dafdf7bbb9c58e570df1c2aeb608900d956dca2ba64d76aa49bdeb","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-31T03:46:12.883964Z","started_at":"2026-11-01T13:22:41.342955Z","completed_at":"2026-11-05T02:14:41.472429Z","score":{"score_schema":1,"raw_score":8855.474,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9996734160679295}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3735144517,"candidate_requests":3017,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0686849758074557}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":30.649539756774892,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9384166666666667,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":8927.149988888883,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":582188.005533523,"observed_improvement_percent":53.20793850446608,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.583876025819597,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000001430376998737227,"welch_t":10.163861002173144,"welch_degrees_of_freedom":9.10422819040786,"statistically_significant":true,"next_epoch_minimum_improvement_percent":7.492382490924039,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0686849758074557,"findproviders_load_p95_ms":30.649539756774892,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9384166666666667,"raw_score":8855.474,"received_bytes":3735144517,"request_count":3017,"success_rate":0.9996734160679295},"replicate_count":9,"replicates":[{"accounting_coverage":1.0775900143153203,"evaluation_id":"candidate-01-01a19010","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.001400375366178,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93945,"findproviders_samples":218,"provider_egress_bytes":4074300401,"raw_score":7715.114499999994,"received_bytes":3780937413,"request_count":3044,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.091475216941385,"evaluation_id":"candidate-02-01a19010","findproviders_empty_pools":0,"findproviders_load_p95_ms":26.29634790420532,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9393444444444444,"findproviders_samples":218,"provider_egress_bytes":4076817672,"raw_score":8067.97319999999,"received_bytes":3735144517,"request_count":3017,"resource_findings":[],"stability_findings":[],"success_rate":0.9993370898243288},{"accounting_coverage":1.0946008144614303,"evaluation_id":"candidate-03-01a19010","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.158274459838808,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398277777777778,"findproviders_samples":218,"provider_egress_bytes":4056775734,"raw_score":8482.774649999994,"received_bytes":3706169117,"request_count":2990,"resource_findings":[],"stability_findings":[],"success_rate":0.9993311036789297},{"accounting_coverage":1.1077904219724932,"evaluation_id":"candidate-04-01a19010","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.251134777069055,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9397777777777778,"findproviders_samples":218,"provider_egress_bytes":4045593849,"raw_score":9459.22889999999,"received_bytes":3651948752,"request_count":2972,"resource_findings":[],"stability_findings":[],"success_rate":0.9983176312247645},{"accounting_coverage":1.1007843689565138,"evaluation_id":"candidate-05-01a19010","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.257365989685056,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9397444444444445,"findproviders_samples":218,"provider_egress_bytes":4074522337,"raw_score":10045.429499999975,"received_bytes":3701471834,"request_count":2990,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.074795837621411,"evaluation_id":"candidate-06-01a19010","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.887668228149394,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9390444444444445,"findproviders_samples":218,"provider_egress_bytes":4074226589,"raw_score":9644.873950000001,"received_bytes":3790698146,"request_count":3062,"resource_findings":[],"stability_findings":[],"success_rate":0.9996734160679295},{"accounting_coverage":1.082552130727221,"evaluation_id":"candidate-07-01a19010","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.306150817871064,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9384166666666667,"findproviders_samples":218,"provider_egress_bytes":4075220666,"raw_score":9332.441,"received_bytes":3764456741,"request_count":3021,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0686849758074557,"evaluation_id":"candidate-08-01a19010","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.60217037200917,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397111111111112,"findproviders_samples":218,"provider_egress_bytes":4074213918,"raw_score":8855.474,"received_bytes":3812361931,"request_count":3081,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1025851312638328,"evaluation_id":"candidate-09-01a19010","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.649539756774892,"findproviders_pool_p05":2547.85,"findproviders_sample_span_fraction":0.9396,"findproviders_samples":218,"provider_egress_bytes":4070892975,"raw_score":8741.040199999996,"received_bytes":3692134838,"request_count":2979,"resource_findings":[],"stability_findings":[],"success_rate":0.9993286337697214}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"6a337ef8d4f397e2d916ffc0c154bd563259215ff3400bfe964b38b0f3da601c","artifact_manifest_sha256":"3d60a0fbabc64084549ab2a71080e3652c99652432fe7f4441e570116d724f55","rank":26,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1931a-3b39-9594-b915-d7d05a94f45a","patch_sha256":"d6d1644fbef9dc0eb03f2f72fefb76abbda4ec30a6ec2058cb7be3d376abc4bd","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-31T17:55:31.887279Z","started_at":"2026-11-01T17:47:13.081437Z","completed_at":"2026-11-05T06:12:40.694582Z","score":{"score_schema":1,"raw_score":8976.026749999999,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3747304398,"candidate_requests":3021,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0742762023514254}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":32.49044265747064,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9357,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":9004.207816666665,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":395270.8739514453,"observed_improvement_percent":52.804036405747226,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.526715725495007,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.0000018879490227294198,"welch_t":10.19338050279493,"welch_degrees_of_freedom":8.751644045538466,"statistically_significant":true,"next_epoch_minimum_improvement_percent":6.1207274621610175,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0742762023514254,"findproviders_load_p95_ms":32.49044265747064,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9357,"raw_score":8976.026749999999,"received_bytes":3747304398,"request_count":3021,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.095885866622669,"evaluation_id":"candidate-01-01a1931a","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.096012783050533,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9357,"findproviders_samples":218,"provider_egress_bytes":4072480352,"raw_score":9072.81275,"received_bytes":3716153731,"request_count":3006,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.098298880048198,"evaluation_id":"candidate-02-01a1931a","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.49044265747064,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9393277777777778,"findproviders_samples":218,"provider_egress_bytes":4072730175,"raw_score":10549.655049999998,"received_bytes":3708216633,"request_count":2994,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0902049333990433,"evaluation_id":"candidate-03-01a1931a","findproviders_empty_pools":0,"findproviders_load_p95_ms":24.805131626129146,"findproviders_pool_p05":2547.85,"findproviders_sample_span_fraction":0.9384222222222223,"findproviders_samples":218,"provider_egress_bytes":4072423066,"raw_score":8651.31414999999,"received_bytes":3735465637,"request_count":3012,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0866693242676893,"evaluation_id":"candidate-04-01a1931a","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.17287435531616,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9389388888888889,"findproviders_samples":218,"provider_egress_bytes":4072080738,"raw_score":8976.026749999999,"received_bytes":3747304398,"request_count":3026,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0760067111947516,"evaluation_id":"candidate-05-01a1931a","findproviders_empty_pools":0,"findproviders_load_p95_ms":37.35722732543943,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393277777777778,"findproviders_samples":218,"provider_egress_bytes":4072618683,"raw_score":8400.6585,"received_bytes":3784937994,"request_count":3066,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0829723886707985,"evaluation_id":"candidate-06-01a1931a","findproviders_empty_pools":0,"findproviders_load_p95_ms":43.41375579833981,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9391666666666667,"findproviders_samples":218,"provider_egress_bytes":4072774240,"raw_score":8652.385,"received_bytes":3760736915,"request_count":3021,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0742762023514254,"evaluation_id":"candidate-07-01a1931a","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.69832553863518,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9399222222222222,"findproviders_samples":218,"provider_egress_bytes":4072845036,"raw_score":8621.459799999999,"received_bytes":3791245703,"request_count":3057,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0830550871799265,"evaluation_id":"candidate-08-01a1931a","findproviders_empty_pools":0,"findproviders_load_p95_ms":46.87947750091552,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9392277777777778,"findproviders_samples":218,"provider_egress_bytes":4072333045,"raw_score":9014.056349999997,"received_bytes":3760042396,"request_count":3040,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0919752593617718,"evaluation_id":"candidate-09-01a1931a","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.621708965301476,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.93985,"findproviders_samples":218,"provider_egress_bytes":4072718127,"raw_score":9099.502,"received_bytes":3729679855,"request_count":3001,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"663fa20268c24e8787de0cdd3d14036d4ddeaf4bfb5643391012cd2463ce1824","artifact_manifest_sha256":"ff32417cf22437b2d55193f833131f0579be5dfbbc198671643b45e8a67960bd","rank":27,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a189f1-3c98-6033-4691-3c57d8aba20b","patch_sha256":"094cf98d924163d9c9b1a45f4d5959f897821308c0e9f777b917ab9fb774707e","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-29T23:14:10.671677Z","started_at":"2026-11-01T00:25:30.377341Z","completed_at":"2026-11-01T01:51:03.919309Z","score":{"score_schema":1,"raw_score":9209.753699999976,"normalized_score":200,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3659783881,"candidate_requests":2958,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0893025140242318}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.593339729309076,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9386833333333333,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":9191.858222222212,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":721926.1922037508,"observed_improvement_percent":51.82045829544934,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.627944279820223,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.0000015426375943209874,"welch_t":9.822671487998809,"welch_degrees_of_freedom":9.365753446234407,"statistically_significant":true,"next_epoch_minimum_improvement_percent":8.102969931966149,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0893025140242318,"findproviders_load_p95_ms":31.593339729309076,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9386833333333333,"raw_score":9209.753699999976,"received_bytes":3659783881,"request_count":2958,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.0893025140242318,"evaluation_id":"candidate-01-01a189f1","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.309479618072505,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9386833333333333,"findproviders_samples":218,"provider_egress_bytes":4074688165,"raw_score":9209.753699999976,"received_bytes":3740639641,"request_count":3020,"resource_findings":[],"stability_findings":[],"success_rate":0.9996688741721854},{"accounting_coverage":1.117166839920455,"evaluation_id":"candidate-02-01a189f1","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.520776367187494,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9394,"findproviders_samples":218,"provider_egress_bytes":4075696613,"raw_score":9619.566199999965,"received_bytes":3648243456,"request_count":2935,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1016716358800702,"evaluation_id":"candidate-03-01a189f1","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.774117183685302,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9389166666666666,"findproviders_samples":218,"provider_egress_bytes":4076556120,"raw_score":10615.426,"received_bytes":3700336822,"request_count":2981,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1172942386709597,"evaluation_id":"candidate-04-01a189f1","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.624933433532675,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9395,"findproviders_samples":218,"provider_egress_bytes":4075382035,"raw_score":9391.792300000005,"received_bytes":3647545914,"request_count":2958,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1163174589136318,"evaluation_id":"candidate-05-01a189f1","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.593339729309076,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9390833333333334,"findproviders_samples":218,"provider_egress_bytes":4073619748,"raw_score":8749.843349999986,"received_bytes":3649158862,"request_count":2940,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1140344098367814,"evaluation_id":"candidate-06-01a189f1","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.66584072113035,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9396777777777777,"findproviders_samples":218,"provider_egress_bytes":4077125176,"raw_score":9064.648799999983,"received_bytes":3659783881,"request_count":2949,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1529117610762165,"evaluation_id":"candidate-07-01a189f1","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.46553382873533,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9396944444444445,"findproviders_samples":218,"provider_egress_bytes":4074286269,"raw_score":9955.070800000005,"received_bytes":3533909885,"request_count":2853,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.089729923102823,"evaluation_id":"candidate-08-01a189f1","findproviders_empty_pools":0,"findproviders_load_p95_ms":26.62827749252318,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93965,"findproviders_samples":218,"provider_egress_bytes":4074254383,"raw_score":8352.53325,"received_bytes":3738774440,"request_count":3006,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1041035844856906,"evaluation_id":"candidate-09-01a189f1","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.70410957336425,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9393833333333333,"findproviders_samples":218,"provider_egress_bytes":4074111271,"raw_score":7768.089599999996,"received_bytes":3689971963,"request_count":2979,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"d28f3701e0c01ccd27ed5e930ad5d2406b66d59830d0f1b348a29ab815eb282d","artifact_manifest_sha256":"7e774e2e0d95b81e46fc4f31a9ca3025a2aa3ed2a3086707bef7de6db432dfc0","rank":28,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a18cb9-8d0a-26c0-941f-fd9ef93d04aa","patch_sha256":"2fd2b18c5bd93e39aba68b4d9af74e2f8fd5724d58cf37ed0c6f096436c39c42","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-30T12:12:12.910896Z","started_at":"2026-11-01T06:13:52.866402Z","completed_at":"2026-11-01T07:40:51.904691Z","score":{"score_schema":1,"raw_score":10231.138500000003,"normalized_score":191.14307366672804,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3659854788,"candidate_requests":2952,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0917743270460218}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.434749031066886,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9374722222222223,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":10287.910494444443,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":160398.61936423753,"observed_improvement_percent":46.07545060677202,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.458194237425905,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.0000071735024732169344,"welch_t":9.015741364378075,"welch_degrees_of_freedom":8.305577358145207,"statistically_significant":true,"next_epoch_minimum_improvement_percent":3.4125127345403032,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0917743270460218,"findproviders_load_p95_ms":31.434749031066886,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9374722222222223,"raw_score":10231.138500000003,"received_bytes":3659854788,"request_count":2952,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.0917743270460218,"evaluation_id":"candidate-01-01a18cb9","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.356365203857415,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.93955,"findproviders_samples":218,"provider_egress_bytes":4042042567,"raw_score":10590.732699999999,"received_bytes":3702269294,"request_count":2994,"resource_findings":[],"stability_findings":[],"success_rate":0.9966599866399466},{"accounting_coverage":1.1299333246594694,"evaluation_id":"candidate-02-01a18cb9","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.22959823608396,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394055555555556,"findproviders_samples":218,"provider_egress_bytes":4074988524,"raw_score":10589.029999999999,"received_bytes":3606397329,"request_count":2919,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.136264073970597,"evaluation_id":"candidate-03-01a18cb9","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.58692264556879,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9391388888888889,"findproviders_samples":218,"provider_egress_bytes":4071125657,"raw_score":10231.138500000003,"received_bytes":3582904494,"request_count":2898,"resource_findings":[],"stability_findings":[],"success_rate":0.9996549344375432},{"accounting_coverage":1.1338165413739298,"evaluation_id":"candidate-04-01a18cb9","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.758514499664294,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9391222222222222,"findproviders_samples":218,"provider_egress_bytes":4074754493,"raw_score":9607.311849999998,"received_bytes":3593839342,"request_count":2904,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1102539416408106,"evaluation_id":"candidate-05-01a18cb9","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.434749031066886,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9395888888888889,"findproviders_samples":218,"provider_egress_bytes":4070747406,"raw_score":10764.297,"received_bytes":3666501197,"request_count":2961,"resource_findings":[],"stability_findings":[],"success_rate":0.9993245525160419},{"accounting_coverage":1.141731550982433,"evaluation_id":"candidate-06-01a18cb9","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.53208999633785,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9396111111111111,"findproviders_samples":218,"provider_egress_bytes":4073845157,"raw_score":9841.79425,"received_bytes":3568128737,"request_count":2886,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1124162587492488,"evaluation_id":"candidate-07-01a18cb9","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.15462436676022,"findproviders_pool_p05":2546.85,"findproviders_sample_span_fraction":0.9374722222222223,"findproviders_samples":218,"provider_egress_bytes":4074868244,"raw_score":10686.10025,"received_bytes":3663078647,"request_count":2954,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1108224972161955,"evaluation_id":"candidate-08-01a18cb9","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.78965444564818,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9391888888888889,"findproviders_samples":218,"provider_egress_bytes":4074588907,"raw_score":10196.682499999999,"received_bytes":3668082810,"request_count":2970,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1143520380568717,"evaluation_id":"candidate-09-01a18cb9","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.53382472991936,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392944444444444,"findproviders_samples":218,"provider_egress_bytes":4078366642,"raw_score":10084.107399999992,"received_bytes":3659854788,"request_count":2952,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"6135ee2935630aa224a6bcda20ba2346e5906a4bbb327e9c505c5059493fcd48","artifact_manifest_sha256":"82b05f951122065bd586bc3fb176bdffc7a9b63d37825837fd534302c2621c3f","rank":29,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a197a5-f1da-4200-b60c-6a9c21bbfeea","patch_sha256":"f418b63445f123dbfbb72419763c3a7aa0d3b4813f4e7b83f03ba86ccd399dd2","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-01T15:06:24.00842Z","started_at":"2026-11-02T10:14:17.340194Z","completed_at":"2026-11-02T11:41:34.054361Z","score":{"score_schema":1,"raw_score":10242.03125,"normalized_score":190.93978648034275,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9996612466124661}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3673057888,"candidate_requests":2952,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1023638772494362}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.54373903274528,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9391166666666667,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":10121.987411111106,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":168867.67393555594,"observed_improvement_percent":46.945143972350664,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.4605946602547,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000006164088986875496,"welch_t":9.181374221930083,"welch_degrees_of_freedom":8.32169913382002,"statistically_significant":true,"next_epoch_minimum_improvement_percent":3.5588412258915847,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1023638772494362,"findproviders_load_p95_ms":31.54373903274528,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9391166666666667,"raw_score":10242.03125,"received_bytes":3673057888,"request_count":2952,"success_rate":0.9996612466124661},"replicate_count":9,"replicates":[{"accounting_coverage":1.1289234147617457,"evaluation_id":"candidate-01-01a197a5","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.57914733886718,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9402944444444444,"findproviders_samples":218,"provider_egress_bytes":4080628300,"raw_score":10517.398000000001,"received_bytes":3614619244,"request_count":2916,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.106110277853001,"evaluation_id":"candidate-02-01a197a5","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.43100585937498,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9402166666666667,"findproviders_samples":218,"provider_egress_bytes":4112690157,"raw_score":9815.478600000002,"received_bytes":3718155630,"request_count":2993,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1090434946334142,"evaluation_id":"candidate-03-01a197a5","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.90623960494993,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9396944444444445,"findproviders_samples":218,"provider_egress_bytes":4081632959,"raw_score":10313.362749999998,"received_bytes":3680318201,"request_count":2952,"resource_findings":[],"stability_findings":[],"success_rate":0.9996612466124661},{"accounting_coverage":1.1179964480028224,"evaluation_id":"candidate-04-01a197a5","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.996357440948444,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9395888888888889,"findproviders_samples":218,"provider_egress_bytes":4077396718,"raw_score":10426.374099999999,"received_bytes":3647056952,"request_count":2942,"resource_findings":[],"stability_findings":[],"success_rate":0.9989802855200544},{"accounting_coverage":1.1023638772494362,"evaluation_id":"candidate-05-01a197a5","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.54373903274528,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9391166666666667,"findproviders_samples":218,"provider_egress_bytes":4076122862,"raw_score":10242.03125,"received_bytes":3697620129,"request_count":2978,"resource_findings":[],"stability_findings":[],"success_rate":0.9989926124916051},{"accounting_coverage":1.1077529412988145,"evaluation_id":"candidate-06-01a197a5","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.554240798950197,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.93975,"findproviders_samples":218,"provider_egress_bytes":4078856497,"raw_score":9247.057,"received_bytes":3682099451,"request_count":2967,"resource_findings":[],"stability_findings":[],"success_rate":0.9993259184361307},{"accounting_coverage":1.1105814107441587,"evaluation_id":"candidate-07-01a197a5","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.44297180175777,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393555555555556,"findproviders_samples":218,"provider_egress_bytes":4079229811,"raw_score":10505.834849999968,"received_bytes":3673057888,"request_count":2970,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.131402220012835,"evaluation_id":"candidate-08-01a197a5","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.923811149597164,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9401444444444444,"findproviders_samples":218,"provider_egress_bytes":4111522577,"raw_score":10118.36924999999,"received_bytes":3634006107,"request_count":2950,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1231954453339148,"evaluation_id":"candidate-09-01a197a5","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.06812114715575,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397222222222222,"findproviders_samples":218,"provider_egress_bytes":4077099373,"raw_score":9911.980899999986,"received_bytes":3629910885,"request_count":2927,"resource_findings":[],"stability_findings":[],"success_rate":0.998975059788179}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"63524c678bafe33e59cad2f0cf7aa2bbb31f95448c2b3bd089d8c9bc0a4299a9","artifact_manifest_sha256":"d774ec4bce16158c0ccd14fac89e4ec12d38b1e30eba1fc620bab2b99067ce07","rank":30,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a79a-db05-8307-3cc0-81101c73adef","patch_sha256":"86add94b4907a293513aff99f384592bca13b252668baf977be810d9af50613d","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-04T17:28:26.081483Z","started_at":"2026-11-06T11:14:36.948387Z","completed_at":"2026-11-06T12:41:30.556952Z","score":{"score_schema":1,"raw_score":10584.320049999997,"normalized_score":184.76494009645887,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3630445368,"candidate_requests":2945,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.094207363699275}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":34.026148605346656,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9390388888888889,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":11232.353177777773,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":1992189.770962377,"observed_improvement_percent":41.125111453453876,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.065625925154526,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.00000572741587520276,"welch_t":7.30317628595691,"welch_degrees_of_freedom":11.594336047388715,"statistically_significant":true,"next_epoch_minimum_improvement_percent":11.015285235711676,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.094207363699275,"findproviders_load_p95_ms":34.026148605346656,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9390388888888889,"raw_score":10584.320049999997,"received_bytes":3630445368,"request_count":2945,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1250696608403075,"evaluation_id":"candidate-01-01a1a79a","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.884718894958485,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394611111111111,"findproviders_samples":218,"provider_egress_bytes":4075312185,"raw_score":12535.292149999997,"received_bytes":3622275426,"request_count":2934,"resource_findings":[],"stability_findings":[],"success_rate":0.9996591683708248},{"accounting_coverage":1.094207363699275,"evaluation_id":"candidate-02-01a1a79a","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.33531455993647,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395833333333333,"findproviders_samples":218,"provider_egress_bytes":4074292969,"raw_score":10402.2144,"received_bytes":3723510830,"request_count":3009,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.120386465970715,"evaluation_id":"candidate-03-01a1a79a","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.40112361907953,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9402333333333334,"findproviders_samples":218,"provider_egress_bytes":4108025227,"raw_score":9743.171,"received_bytes":3666614469,"request_count":2961,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1283758946864435,"evaluation_id":"candidate-04-01a1a79a","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.62302932739255,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395666666666667,"findproviders_samples":218,"provider_egress_bytes":4075696495,"raw_score":10458.095799999997,"received_bytes":3612002449,"request_count":2929,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1081050794647298,"evaluation_id":"candidate-05-01a1a79a","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.44386196136458,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9391444444444444,"findproviders_samples":218,"provider_egress_bytes":4022914953,"raw_score":10000.402599999996,"received_bytes":3630445368,"request_count":2945,"resource_findings":[],"stability_findings":[],"success_rate":0.998981324278438},{"accounting_coverage":1.1059219747421902,"evaluation_id":"candidate-06-01a1a79a","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.026148605346656,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9390388888888889,"findproviders_samples":218,"provider_egress_bytes":4076782232,"raw_score":11691.380799999966,"received_bytes":3686319944,"request_count":2970,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.134985092965039,"evaluation_id":"candidate-07-01a1a79a","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.746943283081055,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398777777777778,"findproviders_samples":218,"provider_egress_bytes":4109853840,"raw_score":11528.938999999995,"received_bytes":3621064158,"request_count":2929,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1118828758167378,"evaluation_id":"candidate-08-01a1a79a","findproviders_empty_pools":0,"findproviders_load_p95_ms":42.992820167541474,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9395222222222223,"findproviders_samples":218,"provider_egress_bytes":4074425825,"raw_score":10584.320049999997,"received_bytes":3664437967,"request_count":2950,"resource_findings":[],"stability_findings":[],"success_rate":0.9993220338983051},{"accounting_coverage":1.1474433749808701,"evaluation_id":"candidate-09-01a1a79a","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.71294345855713,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9398833333333333,"findproviders_samples":218,"provider_egress_bytes":4070246341,"raw_score":14147.36280000001,"received_bytes":3547230678,"request_count":2883,"resource_findings":[],"stability_findings":[],"success_rate":0.9989594172736732}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"51bf1f787b511f18758cf22d6205dfa2f9f4c67bf69a073e685acf5cf5ec9b23","artifact_manifest_sha256":"67a50c627e10b22ea7c15ec9df328a2a8c91e8208fd108e57096a5ba3b1b71d1","rank":31,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a18f21-1621-69c7-7d06-8ffbf3e740c0","patch_sha256":"15bf9f88f7e7291b17f245fc09d3fb6f81e5cd32fce06e7dd163bd9dd6c8d996","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-30T23:24:32.615067Z","started_at":"2026-11-01T11:55:27.262597Z","completed_at":"2026-11-01T13:22:34.029991Z","score":{"score_schema":1,"raw_score":10672.516500000005,"normalized_score":183.2380638624449,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3676296804,"candidate_requests":2957,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0783369468912967}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":33.440527915954576,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9390555555555555,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":10587.621511111103,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":721150.2100999707,"observed_improvement_percent":44.50450172160594,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.627696639638804,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.0000056235626392128995,"welch_t":8.436276307453047,"welch_degrees_of_freedom":9.364306945309481,"statistically_significant":true,"next_epoch_minimum_improvement_percent":7.030975823513089,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0783369468912967,"findproviders_load_p95_ms":33.440527915954576,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9390555555555555,"raw_score":10672.516500000005,"received_bytes":3676296804,"request_count":2957,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.0970338354280251,"evaluation_id":"candidate-01-01a18f21","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.440527915954576,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93955,"findproviders_samples":218,"provider_egress_bytes":4068040964,"raw_score":9747.861300000002,"received_bytes":3708218318,"request_count":3003,"resource_findings":[],"stability_findings":[],"success_rate":0.999000999000999},{"accounting_coverage":1.1154878195472246,"evaluation_id":"candidate-02-01a18f21","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.95601549148559,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9392888888888888,"findproviders_samples":218,"provider_egress_bytes":4063161797,"raw_score":11242.825,"received_bytes":3642497682,"request_count":2941,"resource_findings":[],"stability_findings":[],"success_rate":0.9986399183951037},{"accounting_coverage":1.1458429833101136,"evaluation_id":"candidate-03-01a18f21","findproviders_empty_pools":0,"findproviders_load_p95_ms":37.39870605468743,"findproviders_pool_p05":2545.85,"findproviders_sample_span_fraction":0.9390555555555555,"findproviders_samples":218,"provider_egress_bytes":4076692548,"raw_score":11928.828199999949,"received_bytes":3557810806,"request_count":2880,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1074915865699893,"evaluation_id":"candidate-04-01a18f21","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.296003913879325,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398,"findproviders_samples":218,"provider_egress_bytes":4074210915,"raw_score":10160.183599999973,"received_bytes":3678773694,"request_count":2957,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1314096761214112,"evaluation_id":"candidate-05-01a18f21","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.775048255920346,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397111111111112,"findproviders_samples":218,"provider_egress_bytes":4074809405,"raw_score":10775.9093,"received_bytes":3601533106,"request_count":2907,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1275778648725314,"evaluation_id":"candidate-06-01a18f21","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.319981861114478,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398444444444445,"findproviders_samples":218,"provider_egress_bytes":4074976123,"raw_score":11179.6081,"received_bytes":3613919934,"request_count":2919,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0963604061548895,"evaluation_id":"candidate-07-01a18f21","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.22522068023681,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9391722222222222,"findproviders_samples":218,"provider_egress_bytes":4076508127,"raw_score":9087.209400000002,"received_bytes":3718219031,"request_count":3003,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0783369468912967,"evaluation_id":"candidate-08-01a18f21","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.523713493347145,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393166666666667,"findproviders_samples":218,"provider_egress_bytes":4075579766,"raw_score":10493.652199999999,"received_bytes":3779504892,"request_count":3044,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1092594957411932,"evaluation_id":"candidate-09-01a18f21","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.06332683563231,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93925,"findproviders_samples":218,"provider_egress_bytes":4077967139,"raw_score":10672.516500000005,"received_bytes":3676296804,"request_count":2978,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"38927266900c3020b020b08a7d2ae0b3471c91bcd77a878b9fafcf02228a01f7","artifact_manifest_sha256":"0bae0611ac39c0b569b14d9bd490db90c3d387fee4a1cb9d38be38927b9ad5ba","rank":32,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a19101-46fe-9c25-58ea-459dce40b8d5","patch_sha256":"b75d214d206256c32f709c21d87e6903d2e0cc6541f83c398bb54a7a1453579d","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-31T08:09:02.434409Z","started_at":"2026-11-01T14:52:03.459576Z","completed_at":"2026-11-05T03:38:16.832474Z","score":{"score_schema":1,"raw_score":10799.4305,"normalized_score":181.0846655293534,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3715732543,"candidate_requests":2997,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0762101810102642}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.038540267944335,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9390944444444445,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":10661.436483333324,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":272790.3143147895,"observed_improvement_percent":44.11759719733872,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.490490579737505,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000008941552255134817,"welch_t":8.576493437326514,"welch_degrees_of_freedom":8.519337532667212,"statistically_significant":true,"next_epoch_minimum_improvement_percent":4.294374291628002,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0762101810102642,"findproviders_load_p95_ms":31.038540267944335,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9390944444444445,"raw_score":10799.4305,"received_bytes":3715732543,"request_count":2997,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.0986462478157861,"evaluation_id":"candidate-01-01a19101","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.3514055252075,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9400444444444445,"findproviders_samples":218,"provider_egress_bytes":4072675029,"raw_score":10847.148000000001,"received_bytes":3706993982,"request_count":2973,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.086034417132909,"evaluation_id":"candidate-02-01a19101","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.038540267944335,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9395611111111111,"findproviders_samples":218,"provider_egress_bytes":4072400151,"raw_score":10293.997299999939,"received_bytes":3749789221,"request_count":3020,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1113895734232466,"evaluation_id":"candidate-03-01a19101","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.46828594207763,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9396222222222222,"findproviders_samples":218,"provider_egress_bytes":4073055483,"raw_score":10799.4305,"received_bytes":3664831469,"request_count":2976,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0939255669131978,"evaluation_id":"candidate-04-01a19101","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.01073856353755,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.93925,"findproviders_samples":218,"provider_egress_bytes":4073578858,"raw_score":11013.9516,"received_bytes":3723817215,"request_count":2998,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1025567253017265,"evaluation_id":"candidate-05-01a19101","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.446119403839102,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392277777777778,"findproviders_samples":218,"provider_egress_bytes":4073125510,"raw_score":11476.353799999999,"received_bytes":3694254832,"request_count":2997,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1050512025509904,"evaluation_id":"candidate-06-01a19101","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.96061429977417,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9401888888888889,"findproviders_samples":218,"provider_egress_bytes":4106074715,"raw_score":9704.371799999992,"received_bytes":3715732543,"request_count":2989,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0941816250086573,"evaluation_id":"candidate-07-01a19101","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.70916414260864,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9397222222222222,"findproviders_samples":218,"provider_egress_bytes":4072960305,"raw_score":11008.724999999997,"received_bytes":3722380464,"request_count":3009,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0999853699619973,"evaluation_id":"candidate-08-01a19101","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.9853262901306,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9390944444444445,"findproviders_samples":218,"provider_egress_bytes":4072589390,"raw_score":10268.861099999995,"received_bytes":3702403233,"request_count":2994,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0762101810102642,"evaluation_id":"candidate-09-01a19101","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.318045234680124,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395388888888889,"findproviders_samples":218,"provider_egress_bytes":4072774646,"raw_score":10540.089249999985,"received_bytes":3784367327,"request_count":3050,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"cfbccd7a547be5adb30aca879e7542862e0824c5fb5128d209b337e517b04c09","artifact_manifest_sha256":"91e803c9696fe60a7f83aa97aee1636147f2b3625733fcaee9506040080f83f9","rank":33,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a19e3c-6cf8-fbcb-4233-69fba50ee7d3","patch_sha256":"1d6909a19d70c4995152f9f12a9a8501f3a10798cb26fd5a246a1b587e0efe8d","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-02T21:48:42.315137Z","started_at":"2026-11-03T12:06:38.118504Z","completed_at":"2026-11-03T13:33:27.280654Z","score":{"score_schema":1,"raw_score":10814.94104999999,"normalized_score":180.82495789470804,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3642125503,"candidate_requests":2943,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0936633042483037}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":32.3575288772583,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.93905,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":10817.45665,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":1322822.4332162861,"observed_improvement_percent":43.29981041854625,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.828016190429667,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000004731427943221174,"welch_t":7.949772140888437,"welch_degrees_of_freedom":10.459971695076272,"statistically_significant":true,"next_epoch_minimum_improvement_percent":9.320232734897225,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0936633042483037,"findproviders_load_p95_ms":32.3575288772583,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93905,"raw_score":10814.94104999999,"received_bytes":3642125503,"request_count":2943,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.120505322505502,"evaluation_id":"candidate-01-01a19e3c","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.4590641021728,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9395111111111111,"findproviders_samples":218,"provider_egress_bytes":4076978980,"raw_score":10016.808200000014,"received_bytes":3638518174,"request_count":2943,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.100807613158004,"evaluation_id":"candidate-02-01a19e3c","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.17556438446043,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93905,"findproviders_samples":218,"provider_egress_bytes":4076187513,"raw_score":10730.753749999993,"received_bytes":3702906361,"request_count":2982,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1230642536652655,"evaluation_id":"candidate-03-01a19e3c","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.05507831573478,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9394,"findproviders_samples":218,"provider_egress_bytes":4074799425,"raw_score":10653.615600000003,"received_bytes":3628286994,"request_count":2933,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1187364888013305,"evaluation_id":"candidate-04-01a19e3c","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.937422275543213,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392722222222222,"findproviders_samples":218,"provider_egress_bytes":4074578697,"raw_score":10814.94104999999,"received_bytes":3642125503,"request_count":2942,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1103935093863075,"evaluation_id":"candidate-05-01a19e3c","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.571900749206534,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392722222222222,"findproviders_samples":218,"provider_egress_bytes":4075458644,"raw_score":10876.911199999995,"received_bytes":3670283201,"request_count":2979,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1263258629544053,"evaluation_id":"candidate-06-01a19e3c","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.3575288772583,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9398611111111111,"findproviders_samples":218,"provider_egress_bytes":4050701531,"raw_score":13376.9584,"received_bytes":3596385082,"request_count":2930,"resource_findings":[],"stability_findings":[],"success_rate":0.9982935153583617},{"accounting_coverage":1.1280185530203348,"evaluation_id":"candidate-07-01a19e3c","findproviders_empty_pools":0,"findproviders_load_p95_ms":26.41642074584957,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9400222222222222,"findproviders_samples":218,"provider_egress_bytes":4108040009,"raw_score":10908.697200000006,"received_bytes":3641819541,"request_count":2933,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1078315894614092,"evaluation_id":"candidate-08-01a19e3c","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.130740261077854,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9393944444444444,"findproviders_samples":218,"provider_egress_bytes":4075501841,"raw_score":10982.259899999997,"received_bytes":3678809920,"request_count":2947,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0936633042483037,"evaluation_id":"candidate-09-01a19e3c","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.14807815551755,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9393166666666667,"findproviders_samples":218,"provider_egress_bytes":4075541823,"raw_score":8996.16455,"received_bytes":3726505047,"request_count":2988,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"0f1476c14de9508b33167e3ae0de57d4c17a366b26f89a94507487d734643f77","artifact_manifest_sha256":"37635e13244c85f457969e7d9124808929b6a14e4a80b88e7f35bea5853e055c","rank":34,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a194f6-5aa7-be85-cb9d-c3a742c0f951","patch_sha256":"5b1dee9001a75ea72b59526f82ab9e7cab44a45382c9a9bf27f89fcdfd89192f","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-01T02:35:35.433094Z","started_at":"2026-11-02T01:20:41.17279Z","completed_at":"2026-11-05T07:55:42.574442Z","score":{"score_schema":1,"raw_score":10820.072199999999,"normalized_score":180.73920615797724,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3629876507,"candidate_requests":2928,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1006159510930205}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.213828659057594,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9382888888888888,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":10538.401483333328,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":1601471.617187687,"observed_improvement_percent":44.76249072923505,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.92540913751714,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000002985463235446089,"welch_t":8.102971003928731,"welch_degrees_of_freedom":10.944936737577095,"statistically_significant":true,"next_epoch_minimum_improvement_percent":10.526549284522366,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1006159510930205,"findproviders_load_p95_ms":31.213828659057594,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9382888888888888,"raw_score":10820.072199999999,"received_bytes":3629876507,"request_count":2928,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1403193154223537,"evaluation_id":"candidate-01-01a194f6","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.1561180114746,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9382888888888888,"findproviders_samples":218,"provider_egress_bytes":4074650733,"raw_score":10855.77025,"received_bytes":3573254156,"request_count":2886,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1136645598391135,"evaluation_id":"candidate-02-01a194f6","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.45995521545399,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9392777777777778,"findproviders_samples":218,"provider_egress_bytes":4075043275,"raw_score":10820.072199999999,"received_bytes":3659129887,"request_count":2949,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1121706536763014,"evaluation_id":"candidate-03-01a194f6","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.213828659057594,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9400388888888889,"findproviders_samples":218,"provider_egress_bytes":4074287823,"raw_score":8638.97729999998,"received_bytes":3663365698,"request_count":2967,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1603012200784144,"evaluation_id":"candidate-04-01a194f6","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.81259346008298,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9392888888888888,"findproviders_samples":218,"provider_egress_bytes":4075804697,"raw_score":12782.138399999983,"received_bytes":3512712584,"request_count":2827,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1229699966759779,"evaluation_id":"candidate-05-01a194f6","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.254044723510727,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9396722222222222,"findproviders_samples":218,"provider_egress_bytes":4076242409,"raw_score":11636.530200000001,"received_bytes":3629876507,"request_count":2928,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1320072731375432,"evaluation_id":"candidate-06-01a194f6","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.771338462829576,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398055555555556,"findproviders_samples":218,"provider_egress_bytes":4075368883,"raw_score":9452.955199999982,"received_bytes":3600126059,"request_count":2915,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1314317327899912,"evaluation_id":"candidate-07-01a194f6","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.16493644714351,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394111111111111,"findproviders_samples":218,"provider_egress_bytes":4074923881,"raw_score":11128.797999999988,"received_bytes":3601564074,"request_count":2902,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1006159510930205,"evaluation_id":"candidate-08-01a194f6","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.272541046142575,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9391166666666667,"findproviders_samples":218,"provider_egress_bytes":4045696061,"raw_score":9590.298800000004,"received_bytes":3675847199,"request_count":2973,"resource_findings":[],"stability_findings":[],"success_rate":0.9986545576858392},{"accounting_coverage":1.1067403765217645,"evaluation_id":"candidate-09-01a194f6","findproviders_empty_pools":0,"findproviders_load_p95_ms":40.29146442413329,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9396055555555556,"findproviders_samples":218,"provider_egress_bytes":4075474620,"raw_score":9940.072999999997,"received_bytes":3682412521,"request_count":2959,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"7903bdbb20058f728566eb0cc138cdf38f3c0808b25b747096a3e6643181f3ba","artifact_manifest_sha256":"f6845469152055abeeb0a3c37883f25a21df6cd0995d91bec6e91ff8c0d34eb3","rank":35,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a304-efd8-2001-b6b6-459a2b331ef2","patch_sha256":"d0827051dae6020efaa17e0b666e9085945a6713ba9b4cbf3f443f8645426325","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-03T20:06:12.027536Z","started_at":"2026-11-04T13:04:37.384674Z","completed_at":"2026-11-04T14:30:52.624133Z","score":{"score_schema":1,"raw_score":10828.970299999983,"normalized_score":180.59069383540566,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3637142530,"candidate_requests":2939,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0957882907394108}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":32.32301921844481,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9356333333333333,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":10963.278805555552,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":2574117.950729727,"observed_improvement_percent":42.53547697745259,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.280352344187065,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.0000035255890737268655,"welch_t":7.3505462886097535,"welch_degrees_of_freedom":12.484211762601225,"statistically_significant":true,"next_epoch_minimum_improvement_percent":12.828471329036622,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0957882907394108,"findproviders_load_p95_ms":32.32301921844481,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9356333333333333,"raw_score":10828.970299999983,"received_bytes":3637142530,"request_count":2939,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.0957882907394108,"evaluation_id":"candidate-01-01a1a304","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.55299263000486,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395555555555556,"findproviders_samples":218,"provider_egress_bytes":4075527104,"raw_score":9873.910800000001,"received_bytes":3719265061,"request_count":2993,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.10599541618151,"evaluation_id":"candidate-02-01a1a304","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.7607250213623,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9389388888888889,"findproviders_samples":218,"provider_egress_bytes":4073561718,"raw_score":9811.383199999995,"received_bytes":3683163292,"request_count":2985,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1535197484533402,"evaluation_id":"candidate-03-01a1a304","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.15127668380736,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399555555555555,"findproviders_samples":218,"provider_egress_bytes":4110068506,"raw_score":10971.8296,"received_bytes":3563067309,"request_count":2877,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1513224879575619,"evaluation_id":"candidate-04-01a1a304","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.02612743377686,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399388888888889,"findproviders_samples":218,"provider_egress_bytes":4108014807,"raw_score":14377.01,"received_bytes":3568083530,"request_count":2911,"resource_findings":[],"stability_findings":[],"success_rate":0.9996564754379939},{"accounting_coverage":1.1069345863606526,"evaluation_id":"candidate-05-01a1a304","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.8197467803955,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393666666666667,"findproviders_samples":218,"provider_egress_bytes":4071769657,"raw_score":12051.732,"received_bytes":3678419400,"request_count":2961,"resource_findings":[],"stability_findings":[],"success_rate":0.9993245525160419},{"accounting_coverage":1.1474359146239494,"evaluation_id":"candidate-06-01a1a304","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.28222627639769,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9356333333333333,"findproviders_samples":218,"provider_egress_bytes":4064948714,"raw_score":9173.549,"received_bytes":3542636815,"request_count":2861,"resource_findings":[],"stability_findings":[],"success_rate":0.9993009437259699},{"accounting_coverage":1.1073140986063095,"evaluation_id":"candidate-07-01a1a304","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.92601623535155,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397833333333333,"findproviders_samples":218,"provider_egress_bytes":4076734695,"raw_score":11780.552,"received_bytes":3681642544,"request_count":2976,"resource_findings":[],"stability_findings":[],"success_rate":0.9996639784946236},{"accounting_coverage":1.121978665728913,"evaluation_id":"candidate-08-01a1a304","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.275365066528316,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392222222222222,"findproviders_samples":218,"provider_egress_bytes":4075005552,"raw_score":10828.970299999983,"received_bytes":3631981317,"request_count":2939,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1203763845900205,"evaluation_id":"candidate-09-01a1a304","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.32301921844481,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392833333333334,"findproviders_samples":218,"provider_egress_bytes":4074968598,"raw_score":9800.572350000002,"received_bytes":3637142530,"request_count":2918,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"f5e374a360ee2c9b82b10dfbdbbe31fe04dfcea9025d962c8f87bc68d737846a","artifact_manifest_sha256":"0de6c46eb77d6b9f1c81da3f6358df82f6dd32fbeb7b303870f47cd3befa5a02","rank":36,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a19e3a-d64a-d836-133d-66b3e99726dc","patch_sha256":"3852020ae5a4c45d8327e93702d1080a2a127093c2b911cf9280f7d33379f812","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-02T21:46:58.369036Z","started_at":"2026-11-03T09:13:58.175742Z","completed_at":"2026-11-03T10:40:01.245151Z","score":{"score_schema":1,"raw_score":10983.859999999995,"normalized_score":178.04408104254776,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9996521739130435}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3672046762,"candidate_requests":2964,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0918559767195408}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.58597412109373,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9379333333333333,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":11059.458222222216,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":1487426.5599577224,"observed_improvement_percent":42.031348203446036,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.885254272020608,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000005696411463682622,"welch_t":7.652350155258721,"welch_degrees_of_freedom":10.74847458195517,"statistically_significant":true,"next_epoch_minimum_improvement_percent":9.666851758239895,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0918559767195408,"findproviders_load_p95_ms":31.58597412109373,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9379333333333333,"raw_score":10983.859999999995,"received_bytes":3672046762,"request_count":2964,"success_rate":0.9996521739130435},"replicate_count":9,"replicates":[{"accounting_coverage":1.1019508490527514,"evaluation_id":"candidate-01-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.58597412109373,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398888888888889,"findproviders_samples":218,"provider_egress_bytes":4106989952,"raw_score":10753.354,"received_bytes":3727017367,"request_count":3009,"resource_findings":[],"stability_findings":[],"success_rate":0.9983383183781988},{"accounting_coverage":1.1361423281317609,"evaluation_id":"candidate-02-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.175059223175033,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.939,"findproviders_samples":218,"provider_egress_bytes":4069346349,"raw_score":9562.7675,"received_bytes":3581722332,"request_count":2911,"resource_findings":[],"stability_findings":[],"success_rate":0.9993129508759876},{"accounting_coverage":1.1088641283019012,"evaluation_id":"candidate-03-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.730382537841784,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394277777777778,"findproviders_samples":218,"provider_egress_bytes":4066679899,"raw_score":11528.05369999999,"received_bytes":3667428493,"request_count":2964,"resource_findings":[],"stability_findings":[],"success_rate":0.9986504723346828},{"accounting_coverage":1.1087918005658557,"evaluation_id":"candidate-04-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.480681324005122,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9389777777777778,"findproviders_samples":218,"provider_egress_bytes":4071535341,"raw_score":13591.892799999987,"received_bytes":3672046762,"request_count":2957,"resource_findings":[],"stability_findings":[],"success_rate":0.9983090970578289},{"accounting_coverage":1.1104407370520792,"evaluation_id":"candidate-05-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.90149965286253,"findproviders_pool_p05":2547.85,"findproviders_sample_span_fraction":0.9396666666666667,"findproviders_samples":218,"provider_egress_bytes":4075539622,"raw_score":10003.441799999997,"received_bytes":3670200026,"request_count":2955,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.10545751534425,"evaluation_id":"candidate-06-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":37.69282722473131,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397055555555556,"findproviders_samples":218,"provider_egress_bytes":4074844041,"raw_score":9939.259099999983,"received_bytes":3686115463,"request_count":2974,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0918559767195408,"evaluation_id":"candidate-07-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":26.167132759094233,"findproviders_pool_p05":2546.85,"findproviders_sample_span_fraction":0.9391722222222222,"findproviders_samples":218,"provider_egress_bytes":4075865232,"raw_score":10983.859999999995,"received_bytes":3732969658,"request_count":3014,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0969032685353455,"evaluation_id":"candidate-08-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.36857976913452,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9393277777777778,"findproviders_samples":218,"provider_egress_bytes":4074769516,"raw_score":11618.474199999993,"received_bytes":3714793850,"request_count":3017,"resource_findings":[],"stability_findings":[],"success_rate":0.9996685449121644},{"accounting_coverage":1.1448197490696408,"evaluation_id":"candidate-09-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":43.45203628540038,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9379333333333333,"findproviders_samples":218,"provider_egress_bytes":4076642040,"raw_score":11554.020899999985,"received_bytes":3560946641,"request_count":2875,"resource_findings":[],"stability_findings":[],"success_rate":0.9996521739130435}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"bd550c3cf073c0e0f9514df9fcb4a247146d0301c2c5ad5284e5004690fde9e9","artifact_manifest_sha256":"36a4f7dd920bd4c2e7358914fb049adf5d79e87e941d686804197b1b4d1a9dfc","rank":37,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a19e3b-7bc4-8694-802b-4f55f5fbd1fd","patch_sha256":"30403a8621eaa126f7cde465527f9ff646ad5b346d6e9b69e3297d7f6bb5dacf","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-02T21:47:40.350389Z","started_at":"2026-11-03T10:40:08.190733Z","completed_at":"2026-11-03T12:06:32.849522Z","score":{"score_schema":1,"raw_score":11139.11839999994,"normalized_score":175.56248077944917,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9996719160104987}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3676606144,"candidate_requests":2954,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0780355667710917}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.8754201889038,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9382777777777778,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":11657.975611111104,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":3058337.510656023,"observed_improvement_percent":38.89419216799324,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.462747007994107,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000008406631544860833,"welch_t":6.577687193682896,"welch_degrees_of_freedom":13.145735319746706,"statistically_significant":true,"next_epoch_minimum_improvement_percent":13.149847258143806,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0780355667710917,"findproviders_load_p95_ms":31.8754201889038,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9382777777777778,"raw_score":11139.11839999994,"received_bytes":3676606144,"request_count":2954,"success_rate":0.9996719160104987},"replicate_count":9,"replicates":[{"accounting_coverage":1.106952991179544,"evaluation_id":"candidate-01-01a19e3b","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.37774028778076,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9396833333333333,"findproviders_samples":218,"provider_egress_bytes":4076526281,"raw_score":12241.757399999999,"received_bytes":3682655283,"request_count":2952,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1166417293042459,"evaluation_id":"candidate-02-01a19e3b","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.114977455139154,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393222222222222,"findproviders_samples":218,"provider_egress_bytes":4065370737,"raw_score":14013.818099999988,"received_bytes":3640711815,"request_count":2954,"resource_findings":[],"stability_findings":[],"success_rate":0.9983073798239676},{"accounting_coverage":1.1063468661323856,"evaluation_id":"candidate-03-01a19e3b","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.66249790191634,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394444444444444,"findproviders_samples":218,"provider_egress_bytes":4074229253,"raw_score":11139.11839999994,"received_bytes":3682596641,"request_count":2985,"resource_findings":[],"stability_findings":[],"success_rate":0.9989949748743718},{"accounting_coverage":1.1075660199952058,"evaluation_id":"candidate-04-01a19e3b","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.8754201889038,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9382777777777778,"findproviders_samples":218,"provider_egress_bytes":4072084034,"raw_score":10420.43585,"received_bytes":3676606144,"request_count":2964,"resource_findings":[],"stability_findings":[],"success_rate":0.9989878542510121},{"accounting_coverage":1.1656366347833205,"evaluation_id":"candidate-05-01a19e3b","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.19731521606444,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397777777777778,"findproviders_samples":218,"provider_egress_bytes":4075878807,"raw_score":13039.131149999996,"received_bytes":3496697586,"request_count":2822,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.101469110240363,"evaluation_id":"candidate-06-01a19e3b","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.316440963745087,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.93915,"findproviders_samples":218,"provider_egress_bytes":4075241455,"raw_score":9113.658999999996,"received_bytes":3699823642,"request_count":2967,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.11233167585311,"evaluation_id":"candidate-07-01a19e3b","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.528932857513418,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9415166666666667,"findproviders_samples":218,"provider_egress_bytes":4077384350,"raw_score":10688.5455,"received_bytes":3665619202,"request_count":2951,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1437881583134046,"evaluation_id":"candidate-08-01a19e3b","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.447801971435542,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93925,"findproviders_samples":218,"provider_egress_bytes":4064278178,"raw_score":14003.9685,"received_bytes":3553348711,"request_count":2843,"resource_findings":[],"stability_findings":[],"success_rate":0.998593035525853},{"accounting_coverage":1.0780355667710917,"evaluation_id":"candidate-09-01a19e3b","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.06486530303951,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9391944444444444,"findproviders_samples":218,"provider_egress_bytes":4076000784,"raw_score":10261.346600000003,"received_bytes":3780952048,"request_count":3048,"resource_findings":[],"stability_findings":[],"success_rate":0.9996719160104987}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"75518df5e4f94daf3bdcb2b87562d19126cc219cdd517a115c492afff402f8fc","artifact_manifest_sha256":"ba96a9819da749c84e6a4b1cd65a4ee35408eaf20b372da02424c1323210a5d7","rank":38,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a19df0-428e-0c33-3349-9bac7d7d0b07","patch_sha256":"dffa711db8abdd53cab84fa50cac832edf3405d830c40da21bb68c567718ab88","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-02T20:25:29.959554Z","started_at":"2026-11-03T06:17:11.314436Z","completed_at":"2026-11-03T07:44:16.740318Z","score":{"score_schema":1,"raw_score":11280.2695,"normalized_score":173.36565052811883,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3606934961,"candidate_requests":2919,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1081402500776367}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":32.599896049499485,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9387444444444445,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":11143.130472222221,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":2407027.6686442383,"observed_improvement_percent":41.592776310698305,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.218110391701247,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.0000045864081009800984,"welch_t":7.243013769080846,"welch_degrees_of_freedom":12.2388881178129,"statistically_significant":true,"next_epoch_minimum_improvement_percent":12.204906893145713,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1081402500776367,"findproviders_load_p95_ms":32.599896049499485,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9387444444444445,"raw_score":11280.2695,"received_bytes":3606934961,"request_count":2919,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1309793076693073,"evaluation_id":"candidate-01-01a19df0","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.38280658721922,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393944444444444,"findproviders_samples":218,"provider_egress_bytes":4079368805,"raw_score":10338.115899999999,"received_bytes":3606934961,"request_count":2919,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1362299229585053,"evaluation_id":"candidate-02-01a19df0","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.91472949981687,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394166666666667,"findproviders_samples":218,"provider_egress_bytes":4039483002,"raw_score":10179.095299999999,"received_bytes":3555163370,"request_count":2844,"resource_findings":[],"stability_findings":[],"success_rate":0.9982419127988749},{"accounting_coverage":1.1569250092745675,"evaluation_id":"candidate-03-01a19df0","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.989227867126452,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399,"findproviders_samples":218,"provider_egress_bytes":4111544600,"raw_score":9405.494099999998,"received_bytes":3553855753,"request_count":2879,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1958934101477439,"evaluation_id":"candidate-04-01a19df0","findproviders_empty_pools":0,"findproviders_load_p95_ms":25.847988224029532,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394555555555556,"findproviders_samples":218,"provider_egress_bytes":4078667951,"raw_score":13614.402000000018,"received_bytes":3410561440,"request_count":2733,"resource_findings":[],"stability_findings":[],"success_rate":0.9989023051591658},{"accounting_coverage":1.1206313850789644,"evaluation_id":"candidate-05-01a19df0","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.92546939849851,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9399888888888889,"findproviders_samples":218,"provider_egress_bytes":4111069529,"raw_score":9034.601,"received_bytes":3668529709,"request_count":2951,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1128058515163322,"evaluation_id":"candidate-06-01a19df0","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.599896049499485,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9387444444444445,"findproviders_samples":218,"provider_egress_bytes":4078981269,"raw_score":11910.791,"received_bytes":3665492290,"request_count":2941,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.169852583187525,"evaluation_id":"candidate-07-01a19df0","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.584881973266604,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9401277777777778,"findproviders_samples":218,"provider_egress_bytes":4112420235,"raw_score":11558.658849999998,"received_bytes":3515332012,"request_count":2852,"resource_findings":[],"stability_findings":[],"success_rate":0.9996493688639552},{"accounting_coverage":1.1081402500776367,"evaluation_id":"candidate-08-01a19df0","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.606231403350783,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397833333333333,"findproviders_samples":218,"provider_egress_bytes":4080264577,"raw_score":11280.2695,"received_bytes":3682083181,"request_count":2976,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.113057726930249,"evaluation_id":"candidate-09-01a19df0","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.713018989562936,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.93915,"findproviders_samples":218,"provider_egress_bytes":4081242286,"raw_score":12966.746599999993,"received_bytes":3666694177,"request_count":2962,"resource_findings":[],"stability_findings":[],"success_rate":0.99966239027684}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"a9d6a1bcd7bee5d0294779569f471838879d9d6e2aefde61d3627081102e63df","artifact_manifest_sha256":"648f665bf84d2a7398a723326354bdff1069c16e4cc9dbfd258e6b4b02bb7415","rank":39,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a19ab8-356c-cd7f-7821-7598fb484882","patch_sha256":"33e17ce348243c79fc7327b0988445f39432feb0667c177c142c19a0d7c67e1e","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-02T05:25:25.703638Z","started_at":"2026-11-02T11:41:41.412765Z","completed_at":"2026-11-02T13:09:35.075887Z","score":{"score_schema":1,"raw_score":11337.086999999996,"normalized_score":172.49680275012432,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3715507752,"candidate_requests":3003,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0862211143605756}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.482326412200873,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9340833333333334,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":11182.756444444438,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":490677.80664411513,"observed_improvement_percent":41.385074980335304,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.555622430121643,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000012210520929280772,"welch_t":7.946041200887462,"welch_degrees_of_freedom":8.93195396714593,"statistically_significant":true,"next_epoch_minimum_improvement_percent":5.490987896605022,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0862211143605756,"findproviders_load_p95_ms":31.482326412200873,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9340833333333334,"raw_score":11337.086999999996,"received_bytes":3715507752,"request_count":3003,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1164306285337733,"evaluation_id":"candidate-01-01a19ab8","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.556690788269044,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9386944444444445,"findproviders_samples":218,"provider_egress_bytes":4073256576,"raw_score":11804.46269999995,"received_bytes":3648463659,"request_count":2955,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0872404448774555,"evaluation_id":"candidate-02-01a19ab8","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.716729640960693,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9396,"findproviders_samples":218,"provider_egress_bytes":4073050157,"raw_score":12070.525149999994,"received_bytes":3746227595,"request_count":3014,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0863884599312117,"evaluation_id":"candidate-03-01a19ab8","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.23904714584348,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9340833333333334,"findproviders_samples":218,"provider_egress_bytes":4073079000,"raw_score":11012.415599999995,"received_bytes":3749192071,"request_count":3030,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0862211143605756,"evaluation_id":"candidate-04-01a19ab8","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.48272342681884,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393,"findproviders_samples":218,"provider_egress_bytes":4072440814,"raw_score":11695.635800000005,"received_bytes":3749182151,"request_count":3033,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1060484706491074,"evaluation_id":"candidate-05-01a19ab8","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.79885253906247,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9394777777777777,"findproviders_samples":218,"provider_egress_bytes":4072783088,"raw_score":10722.566800000004,"received_bytes":3682282645,"request_count":2978,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0903749807864125,"evaluation_id":"candidate-06-01a19ab8","findproviders_empty_pools":0,"findproviders_load_p95_ms":49.001512145996095,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9397555555555556,"findproviders_samples":218,"provider_egress_bytes":4072947827,"raw_score":11453.5019,"received_bytes":3735364346,"request_count":3003,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0981661204827238,"evaluation_id":"candidate-07-01a19ab8","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.354183578491096,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392611111111111,"findproviders_samples":218,"provider_egress_bytes":4072903626,"raw_score":10773.931999999995,"received_bytes":3708822873,"request_count":3012,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.108313541244246,"evaluation_id":"candidate-08-01a19ab8","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.41435871124266,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9391944444444444,"findproviders_samples":218,"provider_egress_bytes":4072582215,"raw_score":9774.68105,"received_bytes":3674575888,"request_count":2984,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0961256266543244,"evaluation_id":"candidate-09-01a19ab8","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.482326412200873,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9395722222222223,"findproviders_samples":218,"provider_egress_bytes":4072663263,"raw_score":11337.086999999996,"received_bytes":3715507752,"request_count":2999,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"25f404d67c9d3abf6646f4c6475a6f26187c3d74b60b572dc13414c5020103e0","artifact_manifest_sha256":"3e22fea76d62fbf9f001372dad617a4284427350a503aae322ebfd565860fe8d","rank":40,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a18897-0822-27a9-400c-1ca807abed58","patch_sha256":"8d37e985e37e5fb2c1a27cd32ba1fd976f4c3470b365fd87abe87e971e10ce51","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-29T16:56:01.603455Z","started_at":"2026-10-31T21:23:53.274244Z","completed_at":"2026-10-31T22:58:24.739555Z","score":{"score_schema":1,"raw_score":11375.582399999998,"normalized_score":171.9130670619553,"placeable":true,"takeover_eligible":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3573814204,"candidate_requests":2883,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1193533879076831}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":32.061456394195545,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9392666666666667,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":12062.924877777772,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":5661236.58733981,"observed_improvement_percent":36.77163222310353,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":11.4631190200342,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.00002229950505112078,"welch_t":5.613506661013061,"welch_degrees_of_freedom":15.416721615936577,"statistically_significant":true,"next_epoch_minimum_improvement_percent":17.290365510872004,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":true,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1193533879076831,"findproviders_load_p95_ms":32.061456394195545,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9392666666666667,"raw_score":11375.582399999998,"received_bytes":3573814204,"request_count":2883,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1221080340259153,"evaluation_id":"candidate-01-01a18897","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.58771553039527,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9395444444444444,"findproviders_samples":218,"provider_egress_bytes":4075120819,"raw_score":10777.7085,"received_bytes":3631665308,"request_count":2931,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1577746416078694,"evaluation_id":"candidate-02-01a18897","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.115858459472655,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9393111111111111,"findproviders_samples":218,"provider_egress_bytes":4076163211,"raw_score":13149.110699999996,"received_bytes":3520687934,"request_count":2835,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1193533879076831,"evaluation_id":"candidate-03-01a18897","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.46741161346434,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9392666666666667,"findproviders_samples":218,"provider_egress_bytes":4000361037,"raw_score":15366.690599999956,"received_bytes":3573814204,"request_count":2882,"resource_findings":[],"stability_findings":[],"success_rate":0.9989590562109646},{"accounting_coverage":1.1603373243440858,"evaluation_id":"candidate-04-01a18897","findproviders_empty_pools":0,"findproviders_load_p95_ms":26.463110065460093,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395722222222223,"findproviders_samples":218,"provider_egress_bytes":4072379183,"raw_score":11375.582399999998,"received_bytes":3509651114,"request_count":2832,"resource_findings":[],"stability_findings":[],"success_rate":0.9989406779661016},{"accounting_coverage":1.129354672295933,"evaluation_id":"candidate-05-01a18897","findproviders_empty_pools":0,"findproviders_load_p95_ms":40.67383213043211,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9394444444444444,"findproviders_samples":218,"provider_egress_bytes":4076534252,"raw_score":9481.63085,"received_bytes":3609613837,"request_count":2930,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1276741441797808,"evaluation_id":"candidate-06-01a18897","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.061456394195545,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9396555555555556,"findproviders_samples":218,"provider_egress_bytes":4076242539,"raw_score":11816.81734999999,"received_bytes":3614734416,"request_count":2940,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1317484629534118,"evaluation_id":"candidate-07-01a18897","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.38416748046875,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9394222222222223,"findproviders_samples":218,"provider_egress_bytes":4075107749,"raw_score":9502.179,"received_bytes":3600718607,"request_count":2901,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1452585461006166,"evaluation_id":"candidate-08-01a18897","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.763074493408197,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9393388888888888,"findproviders_samples":218,"provider_egress_bytes":4075870994,"raw_score":10962.0651,"received_bytes":3558909041,"request_count":2883,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1732843282523997,"evaluation_id":"candidate-09-01a18897","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.54286193847655,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.94035,"findproviders_samples":218,"provider_egress_bytes":3998643113,"raw_score":16134.53939999999,"received_bytes":3408076812,"request_count":2745,"resource_findings":[],"stability_findings":[],"success_rate":0.9981785063752276}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"2f4580dba5199d9c1185374ad62bf8463422140189224e32c132c50868ac92ae","artifact_manifest_sha256":"cd10e0685946cbfc10f7c2be7338d7d584af0829821ac93f88634a3677e625bb","rank":41,"eligible_candidate_rank":5,"eligible":true},{"job_id":"01a189ac-2c92-4acb-204f-d37a1a24838b","patch_sha256":"ef2a0b130de758462735937e5c4b18bde9dc3f92ba9234ae185422f0fe9695fd","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-29T21:58:44.073861Z","started_at":"2026-10-31T22:58:32.150077Z","completed_at":"2026-11-07T01:24:17.853181Z","score":{"score_schema":1,"raw_score":11520.279399999998,"normalized_score":169.7538047558116,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3626301470,"candidate_requests":2934,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.073631555991423}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":32.45737686157225,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.93805,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":11016.726049999996,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":1470816.6666836266,"observed_improvement_percent":42.25533082196915,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.879438810920183,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.0000054685656025952854,"welch_t":7.6996021055063375,"welch_degrees_of_freedom":10.719620983394227,"statistically_significant":true,"next_epoch_minimum_improvement_percent":9.65001228429747,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.073631555991423,"findproviders_load_p95_ms":32.45737686157225,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93805,"raw_score":11520.279399999998,"received_bytes":3626301470,"request_count":2934,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1001751314715456,"evaluation_id":"candidate-01-01a189ac","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.299054145812985,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9394166666666667,"findproviders_samples":218,"provider_egress_bytes":4074807643,"raw_score":11520.279399999998,"received_bytes":3703780904,"request_count":2979,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.073631555991423,"evaluation_id":"candidate-02-01a189ac","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.065459060668864,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9395555555555556,"findproviders_samples":218,"provider_egress_bytes":4074819555,"raw_score":8459.182599999998,"received_bytes":3795361204,"request_count":3062,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.121287332462185,"evaluation_id":"candidate-03-01a189ac","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.78286991119376,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93805,"findproviders_samples":218,"provider_egress_bytes":4066125902,"raw_score":11817.469499999996,"received_bytes":3626301470,"request_count":2934,"resource_findings":[],"stability_findings":[],"success_rate":0.9993183367416496},{"accounting_coverage":1.124936365423677,"evaluation_id":"candidate-04-01a189ac","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.617216873168935,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392277777777778,"findproviders_samples":218,"provider_egress_bytes":4075736024,"raw_score":9975.216449999989,"received_bytes":3623081402,"request_count":2940,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1254030906216128,"evaluation_id":"candidate-05-01a189ac","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.581802463531428,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393777777777778,"findproviders_samples":218,"provider_egress_bytes":4076901748,"raw_score":11818.091,"received_bytes":3622614672,"request_count":2921,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1046787331403354,"evaluation_id":"candidate-06-01a189ac","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.51154994964599,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399444444444445,"findproviders_samples":218,"provider_egress_bytes":4073772992,"raw_score":10540.823799999998,"received_bytes":3687744563,"request_count":2979,"resource_findings":[],"stability_findings":[],"success_rate":0.9996643168848607},{"accounting_coverage":1.1344826419160785,"evaluation_id":"candidate-07-01a189ac","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.45737686157225,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394722222222223,"findproviders_samples":218,"provider_egress_bytes":4077882095,"raw_score":12197.259199999997,"received_bytes":3594486107,"request_count":2899,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1530265668436803,"evaluation_id":"candidate-08-01a189ac","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.516030502319296,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9392333333333334,"findproviders_samples":218,"provider_egress_bytes":4077654684,"raw_score":10831.189099999994,"received_bytes":3536479385,"request_count":2850,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1175200549469984,"evaluation_id":"candidate-09-01a189ac","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.187499237060543,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394111111111111,"findproviders_samples":218,"provider_egress_bytes":4077018848,"raw_score":11991.023399999996,"received_bytes":3648273541,"request_count":2927,"resource_findings":[],"stability_findings":[],"success_rate":0.9996583532627263}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"44f1d4ec050a8cbf4e405a9e3451ab64d04593d164d59f7110ad939708783acd","artifact_manifest_sha256":"d8e42c4b793f63bef32bc67ab00303c5bda6051ed5b8ee38213255f7b1d3473e","rank":42,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a2df-aa8d-4d63-14b1-a521e4ccbade","patch_sha256":"045dc6228938ec5c6323f65ea69b9b76ed0e3b9ec87915bcbce4fb87115ce407","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-03T19:25:29.512639Z","started_at":"2026-11-04T10:12:16.291769Z","completed_at":"2026-11-04T11:39:20.327842Z","score":{"score_schema":1,"raw_score":11536.538200000005,"normalized_score":169.51456546990823,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.999647266313933}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3605793850,"candidate_requests":2912,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0862670838806825}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":33.60052452087402,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9385166666666667,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":12415.237988888883,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":4305299.8227208285,"observed_improvement_percent":34.92496707450488,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.94050940168655,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000028286859424188492,"welch_t":5.608984462700428,"welch_degrees_of_freedom":14.496590806721578,"statistically_significant":true,"next_epoch_minimum_improvement_percent":14.650343134269017,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0862670838806825,"findproviders_load_p95_ms":33.60052452087402,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9385166666666667,"raw_score":11536.538200000005,"received_bytes":3605793850,"request_count":2912,"success_rate":0.999647266313933},"replicate_count":9,"replicates":[{"accounting_coverage":1.1305111945486175,"evaluation_id":"candidate-01-01a1a2df","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.60310316085811,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393,"findproviders_samples":218,"provider_egress_bytes":4075042576,"raw_score":9820.436,"received_bytes":3604601702,"request_count":2906,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1044584937836928,"evaluation_id":"candidate-02-01a1a2df","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.86161193847656,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395166666666667,"findproviders_samples":218,"provider_egress_bytes":4065685363,"raw_score":11536.538200000005,"received_bytes":3681157224,"request_count":2988,"resource_findings":[],"stability_findings":[],"success_rate":0.998995983935743},{"accounting_coverage":1.1192637912453036,"evaluation_id":"candidate-03-01a1a2df","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.39758205413818,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9390166666666667,"findproviders_samples":218,"provider_egress_bytes":4035834495,"raw_score":16774.775,"received_bytes":3605793850,"request_count":2921,"resource_findings":[],"stability_findings":[],"success_rate":0.9955494693598083},{"accounting_coverage":1.1122395816259505,"evaluation_id":"candidate-04-01a1a2df","findproviders_empty_pools":0,"findproviders_load_p95_ms":40.01122303009031,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9395277777777777,"findproviders_samples":218,"provider_egress_bytes":4076184277,"raw_score":11374.665199999974,"received_bytes":3664843748,"request_count":2965,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1579728916128214,"evaluation_id":"candidate-05-01a1a2df","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.10139970779417,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9391611111111111,"findproviders_samples":218,"provider_egress_bytes":4076321865,"raw_score":13070.512399999978,"received_bytes":3520222187,"request_count":2855,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1540847481366614,"evaluation_id":"candidate-06-01a1a2df","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.60052452087402,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9388111111111112,"findproviders_samples":218,"provider_egress_bytes":4056661430,"raw_score":13049.255399999998,"received_bytes":3515046392,"request_count":2835,"resource_findings":[],"stability_findings":[],"success_rate":0.999647266313933},{"accounting_coverage":1.12980796999169,"evaluation_id":"candidate-07-01a1a2df","findproviders_empty_pools":0,"findproviders_load_p95_ms":37.28941707611083,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.93895,"findproviders_samples":218,"provider_egress_bytes":3975122179,"raw_score":13950.298700000005,"received_bytes":3518405149,"request_count":2843,"resource_findings":[],"stability_findings":[],"success_rate":0.997186071051706},{"accounting_coverage":1.0862670838806825,"evaluation_id":"candidate-08-01a1a2df","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.92856731414787,"findproviders_pool_p05":2549,"findproviders_sample_span_fraction":0.9388777777777778,"findproviders_samples":218,"provider_egress_bytes":4070583358,"raw_score":10859.872799999994,"received_bytes":3747313546,"request_count":3027,"resource_findings":[],"stability_findings":[],"success_rate":0.9993392798149984},{"accounting_coverage":1.126295484148625,"evaluation_id":"candidate-09-01a1a2df","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.590083980560284,"findproviders_pool_p05":2545.85,"findproviders_sample_span_fraction":0.9385166666666667,"findproviders_samples":218,"provider_egress_bytes":4075455964,"raw_score":11300.788199999999,"received_bytes":3618460716,"request_count":2912,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"1927499db480cf75c019e04275f984590b0ad975783dfe1ce5a985a3fd10fb36","artifact_manifest_sha256":"dbecffc9445d05adea99584dfec7a9a80074aca0b0e97200c5779d1e5c058060","rank":43,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a18824-ad80-6c43-0b25-a76707293d0f","patch_sha256":"b4137742301ccf2d4e163d2e8b812b25d074302e1ac0bb8c92fd0416a8193e48","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-29T14:51:07.409137Z","started_at":"2026-10-30T09:23:40.651673Z","completed_at":"2026-10-30T10:50:44.803639Z","score":{"score_schema":1,"raw_score":11671.283300000012,"normalized_score":167.55751786095328,"placeable":true,"takeover_eligible":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3573960862,"candidate_requests":2892,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1203047937355015}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.30127706527707,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9361444444444444,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":11887.566099999996,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":1191421.7053365314,"observed_improvement_percent":37.690783209002966,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.782994026682717,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000017249673229404855,"welch_t":6.967226721178208,"welch_degrees_of_freedom":10.225794061464464,"statistically_significant":true,"next_epoch_minimum_improvement_percent":8.048981962095755,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":true,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1203047937355015,"findproviders_load_p95_ms":31.30127706527707,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9361444444444444,"raw_score":11671.283300000012,"received_bytes":3573960862,"request_count":2892,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1414612816758227,"evaluation_id":"candidate-01-01a18824","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.539684486389156,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9398111111111112,"findproviders_samples":218,"provider_egress_bytes":4075221572,"raw_score":11800.768249999997,"received_bytes":3570179416,"request_count":2892,"resource_findings":[],"stability_findings":[],"success_rate":0.9996542185338866},{"accounting_coverage":1.123231588980359,"evaluation_id":"candidate-02-01a18824","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.836051845550525,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9391388888888889,"findproviders_samples":218,"provider_egress_bytes":4075937990,"raw_score":12386.9105,"received_bytes":3628760115,"request_count":2931,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1416683316563268,"evaluation_id":"candidate-03-01a18824","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.414010047912598,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9391944444444444,"findproviders_samples":218,"provider_egress_bytes":4074758433,"raw_score":10667.533500000001,"received_bytes":3569126269,"request_count":2856,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.131343426820542,"evaluation_id":"candidate-04-01a18824","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.61750822067257,"findproviders_pool_p05":2546.85,"findproviders_sample_span_fraction":0.9395666666666667,"findproviders_samples":218,"provider_egress_bytes":4021990628,"raw_score":10612.770199999983,"received_bytes":3555057229,"request_count":2879,"resource_findings":[],"stability_findings":[],"success_rate":0.9989579715178881},{"accounting_coverage":1.1203047937355015,"evaluation_id":"candidate-05-01a18824","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.06509475708007,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9398333333333333,"findproviders_samples":218,"provider_egress_bytes":4074751664,"raw_score":11180.4236,"received_bytes":3637181316,"request_count":2943,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1392186040116743,"evaluation_id":"candidate-06-01a18824","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.53406028747556,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9361444444444444,"findproviders_samples":218,"provider_egress_bytes":4071522704,"raw_score":11671.283300000012,"received_bytes":3573960862,"request_count":2883,"resource_findings":[],"stability_findings":[],"success_rate":0.9989594172736732},{"accounting_coverage":1.1350636128778584,"evaluation_id":"candidate-07-01a18824","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.30127706527707,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398666666666666,"findproviders_samples":218,"provider_egress_bytes":4110024825,"raw_score":11574.65825,"received_bytes":3620964304,"request_count":2926,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1475588920949666,"evaluation_id":"candidate-08-01a18824","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.813616943359314,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.93855,"findproviders_samples":218,"provider_egress_bytes":4076662826,"raw_score":13616.038799999986,"received_bytes":3552465023,"request_count":2865,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1212865500708464,"evaluation_id":"candidate-09-01a18824","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.835227489471414,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394777777777777,"findproviders_samples":218,"provider_egress_bytes":4076471572,"raw_score":13477.708499999984,"received_bytes":3635530607,"request_count":2935,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"d82e73f12905df78797be5d1eb1b66003e63f71b18d08f56bd617238c7c66517","artifact_manifest_sha256":"35e0525bf1d180d6efca0836378ddebbf9daaa6234b65b2d1d77d5ac181d3ae2","rank":44,"eligible_candidate_rank":6,"eligible":true},{"job_id":"01a19c26-bb1c-ee09-1a08-0d5b5bc77a40","patch_sha256":"11bd25b9fbb6fd3975220e24f1d176d01a1ea57bd31ca8c50ba7c9816cb47e50","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-02T12:05:46.30156Z","started_at":"2026-11-02T13:09:42.615834Z","completed_at":"2026-11-02T14:36:38.348879Z","score":{"score_schema":1,"raw_score":11807.974,"normalized_score":165.61784942954634,"placeable":true,"takeover_eligible":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9993127147766323}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3586760621,"candidate_requests":2910,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0824357117714163}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":29.68305368423462,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9392888888888888,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":11889.46071111111,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":1420447.8014498004,"observed_improvement_percent":37.680852518947155,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.861856863506027,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000015718317458677277,"welch_t":6.883652112664085,"welch_degrees_of_freedom":10.631761944632785,"statistically_significant":true,"next_epoch_minimum_improvement_percent":8.787222604398663,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":true,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0824357117714163,"findproviders_load_p95_ms":29.68305368423462,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392888888888888,"raw_score":11807.974,"received_bytes":3586760621,"request_count":2910,"success_rate":0.9993127147766323},"replicate_count":9,"replicates":[{"accounting_coverage":1.1385639670461558,"evaluation_id":"candidate-01-01a19c26","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.88400373458861,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395444444444444,"findproviders_samples":218,"provider_egress_bytes":4051496305,"raw_score":11348.797400000012,"received_bytes":3558426599,"request_count":2868,"resource_findings":[],"stability_findings":[],"success_rate":0.9989539748953975},{"accounting_coverage":1.0824357117714163,"evaluation_id":"candidate-02-01a19c26","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.67932929992675,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395111111111111,"findproviders_samples":218,"provider_egress_bytes":4075178500,"raw_score":10092.587399999997,"received_bytes":3764822664,"request_count":3037,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.136654932325363,"evaluation_id":"candidate-03-01a19c26","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.68305368423462,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393111111111111,"findproviders_samples":218,"provider_egress_bytes":4074958925,"raw_score":11807.974,"received_bytes":3585044862,"request_count":2911,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1377180458802894,"evaluation_id":"candidate-04-01a19c26","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.939198112487777,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395055555555556,"findproviders_samples":218,"provider_egress_bytes":4076302348,"raw_score":12322.396,"received_bytes":3582875707,"request_count":2891,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1276540347630855,"evaluation_id":"candidate-05-01a19c26","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.20837650299072,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9394111111111111,"findproviders_samples":218,"provider_egress_bytes":4044625086,"raw_score":11460.775199999991,"received_bytes":3586760621,"request_count":2910,"resource_findings":[],"stability_findings":[],"success_rate":0.9993127147766323},{"accounting_coverage":1.1415157680720955,"evaluation_id":"candidate-06-01a19c26","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.23549842834472,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399944444444445,"findproviders_samples":218,"provider_egress_bytes":4095485999,"raw_score":11081.080999999998,"received_bytes":3587761215,"request_count":2891,"resource_findings":[],"stability_findings":[],"success_rate":0.9986163957108267},{"accounting_coverage":1.1193342052249753,"evaluation_id":"candidate-07-01a19c26","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.95417919158935,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93985,"findproviders_samples":218,"provider_egress_bytes":4049971163,"raw_score":14434.75119999998,"received_bytes":3618196553,"request_count":2937,"resource_findings":[],"stability_findings":[],"success_rate":0.9986380660537963},{"accounting_coverage":1.1049273533579451,"evaluation_id":"candidate-08-01a19c26","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.150891113281222,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9392888888888888,"findproviders_samples":218,"provider_egress_bytes":4075173745,"raw_score":12455.259,"received_bytes":3688182515,"request_count":2961,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1380427030922704,"evaluation_id":"candidate-09-01a19c26","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.559367847442612,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9393444444444444,"findproviders_samples":218,"provider_egress_bytes":4074146124,"raw_score":12001.525200000004,"received_bytes":3579958918,"request_count":2883,"resource_findings":[],"stability_findings":[],"success_rate":0.9993062781824489}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"cae3fc06f7fbc563850ca391d82814112381ad5bbbdb0aa4f0900fca78fe9456","artifact_manifest_sha256":"b77331c4d4f6abe5005b73ee0eaec099e4bfe80c1fd12ee0eba721b980670396","rank":45,"eligible_candidate_rank":7,"eligible":true},{"job_id":"01a19f5c-7f8e-a663-4e57-a993e494791a","patch_sha256":"5981f49b3678271eace1fc6c803dd0243694499ed6925e5c714aa7e74e68846c","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-03T03:03:21.461043Z","started_at":"2026-11-03T13:33:32.559036Z","completed_at":"2026-11-03T15:01:49.934622Z","score":{"score_schema":1,"raw_score":11824.631749999999,"normalized_score":165.38453808508652,"placeable":true,"takeover_eligible":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3546952082,"candidate_requests":2871,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1065737251935415}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":30.75124835968013,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9387611111111112,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":11982.960677777775,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":2797543.414797767,"observed_improvement_percent":37.19076820362341,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.364177458245315,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000013362614655117482,"welch_t":6.362460113729113,"welch_degrees_of_freedom":12.798737016466081,"statistically_significant":true,"next_epoch_minimum_improvement_percent":12.235604439144371,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":true,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1065737251935415,"findproviders_load_p95_ms":30.75124835968013,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9387611111111112,"raw_score":11824.631749999999,"received_bytes":3546952082,"request_count":2871,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.13357611973633,"evaluation_id":"candidate-01-01a19f5c","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.75124835968013,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399222222222222,"findproviders_samples":218,"provider_egress_bytes":4080203633,"raw_score":11824.631749999999,"received_bytes":3599408599,"request_count":2904,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1441890434876194,"evaluation_id":"candidate-02-01a19f5c","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.743538093566894,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395388888888889,"findproviders_samples":218,"provider_egress_bytes":4058383710,"raw_score":11755.155399999998,"received_bytes":3546952082,"request_count":2877,"resource_findings":[],"stability_findings":[],"success_rate":0.9968717413972888},{"accounting_coverage":1.1360938198469162,"evaluation_id":"candidate-03-01a19f5c","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.11008834838861,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9390888888888889,"findproviders_samples":218,"provider_egress_bytes":3999471297,"raw_score":11797.031199999998,"received_bytes":3520370613,"request_count":2839,"resource_findings":[],"stability_findings":[],"success_rate":0.9982388164846777},{"accounting_coverage":1.1891039330240956,"evaluation_id":"candidate-04-01a19f5c","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.134671783447253,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9401333333333334,"findproviders_samples":218,"provider_egress_bytes":4112812415,"raw_score":12784.044849999982,"received_bytes":3458749316,"request_count":2790,"resource_findings":[],"stability_findings":[],"success_rate":0.9996415770609319},{"accounting_coverage":1.1065737251935415,"evaluation_id":"candidate-05-01a19f5c","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.16402893066406,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9387611111111112,"findproviders_samples":218,"provider_egress_bytes":4079125508,"raw_score":8918.3336,"received_bytes":3686266369,"request_count":2979,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1490871446260078,"evaluation_id":"candidate-06-01a19f5c","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.748866558074923,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9391833333333334,"findproviders_samples":218,"provider_egress_bytes":4079692413,"raw_score":12108.1203,"received_bytes":3550376864,"request_count":2838,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1485207768758283,"evaluation_id":"candidate-07-01a19f5c","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.295481777191124,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9401833333333334,"findproviders_samples":218,"provider_egress_bytes":4069035285,"raw_score":10679.1365,"received_bytes":3542848651,"request_count":2871,"resource_findings":[],"stability_findings":[],"success_rate":0.9986067572274469},{"accounting_coverage":1.1450407512308305,"evaluation_id":"candidate-08-01a19f5c","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.119894790649376,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392611111111111,"findproviders_samples":218,"provider_egress_bytes":4080537293,"raw_score":12880.517399999997,"received_bytes":3563661196,"request_count":2874,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1865546363322454,"evaluation_id":"candidate-09-01a19f5c","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.223909568786617,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399888888888889,"findproviders_samples":218,"provider_egress_bytes":4112474460,"raw_score":15099.675100000008,"received_bytes":3465895572,"request_count":2783,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"050a9dda1a65d0870d995352189f2cc869d5d094909643b950925712500ad446","artifact_manifest_sha256":"0a2b60c66a3a36b65b02761fc05eea79bf21e7168a03ac85327a6070a18fedc4","rank":46,"eligible_candidate_rank":8,"eligible":true},{"job_id":"01a19374-787d-1180-e2c6-9e1b158ba365","patch_sha256":"14ee589c624080a2a84e463c945e2d2c17f1bffe9b4af160bca4aebf43856a96","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-31T19:34:06.135061Z","started_at":"2026-11-01T22:26:41.005053Z","completed_at":"2026-11-01T23:53:39.194839Z","score":{"score_schema":1,"raw_score":11979.795999999995,"normalized_score":163.24245087311994,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3656727811,"candidate_requests":2947,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1101142611800787}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":32.931536674499505,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9394388888888889,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":11999.865044444434,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":1997823.1100865612,"observed_improvement_percent":37.102163199160195,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.067674082105349,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.0000152141981688233,"welch_t":6.58697775962913,"welch_degrees_of_freedom":11.603411914518366,"statistically_significant":true,"next_epoch_minimum_improvement_percent":10.325314755741793,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1101142611800787,"findproviders_load_p95_ms":32.931536674499505,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394388888888889,"raw_score":11979.795999999995,"received_bytes":3656727811,"request_count":2947,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1146031536007042,"evaluation_id":"candidate-01-01a19374","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.235598945617674,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9394388888888889,"findproviders_samples":218,"provider_egress_bytes":4075800350,"raw_score":11767.092600000004,"received_bytes":3656727811,"request_count":2933,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.112530865659421,"evaluation_id":"candidate-02-01a19374","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.42279701232908,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397444444444445,"findproviders_samples":218,"provider_egress_bytes":4069260535,"raw_score":11979.795999999995,"received_bytes":3657660799,"request_count":2955,"resource_findings":[],"stability_findings":[],"success_rate":0.9969543147208122},{"accounting_coverage":1.1111344143318718,"evaluation_id":"candidate-03-01a19374","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.39293537139888,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395222222222223,"findproviders_samples":218,"provider_egress_bytes":4073220271,"raw_score":11826.440999999983,"received_bytes":3665821361,"request_count":2957,"resource_findings":[],"stability_findings":[],"success_rate":0.9996618194115657},{"accounting_coverage":1.119523619058159,"evaluation_id":"candidate-04-01a19374","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.355042934417718,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394888888888889,"findproviders_samples":218,"provider_egress_bytes":3975989837,"raw_score":14635.120649999968,"received_bytes":3551501522,"request_count":2872,"resource_findings":[],"stability_findings":[],"success_rate":0.9975626740947076},{"accounting_coverage":1.1101142611800787,"evaluation_id":"candidate-05-01a19374","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.95237579345701,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93985,"findproviders_samples":218,"provider_egress_bytes":4076375386,"raw_score":12391.792799999987,"received_bytes":3672032266,"request_count":2947,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1165904926755257,"evaluation_id":"candidate-06-01a19374","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.4131362915039,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.93995,"findproviders_samples":218,"provider_egress_bytes":4075877036,"raw_score":12179.798999999995,"received_bytes":3650288143,"request_count":2949,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1292920563674556,"evaluation_id":"candidate-07-01a19374","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.55590572357176,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395555555555556,"findproviders_samples":218,"provider_egress_bytes":4076851019,"raw_score":12911.281749999986,"received_bytes":3610094480,"request_count":2922,"resource_findings":[],"stability_findings":[],"success_rate":0.9996577686516085},{"accounting_coverage":1.1499260976403234,"evaluation_id":"candidate-08-01a19374","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.931536674499505,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9396388888888889,"findproviders_samples":218,"provider_egress_bytes":4074157661,"raw_score":10902.150399999993,"received_bytes":3542973474,"request_count":2865,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1144637983788215,"evaluation_id":"candidate-09-01a19374","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.02510299682614,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399944444444445,"findproviders_samples":218,"provider_egress_bytes":4107606584,"raw_score":9405.311199999998,"received_bytes":3685724552,"request_count":2987,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"6b5c0a8d28c8db36289057fe0fc6701b589d89afa7ab89c3784ce0f63ba933ad","artifact_manifest_sha256":"8a7bae2f98be073b11e128760b0f1ee24c95a2003dd8aba6fd1b48913897f366","rank":47,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1956e-db2a-f27c-e110-a02617256f83","patch_sha256":"497f6882f9ef1300d1e5ea4a642bb2afba1e98b571a6baafdb8ce53a1245fff2","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-01T04:46:58.867082Z","started_at":"2026-11-02T04:20:54.375197Z","completed_at":"2026-11-02T05:48:06.224953Z","score":{"score_schema":1,"raw_score":11980.131299999985,"normalized_score":163.23788204224442,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3648894557,"candidate_requests":2946,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0755469321866002}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":33.49205131530761,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9354166666666667,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":11880.06195,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":937508.326743621,"observed_improvement_percent":37.73011655152646,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.697909384540086,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.00001934490449390509,"welch_t":7.068735941266732,"welch_degrees_of_freedom":9.764704489378383,"statistically_significant":true,"next_epoch_minimum_improvement_percent":7.144469829320794,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0755469321866002,"findproviders_load_p95_ms":33.49205131530761,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9354166666666667,"raw_score":11980.131299999985,"received_bytes":3648894557,"request_count":2946,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1217423897628767,"evaluation_id":"candidate-01-01a1956e","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.31329135894771,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393611111111111,"findproviders_samples":218,"provider_egress_bytes":4073901533,"raw_score":11904.6395,"received_bytes":3631762132,"request_count":2946,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.123357405710196,"evaluation_id":"candidate-02-01a1956e","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.219908905029286,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398777777777778,"findproviders_samples":218,"provider_egress_bytes":4107479231,"raw_score":11980.131299999985,"received_bytes":3656431346,"request_count":2959,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1165619083686775,"evaluation_id":"candidate-03-01a1956e","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.49205131530761,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9392333333333334,"findproviders_samples":218,"provider_egress_bytes":4074216670,"raw_score":12260.095799999997,"received_bytes":3648894557,"request_count":2937,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1350585387316636,"evaluation_id":"candidate-04-01a1956e","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.839769649505612,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397388888888889,"findproviders_samples":218,"provider_egress_bytes":4074269700,"raw_score":12750.730699999996,"received_bytes":3589479803,"request_count":2904,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0859909265485996,"evaluation_id":"candidate-05-01a1956e","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.942288303375218,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9397222222222222,"findproviders_samples":218,"provider_egress_bytes":4073964389,"raw_score":10619.407249999998,"received_bytes":3751379767,"request_count":3024,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0916338049578325,"evaluation_id":"candidate-06-01a1956e","findproviders_empty_pools":0,"findproviders_load_p95_ms":43.474913978576616,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9354166666666667,"findproviders_samples":218,"provider_egress_bytes":4073813567,"raw_score":12927.62020000001,"received_bytes":3731849956,"request_count":3003,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1214763615565224,"evaluation_id":"candidate-07-01a1956e","findproviders_empty_pools":0,"findproviders_load_p95_ms":40.725325584411564,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9400555555555555,"findproviders_samples":218,"provider_egress_bytes":4074677989,"raw_score":13009.170100000005,"received_bytes":3633315983,"request_count":2938,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1270852771861544,"evaluation_id":"candidate-08-01a1956e","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.57011566162101,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.94055,"findproviders_samples":218,"provider_egress_bytes":4074610881,"raw_score":10746.150700000002,"received_bytes":3615175323,"request_count":2943,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0755469321866002,"evaluation_id":"candidate-09-01a1956e","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.65992221832275,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9396166666666667,"findproviders_samples":218,"provider_egress_bytes":4073499729,"raw_score":10722.612000000001,"received_bytes":3787375155,"request_count":3043,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"4a7fed564c1feb9683e8a61db2eff379ce484e641f54d3936c1e739660f12e78","artifact_manifest_sha256":"56e1a65958d6d6fbc6eede13e479fb5d4a9ab9f206a1fed4bbc8db67b57b3b0a","rank":48,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a482-7498-d6b1-d42d-986d12a70671","patch_sha256":"480555a0caf735c4af62abe7400432412ffe137394a0bcb75db36ca19b836617","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-04T03:02:55.35003Z","started_at":"2026-11-05T23:07:59.27222Z","completed_at":"2026-11-06T00:34:14.007526Z","score":{"score_schema":1,"raw_score":12069.33275,"normalized_score":162.03143127361352,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9996571820363387}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3613403930,"candidate_requests":2917,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0923999354406533}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":34.40689830780025,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9354277777777777,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":12674.268299999989,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":2523089.9288775916,"observed_improvement_percent":33.56724795229858,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.26130055248483,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.00003626304742001222,"welch_t":5.814287862839734,"welch_degrees_of_freedom":12.41019532485913,"statistically_significant":true,"next_epoch_minimum_improvement_percent":10.986126961827535,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0923999354406533,"findproviders_load_p95_ms":34.40689830780025,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9354277777777777,"raw_score":12069.33275,"received_bytes":3613403930,"request_count":2917,"success_rate":0.9996571820363387},"replicate_count":9,"replicates":[{"accounting_coverage":1.152244534800492,"evaluation_id":"candidate-01-01a1a482","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.287881278991684,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9391666666666667,"findproviders_samples":218,"provider_egress_bytes":4076493716,"raw_score":11255.983999999984,"received_bytes":3537872034,"request_count":2865,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.111924099127181,"evaluation_id":"candidate-02-01a1a482","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.84002628326412,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9391333333333334,"findproviders_samples":218,"provider_egress_bytes":4077121359,"raw_score":13770.945000000002,"received_bytes":3666726319,"request_count":2963,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1468976559652662,"evaluation_id":"candidate-03-01a1a482","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.16497755050656,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393222222222222,"findproviders_samples":218,"provider_egress_bytes":4060331647,"raw_score":16168.579749999906,"received_bytes":3540273734,"request_count":2880,"resource_findings":[],"stability_findings":[],"success_rate":0.9989583333333333},{"accounting_coverage":1.1027791543921563,"evaluation_id":"candidate-04-01a1a482","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.35519084930419,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395666666666667,"findproviders_samples":218,"provider_egress_bytes":4054556272,"raw_score":13544.1085,"received_bytes":3676671123,"request_count":2971,"resource_findings":[],"stability_findings":[],"success_rate":0.9989902389767755},{"accounting_coverage":1.1943266781009547,"evaluation_id":"candidate-05-01a1a482","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.00086040496821,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9398111111111112,"findproviders_samples":218,"provider_egress_bytes":4074462165,"raw_score":12069.33275,"received_bytes":3411513985,"request_count":2756,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0923999354406533,"evaluation_id":"candidate-06-01a1a482","findproviders_empty_pools":0,"findproviders_load_p95_ms":44.586647796630835,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9395611111111111,"findproviders_samples":218,"provider_egress_bytes":4076195565,"raw_score":12503.34,"received_bytes":3731413224,"request_count":3001,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.151232405426525,"evaluation_id":"candidate-07-01a1a482","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.24293584823608,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393055555555555,"findproviders_samples":218,"provider_egress_bytes":4074222408,"raw_score":11412.49475,"received_bytes":3539009490,"request_count":2876,"resource_findings":[],"stability_findings":[],"success_rate":0.9996522948539638},{"accounting_coverage":1.1279276333216364,"evaluation_id":"candidate-08-01a1a482","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.985721015930174,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9362611111111111,"findproviders_samples":218,"provider_egress_bytes":4075658143,"raw_score":11729.232199999993,"received_bytes":3613403930,"request_count":2917,"resource_findings":[],"stability_findings":[],"success_rate":0.9996571820363387},{"accounting_coverage":1.1166889963400586,"evaluation_id":"candidate-09-01a1a482","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.40689830780025,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9354277777777777,"findproviders_samples":218,"provider_egress_bytes":4071194408,"raw_score":11614.39775,"received_bytes":3645772835,"request_count":2946,"resource_findings":[],"stability_findings":[],"success_rate":0.9986422267481331}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"67571f1f8f27ce8fde0aad29af9ae5c29b23f43f9737fddc945846db44bf72a5","artifact_manifest_sha256":"197766019cf21e507c7d62275cd602e41ef502683a584d8846b7b87c8afe3e54","rank":49,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a1c0-ce74-a3f7-39fc-2a9bc79c741a","patch_sha256":"866da4b57ffe17457cba90f6b9cf5b2d5597cac373a44a6b52bb759732fa0b06","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-03T14:12:09.943601Z","started_at":"2026-11-03T19:42:57.265577Z","completed_at":"2026-11-03T22:19:22.217658Z","score":{"score_schema":1,"raw_score":12218.629350000001,"normalized_score":160.05160677044336,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9996563573883162}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3626858634,"candidate_requests":2910,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0960952050645238}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":29.988297462463375,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9381222222222222,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":12550.816222222222,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":2482741.863158847,"observed_improvement_percent":34.21432761628076,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.246262825583234,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000030406034897689776,"welch_t":5.937351125662029,"welch_degrees_of_freedom":12.351105258010637,"statistically_significant":true,"next_epoch_minimum_improvement_percent":11.00512445486603,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0960952050645238,"findproviders_load_p95_ms":29.988297462463375,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9381222222222222,"raw_score":12218.629350000001,"received_bytes":3626858634,"request_count":2910,"success_rate":0.9996563573883162},"replicate_count":9,"replicates":[{"accounting_coverage":1.1461967419519992,"evaluation_id":"candidate-01-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.89223709106444,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398944444444445,"findproviders_samples":218,"provider_egress_bytes":4108635640,"raw_score":12218.629350000001,"received_bytes":3584581503,"request_count":2898,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1137300807152613,"evaluation_id":"candidate-02-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.582805252075175,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397166666666666,"findproviders_samples":218,"provider_egress_bytes":4075477103,"raw_score":11848.108,"received_bytes":3659304147,"request_count":2946,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1248820443700864,"evaluation_id":"candidate-03-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.68794345855708,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9393777777777778,"findproviders_samples":218,"provider_egress_bytes":4047980214,"raw_score":15079.689399999996,"received_bytes":3598581944,"request_count":2909,"resource_findings":[],"stability_findings":[],"success_rate":0.9989687177724303},{"accounting_coverage":1.1038910568115152,"evaluation_id":"candidate-04-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.778077220916746,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9392444444444444,"findproviders_samples":218,"provider_egress_bytes":4072692913,"raw_score":11875.924499999997,"received_bytes":3689397507,"request_count":2979,"resource_findings":[],"stability_findings":[],"success_rate":0.998992950654582},{"accounting_coverage":1.0960952050645238,"evaluation_id":"candidate-05-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.074600982665956,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9381222222222222,"findproviders_samples":218,"provider_egress_bytes":4074052409,"raw_score":11799.010200000012,"received_bytes":3716878233,"request_count":3013,"resource_findings":[],"stability_findings":[],"success_rate":0.9996681048788583},{"accounting_coverage":1.1236899370145124,"evaluation_id":"candidate-06-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.400128936767572,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9392333333333334,"findproviders_samples":218,"provider_egress_bytes":4075464550,"raw_score":9566.893049999999,"received_bytes":3626858634,"request_count":2904,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.143238047812155,"evaluation_id":"candidate-07-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.988297462463375,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9397055555555556,"findproviders_samples":218,"provider_egress_bytes":4075846811,"raw_score":13352.677999999994,"received_bytes":3565177715,"request_count":2875,"resource_findings":[],"stability_findings":[],"success_rate":0.9996521739130435},{"accounting_coverage":1.1076709244395493,"evaluation_id":"candidate-08-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":37.16319522857662,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395722222222223,"findproviders_samples":218,"provider_egress_bytes":4067895391,"raw_score":13779.915799999995,"received_bytes":3672476456,"request_count":2977,"resource_findings":[],"stability_findings":[],"success_rate":0.9986563654685925},{"accounting_coverage":1.1297951396933112,"evaluation_id":"candidate-09-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.38139581680298,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397166666666666,"findproviders_samples":218,"provider_egress_bytes":4076191301,"raw_score":13436.497699999984,"received_bytes":3607903024,"request_count":2910,"resource_findings":[],"stability_findings":[],"success_rate":0.9996563573883162}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"5ae16f4ca8f385862f0c6f67169fe3b48d7375f0cb8a8bc6322817995196c11b","artifact_manifest_sha256":"6a46fd319234de0d6a6a78280b0c58c800f671217238bc59d1dd3e8d2376410b","rank":50,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a1bf-b365-eea8-5190-389198b50384","patch_sha256":"45f6ab14557e921200b9ec360c0a77aa41b2c831acc8f75515529b5b3b7eb09a","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-03T14:10:57.483925Z","started_at":"2026-11-03T16:29:06.979156Z","completed_at":"2026-11-03T18:15:06.731709Z","score":{"score_schema":1,"raw_score":12270.6315,"normalized_score":159.3733183169911,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3607337015,"candidate_requests":2904,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1109684470562455}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":32.4765432357788,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9385444444444444,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":12278.454761111108,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":866395.0801361246,"observed_improvement_percent":35.64192256575364,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.674581882768942,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.00003195428996029477,"welch_t":6.703099278239141,"welch_degrees_of_freedom":9.633782487498053,"statistically_significant":true,"next_epoch_minimum_improvement_percent":6.645312662094454,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1109684470562455,"findproviders_load_p95_ms":32.4765432357788,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9385444444444444,"raw_score":12270.6315,"received_bytes":3607337015,"request_count":2904,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1240614651401377,"evaluation_id":"candidate-01-01a1a1bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.57178344726562,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9395111111111111,"findproviders_samples":218,"provider_egress_bytes":4075531552,"raw_score":11704.17559999998,"received_bytes":3625719481,"request_count":2955,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.130266002329699,"evaluation_id":"candidate-02-01a1a1bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.571251583099265,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9396833333333333,"findproviders_samples":218,"provider_egress_bytes":4077250387,"raw_score":12376.151899999997,"received_bytes":3607337015,"request_count":2910,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1420700997059783,"evaluation_id":"candidate-03-01a1a1bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.53069496154785,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392777777777778,"findproviders_samples":218,"provider_egress_bytes":4074784692,"raw_score":13827.774800000008,"received_bytes":3567893681,"request_count":2873,"resource_findings":[],"stability_findings":[],"success_rate":0.9993038635572572},{"accounting_coverage":1.1160065853712955,"evaluation_id":"candidate-04-01a1a1bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.4765432357788,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397611111111112,"findproviders_samples":218,"provider_egress_bytes":4064000756,"raw_score":13503.932399999998,"received_bytes":3641556250,"request_count":2949,"resource_findings":[],"stability_findings":[],"success_rate":0.9993218040013564},{"accounting_coverage":1.1482025963328202,"evaluation_id":"candidate-05-01a1a1bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.681670093536376,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9394055555555556,"findproviders_samples":218,"provider_egress_bytes":4071720028,"raw_score":12328.870699999996,"received_bytes":3546168630,"request_count":2904,"resource_findings":[],"stability_findings":[],"success_rate":0.9989669421487604},{"accounting_coverage":1.1109684470562455,"evaluation_id":"candidate-06-01a1a1bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.12333707809447,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395944444444444,"findproviders_samples":218,"provider_egress_bytes":4077874821,"raw_score":11589.287,"received_bytes":3670558630,"request_count":2946,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1239594034628657,"evaluation_id":"candidate-07-01a1a1bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.780660152435296,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9385444444444444,"findproviders_samples":218,"provider_egress_bytes":4076825673,"raw_score":12103.832549999997,"received_bytes":3627200111,"request_count":2904,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1354966226806462,"evaluation_id":"candidate-08-01a1a1bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.956984519958475,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9388111111111112,"findproviders_samples":218,"provider_egress_bytes":4076980572,"raw_score":12270.6315,"received_bytes":3590482341,"request_count":2886,"resource_findings":[],"stability_findings":[],"success_rate":0.9996534996534997},{"accounting_coverage":1.1614172648120757,"evaluation_id":"candidate-09-01a1a1bf","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.847548675537105,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395888888888889,"findproviders_samples":218,"provider_egress_bytes":4075515301,"raw_score":10801.436400000002,"received_bytes":3509087926,"request_count":2843,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"f40f99c958bc5f2ba819901a755a4c948b74661785db78e99334701d206e9feb","artifact_manifest_sha256":"d0d42b51fc9d5d120ac5eaad19876cd06c845b875365284d7ff2673fcdaf3d72","rank":51,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a672-824d-c2a3-330c-db4244a8972a","patch_sha256":"9da2fec75a76f6ebc86e316a9bcaf05c40424db00d9dee63e331a0be8cbf7637","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-04T12:04:44.64328Z","started_at":"2026-11-06T06:46:39.161711Z","completed_at":"2026-11-07T05:34:01.498575Z","score":{"score_schema":1,"raw_score":12387.8295,"normalized_score":157.8655292276987,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9993256911665542}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3609678071,"candidate_requests":2922,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0976917949670983}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":32.61957187652587,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9349388888888889,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":12677.710038888883,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":3264955.1809619223,"observed_improvement_percent":33.54920792183632,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.541292770449965,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.00003696503401122251,"welch_t":5.623263730248117,"welch_degrees_of_freedom":13.40492437917131,"statistically_significant":true,"next_epoch_minimum_improvement_percent":12.493926379442831,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0976917949670983,"findproviders_load_p95_ms":32.61957187652587,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9349388888888889,"raw_score":12387.8295,"received_bytes":3609678071,"request_count":2922,"success_rate":0.9993256911665542},"replicate_count":9,"replicates":[{"accounting_coverage":1.1362651513054876,"evaluation_id":"candidate-01-01a1a672","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.820928573608384,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9349388888888889,"findproviders_samples":218,"provider_egress_bytes":4075349983,"raw_score":12658.59375,"received_bytes":3586618826,"request_count":2876,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1139972498824604,"evaluation_id":"candidate-02-01a1a672","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.61957187652587,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9390333333333334,"findproviders_samples":218,"provider_egress_bytes":4074285788,"raw_score":11285.85275,"received_bytes":3657357133,"request_count":2966,"resource_findings":[],"stability_findings":[],"success_rate":0.9993256911665542},{"accounting_coverage":1.1377113896543827,"evaluation_id":"candidate-03-01a1a672","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.46459922790527,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394388888888889,"findproviders_samples":218,"provider_egress_bytes":4026471280,"raw_score":17059.95579999996,"received_bytes":3539097276,"request_count":2880,"resource_findings":[],"stability_findings":[],"success_rate":0.9975694444444444},{"accounting_coverage":1.1452104025342822,"evaluation_id":"candidate-04-01a1a672","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.0070231437683,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9399833333333333,"findproviders_samples":218,"provider_egress_bytes":4106501381,"raw_score":11577.419,"received_bytes":3585805169,"request_count":2891,"resource_findings":[],"stability_findings":[],"success_rate":0.9993081978554134},{"accounting_coverage":1.1262687070121562,"evaluation_id":"candidate-05-01a1a672","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.765017890930174,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9388777777777778,"findproviders_samples":218,"provider_egress_bytes":4075666130,"raw_score":10891.7585,"received_bytes":3618733349,"request_count":2939,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1196888287926952,"evaluation_id":"candidate-06-01a1a672","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.082983779907227,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9387,"findproviders_samples":218,"provider_egress_bytes":4064344067,"raw_score":12198.717549999985,"received_bytes":3629887128,"request_count":2922,"resource_findings":[],"stability_findings":[],"success_rate":0.9976043805612594},{"accounting_coverage":1.1234712559495725,"evaluation_id":"candidate-07-01a1a672","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.14405212402342,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9387722222222222,"findproviders_samples":218,"provider_egress_bytes":4055369556,"raw_score":12387.8295,"received_bytes":3609678071,"request_count":2931,"resource_findings":[],"stability_findings":[],"success_rate":0.9989764585465711},{"accounting_coverage":1.0976917949670983,"evaluation_id":"candidate-08-01a1a672","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.59583911895744,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9383666666666667,"findproviders_samples":218,"provider_egress_bytes":4077636164,"raw_score":12896.3786,"received_bytes":3714736853,"request_count":3005,"resource_findings":[],"stability_findings":[],"success_rate":0.9996672212978369},{"accounting_coverage":1.1480616324424784,"evaluation_id":"candidate-09-01a1a672","findproviders_empty_pools":0,"findproviders_load_p95_ms":42.750042915344196,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93895,"findproviders_samples":218,"provider_egress_bytes":4076453630,"raw_score":13142.884899999997,"received_bytes":3550727169,"request_count":2860,"resource_findings":[],"stability_findings":[],"success_rate":0.9996503496503496}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"4d32d73c688b082cc6720ba652e02ce11921ead31f54e3f4f734140bdb3cc3f1","artifact_manifest_sha256":"44d69d60c1d4657feaf50950c1b5b506faeb7bf912b71a95866d9dabb675d89c","rank":52,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a19c27-8679-9a84-c649-a3b598f34bfd","patch_sha256":"78704c7ab4cfc62703e767239ed95299b1a28bad49b212b4d7bd582e945d14e6","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-02T12:06:38.192179Z","started_at":"2026-11-02T14:36:45.6372Z","completed_at":"2026-11-02T16:02:38.348599Z","score":{"score_schema":1,"raw_score":12421.62679999997,"normalized_score":157.43600186088366,"placeable":true,"takeover_eligible":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3600692708,"candidate_requests":2920,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0897643805648676}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.906769561767575,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9387555555555556,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":12821.985494444432,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":4748833.282851434,"observed_improvement_percent":32.79298157893249,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":11.11156941633044,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000058056359069745706,"welch_t":5.176966185750108,"welch_degrees_of_freedom":14.856557118748137,"statistically_significant":true,"next_epoch_minimum_improvement_percent":14.898389540270946,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":true,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0897643805648676,"findproviders_load_p95_ms":31.906769561767575,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9387555555555556,"raw_score":12421.62679999997,"received_bytes":3600692708,"request_count":2920,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1616619127879906,"evaluation_id":"candidate-01-01a19c27","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.327174186706532,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399888888888889,"findproviders_samples":218,"provider_egress_bytes":4087810305,"raw_score":17836.04904999998,"received_bytes":3518932884,"request_count":2844,"resource_findings":[],"stability_findings":[],"success_rate":0.9982419127988749},{"accounting_coverage":1.1157933539068734,"evaluation_id":"candidate-02-01a19c27","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.574395465850827,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9397111111111112,"findproviders_samples":218,"provider_egress_bytes":4075962635,"raw_score":12450.059800000012,"received_bytes":3652972677,"request_count":2973,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1511646760550516,"evaluation_id":"candidate-03-01a19c27","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.57784376144408,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9393444444444444,"findproviders_samples":218,"provider_egress_bytes":4076193602,"raw_score":13601.398449999999,"received_bytes":3540930057,"request_count":2830,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0897643805648676,"evaluation_id":"candidate-04-01a19c27","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.906769561767575,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9395166666666667,"findproviders_samples":218,"provider_egress_bytes":4074201160,"raw_score":10038.7282,"received_bytes":3738607384,"request_count":3003,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.123744706840052,"evaluation_id":"candidate-05-01a19c27","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.031069183349594,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398222222222222,"findproviders_samples":218,"provider_egress_bytes":4076487376,"raw_score":11499.901,"received_bytes":3627592060,"request_count":2931,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1484934168621113,"evaluation_id":"candidate-06-01a19c27","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.53194084167478,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399277777777778,"findproviders_samples":218,"provider_egress_bytes":4098275318,"raw_score":12163.188549999959,"received_bytes":3568392520,"request_count":2870,"resource_findings":[],"stability_findings":[],"success_rate":0.9982578397212544},{"accounting_coverage":1.1004000119173594,"evaluation_id":"candidate-07-01a19c27","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.40110454559325,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9396944444444445,"findproviders_samples":218,"provider_egress_bytes":4076001744,"raw_score":11697.905599999987,"received_bytes":3704109142,"request_count":2992,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1317366966489828,"evaluation_id":"candidate-08-01a19c27","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.79296970367427,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9387555555555556,"findproviders_samples":218,"provider_egress_bytes":4075036071,"raw_score":12421.62679999997,"received_bytes":3600692708,"request_count":2920,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1511643180591293,"evaluation_id":"candidate-09-01a19c27","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.60498332977295,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398333333333333,"findproviders_samples":218,"provider_egress_bytes":4076042584,"raw_score":13689.011999999999,"received_bytes":3540799971,"request_count":2859,"resource_findings":[],"stability_findings":[],"success_rate":0.9996502273522211}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"e8eb3d7c689e277d41260cbb14501bb0082ee78c257ad117bd7cc76e1a9fcb1b","artifact_manifest_sha256":"79a4b22e08c6e941960e8bb2e28b55c281096ff19c220b0dba738d967a81af9d","rank":53,"eligible_candidate_rank":9,"eligible":true},{"job_id":"01a1a481-d30e-06b0-b963-12b26bc3b174","patch_sha256":"ad8899ba860088f3222b2db811ce0a51a42f72fff76c71f1acdc965551a08b5c","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-04T03:02:13.993606Z","started_at":"2026-11-05T21:40:24.036784Z","completed_at":"2026-11-05T23:07:53.079671Z","score":{"score_schema":1,"raw_score":12468.825150000002,"normalized_score":156.84005802262755,"placeable":true,"takeover_eligible":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3581837360,"candidate_requests":2900,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.107552561424021}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":32.98281974792478,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9354777777777777,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":12629.354749999991,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":1805860.1168886072,"observed_improvement_percent":33.80266436136512,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.998284561539059,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000036852740696570226,"welch_t":6.057398095925838,"welch_degrees_of_freedom":11.28942478335628,"statistically_significant":true,"next_epoch_minimum_improvement_percent":9.327430803229014,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":true,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.107552561424021,"findproviders_load_p95_ms":32.98281974792478,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9354777777777777,"raw_score":12468.825150000002,"received_bytes":3581837360,"request_count":2900,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1388889783492444,"evaluation_id":"candidate-01-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.82610340118408,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9386777777777778,"findproviders_samples":218,"provider_egress_bytes":4076992463,"raw_score":11408.098,"received_bytes":3579797979,"request_count":2901,"resource_findings":[],"stability_findings":[],"success_rate":0.9996552912788693},{"accounting_coverage":1.1450798536293287,"evaluation_id":"candidate-02-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.49227447509761,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9396944444444445,"findproviders_samples":218,"provider_egress_bytes":4076237773,"raw_score":13637.542399999951,"received_bytes":3559784726,"request_count":2877,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1609146317526307,"evaluation_id":"candidate-03-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.64172124862669,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9354777777777777,"findproviders_samples":218,"provider_egress_bytes":4075148273,"raw_score":12864.563849999991,"received_bytes":3510291077,"request_count":2834,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1082311517958348,"evaluation_id":"candidate-04-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.041836166381835,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9380666666666667,"findproviders_samples":218,"provider_egress_bytes":4076469919,"raw_score":14019.226599999998,"received_bytes":3678357094,"request_count":2969,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1173304409933067,"evaluation_id":"candidate-05-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":37.18665676116929,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9390555555555555,"findproviders_samples":218,"provider_egress_bytes":4075459855,"raw_score":11106.963500000007,"received_bytes":3647497379,"request_count":2943,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.107552561424021,"evaluation_id":"candidate-06-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.47524795532226,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9386777777777778,"findproviders_samples":218,"provider_egress_bytes":4076287441,"raw_score":12468.825150000002,"received_bytes":3680446042,"request_count":2988,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1363264921653329,"evaluation_id":"candidate-07-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":43.56423950195312,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392166666666667,"findproviders_samples":218,"provider_egress_bytes":4072369228,"raw_score":12010.811249999966,"received_bytes":3583802064,"request_count":2900,"resource_findings":[],"stability_findings":[],"success_rate":0.9989655172413793},{"accounting_coverage":1.1304599117811425,"evaluation_id":"candidate-08-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.81072130203246,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398,"findproviders_samples":218,"provider_egress_bytes":4049123546,"raw_score":14922.0934,"received_bytes":3581837360,"request_count":2887,"resource_findings":[],"stability_findings":[],"success_rate":0.9982680983720125},{"accounting_coverage":1.138696235389232,"evaluation_id":"candidate-09-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.98281974792478,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9388277777777778,"findproviders_samples":218,"provider_egress_bytes":4075574180,"raw_score":11226.068599999995,"received_bytes":3579158386,"request_count":2889,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"c612d7e145eb3fd24f2b488bb88ce1694f040bcb747d08dc27fcd51bb1949449","artifact_manifest_sha256":"7bd0bcf831e1ea42491f4df38df95b7018dda964edd83e8aa3441e44e7d9d103","rank":54,"eligible_candidate_rank":10,"eligible":true},{"job_id":"01a1956f-0d68-3470-b0f5-9225f8e75b85","patch_sha256":"0a537dfc40738c69ff9c4ee11bdced93b617bd4e3e68b9063323bfdbed24acd4","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-01T04:47:13.325053Z","started_at":"2026-11-02T05:48:13.689928Z","completed_at":"2026-11-02T07:17:28.028247Z","score":{"score_schema":1,"raw_score":12502.122899999998,"normalized_score":156.42233528195425,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3654313730,"candidate_requests":2951,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0872081092943873}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.326022243499754,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.93785,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":12647.50048333333,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":1115907.0079243928,"observed_improvement_percent":33.70755267722495,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.757413361578434,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000045379103765337265,"welch_t":6.255603726811476,"welch_degrees_of_freedom":10.089782850691497,"statistically_significant":true,"next_epoch_minimum_improvement_percent":7.321674926888731,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0872081092943873,"findproviders_load_p95_ms":31.326022243499754,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93785,"raw_score":12502.122899999998,"received_bytes":3654313730,"request_count":2951,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1004059604610557,"evaluation_id":"candidate-01-01a1956f","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.622483253479004,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9404055555555556,"findproviders_samples":218,"provider_egress_bytes":4108131235,"raw_score":12502.122899999998,"received_bytes":3733286971,"request_count":2999,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0957854078444098,"evaluation_id":"candidate-02-01a1956f","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.366203498840303,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9383944444444444,"findproviders_samples":218,"provider_egress_bytes":4074950093,"raw_score":12745.116199999999,"received_bytes":3718748273,"request_count":2997,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.127034916189059,"evaluation_id":"candidate-03-01a1956f","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.56176681518554,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9396611111111111,"findproviders_samples":218,"provider_egress_bytes":4074870350,"raw_score":11810.835399999996,"received_bytes":3615567088,"request_count":2919,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1252750080313536,"evaluation_id":"candidate-04-01a1956f","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.899593448638882,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.93785,"findproviders_samples":218,"provider_egress_bytes":4074707421,"raw_score":12891.438099999992,"received_bytes":3621076974,"request_count":2907,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1127968771521113,"evaluation_id":"candidate-05-01a1956f","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.326022243499754,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9400055555555555,"findproviders_samples":218,"provider_egress_bytes":4107726546,"raw_score":12023.023799999984,"received_bytes":3691353409,"request_count":2985,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1181564598642515,"evaluation_id":"candidate-06-01a1956f","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.772360324859594,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93955,"findproviders_samples":218,"provider_egress_bytes":4074072688,"raw_score":11629.3485,"received_bytes":3643562269,"request_count":2951,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1235716215073337,"evaluation_id":"candidate-07-01a1956f","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.412832736968994,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395388888888889,"findproviders_samples":218,"provider_egress_bytes":4072195399,"raw_score":14548.10375,"received_bytes":3624330947,"request_count":2916,"resource_findings":[],"stability_findings":[],"success_rate":0.9993141289437586},{"accounting_coverage":1.0872081092943873,"evaluation_id":"candidate-08-01a1956f","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.757953453063955,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398388888888889,"findproviders_samples":218,"provider_egress_bytes":4074735631,"raw_score":11608.915899999995,"received_bytes":3747889292,"request_count":3012,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1150339686351998,"evaluation_id":"candidate-09-01a1956f","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.95790081024167,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9390555555555555,"findproviders_samples":218,"provider_egress_bytes":4074683941,"raw_score":14068.599799999996,"received_bytes":3654313730,"request_count":2947,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"87c94acd99d12b37de2689cb3651ad690b749ec20b51098a30f987710dff0aac","artifact_manifest_sha256":"f6b9a94dce8faac6ca8cd2949bd2e85e39f1457e40ec1369fe7394ad0d5ffd43","rank":55,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a19e3a-0c11-869f-9d84-46dc5dfccd4b","patch_sha256":"61df99d779e22045022ba45cf51d238043f59cef69c3d8e575ca799e5a30dbb9","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-02T21:46:06.486195Z","started_at":"2026-11-03T07:44:22.490133Z","completed_at":"2026-11-03T09:13:51.969681Z","score":{"score_schema":1,"raw_score":12589.883600000008,"normalized_score":155.33195715963544,"placeable":true,"takeover_eligible":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9996644295302013}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3597923775,"candidate_requests":2907,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1022243546188257}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":34.10023384094238,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9383722222222223,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":12714.645638888882,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":1330185.4270376188,"observed_improvement_percent":33.35560829947919,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.830557232303759,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.00004623358888347029,"welch_t":6.121714792754627,"welch_degrees_of_freedom":10.472995421811033,"statistically_significant":true,"next_epoch_minimum_improvement_percent":7.951571657841315,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":true,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1022243546188257,"findproviders_load_p95_ms":34.10023384094238,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9383722222222223,"raw_score":12589.883600000008,"received_bytes":3597923775,"request_count":2907,"success_rate":0.9996644295302013},"replicate_count":9,"replicates":[{"accounting_coverage":1.1133776672993172,"evaluation_id":"candidate-01-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.94732217788681,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9392666666666667,"findproviders_samples":218,"provider_egress_bytes":4075932758,"raw_score":11170.81825,"received_bytes":3660871668,"request_count":2946,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1447618020112074,"evaluation_id":"candidate-02-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.198351478576626,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9404555555555556,"findproviders_samples":218,"provider_egress_bytes":4109368548,"raw_score":12830.14219999999,"received_bytes":3589714944,"request_count":2894,"resource_findings":[],"stability_findings":[],"success_rate":0.9993089149965446},{"accounting_coverage":1.1873686898122005,"evaluation_id":"candidate-03-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.577566337585424,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9383722222222223,"findproviders_samples":218,"provider_egress_bytes":4076036650,"raw_score":11832.5815,"received_bytes":3432831508,"request_count":2791,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1273864071049933,"evaluation_id":"candidate-04-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.72566757202148,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.93935,"findproviders_samples":218,"provider_egress_bytes":4075024276,"raw_score":13402.69359999999,"received_bytes":3614576378,"request_count":2907,"resource_findings":[],"stability_findings":[],"success_rate":0.9989680082559339},{"accounting_coverage":1.130793722554614,"evaluation_id":"candidate-05-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.10023384094238,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9393888888888889,"findproviders_samples":218,"provider_egress_bytes":4068509619,"raw_score":14646.846499999998,"received_bytes":3597923775,"request_count":2915,"resource_findings":[],"stability_findings":[],"success_rate":0.9993138936535163},{"accounting_coverage":1.1022243546188257,"evaluation_id":"candidate-06-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.88995113372797,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397055555555556,"findproviders_samples":218,"provider_egress_bytes":4057978933,"raw_score":13983.080299999989,"received_bytes":3681626990,"request_count":2980,"resource_findings":[],"stability_findings":[],"success_rate":0.9996644295302013},{"accounting_coverage":1.1208537251975554,"evaluation_id":"candidate-07-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.42346782684319,"findproviders_pool_p05":2543,"findproviders_sample_span_fraction":0.9389888888888889,"findproviders_samples":218,"provider_egress_bytes":4076522911,"raw_score":12589.883600000008,"received_bytes":3636980294,"request_count":2928,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1565917880117496,"evaluation_id":"candidate-08-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.313233852386386,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9398055555555556,"findproviders_samples":218,"provider_egress_bytes":4072661083,"raw_score":11449.815499999995,"received_bytes":3521260591,"request_count":2834,"resource_findings":[],"stability_findings":[],"success_rate":0.9989414255469301},{"accounting_coverage":1.1359913887553819,"evaluation_id":"candidate-09-01a19e3a","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.136763191223125,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9410777777777778,"findproviders_samples":218,"provider_egress_bytes":4076662965,"raw_score":12525.949299999964,"received_bytes":3588638968,"request_count":2895,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"603f2491e6b4d8e31615f7c869123f665c17fecf434e332cda39de19d669fd45","artifact_manifest_sha256":"a2005dd8549bf780eb741e3eb56bd9ec945e28f348a47c9ef7de2fba15095b9c","rank":56,"eligible_candidate_rank":11,"eligible":true},{"job_id":"01a19c29-1e4f-feed-8659-5855b08c3dc3","patch_sha256":"6e105c2889f1a02d8ed1824744cc6240da8c05ae1ef7e65aed382ddb03287161","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-02T12:08:22.324122Z","started_at":"2026-11-02T17:29:28.734957Z","completed_at":"2026-11-02T18:56:47.846237Z","score":{"score_schema":1,"raw_score":12734.652,"normalized_score":153.56613278478264,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3614843086,"candidate_requests":2930,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1170605031509768}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":33.82326984405512,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9373,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":12906.91088888888,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":1636154.415081645,"observed_improvement_percent":32.34784127275156,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.937695899487856,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.000055725603108958004,"welch_t":5.845521796774169,"welch_degrees_of_freedom":11.00409676677944,"statistically_significant":true,"next_epoch_minimum_improvement_percent":8.687423188316238,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1170605031509768,"findproviders_load_p95_ms":33.82326984405512,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9373,"raw_score":12734.652,"received_bytes":3614843086,"request_count":2930,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.124723729156082,"evaluation_id":"candidate-01-01a19c29","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.95432777404783,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9397,"findproviders_samples":218,"provider_egress_bytes":4065699796,"raw_score":12180.678199999991,"received_bytes":3614843086,"request_count":2930,"resource_findings":[],"stability_findings":[],"success_rate":0.9989761092150171},{"accounting_coverage":1.1263160638597578,"evaluation_id":"candidate-02-01a19c29","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.041455841064447,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9394777777777777,"findproviders_samples":218,"provider_egress_bytes":4077550597,"raw_score":12951.942399999993,"received_bytes":3620254321,"request_count":2925,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1251443415809295,"evaluation_id":"candidate-03-01a19c29","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.50157976150511,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.94005,"findproviders_samples":218,"provider_egress_bytes":4111402053,"raw_score":12734.652,"received_bytes":3654110767,"request_count":2936,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1187320421797047,"evaluation_id":"candidate-04-01a19c29","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.82326984405512,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9388444444444445,"findproviders_samples":218,"provider_egress_bytes":4071575852,"raw_score":11007.987449999999,"received_bytes":3639455829,"request_count":2934,"resource_findings":[],"stability_findings":[],"success_rate":0.9989775051124744},{"accounting_coverage":1.1170605031509768,"evaluation_id":"candidate-05-01a19c29","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.174757385253905,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9394722222222223,"findproviders_samples":218,"provider_egress_bytes":4073872028,"raw_score":13744.5075,"received_bytes":3646957364,"request_count":2936,"resource_findings":[],"stability_findings":[],"success_rate":0.9989782016348774},{"accounting_coverage":1.127813531146549,"evaluation_id":"candidate-06-01a19c29","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.143476104736294,"findproviders_pool_p05":2550,"findproviders_sample_span_fraction":0.9373,"findproviders_samples":218,"provider_egress_bytes":4076670528,"raw_score":12627.1305,"received_bytes":3614667155,"request_count":2931,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1472429909048631,"evaluation_id":"candidate-07-01a19c29","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.99508895874018,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9390666666666667,"findproviders_samples":218,"provider_egress_bytes":4040320509,"raw_score":15636.851349999939,"received_bytes":3521765259,"request_count":2802,"resource_findings":[],"stability_findings":[],"success_rate":0.9985724482512491},{"accounting_coverage":1.1506312973903892,"evaluation_id":"candidate-08-01a19c29","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.82347831726074,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9393722222222223,"findproviders_samples":218,"provider_egress_bytes":4077100693,"raw_score":13162.9026,"received_bytes":3543359808,"request_count":2857,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1477731595048766,"evaluation_id":"candidate-09-01a19c29","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.358909225463858,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9391055555555555,"findproviders_samples":218,"provider_egress_bytes":4075345019,"raw_score":12115.546,"received_bytes":3550653703,"request_count":2847,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"d8eceef699c5be4b6b139c739c149aa46425c5e09f010a6da0634af4927a3cd8","artifact_manifest_sha256":"e0578ed4fd02f498e566dbad9aa93037d09aa2461d0a5ea9e2e2d4c275320763","rank":57,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a1be-9423-dc64-bf95-5757b0c235fd","patch_sha256":"e38a1dcd9e87ca4f7df184613205794270ad9342c5de36795d39263af337d43a","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-03T14:09:43.890275Z","started_at":"2026-11-03T15:01:55.067813Z","completed_at":"2026-11-03T16:29:01.61771Z","score":{"score_schema":1,"raw_score":12888.330399999999,"normalized_score":151.73503466360532,"placeable":true,"takeover_eligible":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9996492458786391}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3587437092,"candidate_requests":2898,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1059980727237213}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":31.888308238983146,"candidate_pool_p05":2547,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9391111111111111,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":13129.619083333333,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":2207004.0626338543,"observed_improvement_percent":31.180506172190398,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.144188087031583,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.0000716564389720497,"welch_t":5.480788870585539,"welch_degrees_of_freedom":11.934240022353455,"statistically_significant":true,"next_epoch_minimum_improvement_percent":9.918604763165595,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":true,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1059980727237213,"findproviders_load_p95_ms":31.888308238983146,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9391111111111111,"raw_score":12888.330399999999,"received_bytes":3587437092,"request_count":2898,"success_rate":0.9996492458786391},"replicate_count":9,"replicates":[{"accounting_coverage":1.1362939303076147,"evaluation_id":"candidate-01-01a1a1be","findproviders_empty_pools":0,"findproviders_load_p95_ms":46.00159759521462,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9393611111111111,"findproviders_samples":218,"provider_egress_bytes":4076382993,"raw_score":11903.598750000001,"received_bytes":3587437092,"request_count":2898,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1565940172611975,"evaluation_id":"candidate-02-01a1a1be","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.962689590454087,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9394055555555556,"findproviders_samples":218,"provider_egress_bytes":4073159937,"raw_score":12404.2755,"received_bytes":3521685117,"request_count":2851,"resource_findings":[],"stability_findings":[],"success_rate":0.9996492458786391},{"accounting_coverage":1.15474062229993,"evaluation_id":"candidate-03-01a1a1be","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.888308238983146,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9392,"findproviders_samples":218,"provider_egress_bytes":4006092158,"raw_score":14247.06675,"received_bytes":3469257148,"request_count":2846,"resource_findings":[],"stability_findings":[],"success_rate":0.9971890372452565},{"accounting_coverage":1.127282216002349,"evaluation_id":"candidate-04-01a1a1be","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.8159799575805,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395055555555556,"findproviders_samples":218,"provider_egress_bytes":4073791025,"raw_score":11180.91619999999,"received_bytes":3613816458,"request_count":2907,"resource_findings":[],"stability_findings":[],"success_rate":0.999656002751978},{"accounting_coverage":1.1059980727237213,"evaluation_id":"candidate-05-01a1a1be","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.522526550292966,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392,"findproviders_samples":218,"provider_egress_bytes":4076236970,"raw_score":11731.459800000004,"received_bytes":3685573303,"request_count":2958,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1413010053828323,"evaluation_id":"candidate-06-01a1a1be","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.991189002990698,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9396611111111111,"findproviders_samples":218,"provider_egress_bytes":4067986364,"raw_score":14653.608600000032,"received_bytes":3564341348,"request_count":2883,"resource_findings":[],"stability_findings":[],"success_rate":0.9982656954561221},{"accounting_coverage":1.1169788228719522,"evaluation_id":"candidate-07-01a1a1be","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.4409454345703,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9391111111111111,"findproviders_samples":218,"provider_egress_bytes":4067473595,"raw_score":12888.330399999999,"received_bytes":3641495713,"request_count":2929,"resource_findings":[],"stability_findings":[],"success_rate":0.99863434619324},{"accounting_coverage":1.1414448304441038,"evaluation_id":"candidate-08-01a1a1be","findproviders_empty_pools":0,"findproviders_load_p95_ms":40.10435390472409,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9398111111111112,"findproviders_samples":218,"provider_egress_bytes":4076489810,"raw_score":15589.99625,"received_bytes":3571341953,"request_count":2896,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1062676916275755,"evaluation_id":"candidate-09-01a1a1be","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.548741149902334,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9395444444444444,"findproviders_samples":218,"provider_egress_bytes":4059185735,"raw_score":13567.319499999987,"received_bytes":3669261758,"request_count":2967,"resource_findings":[],"stability_findings":[],"success_rate":0.9989888776541962}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"561c23c49b7cfaec603bef0c5995a0577818cd882f7985c88018f65d061d0bc4","artifact_manifest_sha256":"0687a6856de7c51b23e7b774cbe0d19eb42fa1fb6deba15f3c814cc0affa35f3","rank":58,"eligible_candidate_rank":12,"eligible":true},{"job_id":"01a1a1c0-2cb8-0368-1ae2-98f78659ed95","patch_sha256":"22605700f40c6a66f8fd9e4660ffe83f1bdaa9be4dd71b79befbf549de1ad021","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-03T14:11:28.543896Z","started_at":"2026-11-03T18:15:13.009685Z","completed_at":"2026-11-03T19:42:50.690848Z","score":{"score_schema":1,"raw_score":12937.782,"normalized_score":151.15506351861532,"placeable":true,"takeover_eligible":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3573921107,"candidate_requests":2896,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1127241193810227}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":30.076764011383027,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9382166666666667,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":13204.839572222221,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":3204752.7871935195,"observed_improvement_percent":30.786234568577402,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.518370476704995,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.00008263616155503836,"welch_t":5.173527847455096,"welch_degrees_of_freedom":13.330851768377336,"statistically_significant":true,"next_epoch_minimum_improvement_percent":11.88407223022596,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":true,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1127241193810227,"findproviders_load_p95_ms":30.076764011383027,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9382166666666667,"raw_score":12937.782,"received_bytes":3573921107,"request_count":2896,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.1449070732407902,"evaluation_id":"candidate-01-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.534713363647377,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394388888888889,"findproviders_samples":218,"provider_egress_bytes":4033437790,"raw_score":14865.854650000003,"received_bytes":3522939009,"request_count":2868,"resource_findings":[],"stability_findings":[],"success_rate":0.9989539748953975},{"accounting_coverage":1.134532987569106,"evaluation_id":"candidate-02-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":26.24831724166869,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9393222222222222,"findproviders_samples":218,"provider_egress_bytes":4077307355,"raw_score":14940.031350000023,"received_bytes":3593820012,"request_count":2898,"resource_findings":[],"stability_findings":[],"success_rate":0.9993098688750862},{"accounting_coverage":1.1549901952672508,"evaluation_id":"candidate-03-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.401925468444812,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395,"findproviders_samples":218,"provider_egress_bytes":4076519136,"raw_score":12937.782,"received_bytes":3529483759,"request_count":2841,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1316209762097582,"evaluation_id":"candidate-04-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":28.989895248413085,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9382166666666667,"findproviders_samples":218,"provider_egress_bytes":4044324092,"raw_score":10340.004,"received_bytes":3573921107,"request_count":2896,"resource_findings":[],"stability_findings":[],"success_rate":0.9993093922651933},{"accounting_coverage":1.125567625282335,"evaluation_id":"candidate-05-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.076764011383027,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9398722222222222,"findproviders_samples":218,"provider_egress_bytes":4107819344,"raw_score":12140.330750000001,"received_bytes":3649553569,"request_count":2956,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1127241193810227,"evaluation_id":"candidate-06-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.08846406936645,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9386666666666666,"findproviders_samples":218,"provider_egress_bytes":4076299159,"raw_score":13547.432999999997,"received_bytes":3663351129,"request_count":2949,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1518966675463285,"evaluation_id":"candidate-07-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.246887493133542,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9388222222222222,"findproviders_samples":218,"provider_egress_bytes":4075668172,"raw_score":12404.720599999955,"received_bytes":3538223772,"request_count":2865,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1424922925569578,"evaluation_id":"candidate-08-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.711107254028313,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398333333333333,"findproviders_samples":218,"provider_egress_bytes":4108680193,"raw_score":11723.262999999986,"received_bytes":3596243248,"request_count":2920,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1611499298970362,"evaluation_id":"candidate-09-01a1a1c0","findproviders_empty_pools":0,"findproviders_load_p95_ms":24.671057510375974,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9395166666666667,"findproviders_samples":218,"provider_egress_bytes":4077292560,"raw_score":15944.1368,"received_bytes":3511426436,"request_count":2833,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"ca514bd4dd05d3dc85a81f6d471933454f4845b16f37a9b3cd5dfc2a3d9d0072","artifact_manifest_sha256":"09f3d19e78c30869fee78e26071d0d8c53664cd65a4bc89ce167fe343683ec41","rank":59,"eligible_candidate_rank":13,"eligible":true},{"job_id":"01a19c28-285e-c207-ed0d-fbfd7b41880a","patch_sha256":"5917bf9e87ff92e8e15c8c06f83b7bd287d260255bc9b35f343b21b06df0b865","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-02T12:07:19.738917Z","started_at":"2026-11-02T16:02:45.558234Z","completed_at":"2026-11-02T17:29:21.35677Z","score":{"score_schema":1,"raw_score":12968.667200000002,"normalized_score":150.79508401603502,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9996550534667127}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3610203178,"candidate_requests":2916,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.0950921004028786}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":30.444780158996576,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9349333333333333,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":13004.576883333328,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":2401930.3447809825,"observed_improvement_percent":31.835920533909366,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.216218283625848,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.00005910069136913188,"welch_t":5.545252184046597,"welch_degrees_of_freedom":12.231271289338276,"statistically_significant":true,"next_epoch_minimum_improvement_percent":10.44684432115063,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.0950921004028786,"findproviders_load_p95_ms":30.444780158996576,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9349333333333333,"raw_score":12968.667200000002,"received_bytes":3610203178,"request_count":2916,"success_rate":0.9996550534667127},"replicate_count":9,"replicates":[{"accounting_coverage":1.1256945896416193,"evaluation_id":"candidate-01-01a19c28","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.490131282806388,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394777777777777,"findproviders_samples":218,"provider_egress_bytes":4074207726,"raw_score":11270.50569999999,"received_bytes":3619283386,"request_count":2935,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.0950921004028786,"evaluation_id":"candidate-02-01a19c28","findproviders_empty_pools":0,"findproviders_load_p95_ms":27.68589038848876,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9396666666666667,"findproviders_samples":218,"provider_egress_bytes":4076152356,"raw_score":12248.84755,"received_bytes":3722200493,"request_count":2988,"resource_findings":[],"stability_findings":[],"success_rate":0.9983266398929049},{"accounting_coverage":1.1478018637809653,"evaluation_id":"candidate-03-01a19c28","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.72151393890379,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9356166666666667,"findproviders_samples":218,"provider_egress_bytes":4076059467,"raw_score":11526.540200000001,"received_bytes":3551187357,"request_count":2858,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.103657524324799,"evaluation_id":"candidate-04-01a19c28","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.878491497039747,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397333333333333,"findproviders_samples":218,"provider_egress_bytes":4074008014,"raw_score":12968.667200000002,"received_bytes":3691369763,"request_count":2948,"resource_findings":[],"stability_findings":[],"success_rate":0.9989823609226595},{"accounting_coverage":1.1202922391382013,"evaluation_id":"candidate-05-01a19c28","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.444780158996576,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9395833333333333,"findproviders_samples":218,"provider_egress_bytes":4075737922,"raw_score":13962.522999999963,"received_bytes":3638102434,"request_count":2935,"resource_findings":[],"stability_findings":[],"success_rate":0.9996592844974447},{"accounting_coverage":1.1529588026770745,"evaluation_id":"candidate-06-01a19c28","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.339478397369366,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9354055555555556,"findproviders_samples":218,"provider_egress_bytes":4071081769,"raw_score":13176.502699999992,"received_bytes":3530986328,"request_count":2852,"resource_findings":[],"stability_findings":[],"success_rate":0.9996493688639552},{"accounting_coverage":1.1401238875376096,"evaluation_id":"candidate-07-01a19c28","findproviders_empty_pools":0,"findproviders_load_p95_ms":24.599725914001453,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9398222222222222,"findproviders_samples":218,"provider_egress_bytes":4064355470,"raw_score":11636.264599999999,"received_bytes":3564836694,"request_count":2899,"resource_findings":[],"stability_findings":[],"success_rate":0.9996550534667127},{"accounting_coverage":1.1287409647280522,"evaluation_id":"candidate-08-01a19c28","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.055024242401117,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.93945,"findproviders_samples":218,"provider_egress_bytes":4074984218,"raw_score":14221.8295,"received_bytes":3610203178,"request_count":2916,"resource_findings":[],"stability_findings":[],"success_rate":0.9986282578875172},{"accounting_coverage":1.15384904712908,"evaluation_id":"candidate-09-01a19c28","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.973768711090067,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9349333333333333,"findproviders_samples":218,"provider_egress_bytes":4077144080,"raw_score":16029.5115,"received_bytes":3533516009,"request_count":2831,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"a8cc63c001e00bb1c6214c95e64a2eec924e18c72f3b48940d40b4078b51a63f","artifact_manifest_sha256":"de5473562839d010a5290550a796b7f72a468220ffc19f1e51aa6460fd04c47f","rank":60,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1a481-0968-ff57-1ca8-1a48fc2a35ea","patch_sha256":"1c2ccc9339654a442b0e3f6af9a2108151775f68a3f912dac7b674b2df730b36","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-04T03:01:22.278573Z","started_at":"2026-11-05T11:10:13.33545Z","completed_at":"2026-11-07T16:11:39.200738Z","score":{"score_schema":1,"raw_score":13195.5967,"normalized_score":148.2018058342142,"placeable":false,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":1}},"G2_volume":{"passed":false,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3610537650,"candidate_requests":2917,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1018706421729345}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":34.09447879791259,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9354944444444444,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":13646.618183333332,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":10458149.937653745,"observed_improvement_percent":28.470631944643493,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":13.254666904612842,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.0008846060425225943,"welch_t":3.7528615920899955,"welch_degrees_of_freedom":15.810738121743658,"statistically_significant":true,"next_epoch_minimum_improvement_percent":20.77320640701821,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1018706421729345,"findproviders_load_p95_ms":34.09447879791259,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9354944444444444,"raw_score":13195.5967,"received_bytes":3610537650,"request_count":2917,"success_rate":1},"replicate_count":9,"replicates":[{"accounting_coverage":1.15305927809981,"evaluation_id":"candidate-01-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.8842611312866,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9387444444444445,"findproviders_samples":218,"provider_egress_bytes":4076149886,"raw_score":13947.581299999996,"received_bytes":3535074010,"request_count":2862,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1103966041399769,"evaluation_id":"candidate-02-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.09447879791259,"findproviders_pool_p05":2122.95,"findproviders_sample_span_fraction":0.9387777777777778,"findproviders_samples":218,"provider_egress_bytes":4077795001,"raw_score":13195.5967,"received_bytes":3672377046,"request_count":2967,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1018706421729345,"evaluation_id":"candidate-03-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.73925437927245,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394166666666667,"findproviders_samples":218,"provider_egress_bytes":4075860798,"raw_score":11346.314799999998,"received_bytes":3699037475,"request_count":2989,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1333815484126761,"evaluation_id":"candidate-04-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":37.5935867309569,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393777777777778,"findproviders_samples":218,"provider_egress_bytes":4077350747,"raw_score":11118.151799999998,"received_bytes":3597509376,"request_count":2917,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.173207722429538,"evaluation_id":"candidate-05-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":41.45621566772457,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9354944444444444,"findproviders_samples":218,"provider_egress_bytes":3966449066,"raw_score":21186.48125,"received_bytes":3380858300,"request_count":2716,"resource_findings":[],"stability_findings":[],"success_rate":0.9952135493372607},{"accounting_coverage":1.1183508064173366,"evaluation_id":"candidate-06-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.00760173797607,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395222222222223,"findproviders_samples":218,"provider_egress_bytes":4076199054,"raw_score":15279.8935,"received_bytes":3644830433,"request_count":2951,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.128865952692669,"evaluation_id":"candidate-07-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.159140682220425,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395166666666667,"findproviders_samples":218,"provider_egress_bytes":4075813024,"raw_score":11211.55225,"received_bytes":3610537650,"request_count":2916,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1164759862607219,"evaluation_id":"candidate-08-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.7827144622802,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395222222222223,"findproviders_samples":218,"provider_egress_bytes":4053674460,"raw_score":14298.747099999993,"received_bytes":3630776219,"request_count":2935,"resource_findings":[],"stability_findings":[],"success_rate":0.9993185689948892},{"accounting_coverage":1.108354731944518,"evaluation_id":"candidate-09-01a1a481","findproviders_empty_pools":0,"findproviders_load_p95_ms":39.379740905761686,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9389666666666666,"findproviders_samples":218,"provider_egress_bytes":4000242347,"raw_score":11235.24495,"received_bytes":3609171533,"request_count":2914,"resource_findings":[],"stability_findings":[],"success_rate":0.9993136582017845}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"a75673c70922ae3c1efbdc9173daae2047679b301633c264c93ad3162af28c9a","artifact_manifest_sha256":"cab83257baff98df6adb20cdf538799df9b4610abe8e6ccd822cddf37fe04207","rank":61,"eligible":false,"ineligibility_reason":"not_placeable"},{"job_id":"01a1937d-02fb-fd1e-68fa-bbeba0eacc26","patch_sha256":"7dfeeba3b3990d8bfb8e87d9b1f00bea5d1a9fdf5a5806fa38878b0389a1a36d","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-31T19:43:25.826365Z","started_at":"2026-11-01T23:53:46.535929Z","completed_at":"2026-11-02T01:20:34.478593Z","score":{"score_schema":1,"raw_score":14143.394399999941,"normalized_score":138.270291041308,"placeable":true,"takeover_eligible":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9996427295462665}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3574605997,"candidate_requests":2874,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1190828792538148}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":33.031623458862235,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9389555555555555,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":14202.288999999982,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":2242798.11561376,"observed_improvement_percent":25.5580581605017,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.157365292868894,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.0003737799413970709,"welch_t":4.484932423825539,"welch_degrees_of_freedom":11.989614116964834,"statistically_significant":true,"next_epoch_minimum_improvement_percent":9.243530754534444,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":true,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1190828792538148,"findproviders_load_p95_ms":33.031623458862235,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9389555555555555,"raw_score":14143.394399999941,"received_bytes":3574605997,"request_count":2874,"success_rate":0.9996427295462665},"replicate_count":9,"replicates":[{"accounting_coverage":1.1570285716278095,"evaluation_id":"candidate-01-01a1937d","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.171130752563467,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9392555555555555,"findproviders_samples":218,"provider_egress_bytes":4075044378,"raw_score":13060.816499999999,"received_bytes":3521991140,"request_count":2844,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.177629543052935,"evaluation_id":"candidate-02-01a1937d","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.229413414001456,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9391611111111111,"findproviders_samples":218,"provider_egress_bytes":4077583239,"raw_score":17246.453699999973,"received_bytes":3462534770,"request_count":2799,"resource_findings":[],"stability_findings":[],"success_rate":0.9996427295462665},{"accounting_coverage":1.138510184405609,"evaluation_id":"candidate-03-01a1937d","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.031623458862235,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9389555555555555,"findproviders_samples":218,"provider_egress_bytes":4075921843,"raw_score":12147.824999999993,"received_bytes":3580048645,"request_count":2859,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.137198365193701,"evaluation_id":"candidate-04-01a1937d","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.489451313018797,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394833333333333,"findproviders_samples":218,"provider_egress_bytes":4065036096,"raw_score":14213.93075,"received_bytes":3574605997,"request_count":2886,"resource_findings":[],"stability_findings":[],"success_rate":0.998960498960499},{"accounting_coverage":1.1212041269280972,"evaluation_id":"candidate-05-01a1937d","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.429948425292935,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9394166666666667,"findproviders_samples":218,"provider_egress_bytes":4074997553,"raw_score":14333.574799999988,"received_bytes":3634483191,"request_count":2925,"resource_findings":[],"stability_findings":[],"success_rate":0.9989743589743589},{"accounting_coverage":1.1438864107310258,"evaluation_id":"candidate-06-01a1937d","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.819490909576412,"findproviders_pool_p05":2121.65,"findproviders_sample_span_fraction":0.9390277777777778,"findproviders_samples":218,"provider_egress_bytes":4076824676,"raw_score":13346.16224999997,"received_bytes":3564011809,"request_count":2874,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.126842837180942,"evaluation_id":"candidate-07-01a1937d","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.73839874267577,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394666666666667,"findproviders_samples":218,"provider_egress_bytes":4062530268,"raw_score":13671.471199999987,"received_bytes":3605232366,"request_count":2899,"resource_findings":[],"stability_findings":[],"success_rate":0.997930320800276},{"accounting_coverage":1.1190828792538148,"evaluation_id":"candidate-08-01a1937d","findproviders_empty_pools":0,"findproviders_load_p95_ms":37.80567455291744,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9394833333333333,"findproviders_samples":218,"provider_egress_bytes":4076809023,"raw_score":15656.972399999995,"received_bytes":3642991148,"request_count":2925,"resource_findings":[],"stability_findings":[],"success_rate":0.9989743589743589},{"accounting_coverage":1.1503749482139558,"evaluation_id":"candidate-09-01a1937d","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.18809585571268,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9391833333333334,"findproviders_samples":218,"provider_egress_bytes":4076523613,"raw_score":14143.394399999941,"received_bytes":3543647764,"request_count":2850,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"79f8342ed71c47606ec6ac3d85bb210e45a6e5ac9f848b181c797642c80b5405","artifact_manifest_sha256":"bddaf77610874dde7642f2fa877b27bec6ee6eab99a3c56948a91e7a55fabbfd","rank":62,"eligible_candidate_rank":14,"eligible":true},{"job_id":"01a18832-b6e3-3e69-f661-8ddbd6139e14","patch_sha256":"376af859b299b50612ba1689ac0d3c60003d94005b672f3060703d422a18b35f","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-29T15:06:27.317272Z","started_at":"2026-10-30T12:21:17.681213Z","completed_at":"2026-10-30T13:50:35.085448Z","score":{"score_schema":1,"raw_score":16677.86539999999,"normalized_score":117.25788721139331,"placeable":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.999293036408625}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3488597187,"candidate_requests":2829,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1285671703691869}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":35.16279354095457,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9387055555555556,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":18042.30415555555,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":7414080.181130897,"observed_improvement_percent":5.430444585488548,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":12.131505710961948,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.22292494876724173,"welch_t":0.7816973128438996,"welch_degrees_of_freedom":15.938591484158943,"statistically_significant":false,"next_epoch_minimum_improvement_percent":13.229328006553967,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1285671703691869,"findproviders_load_p95_ms":35.16279354095457,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9387055555555556,"raw_score":16677.86539999999,"received_bytes":3488597187,"request_count":2829,"success_rate":0.999293036408625},"replicate_count":9,"replicates":[{"accounting_coverage":1.1285671703691869,"evaluation_id":"candidate-01-01a18832","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.682189750671377,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393222222222222,"findproviders_samples":218,"provider_egress_bytes":4066063999,"raw_score":15525.650600000034,"received_bytes":3602855112,"request_count":2913,"resource_findings":[],"stability_findings":[],"success_rate":0.9989701338825953},{"accounting_coverage":1.2043587444310255,"evaluation_id":"candidate-02-01a18832","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.22971839904782,"findproviders_pool_p05":2074.4,"findproviders_sample_span_fraction":0.9388055555555556,"findproviders_samples":218,"provider_egress_bytes":4051563927,"raw_score":21236.668799999996,"received_bytes":3364083954,"request_count":2724,"resource_findings":[],"stability_findings":[],"success_rate":0.9970631424375918},{"accounting_coverage":1.1646936857631829,"evaluation_id":"candidate-03-01a18832","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.96849746704099,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9404777777777777,"findproviders_samples":218,"provider_egress_bytes":4109680436,"raw_score":16396.29684999999,"received_bytes":3528550456,"request_count":2870,"resource_findings":[],"stability_findings":[],"success_rate":0.9993031358885017},{"accounting_coverage":1.1439769271460285,"evaluation_id":"candidate-04-01a18832","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.16279354095457,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9387055555555556,"findproviders_samples":218,"provider_egress_bytes":4074720382,"raw_score":15421.325499999999,"received_bytes":3561890354,"request_count":2871,"resource_findings":[],"stability_findings":[],"success_rate":0.9993033786137234},{"accounting_coverage":1.2028727600244356,"evaluation_id":"candidate-05-01a18832","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.63282680511468,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9398777777777778,"findproviders_samples":218,"provider_egress_bytes":4075623181,"raw_score":16433.011399999996,"received_bytes":3388241314,"request_count":2735,"resource_findings":[],"stability_findings":[],"success_rate":0.9996343692870201},{"accounting_coverage":1.1413630015217775,"evaluation_id":"candidate-06-01a18832","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.9836399078369,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397944444444445,"findproviders_samples":218,"provider_egress_bytes":4079136107,"raw_score":17615.034749999937,"received_bytes":3573916538,"request_count":2892,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1685856966208692,"evaluation_id":"candidate-07-01a18832","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.47507514953613,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9391666666666667,"findproviders_samples":218,"provider_egress_bytes":4076724774,"raw_score":16677.86539999999,"received_bytes":3488597187,"request_count":2829,"resource_findings":[],"stability_findings":[],"success_rate":0.999293036408625},{"accounting_coverage":1.252616861562556,"evaluation_id":"candidate-08-01a18832","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.04149494171142,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398277777777778,"findproviders_samples":218,"provider_egress_bytes":3943541502,"raw_score":22974.48910000002,"received_bytes":3148242390,"request_count":2558,"resource_findings":[],"stability_findings":[],"success_rate":0.9941360437842064},{"accounting_coverage":1.2378388770696984,"evaluation_id":"candidate-09-01a18832","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.181377029418943,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394222222222223,"findproviders_samples":218,"provider_egress_bytes":4055186807,"raw_score":20100.395,"received_bytes":3276021526,"request_count":2661,"resource_findings":[],"stability_findings":[],"success_rate":0.9962420142803458}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"0b67fba7cd92db6c90d9da3c532d3caf61aae10b17bc33d66609522113240c72","artifact_manifest_sha256":"6d76ecddba44c5a0763b06557f0154be7583aef977bfc7d97bb1da8a8e8ade3a","rank":63,"eligible":false,"ineligibility_reason":"below_takeover_margin"},{"job_id":"01a1882e-1c50-8353-220d-18ea401906d3","patch_sha256":"e2acabaef767aebaa74e114b7e3f408f9a5bff253cad12365c6dbb124f0eab4a","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-29T15:01:25.665287Z","started_at":"2026-10-30T10:50:51.961674Z","completed_at":"2026-10-30T12:21:11.382195Z","score":{"score_schema":1,"raw_score":16905.86879999998,"normalized_score":115.67647206631584,"placeable":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9989510489510489}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3429096525,"candidate_requests":2762,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1081073689837184}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":34.234263229370114,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9381111111111111,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":17871.706494444436,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":6538273.164086378,"observed_improvement_percent":6.32463996247236,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":11.799094906729044,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.1815171350122614,"welch_t":0.9367301994051799,"welch_degrees_of_freedom":15.756330413361635,"statistically_significant":false,"next_epoch_minimum_improvement_percent":12.541995833076067,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1081073689837184,"findproviders_load_p95_ms":34.234263229370114,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9381111111111111,"raw_score":16905.86879999998,"received_bytes":3429096525,"request_count":2762,"success_rate":0.9989510489510489},"replicate_count":9,"replicates":[{"accounting_coverage":1.1893575941260504,"evaluation_id":"candidate-01-01a1882e","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.912516975402827,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398555555555556,"findproviders_samples":218,"provider_egress_bytes":4078421993,"raw_score":18471.837999999967,"received_bytes":3429096525,"request_count":2762,"resource_findings":[],"stability_findings":[],"success_rate":0.999275887038378},{"accounting_coverage":1.1730694721804726,"evaluation_id":"candidate-02-01a1882e","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.51286544799802,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394666666666667,"findproviders_samples":218,"provider_egress_bytes":3976242194,"raw_score":22034.167799999996,"received_bytes":3389605039,"request_count":2757,"resource_findings":[],"stability_findings":[],"success_rate":0.9949220166848023},{"accounting_coverage":1.2096427033195194,"evaluation_id":"candidate-03-01a1882e","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.73095531463621,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393444444444444,"findproviders_samples":218,"provider_egress_bytes":4075790928,"raw_score":15749.530799999999,"received_bytes":3369417198,"request_count":2700,"resource_findings":[],"stability_findings":[],"success_rate":0.9988888888888889},{"accounting_coverage":1.217019635072275,"evaluation_id":"candidate-04-01a1882e","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.234263229370114,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9396388888888889,"findproviders_samples":218,"provider_egress_bytes":4023971698,"raw_score":21360.457199999997,"received_bytes":3306414771,"request_count":2669,"resource_findings":[],"stability_findings":[],"success_rate":0.9973772948669913},{"accounting_coverage":1.1471103173380652,"evaluation_id":"candidate-05-01a1882e","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.88665561676025,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398666666666666,"findproviders_samples":218,"provider_egress_bytes":4034194587,"raw_score":18907.57614999999,"received_bytes":3516832275,"request_count":2860,"resource_findings":[],"stability_findings":[],"success_rate":0.9989510489510489},{"accounting_coverage":1.1547809812145384,"evaluation_id":"candidate-06-01a1882e","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.214165687561014,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395,"findproviders_samples":218,"provider_egress_bytes":4065678326,"raw_score":16905.86879999998,"received_bytes":3520735440,"request_count":2822,"resource_findings":[],"stability_findings":[],"success_rate":0.9985825655563431},{"accounting_coverage":1.1081073689837184,"evaluation_id":"candidate-07-01a1882e","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.13364200592039,"findproviders_pool_p05":2089.85,"findproviders_sample_span_fraction":0.9393222222222222,"findproviders_samples":218,"provider_egress_bytes":4080907422,"raw_score":16444.51269999998,"received_bytes":3682772569,"request_count":2967,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.2086462554713273,"evaluation_id":"candidate-08-01a1882e","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.33715438842768,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398166666666666,"findproviders_samples":218,"provider_egress_bytes":4077034044,"raw_score":14364.061599999995,"received_bytes":3373223576,"request_count":2729,"resource_findings":[],"stability_findings":[],"success_rate":0.9996335654085746},{"accounting_coverage":1.1584672800102223,"evaluation_id":"candidate-09-01a1882e","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.205363273620534,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9381111111111111,"findproviders_samples":218,"provider_egress_bytes":4078012372,"raw_score":16607.345399999995,"received_bytes":3520179156,"request_count":2849,"resource_findings":[],"stability_findings":[],"success_rate":1}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"af62aac18443206f32ec6236f4fb0abe26ff6e25812836ab73fa7554334025f5","artifact_manifest_sha256":"0e20348a8a481705a118b7e80e2f6b4894b76c70fbfb8f9dcf27bcab27c33a99","rank":64,"eligible":false,"ineligibility_reason":"below_takeover_margin"},{"job_id":"01a1aad9-5007-d991-0ccb-63f51ec0a5e9","patch_sha256":"f768dc75261af90a7fab9704663b0db51aaf97aef5101f76227fac7be2593a69","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-05T08:35:30.574307Z","started_at":"2026-11-06T21:37:58.042967Z","completed_at":"2026-11-06T23:07:22.36066Z","score":{"score_schema":1,"raw_score":17623.326799999988,"normalized_score":110.9672017203925,"placeable":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.999648629655657}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3516954290,"candidate_requests":2846,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1152229185710698}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":33.93099994659422,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9378277777777778,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":17681.904688888884,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":1146148.5850688147,"observed_improvement_percent":7.319494733432036,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":9.767630980064368,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.1022212198533417,"welch_t":1.3562313430096509,"welch_degrees_of_freedom":10.144371771319703,"statistically_significant":false,"next_epoch_minimum_improvement_percent":5.307531264352812,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1152229185710698,"findproviders_load_p95_ms":33.93099994659422,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9378277777777778,"raw_score":17623.326799999988,"received_bytes":3516954290,"request_count":2846,"success_rate":0.999648629655657},"replicate_count":9,"replicates":[{"accounting_coverage":1.1694917564541827,"evaluation_id":"candidate-01-01a1aad9","findproviders_empty_pools":0,"findproviders_load_p95_ms":41.08914222717284,"findproviders_pool_p05":2122.85,"findproviders_sample_span_fraction":0.9390166666666667,"findproviders_samples":218,"provider_egress_bytes":4069988084,"raw_score":17099.7278,"received_bytes":3480134051,"request_count":2813,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.2244691532201981,"evaluation_id":"candidate-02-01a1aad9","findproviders_empty_pools":0,"findproviders_load_p95_ms":42.70792427062988,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9388833333333333,"findproviders_samples":218,"provider_egress_bytes":4035788197,"raw_score":17623.326799999988,"received_bytes":3295949258,"request_count":2685,"resource_findings":[],"stability_findings":[],"success_rate":0.9981378026070763},{"accounting_coverage":1.1371683590922395,"evaluation_id":"candidate-03-01a1aad9","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.801940536499025,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9402055555555555,"findproviders_samples":218,"provider_egress_bytes":4112280166,"raw_score":17124.2648,"received_bytes":3616245680,"request_count":2897,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.141920141017587,"evaluation_id":"candidate-04-01a1aad9","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.66480617523189,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398777777777778,"findproviders_samples":218,"provider_egress_bytes":4111638440,"raw_score":17632.705850000002,"received_bytes":3600635712,"request_count":2894,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1462974526115226,"evaluation_id":"candidate-05-01a1aad9","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.06654491424559,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398222222222222,"findproviders_samples":218,"provider_egress_bytes":4078830033,"raw_score":16629.61584999996,"received_bytes":3558264937,"request_count":2880,"resource_findings":[],"stability_findings":[],"success_rate":0.9993055555555556},{"accounting_coverage":1.1694577694305341,"evaluation_id":"candidate-06-01a1aad9","findproviders_empty_pools":0,"findproviders_load_p95_ms":30.658463001251217,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9378277777777778,"findproviders_samples":218,"provider_egress_bytes":4075693302,"raw_score":20264.488800000003,"received_bytes":3485113707,"request_count":2793,"resource_findings":[],"stability_findings":[],"success_rate":0.9989258861439313},{"accounting_coverage":1.1152229185710698,"evaluation_id":"candidate-07-01a1aad9","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.69591274261471,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9396666666666667,"findproviders_samples":218,"provider_egress_bytes":4074527145,"raw_score":17715.042299999983,"received_bytes":3653553991,"request_count":2950,"resource_findings":[],"stability_findings":[],"success_rate":0.9996610169491525},{"accounting_coverage":1.1512710794998704,"evaluation_id":"candidate-08-01a1aad9","findproviders_empty_pools":0,"findproviders_load_p95_ms":40.85188694000244,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9405111111111111,"findproviders_samples":218,"provider_egress_bytes":4048967762,"raw_score":18109.397999999994,"received_bytes":3516954290,"request_count":2825,"resource_findings":[],"stability_findings":[],"success_rate":0.9985840707964602},{"accounting_coverage":1.166424517163725,"evaluation_id":"candidate-09-01a1aad9","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.93099994659422,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394833333333333,"findproviders_samples":218,"provider_egress_bytes":4077269394,"raw_score":16938.572,"received_bytes":3495527858,"request_count":2846,"resource_findings":[],"stability_findings":[],"success_rate":0.999648629655657}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"e14f5b5a55fbb02f8656bc0771606a2a66dc86264549931855f1b08640450cfb","artifact_manifest_sha256":"c1a860741b9a22cdafa4aca8a12d897b2ecf2cc3fdafc8d07b0fa0c815f62090","rank":65,"eligible":false,"ineligibility_reason":"below_takeover_margin"},{"job_id":"01a1884e-7fac-dd9b-74b6-47a19cb77074","patch_sha256":"80d718289f6dc1dfe7b61ca723fd61138ba9ecbeacb842c921ca60eed8899ba8","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-29T15:36:48.222193Z","started_at":"2026-10-31T19:53:15.331599Z","completed_at":"2026-10-31T21:23:39.20455Z","score":{"score_schema":1,"raw_score":17753.2878,"normalized_score":110.1548784670746,"placeable":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9989082969432315}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3447588945,"candidate_requests":2803,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1445515764090428}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":34.57228641510003,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9388166666666666,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":18668.99987222222,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":7489923.497259084,"observed_improvement_percent":2.1455905671565083,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":12.1601199339225,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.38099183780584944,"welch_t":0.3081135847530018,"welch_degrees_of_freedom":15.948183804384989,"statistically_significant":false,"next_epoch_minimum_improvement_percent":12.850463227905461,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1445515764090428,"findproviders_load_p95_ms":34.57228641510003,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9388166666666666,"raw_score":17753.2878,"received_bytes":3447588945,"request_count":2803,"success_rate":0.9989082969432315},"replicate_count":9,"replicates":[{"accounting_coverage":1.192004228243905,"evaluation_id":"candidate-01-01a1884e","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.754507827758786,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392222222222222,"findproviders_samples":218,"provider_egress_bytes":3989625649,"raw_score":19644.095399999995,"received_bytes":3346989511,"request_count":2745,"resource_findings":[],"stability_findings":[],"success_rate":0.9956284153005465},{"accounting_coverage":1.1531699938220343,"evaluation_id":"candidate-02-01a1884e","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.76334285736082,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398111111111112,"findproviders_samples":218,"provider_egress_bytes":4060438962,"raw_score":15909.669900000004,"received_bytes":3521110490,"request_count":2858,"resource_findings":[],"stability_findings":[],"success_rate":0.9986004198740378},{"accounting_coverage":1.1474526359046806,"evaluation_id":"candidate-03-01a1884e","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.57228641510003,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392833333333334,"findproviders_samples":218,"provider_egress_bytes":4080254469,"raw_score":16316.318399999993,"received_bytes":3555924089,"request_count":2884,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1522748803726852,"evaluation_id":"candidate-04-01a1884e","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.35191402435301,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9398888888888889,"findproviders_samples":218,"provider_egress_bytes":4107427441,"raw_score":17175.94544999999,"received_bytes":3564624649,"request_count":2882,"resource_findings":[],"stability_findings":[],"success_rate":0.9989590562109646},{"accounting_coverage":1.1918747707068464,"evaluation_id":"candidate-05-01a1884e","findproviders_empty_pools":0,"findproviders_load_p95_ms":37.043016815185524,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395555555555556,"findproviders_samples":218,"provider_egress_bytes":4074811052,"raw_score":19936.45810000001,"received_bytes":3418824823,"request_count":2748,"resource_findings":[],"stability_findings":[],"success_rate":0.9989082969432315},{"accounting_coverage":1.1445515764090428,"evaluation_id":"candidate-06-01a1884e","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.60806894302367,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9389277777777778,"findproviders_samples":218,"provider_egress_bytes":4046506250,"raw_score":17753.2878,"received_bytes":3535451205,"request_count":2869,"resource_findings":[],"stability_findings":[],"success_rate":0.996514464970373},{"accounting_coverage":1.2350391388602675,"evaluation_id":"candidate-07-01a1884e","findproviders_empty_pools":0,"findproviders_load_p95_ms":40.00026931762693,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9393833333333333,"findproviders_samples":218,"provider_egress_bytes":4029004635,"raw_score":20576.872549999993,"received_bytes":3262248546,"request_count":2622,"resource_findings":[],"stability_findings":[],"success_rate":0.9992372234935164},{"accounting_coverage":1.1922531596933172,"evaluation_id":"candidate-08-01a1884e","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.33474044799803,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399555555555555,"findproviders_samples":218,"provider_egress_bytes":4110398813,"raw_score":16365.080400000024,"received_bytes":3447588945,"request_count":2803,"resource_findings":[],"stability_findings":[],"success_rate":0.9996432393863718},{"accounting_coverage":1.1839683034147708,"evaluation_id":"candidate-09-01a1884e","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.13094730377195,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9388166666666666,"findproviders_samples":218,"provider_egress_bytes":3967530038,"raw_score":24343.270849999968,"received_bytes":3351044134,"request_count":2732,"resource_findings":[],"stability_findings":[],"success_rate":0.9956076134699854}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"0c1bf05fc2bc13ea1da499b5995f473c5a68486148a55739f9989e4a2bc95dcf","artifact_manifest_sha256":"c42777ed9a7b7cf4007e83f234aba931ba260cbc0a15ef9c8b4bf7a402475961","rank":66,"eligible":false,"ineligibility_reason":"below_takeover_margin"},{"job_id":"01a1884d-dc55-bfab-67d7-0a361bff4c36","patch_sha256":"490a58309849bbebaa5309d25d15fa06f64f9d8dbb644282732abdd3f3362509","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-29T15:36:06.449658Z","started_at":"2026-10-31T18:23:18.492443Z","completed_at":"2026-10-31T19:53:09.326423Z","score":{"score_schema":1,"raw_score":17902.409200000006,"normalized_score":109.23732320899006,"placeable":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9981637899375688}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3442529365,"candidate_requests":2765,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.142835783728344}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":35.594659996032625,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.936,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":19105.289466666665,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":5931206.19426385,"observed_improvement_percent":-0.14124112700292005,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":11.5668097827934,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.5083838726202944,"welch_t":-0.021357555964961743,"welch_degrees_of_freedom":15.540253316635845,"statistically_significant":false,"next_epoch_minimum_improvement_percent":11.174266736907258,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.142835783728344,"findproviders_load_p95_ms":35.594659996032625,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.936,"raw_score":17902.409200000006,"received_bytes":3442529365,"request_count":2765,"success_rate":0.9981637899375688},"replicate_count":9,"replicates":[{"accounting_coverage":1.1484413742649395,"evaluation_id":"candidate-01-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.01994590759275,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394666666666667,"findproviders_samples":218,"provider_egress_bytes":3997945632,"raw_score":21293.291149999997,"received_bytes":3481192616,"request_count":2820,"resource_findings":[],"stability_findings":[],"success_rate":0.9975177304964539},{"accounting_coverage":1.1630154466380274,"evaluation_id":"candidate-02-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":36.85742187499998,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9392166666666667,"findproviders_samples":218,"provider_egress_bytes":4003714827,"raw_score":17021.81375,"received_bytes":3442529365,"request_count":2752,"resource_findings":[],"stability_findings":[],"success_rate":0.9963662790697675},{"accounting_coverage":1.2000822902126067,"evaluation_id":"candidate-03-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":43.06457920074462,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9401222222222222,"findproviders_samples":218,"provider_egress_bytes":4016836696,"raw_score":23756.2754,"received_bytes":3347134383,"request_count":2694,"resource_findings":[],"stability_findings":[],"success_rate":0.9981440237564959},{"accounting_coverage":1.1619955932447852,"evaluation_id":"candidate-04-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":43.64645366668693,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9395555555555556,"findproviders_samples":218,"provider_egress_bytes":4051904624,"raw_score":17896.3665,"received_bytes":3487022367,"request_count":2811,"resource_findings":[],"stability_findings":[],"success_rate":0.9992885094272501},{"accounting_coverage":1.1871687531186028,"evaluation_id":"candidate-05-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.611750507354714,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399333333333333,"findproviders_samples":218,"provider_egress_bytes":4108459248,"raw_score":17902.409200000006,"received_bytes":3460720506,"request_count":2783,"resource_findings":[],"stability_findings":[],"success_rate":0.9992813510600072},{"accounting_coverage":1.193911327222711,"evaluation_id":"candidate-06-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.938951873779295,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9389944444444445,"findproviders_samples":218,"provider_egress_bytes":4062551004,"raw_score":21359.253500000003,"received_bytes":3402724232,"request_count":2723,"resource_findings":[],"stability_findings":[],"success_rate":0.9981637899375688},{"accounting_coverage":1.2055910210373666,"evaluation_id":"candidate-07-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.594659996032625,"findproviders_pool_p05":2548,"findproviders_sample_span_fraction":0.9398888888888889,"findproviders_samples":218,"provider_egress_bytes":4107113892,"raw_score":16557.17039999999,"received_bytes":3406722363,"request_count":2765,"resource_findings":[],"stability_findings":[],"success_rate":0.9992766726943942},{"accounting_coverage":1.2447743104351894,"evaluation_id":"candidate-08-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":41.37492828369137,"findproviders_pool_p05":2386.4,"findproviders_sample_span_fraction":0.9389055555555555,"findproviders_samples":218,"provider_egress_bytes":4048813931,"raw_score":18312.61349999999,"received_bytes":3252649012,"request_count":2614,"resource_findings":[],"stability_findings":[],"success_rate":0.9977046671767407},{"accounting_coverage":1.142835783728344,"evaluation_id":"candidate-09-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.239235687255814,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.936,"findproviders_samples":218,"provider_egress_bytes":4068850900,"raw_score":17848.411800000005,"received_bytes":3560311077,"request_count":2873,"resource_findings":[],"stability_findings":[],"success_rate":0.9989557953358859}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"9745b83062be5e2cb21226a75bd59dd4e50c45127b5ea565bc9deb9c0e94e091","artifact_manifest_sha256":"f34e7359db16c5ae846c8a9c6042c0dec71aa2fe6dd3f0adeaef342317510758","rank":67,"eligible":false,"ineligibility_reason":"below_takeover_margin"},{"job_id":"01a1884d-3b55-f5dd-45e5-eb4145b2ac0f","patch_sha256":"335e1afb3b2600d029a6e20e8df6a814d4cc45af5f2c5edf8f1ba3ed012beaee","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-10-29T15:35:25.069884Z","started_at":"2026-10-30T13:50:40.962535Z","completed_at":"2026-10-30T15:20:43.662409Z","score":{"score_schema":1,"raw_score":19289.4194,"normalized_score":101.38258801091743,"placeable":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.9996465182043125}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3480975710,"candidate_requests":2823,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.1214541153677304}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":33.03123073577879,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9386111111111111,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":18830.08034444444,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":3733275.086795249,"observed_improvement_percent":1.301279967319718,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":10.720424037002466,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.4168769514740261,"welch_t":0.21385830858536808,"welch_degrees_of_freedom":13.940265992902942,"statistically_significant":false,"next_epoch_minimum_improvement_percent":8.994850883976598,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.1214541153677304,"findproviders_load_p95_ms":33.03123073577879,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9386111111111111,"raw_score":19289.4194,"received_bytes":3480975710,"request_count":2823,"success_rate":0.9996465182043125},"replicate_count":9,"replicates":[{"accounting_coverage":1.1625956958899846,"evaluation_id":"candidate-01-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":37.11831169128418,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9390277777777778,"findproviders_samples":218,"provider_egress_bytes":4071118169,"raw_score":19703.99904999999,"received_bytes":3501748874,"request_count":2840,"resource_findings":[],"stability_findings":[],"success_rate":0.9982394366197183},{"accounting_coverage":1.194016560179165,"evaluation_id":"candidate-02-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":41.59565391540523,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9391222222222222,"findproviders_samples":218,"provider_egress_bytes":4075019933,"raw_score":16398.401599999997,"received_bytes":3412867182,"request_count":2745,"resource_findings":[],"stability_findings":[],"success_rate":0.9996357012750455},{"accounting_coverage":1.1712590045622582,"evaluation_id":"candidate-03-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.847449779510487,"findproviders_pool_p05":2547,"findproviders_sample_span_fraction":0.9391833333333334,"findproviders_samples":218,"provider_egress_bytes":4077124145,"raw_score":16261.09410000001,"received_bytes":3480975710,"request_count":2823,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.158607130524244,"evaluation_id":"candidate-04-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.03123073577879,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9394055555555556,"findproviders_samples":218,"provider_egress_bytes":4079942763,"raw_score":19195.7578,"received_bytes":3521420381,"request_count":2829,"resource_findings":[],"stability_findings":[],"success_rate":0.9996465182043125},{"accounting_coverage":1.1773755886943664,"evaluation_id":"candidate-05-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":40.629101181030194,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9401277777777778,"findproviders_samples":218,"provider_egress_bytes":4069834314,"raw_score":20877.624000000014,"received_bytes":3456700099,"request_count":2773,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1962423742111752,"evaluation_id":"candidate-06-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.868277931213324,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9395944444444444,"findproviders_samples":218,"provider_egress_bytes":4078081966,"raw_score":16678.394400000005,"received_bytes":3409076667,"request_count":2743,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1214541153677304,"evaluation_id":"candidate-07-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.64525165557861,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9393277777777778,"findproviders_samples":218,"provider_egress_bytes":4028887506,"raw_score":19632.229799999983,"received_bytes":3592556709,"request_count":2927,"resource_findings":[],"stability_findings":[],"success_rate":0.9952169456781688},{"accounting_coverage":1.1302648770073707,"evaluation_id":"candidate-08-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":33.661556434631336,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9386111111111111,"findproviders_samples":218,"provider_egress_bytes":4064652176,"raw_score":19289.4194,"received_bytes":3596194360,"request_count":2889,"resource_findings":[],"stability_findings":[],"success_rate":0.9996538594669436},{"accounting_coverage":1.1849282093315898,"evaluation_id":"candidate-09-01a1884d","findproviders_empty_pools":0,"findproviders_load_p95_ms":29.908656120300286,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9399111111111111,"findproviders_samples":218,"provider_egress_bytes":4010151976,"raw_score":21433.80294999991,"received_bytes":3384299525,"request_count":2770,"resource_findings":[],"stability_findings":[],"success_rate":0.9942238267148015}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"618add5d0e1606c8588dc9953368c6085b01e8fbe42fbdcd6146eb23aa379b61","artifact_manifest_sha256":"695cf90754da22e9ac211b3e1ba9b32428cb9c4249ec3a59f21dab23ae680458","rank":68,"eligible":false,"ineligibility_reason":"below_takeover_margin"},{"job_id":"01a19673-15ae-63fc-9480-1f48e5203419","patch_sha256":"46d00864595e755570fd0528b31dfc5b349366d75b0f85315858b1f515c10e1a","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","state":"succeeded","submitted_at":"2026-11-01T09:31:26.508765Z","started_at":"2026-11-02T08:43:37.016184Z","completed_at":"2026-11-02T10:14:09.944466Z","score":{"score_schema":1,"raw_score":19353.617499999997,"normalized_score":101.04629069991687,"placeable":true,"gates":{"G1_success":{"passed":true,"details":{"absolute_min_inclusive":0.97,"baseline":0.9996411912450663,"baseline_minus_max":0.9896411912450663,"candidate":0.998868351565447}},"G2_volume":{"passed":true,"details":{"bytes_max":3601750404,"bytes_min":3258726556,"candidate_bytes":3439694659,"candidate_requests":2799,"request_max":2927.4,"request_min":2648.6}},"G3_path_integrity":{"passed":true,"details":{"minimum_inclusive":0.95,"minimum_replicate_coverage":1.128257422065738}},"G4_matchmaking":{"passed":true,"details":{"all_pools_nonempty":true,"all_replicates_have_samples":true,"all_replicates_span_at_least_minimum":true,"baseline_load_p95_ms":34.738422775268546,"baseline_minimum_replicate_sample_span_fraction":0.9355055555555556,"baseline_pool_p05":2546,"candidate_load_p95_ms":35.35607509613036,"candidate_pool_p05":2546,"maximum_inclusive_ms":43.42302846908568,"minimum_replicate_sample_span_fraction":0.9380944444444445,"pool_minimum_inclusive":2291.4,"sample_span_minimum_inclusive":0.9}},"G5_stability":{"passed":true,"details":{"all_replicates_clean":true}},"G6_resources":{"passed":true,"details":{"all_replicates_within_limits":true}}},"significance":{"method":"one-sided-welch-t","alpha":0.05,"replicate_count":9,"baseline_mean_raw_score":19078.342999999983,"candidate_mean_raw_score":18811.965505555538,"baseline_sample_variance":8395391.209947377,"candidate_sample_variance":5967957.782177331,"observed_improvement_percent":1.39622971682837,"takeover_margin_percent":26.900000000000002,"minimum_significant_improvement_percent":11.580908725862276,"required_improvement_percent":26.900000000000002,"one_sided_p_value":0.4178675630090122,"welch_t":0.21085841027503574,"welch_degrees_of_freedom":15.555703504536034,"statistically_significant":false,"next_epoch_minimum_improvement_percent":11.383605647017097,"recommended_next_epoch_takeover_margin_percent":26.900000000000002,"recommended_next_epoch_takeover_margin_supported":true},"diagnostics":{"baseline":{"findproviders_load_p95_ms":34.738422775268546,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9355055555555556,"raw_score":19556.11259999998,"received_bytes":3430238480,"request_count":2788,"success_rate":0.9996411912450663},"baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","baseline_takeover_eligible":false,"baseline_takeover_raw_max":14295.518310599984,"candidate":{"accounting_coverage":1.128257422065738,"findproviders_load_p95_ms":35.35607509613036,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9380944444444445,"raw_score":19353.617499999997,"received_bytes":3439694659,"request_count":2799,"success_rate":0.998868351565447},"replicate_count":9,"replicates":[{"accounting_coverage":1.2053498798134143,"evaluation_id":"candidate-01-01a19673","findproviders_empty_pools":0,"findproviders_load_p95_ms":38.6835445404052,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9401722222222222,"findproviders_samples":218,"provider_egress_bytes":4061246395,"raw_score":19353.617499999997,"received_bytes":3369350645,"request_count":2759,"resource_findings":[],"stability_findings":[],"success_rate":0.9989126495106923},{"accounting_coverage":1.2068376435491264,"evaluation_id":"candidate-02-01a19673","findproviders_empty_pools":0,"findproviders_load_p95_ms":31.13313512802124,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9400333333333334,"findproviders_samples":218,"provider_egress_bytes":3947241271,"raw_score":19406.664,"received_bytes":3270730982,"request_count":2651,"resource_findings":[],"stability_findings":[],"success_rate":0.998868351565447},{"accounting_coverage":1.128257422065738,"evaluation_id":"candidate-03-01a19673","findproviders_empty_pools":0,"findproviders_load_p95_ms":43.881624221801694,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9403166666666667,"findproviders_samples":218,"provider_egress_bytes":4003054523,"raw_score":22900.150799999894,"received_bytes":3547997509,"request_count":2837,"resource_findings":[],"stability_findings":[],"success_rate":0.9964751498061333},{"accounting_coverage":1.166736810879981,"evaluation_id":"candidate-04-01a19673","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.3559616088867,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9402222222222222,"findproviders_samples":218,"provider_egress_bytes":4087478041,"raw_score":14831.29829999998,"received_bytes":3503341973,"request_count":2824,"resource_findings":[],"stability_findings":[],"success_rate":0.9992917847025495},{"accounting_coverage":1.21363216467255,"evaluation_id":"candidate-05-01a19673","findproviders_empty_pools":0,"findproviders_load_p95_ms":32.37146377563475,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9380944444444445,"findproviders_samples":218,"provider_egress_bytes":4078139020,"raw_score":17205.80945,"received_bytes":3360275987,"request_count":2718,"resource_findings":[],"stability_findings":[],"success_rate":1},{"accounting_coverage":1.1797053309318175,"evaluation_id":"candidate-06-01a19673","findproviders_empty_pools":0,"findproviders_load_p95_ms":34.85546054840086,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9395,"findproviders_samples":218,"provider_egress_bytes":4057826126,"raw_score":16069.050099999999,"received_bytes":3439694659,"request_count":2799,"resource_findings":[],"stability_findings":[],"success_rate":0.9992854590925331},{"accounting_coverage":1.1693578622047835,"evaluation_id":"candidate-07-01a19673","findproviders_empty_pools":0,"findproviders_load_p95_ms":45.33432559967041,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9400222222222222,"findproviders_samples":218,"provider_egress_bytes":4076649466,"raw_score":18967.9715,"received_bytes":3486229150,"request_count":2816,"resource_findings":[],"stability_findings":[],"success_rate":0.9953835227272727},{"accounting_coverage":1.218424902931371,"evaluation_id":"candidate-08-01a19673","findproviders_empty_pools":0,"findproviders_load_p95_ms":35.35607509613036,"findproviders_pool_p05":2545,"findproviders_sample_span_fraction":0.9395666666666667,"findproviders_samples":218,"provider_egress_bytes":4027457660,"raw_score":20111.782000000003,"received_bytes":3305462364,"request_count":2648,"resource_findings":[],"stability_findings":[],"success_rate":0.9981117824773413},{"accounting_coverage":1.1559638911261565,"evaluation_id":"candidate-09-01a19673","findproviders_empty_pools":0,"findproviders_load_p95_ms":37.42382793426509,"findproviders_pool_p05":2546,"findproviders_sample_span_fraction":0.9397166666666666,"findproviders_samples":218,"provider_egress_bytes":4055343200,"raw_score":20461.3459,"received_bytes":3508191935,"request_count":2823,"resource_findings":[],"stability_findings":[],"success_rate":0.9971661353170386}],"request_timeout_ms":120000,"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","takeover_margin":0.269}},"score_sha256":"cf1ee2461250231b9146bcf7a21daa6499b6329978f10f91847c8eca06b81ec3","artifact_manifest_sha256":"114d34e8ff644e500679f214aa2884c2dc891b1a48839ea29a822ecddc8da018","rank":69,"eligible":false,"ineligibility_reason":"below_takeover_margin"}]},"reward_revision":1,"provisional_reward_winner":"01a1a440-fd2e-538a-365c-f4b23eed4739","integrity_review":"approved","source_approval":"approved","decisions":[{"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","environment":"main","competition_id":"sim-latency-season-1","season_id":"sim-latency-production-20261028-r2","revision":1,"decision_sha256":"a800ecdba04be602f61a904e9626819fa68fcf71191bdf8dda0b7c7989a94e81","seal_sha256":"d30784937500bdbd2cd15551c79e6ac317a95367f6256fd5a943756360d9fb54","action":"elect","selected_job_id":"01a1a440-fd2e-538a-365c-f4b23eed4739","reason_code":"first_eligible","decided_at":"2026-11-07T23:02:10.137364Z","effective_settlement_anchor":"2026-11-04T22:21:29.896796Z","settlement_policy_version":"production-20261028-live-settlement-v1","burn_policy_version":"production-20261028-burn-v1","settlement_mode":"live"}],"integrity_reviews":[{"review_id":"01a1c088-ca60-8cf8-844e-6ff50fff8cb4","round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","actor_id":"","created_at":"2026-11-09T13:39:12.608238Z","request":{"official_review_override":{"authorization_sha256":"50ce7573a07f937c8dbf36fadda2f50a10d9d6fc86ae80dda7b12e7749624abe","completed_at":"2026-11-08T22:06:58Z","native_qualification_waived":true,"unaccepted_calibration_acknowledged":true},"idempotency_key":"","expected_revision":1,"job_id":"01a1a440-fd2e-538a-365c-f4b23eed4739","patch_sha256":"b8800b3a52176e5e33ccab86536d5751ea0a42cade6f64be0d2586d765573aff","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","score_sha256":"ebe45b20f5fc3fc5b5342ebb869714d06de3d132ba68a707497a6918122ff7d8","baseline_sha256":"b6b0b13f6137b32fd5569f9ff16d78d8dac3d578ad40549c8ae33513cf447557","artifact_manifest_sha256":"29a51d59b16237d403696bb5b19ec2c3c37caa8675c9199a9dbd264ade7313b8","criteria_version":"production-20261028-review-v1","reward_disposition":"approved","source_disposition":"approved","reason_codes":["APPROVED"],"public_explanation":"Official direct Astra max review approves the exact elected epoch-1 submission on all six original honesty/safety criteria, traffic-preservation/1 and production-benefit/1. Independent frozen-source review found preserved useful traffic and concrete production benefit, with no blocking misconduct or safety finding. The earlier partial Qwen uncertainties were resolved against full source, not relabeled as Qwen/Gemma approval. Bounded throughput/QoS tradeoffs and one minor setter defect remain documented. Calibration is still unaccepted; no fresh candidate execution or measurement is claimed.","withheld_evidence_explanation":"Detailed source dataflow, frozen-source identities, per-file before/after hashes, preserved historical Qwen observations, their ten issue resolutions and nonblocking risks are in private digest-bound review artifacts. Public findings summarize conclusions without exposing the full private packet.","private_evidence_sha256":"","findings":[{"criterion":"measurement_integrity","disposition":"pass","reason_code":"APPROVED","explanation":"","evidence_sha256":""},{"criterion":"workload_generalization","disposition":"pass","reason_code":"APPROVED","explanation":"","evidence_sha256":""},{"criterion":"containment","disposition":"pass","reason_code":"APPROVED","explanation":"","evidence_sha256":""},{"criterion":"patch_scope","disposition":"pass","reason_code":"APPROVED","explanation":"","evidence_sha256":""},{"criterion":"reproducibility","disposition":"pass","reason_code":"APPROVED","explanation":"","evidence_sha256":""},{"criterion":"source_safety","disposition":"pass","reason_code":"APPROVED","explanation":"","evidence_sha256":""}],"expected_decision_sha256":"a800ecdba04be602f61a904e9626819fa68fcf71191bdf8dda0b7c7989a94e81","reviewer_model":"gpt-6-astra","reviewer_reasoning":"max","production_benefit_addendum":{"version":"production-benefit/1","sha256":"6e2246f2cdef9f8d4348da95578b8f8a1676ce7afc7b5dc747ca5ce5c774ce32"}},"request_sha256":"40b6211ee8d9564140851234eb4ad1dde9a1aea04f69d15711cba90084fefd3a","reward_decision":{"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","environment":"main","competition_id":"sim-latency-season-1","season_id":"sim-latency-production-20261028-r2","revision":1,"decision_sha256":"a800ecdba04be602f61a904e9626819fa68fcf71191bdf8dda0b7c7989a94e81","seal_sha256":"d30784937500bdbd2cd15551c79e6ac317a95367f6256fd5a943756360d9fb54","action":"elect","selected_job_id":"01a1a440-fd2e-538a-365c-f4b23eed4739","reason_code":"first_eligible","decided_at":"2026-11-07T23:02:10.137364Z","effective_settlement_anchor":"2026-11-04T22:21:29.896796Z","settlement_policy_version":"production-20261028-live-settlement-v1","burn_policy_version":"production-20261028-burn-v1","settlement_mode":"live"}}],"source_decision":{"g2_volume_policy":"minimum-work/1","work_coverage_policy":{"kind":"seeded-crawl-coverage/v1","minimum_page_coverage_ratio":0.95,"minimum_byte_coverage_ratio":0.95},"trusted_instrument":{"schema":1,"approval":{"work_coverage_policy":{"kind":"seeded-crawl-coverage/v1","minimum_page_coverage_ratio":0.95,"minimum_byte_coverage_ratio":0.95},"schema":1,"approval_id":"g2-g7-epoch2-20261109-v1","approval_sha256":"c0f2462806f5deccb3e3fd210db7b0c3a11c606c5d20dfbb0de78ae435621c06","target_epoch":2,"g2_volume_policy":"minimum-work/1","instrument_base_commits":{"connect":"e90d59eb404f973dba6e9d0689ecd94e2718c10e","glog":"1c4954b017d9e8140a4e7020f914eb27410a41c6","goidenticons":"39ccec1b69db3a6f67e7346d6f44863499e6241d","gvisor":"57c9e137f7407ad6cd41dcca1ba304a446e09c79","proxy":"af1d364fe34b807c31936642bff7d3fd849ab2a4","sdk":"d3824aa98c02e3c16ff7abcfe7a7088c8a470cdb","server":"a9e8e1a710b24c749e6499a0606938252c83e136","sn":"6e686aabd53b7c45b154051fd268138988224eba","userwireguard":"f9a92f0e5f5577a80d358065c4d39ca21f971a1c","warp":"8dfa405ec380a60307952778921f05bba1c59a33"},"instrument_base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","instrument_base_image_digest":"sha256:98c9061c4a43a25e7b581a5193ca6e7f48e49e7b7fc03b7c1b6190a029befee2","patch_sha256":"a1314b1948afa7243727f30ddaa4dd1e137dfc8799c409083611baefafe457c9","patch":"ZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvY2xpZW50LmdvIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9jbGllbnQuZ28KaW5kZXggMzdiM2QwZTNjYzlkYmRjOTAxYWU3MmIzMTNmNjczOTFlZjdmZGNjMy4uZWZlMDg3YTcwNzAzNGU4MDNiZDdjMjk4YjFjM2YzMjU5ZWMxMGY4OCAxMDA2NDQKLS0tIGEvY29ubmVjdC9zaW0tbGF0ZW5jeS9jbGllbnQuZ28KKysrIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9jbGllbnQuZ28KQEAgLTUzLDYgKzUzLDggQEAgdHlwZSBDbGllbnREcml2ZXIgc3RydWN0IHsKIAlwb29sICAgICAgIFtdQ2xpZW50SWRlbnRpdHkKIAkvLyBjcmF3bCBkZWFkbGluZSBhbmQgb2ZmaWNpYWwgZmFpbGVkLW9ic2VydmF0aW9uIHNjb3JlIGNlaWxpbmcKIAlyZXF1ZXN0VGltZW91dCB0aW1lLkR1cmF0aW9uCisJLy8gTmlsIGlzIHRoZSB1bmNoYW5nZWQgaGlzdG9yaWNhbCBhcnJpdmFsL3Jlc3BvbnNlIHBhdGguCisJd29ya0NvdmVyYWdlICp3b3JrQ292ZXJhZ2VDb2xsZWN0b3IKIAogCW91dCAgICAgKmJ1ZmlvLldyaXRlcgogCW91dExvY2sgc3luYy5NdXRleApAQCAtNjI4LDYgKzYzMCw5IEBAIGZ1bmMgKHNlbGYgKkNsaWVudERyaXZlcikgU3RvcEFycml2YWxzKCkgewogLy8gUnVuIGRyaXZlcyBQb2lzc29uIGFycml2YWxzIGFzIGNyYXdscyByb3V0ZWQgYWNyb3NzIHRoZSB3YXJtIHBvb2wgdW50aWwgdGhlCiAvLyBhZG1pc3Npb24gYm91bmRhcnkgaXMgY2xvc2VkIG9yIHRoZSBjb250ZXh0IGlzIGNhbmNlbGVkLiBDYWxsIFdhcm11cCBmaXJzdC4KIGZ1bmMgKHNlbGYgKkNsaWVudERyaXZlcikgUnVuKCkgZXJyb3IgeworCWlmIHNlbGYud29ya0NvdmVyYWdlICE9IG5pbCB7CisJCXJldHVybiBzZWxmLnJ1bldvcmtDb3ZlcmFnZSgpCisJfQogCWRlZmVyIHNlbGYuQ2xvc2UoKQogCWlmIGxlbihzZWxmLmNsaWVudHMpID09IDAgewogCQlyZXR1cm4gZm10LkVycm9yZigibm8gd2FybSBjbGllbnRzIGVzdGFibGlzaGVkOyBub3RoaW5nIHRvIG1lYXN1cmUiKQpAQCAtOTExLDYgKzkxNiw4IEBAIGZ1bmMgKHNlbGYgKkNsaWVudERyaXZlcikgY3Jhd2woY3R4IGNvbnRleHQuQ29udGV4dCwgY2xpZW50TGFiZWwgc3RyaW5nLCBodHRwQ2xpCiAKIAlqb2JzIDo9IG1ha2UoY2hhbiBqb2IsIDQwOTYpCiAJdmFyIHBlbmRpbmcgc3luYy5XYWl0R3JvdXAKKwl2YXIgc3VibWl0dGVkTG9jayBzeW5jLk11dGV4CisJc3VibWl0dGVkIDo9IG1hcFtzdHJpbmddYm9vbHt9CiAKIAlzdWJtaXQgOj0gZnVuYyhwYXRoIHN0cmluZywgZGVwdGggaW50KSB7CiAJCS8vIGNoZWNraW5nIGN0eCBiZWZvcmUgQWRkIG5hcnJvd3MgdGhlIGVucXVldWUtYWZ0ZXItY2FuY2VsIHdpbmRvdwpAQCAtOTE5LDYgKzkyNiwxOCBAQCBmdW5jIChzZWxmICpDbGllbnREcml2ZXIpIGNyYXdsKGN0eCBjb250ZXh0LkNvbnRleHQsIGNsaWVudExhYmVsIHN0cmluZywgaHR0cENsaQogCQlpZiBjdHguRXJyKCkgIT0gbmlsIHsKIAkJCXJldHVybgogCQl9CisJCWlmIHNlbGYud29ya0NvdmVyYWdlICE9IG5pbCB7CisJCQlpZiBfLCBfLCBleHBlY3RlZCA6PSBzZWxmLndvcmtDb3ZlcmFnZS5wYWdlKGNyYXdsSW5kZXgsIHBhdGgsIGRlcHRoKTsgIWV4cGVjdGVkIHsKKwkJCQlyZXR1cm4KKwkJCX0KKwkJCXN1Ym1pdHRlZExvY2suTG9jaygpCisJCQlkdXBsaWNhdGUgOj0gc3VibWl0dGVkW3BhdGhdCisJCQlzdWJtaXR0ZWRbcGF0aF0gPSB0cnVlCisJCQlzdWJtaXR0ZWRMb2NrLlVubG9jaygpCisJCQlpZiBkdXBsaWNhdGUgeworCQkJCXJldHVybgorCQkJfQorCQl9CiAJCXBlbmRpbmcuQWRkKDEpCiAJCXNlbGVjdCB7CiAJCWNhc2Ugam9icyA8LSBqb2J7cGF0aDogcGF0aCwgZGVwdGg6IGRlcHRofToKQEAgLTk0NCw3ICs5NjMsNyBAQCBmdW5jIChzZWxmICpDbGllbnREcml2ZXIpIGNyYXdsKGN0eCBjb250ZXh0LkNvbnRleHQsIGNsaWVudExhYmVsIHN0cmluZywgaHR0cENsaQogCQkJCQlpZiAhb2sgewogCQkJCQkJcmV0dXJuCiAJCQkJCX0KLQkJCQkJY2hpbGRVcmxzIDo9IHNlbGYuZmV0Y2goY3R4LCBodHRwQ2xpZW50LCBjbGllbnRMYWJlbCwgai5wYXRoLCBqLmRlcHRoKQorCQkJCQljaGlsZFVybHMgOj0gc2VsZi5mZXRjaChjdHgsIGh0dHBDbGllbnQsIGNsaWVudExhYmVsLCBqLnBhdGgsIGouZGVwdGgsIGNyYXdsSW5kZXgpCiAJCQkJCWZvciBfLCBjaGlsZFVybCA6PSByYW5nZSBjaGlsZFVybHMgewogCQkJCQkJc3VibWl0KGNoaWxkVXJsLCBqLmRlcHRoKzEpCiAJCQkJCX0KQEAgLTk5Myw3ICsxMDEyLDIwIEBAIGZ1bmMgKHNlbGYgKkNsaWVudERyaXZlcikgY3Jhd2woY3R4IGNvbnRleHQuQ29udGV4dCwgY2xpZW50TGFiZWwgc3RyaW5nLCBodHRwQ2xpCiAKIC8vIGZldGNoIHBlcmZvcm1zIG9uZSByZXF1ZXN0IHRocm91Z2ggdGhlIHR1bm5lbCwgZW1pdHMgaXRzIENTViByb3csIGFuZAogLy8gcmV0dXJucyB0aGUgZGlzY292ZXJlZCBjaGlsZCBzdWJ1cmxzLgotZnVuYyAoc2VsZiAqQ2xpZW50RHJpdmVyKSBmZXRjaChjdHggY29udGV4dC5Db250ZXh0LCBodHRwQ2xpZW50ICpodHRwLkNsaWVudCwgY2xpZW50TGFiZWwgc3RyaW5nLCBwYXRoIHN0cmluZywgZGVwdGggaW50KSBbXXN0cmluZyB7CitmdW5jIChzZWxmICpDbGllbnREcml2ZXIpIGZldGNoKGN0eCBjb250ZXh0LkNvbnRleHQsIGh0dHBDbGllbnQgKmh0dHAuQ2xpZW50LCBjbGllbnRMYWJlbCBzdHJpbmcsIHBhdGggc3RyaW5nLCBkZXB0aCBpbnQsIHJvb3RJbmRpY2VzIC4uLmludCkgW11zdHJpbmcgeworCXZhciBleHBlY3RlZCB3b3JrQ292ZXJhZ2VQYWdlCisJcGFnZUluZGV4LCByb290SW5kZXggOj0gMCwgMAorCWlmIHNlbGYud29ya0NvdmVyYWdlICE9IG5pbCB7CisJCWlmIGxlbihyb290SW5kaWNlcykgIT0gMSB7CisJCQlyZXR1cm4gbmlsCisJCX0KKwkJcm9vdEluZGV4ID0gcm9vdEluZGljZXNbMF0KKwkJdmFyIG9rIGJvb2wKKwkJcGFnZUluZGV4LCBleHBlY3RlZCwgb2sgPSBzZWxmLndvcmtDb3ZlcmFnZS5wYWdlKHJvb3RJbmRleCwgcGF0aCwgZGVwdGgpCisJCWlmICFvayB7CisJCQlyZXR1cm4gbmlsCisJCX0KKwl9CiAJcmVxdWVzdFVybCA6PSBmbXQuU3ByaW50ZigiaHR0cDovLyVzJXMiLCBzZWxmLnNpdGVBZGRyLCBwYXRoKQogCiAJc3RhcnRUaW1lIDo9IHRpbWUuTm93KCkKQEAgLTEwMTUsNyArMTA0NywxMyBAQCBmdW5jIChzZWxmICpDbGllbnREcml2ZXIpIGZldGNoKGN0eCBjb250ZXh0LkNvbnRleHQsIGh0dHBDbGllbnQgKmh0dHAuQ2xpZW50LCBjbAogCQlyZXR1cm4gbmlsCiAJfQogCXN0YXR1cyA6PSByZXNwb25zZS5TdGF0dXNDb2RlCi0JcmVhZCwgcmVhZEVyciA6PSByZWFkU2l0ZVJlc3BvbnNlKHJlc3BvbnNlKQorCXZhciByZWFkIHNpdGVSZXNwb25zZQorCXZhciByZWFkRXJyIGVycm9yCisJaWYgc2VsZi53b3JrQ292ZXJhZ2UgPT0gbmlsIHsKKwkJcmVhZCwgcmVhZEVyciA9IHJlYWRTaXRlUmVzcG9uc2UocmVzcG9uc2UpCisJfSBlbHNlIHsKKwkJcmVhZCwgcmVhZEVyciA9IHJlYWRFeHBlY3RlZFNpdGVSZXNwb25zZShyZXNwb25zZSwgZXhwZWN0ZWQpCisJfQogCS8vIFByZXNlcnZlIHJlY2VpdmVkIGJ5dGVzIGZvciB2b2x1bWUvcGF0aC1pbnRlZ3JpdHkgYWNjb3VudGluZywgYnV0IG5ldmVyCiAJLy8gbGV0IGEgbWFsZm9ybWVkIG9yIHBhcnRpYWwgMjAwIGVudGVyIHRoZSBzdWNjZXNzIHBvcHVsYXRpb24uIFRoZSBDU1YKIAkvLyBmb3JtYXQgc3RheXMgc3RhYmxlOiBzdGF0dXM9MCBpcyB0aGUgZXhpc3RpbmcgaW5jb21wbGV0ZS1yZXF1ZXN0IG1hcmtlcjsKQEAgLTEwMjQsMTAgKzEwNjIsMTQgQEAgZnVuYyAoc2VsZiAqQ2xpZW50RHJpdmVyKSBmZXRjaChjdHggY29udGV4dC5Db250ZXh0LCBodHRwQ2xpZW50ICpodHRwLkNsaWVudCwgY2wKIAkJc3RhdHVzID0gMAogCX0KIAl0b3RhbFRpbWUgOj0gdGltZS5TaW5jZShzdGFydFRpbWUpCi0Jc2VsZi53cml0ZUNzdlJvdyhzdGFydFRpbWUsIGNsaWVudExhYmVsLCBwYXRoLCBkZXB0aCwgc3RhdHVzLCByZWFkLnJlY2VpdmVkQnl0ZXMsIHR0ZmIsIHRvdGFsVGltZSkKKwljb21wbGV0ZWQgOj0gc3RhcnRUaW1lLkFkZCh0b3RhbFRpbWUpCisJcm93SW5kZXggOj0gc2VsZi53cml0ZUNzdlJvdyhzdGFydFRpbWUsIGNsaWVudExhYmVsLCBwYXRoLCBkZXB0aCwgc3RhdHVzLCByZWFkLnJlY2VpdmVkQnl0ZXMsIHR0ZmIsIHRvdGFsVGltZSkKIAlpZiByZWFkRXJyICE9IG5pbCB8fCAhcmVhZC5jb21wbGV0ZSB7CiAJCXJldHVybiBuaWwKIAl9CisJaWYgc2VsZi53b3JrQ292ZXJhZ2UgIT0gbmlsIHsKKwkJc2VsZi53b3JrQ292ZXJhZ2UucmVjb3JkKHJvb3RJbmRleCwgcGFnZUluZGV4LCByb3dJbmRleCwgc3RhcnRUaW1lLCBjb21wbGV0ZWQpCisJfQogCXJldHVybiByZWFkLnBhZ2UuVXJscwogfQogCkBAIC0xMDM5LDcgKzEwODEsNyBAQCBmdW5jIChzZWxmICpDbGllbnREcml2ZXIpIHdyaXRlQ3N2SGVhZGVyKCkgewogCiAvLyBFbWl0cyB0aGUgaGlzdG9yaWNhbCBDU1YgYnl0ZXMgYW5kIHJldGFpbnMgZXhhY3RseSB0aGVpciB0aW1pbmcgcHJlY2lzaW9uLgogLy8gVGhlIHNpZGVjYXIgYW5kIHNjb3JlciBtdXN0IHN1bW1hcml6ZSB0aGUgc2FtZSBwZXJzaXN0ZWQgb2JzZXJ2YXRpb25zLgotZnVuYyAoc2VsZiAqQ2xpZW50RHJpdmVyKSB3cml0ZUNzdlJvdyhzdGFydFRpbWUgdGltZS5UaW1lLCBjbGllbnQgc3RyaW5nLCBwYXRoIHN0cmluZywgZGVwdGggaW50LCBzdGF0dXMgaW50LCBieXRlcyBpbnQ2NCwgdHRmYiB0aW1lLkR1cmF0aW9uLCB0b3RhbCB0aW1lLkR1cmF0aW9uKSB7CitmdW5jIChzZWxmICpDbGllbnREcml2ZXIpIHdyaXRlQ3N2Um93KHN0YXJ0VGltZSB0aW1lLlRpbWUsIGNsaWVudCBzdHJpbmcsIHBhdGggc3RyaW5nLCBkZXB0aCBpbnQsIHN0YXR1cyBpbnQsIGJ5dGVzIGludDY0LCB0dGZiIHRpbWUuRHVyYXRpb24sIHRvdGFsIHRpbWUuRHVyYXRpb24pIGludCB7CiAJYnl0ZXNQZXJTZWNvbmQgOj0gZmxvYXQ2NCgwKQogCWlmIDAgPCB0b3RhbCB7CiAJCWJ5dGVzUGVyU2Vjb25kID0gZmxvYXQ2NChieXRlcykgLyB0b3RhbC5TZWNvbmRzKCkKQEAgLTEwNzAsMTEgKzExMTIsMTUgQEAgZnVuYyAoc2VsZiAqQ2xpZW50RHJpdmVyKSB3cml0ZUNzdlJvdyhzdGFydFRpbWUgdGltZS5UaW1lLCBjbGllbnQgc3RyaW5nLCBwYXRoIHMKIAlzZWxmLndyaXRlQ3N2TGluZUxvY2tlZChsaW5lKQogCXNlbGYucm93cyA9IGFwcGVuZChzZWxmLnJvd3MsIHJlc3VsdFJvd3sKIAkJdFN0YXJ0TXM6IHN0YXJ0VGltZS5Vbml4TWlsbGkoKSwKKwkJcGF0aDogICAgIHBhdGgsCisJCWRlcHRoOiAgICBkZXB0aCwKKwkJY2xpZW50OiAgIGNsaWVudCwKIAkJc3RhdHVzOiAgIHN0YXR1cywKIAkJYnl0ZXM6ICAgIGJ5dGVzLAogCQl0dGZiTXM6ICAgdHRmYk1pbGxpcywKIAkJdG90YWxNczogIHRvdGFsTWlsbGlzLAogCX0pCisJcmV0dXJuIGxlbihzZWxmLnJvd3MpIC0gMQogfQogCiBmdW5jIChzZWxmICpDbGllbnREcml2ZXIpIHdyaXRlQ3N2TGluZUxvY2tlZChsaW5lIHN0cmluZykgewpkaWZmIC0tZ2l0IGEvY29ubmVjdC9zaW0tbGF0ZW5jeS9ldmFsdWF0b3IvY29udGFpbmVyL2VudHJ5cG9pbnQuc2ggYi9jb25uZWN0L3NpbS1sYXRlbmN5L2V2YWx1YXRvci9jb250YWluZXIvZW50cnlwb2ludC5zaAppbmRleCA3MDUxMThlMjNhNGJjMTcwODc4NTYxZTUxYWQ5YjdkYjk5OWFkNGJmLi4yNzU1MjhkOGQ0ZWEwMTc4MzZlNWEwNGNiY2YxMTBkMGI1MTUzN2M0IDEwMDc1NQotLS0gYS9jb25uZWN0L3NpbS1sYXRlbmN5L2V2YWx1YXRvci9jb250YWluZXIvZW50cnlwb2ludC5zaAorKysgYi9jb25uZWN0L3NpbS1sYXRlbmN5L2V2YWx1YXRvci9jb250YWluZXIvZW50cnlwb2ludC5zaApAQCAtMTAwLDEyICsxMDAsMTIgQEAgY2FzZSAiJHsxOi19IiBpbgogICAgICAgICBleHBvcnQgQVBFWF9TRVJWRVJfUk9PVD0vd29ya3NwYWNlL3NlcnZlcgogICAgICAgICBleGVjICIkT0ZGSUNJQUxfUlVOIiAiJDEiCiAgICAgICAgIDs7Ci0gICAgcHJlZmxpZ2h0fGJhc2VsaW5lfHNjb3JlfGZpbmFsaXplKQorICAgIG1hcmdpbi1wcmVmbGlnaHR8cHJlZmxpZ2h0fGJhc2VsaW5lfHNjb3JlfGZpbmFsaXplKQogICAgICAgICBleHBvcnQgQVBFWF9TRVJWRVJfUk9PVD0vd29ya3NwYWNlL3NlcnZlcgogICAgICAgICBleGVjICIkT0ZGSUNJQUxfUlVOIiAiJDEiCiAgICAgICAgIDs7CiAgICAgKikKLSAgICAgICAgcHJpbnRmICclc1xuJyAndXNhZ2U6IGNvbXBldGl0aW9uLWNvbnRhaW5lciB7aWRlbnRpdHl8bWlncmF0ZXxwcmVmbGlnaHR8cnVufGJhc2VsaW5lfHNjb3JlfGZpbmFsaXplfScgPiYyCisgICAgICAgIHByaW50ZiAnJXNcbicgJ3VzYWdlOiBjb21wZXRpdGlvbi1jb250YWluZXIge2lkZW50aXR5fG1pZ3JhdGV8bWFyZ2luLXByZWZsaWdodHxwcmVmbGlnaHR8cnVufGJhc2VsaW5lfHNjb3JlfGZpbmFsaXplfScgPiYyCiAgICAgICAgIGV4aXQgMgogICAgICAgICA7OwogZXNhYwpkaWZmIC0tZ2l0IGEvY29ubmVjdC9zaW0tbGF0ZW5jeS9ldmFsdWF0b3IvY29udGFpbmVyL2V2YWx1YXRvci1taW5pbXVtLXdvcmsuc2ggYi9jb25uZWN0L3NpbS1sYXRlbmN5L2V2YWx1YXRvci9jb250YWluZXIvZXZhbHVhdG9yLW1pbmltdW0td29yay5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTM3ODRmMmZkMzg4OTUwNTNkMGQ1MjJjMGVkMWRiNTI0MmExNDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9ldmFsdWF0b3IvY29udGFpbmVyL2V2YWx1YXRvci1taW5pbXVtLXdvcmsuc2gKQEAgLTAsMCArMSwxOTIwIEBACisjIS91c3IvYmluL2VudiBiYXNoCisKKyMgVHJ1c3RlZCB3b3JrZXItdG8tQ29tcG9zZSBldmFsdWF0b3IgZm9yIGNvbXBldGl0aW9uIGV2YWx1YXRvciBwcm90b2NvbCB2MS4KKyMgU3VibWlzc2lvbiBieXRlcyBjaG9vc2Ugb25seSB0aGUgY2Fub25pY2FsIHBhdGNoLiBFdmVyeSBpbWFnZSwgY29tbWFuZCwKKyMgcmVzb3VyY2UgY2VpbGluZywgbW91bnQsIGFuZCBhcnRpZmFjdCBuYW1lIGJlbG93IGlzIGV2YWx1YXRvci1vd25lZC4KKworc2V0IC1FZXVvIHBpcGVmYWlsCit1bWFzayAwNzcKK2V4cG9ydCBMQU5HPUMgTENfQUxMPUMKKworcmVhZG9ubHkgU0NSSVBUX0RJUj0iJChjZCAiJChkaXJuYW1lICIke0JBU0hfU09VUkNFWzBdfSIpIiAmJiBwd2QgLVApIgorcmVhZG9ubHkgQ09NUE9TRV9GSUxFPSIkU0NSSVBUX0RJUi9jb21wb3NlLnltbCIKK3JlYWRvbmx5IEJVSUxEX1NVQk1JU1NJT049IiRTQ1JJUFRfRElSL2J1aWxkLXN1Ym1pc3Npb24uc2giCityZWFkb25seSBQUkVQQVJFX0VWQUxVQVRJT05fU09VUkNFPSIkU0NSSVBUX0RJUi9wcmVwYXJlLWV2YWx1YXRpb24tc291cmNlLnNoIgorcmVhZG9ubHkgUkVTT1VSQ0VfQk9VTkRBUlk9IiRTQ1JJUFRfRElSL3Jlc291cmNlLWJvdW5kYXJ5LnNoIgorcmVhZG9ubHkgTkVUV09SS19CT1VOREFSWT0iJFNDUklQVF9ESVIvbmV0d29yay1ib3VuZGFyeS5zaCIKK3JlYWRvbmx5IERPQ0tFUl9JRF9NQVA9IiRTQ1JJUFRfRElSL2RvY2tlci1pZC1tYXAuc2giCityZWFkb25seSBIQVNIX0xPQ0FMX01PVU5UPSIkU0NSSVBUX0RJUi9oYXNoLWxvY2FsLW1vdW50LnNoIgorcmVhZG9ubHkgUkVUQUlOX0ZBSUxVUkVfRVZJREVOQ0U9IiRTQ1JJUFRfRElSL3JldGFpbi1mYWlsdXJlLWV2aWRlbmNlLnNoIgorcmVhZG9ubHkgUE9TVEdSRVNfSU5JVD0iJFNDUklQVF9ESVIvcG9zdGdyZXMtaW5pdC5zaCIKK3JlYWRvbmx5IFRJTUVPVVRfQlVER0VUPSIkU0NSSVBUX0RJUi90aW1lb3V0LWJ1ZGdldC5zaCIKK3JlYWRvbmx5IEVNUFRZX1BBVENIX1NIQTI1Nj1lM2IwYzQ0Mjk4ZmMxYzE0OWFmYmY0Yzg5OTZmYjkyNDI3YWU0MWU0NjQ5YjkzNGNhNDk1OTkxYjc4NTJiODU1CityZWFkb25seSBNQVhfUkVRVUVTVF9CWVRFUz0kKCgyICogMTAyNCAqIDEwMjQpKQorcmVhZG9ubHkgTUFYX1BST1ZJREVSU19CWVRFUz0kKCgxMDI0ICogMTAyNCAqIDEwMjQpKQorcmVhZG9ubHkgTUFYX0JVSUxEX0xPR19CWVRFUz0kKCg0ICogMTAyNCAqIDEwMjQpKQorcmVhZG9ubHkgRVZJREVOQ0VfV09SS19MSU1JVD01ZworcmVhZG9ubHkgRVZJREVOQ0VfV09SS19CWVRFUz01MzY4NzA5MTIwCisKKyMgU2Vhc29uLWZyb3plbiBjb250YWluZXIgY2VpbGluZ3MuIEhvc3QgcXVhbGlmaWNhdGlvbiB2ZXJpZmllcyB0aGF0IHRoZWlyIHN1bQorIyBwbHVzIHRoZSBob3N0IHJlc2VydmUgZml0cyB0aGUgcGh5c2ljYWwgYm94LgorcmVhZG9ubHkgUlVOTkVSX01FTU9SWV9MSU1JVD03MmcKK3JlYWRvbmx5IFJVTk5FUl9NRU1PUllfQllURVM9NzczMDk0MTEzMjgKK3JlYWRvbmx5IFJVTk5FUl9QSURTX0xJTUlUPTY1NTM2CityZWFkb25seSBSVU5ORVJfVE1QX0xJTUlUPTJnCityZWFkb25seSBSVU5ORVJfV09SS19MSU1JVD04ZworcmVhZG9ubHkgTUlHUkFUT1JfTUVNT1JZX0xJTUlUPTRnCityZWFkb25seSBNSUdSQVRPUl9QSURTX0xJTUlUPTQwOTYKK3JlYWRvbmx5IE1JR1JBVE9SX1RNUF9MSU1JVD0xZworcmVhZG9ubHkgUE9TVEdSRVNfTUVNT1JZX0xJTUlUPTE2ZworcmVhZG9ubHkgUE9TVEdSRVNfTUVNT1JZX0JZVEVTPTE3MTc5ODY5MTg0CityZWFkb25seSBQT1NUR1JFU19QSURTX0xJTUlUPTQwOTYKK3JlYWRvbmx5IFBPU1RHUkVTX0RBVEFfTElNSVQ9MTJnCityZWFkb25seSBQT1NUR1JFU19NQVhfQ09OTkVDVElPTlM9NTEyCityZWFkb25seSBQT1NUR1JFU19TSEFSRURfQlVGRkVSUz0yR0IKK3JlYWRvbmx5IFJFRElTX01FTU9SWV9MSU1JVD04ZworcmVhZG9ubHkgUkVESVNfTUVNT1JZX0JZVEVTPTg1ODk5MzQ1OTIKK3JlYWRvbmx5IFJFRElTX1BJRFNfTElNSVQ9NDA5NgorcmVhZG9ubHkgUkVESVNfREFUQV9MSU1JVD02ZworcmVhZG9ubHkgUkVESVNfTUFYX0NMSUVOVFM9MzI3NjgKK3JlYWRvbmx5IFJFRElTX1RDUF9CQUNLTE9HPTY1NTM1CityZWFkb25seSBTQ09SRVJfTUVNT1JZX0xJTUlUPTRnCityZWFkb25seSBTQ09SRVJfTUVNT1JZX0JZVEVTPTQyOTQ5NjcyOTYKK3JlYWRvbmx5IFNDT1JFUl9QSURTX0xJTUlUPTEwMjQKK3JlYWRvbmx5IFNDT1JFUl9UTVBfTElNSVQ9MWcKK3JlYWRvbmx5IEVWQUxVQVRJT05fTk9GSUxFPTEwNDg1NzYKK3JlYWRvbmx5IEFDVElWRV9FVkFMVUFUSU9OX01FTU9SWV9CWVRFUz0xMDMwNzkyMTUxMDQKK3JlYWRvbmx5IE1JTklNVU1fTUFOQUdFTUVOVF9NRU1PUllfUkVTRVJWRV9CWVRFUz0yNTc2OTgwMzc3NgorCityZXF1ZXN0X3BhdGg9IiIKK3Jlc3VsdF9wYXRoPSIiCithcnRpZmFjdF9kaXI9IiIKK3dvcmtfZGlyPSIiCithY3RpdmVfcHJvamVjdD0iIgorYWN0aXZlX2NvbXBvc2VfZW52PSIiCithY3RpdmVfc2FtcGxlcl9waWQ9IiIKK2FjdGl2ZV93b3JrX21vdW50PSIiCithY3RpdmVfYnVpbGRfbG9nX3BpZD0iIgorYWN0aXZlX2J1aWxkX2xvZ19waXBlPSIiCithY3RpdmVfc291cmNlX3Jvb3Q9IiIKK2NsZWFudXBfY29tcGxldGU9ZmFsc2UKK2ZhaWx1cmVfbGluZT0wCit3b3JrZXJfdWlkPSIkKGlkIC11KSIKK3dvcmtlcl9naWQ9IiQoaWQgLWcpIgorCitsb2coKSB7IHByaW50ZiAnW2NvbXBldGl0aW9uLWV2YWx1YXRvcl0gJXNcbicgIiQqIiA+JjI7IH0KK2RpZSgpIHsKKyAgICBmYWlsdXJlX2xpbmU9IiR7QkFTSF9MSU5FTk9bMF06LTB9IgorICAgIGxvZyAiRVJST1I6ICQqIgorICAgIGV4aXQgMQorfQorcmVxdWlyZV9jb21tYW5kKCkgeyBjb21tYW5kIC12ICIkMSIgPi9kZXYvbnVsbCAyPiYxIHx8IGRpZSAicmVxdWlyZWQgY29tbWFuZCBtaXNzaW5nOiAkMSI7IH0KK3NoYTI1Nl9maWxlKCkgeyBzaGEyNTZzdW0gIiQxIiB8IGF3ayAne3ByaW50ICQxfSc7IH0KK2ZpbGVfYnl0ZXMoKSB7IHN0YXQgLWMgJyVzJyAiJDEiOyB9CisKKyMgVGhlIGNhbGxlciBpcyBhbHJlYWR5IHRydXN0ZWQ7IGF1dGhlbnRpY2F0ZSB0aGUgZml4ZWQgaGVscGVyIGJlZm9yZSBleGVjdXRpbmcKKyMgaXQgc28gYSB3cml0YWJsZSBoZWxwZXIgY2Fubm90IGdyYW50IGl0c2VsZiByZWxlYXNlIGF1dGhvcml0eSBhZnRlciBsYXVuY2guCitzdWJtaXNzaW9uX2J1aWxkZXJfaWRlbnRpdHkoKSB7CisgICAgbG9jYWwgY3VycmVudD0iJFNDUklQVF9ESVIvc3VibWlzc2lvbi1idWlsZGVyLWlkZW50aXR5LnNoIiBvd25lciBwZXJtaXNzaW9ucworICAgIFtbIC1mICIkY3VycmVudCIgJiYgLXggIiRjdXJyZW50IiAmJiAhIC1MICIkY3VycmVudCIgXV0gfHwgcmV0dXJuIDEKKyAgICB3aGlsZSA6OyBkbworICAgICAgICBbWyAhIC1MICIkY3VycmVudCIgXV0gfHwgcmV0dXJuIDEKKyAgICAgICAgb3duZXI9IiQoc3RhdCAtYyAldSAiJGN1cnJlbnQiKSIgfHwgcmV0dXJuIDEKKyAgICAgICAgcGVybWlzc2lvbnM9IiQoc3RhdCAtYyAlYSAiJGN1cnJlbnQiKSIgfHwgcmV0dXJuIDEKKyAgICAgICAgW1sgIiRvd25lciIgPT0gMCAmJiAiJHBlcm1pc3Npb25zIiA9fiBeWzAtN117Myw0fSQgXV0gfHwgcmV0dXJuIDEKKyAgICAgICAgKCggKDgjJHBlcm1pc3Npb25zICYgOCMwMjIpID09IDAgKSkgfHwgcmV0dXJuIDEKKyAgICAgICAgW1sgIiRjdXJyZW50IiAhPSAvIF1dIHx8IGJyZWFrCisgICAgICAgIGN1cnJlbnQ9IiQoZGlybmFtZSAiJGN1cnJlbnQiKSIKKyAgICAgICAgW1sgLWQgIiRjdXJyZW50IiBdXSB8fCByZXR1cm4gMQorICAgIGRvbmUKKyAgICAiJFNDUklQVF9ESVIvc3VibWlzc2lvbi1idWlsZGVyLWlkZW50aXR5LnNoIgorfQorCisjIFJlZnVzZSBtaXNtYXRjaGVkIGltYWdlIGNhcGFiaWxpdHkgYmVmb3JlIGFueSBiYXNlbGluZSBjb250cm9sIHJ1bnMuIFRoZQorIyBwcmVwYXJlciBhdXRoZW50aWNhdGVkIHRoaXMgb3B0aW9uYWwgZmllbGQgYWdhaW5zdCB0aGUgcmF3IGltYWdlIHNvdXJjZSBsb2NrLgordmFsaWRhdGVfcHJlcGFyZWRfc291cmNlX2lkZW50aXR5KCkgeworICAgIGpxIC1lIC0tYXJnIGJhc2VfaW1hZ2VfaWQgIiRiYXNlX2ltYWdlX2lkIiAtLWFyZyBiYXNlX3NoYSAiJGJhc2Vfc2hhIiBcCisgICAgICAgIC0tYXJnanNvbiBzb3VyY2VfZXBvY2ggIiRzb3VyY2VfZXBvY2giIC0tYXJnIHBhdGhfYmFzZSAiJHBhdGNoX3BhdGhfYmFzZSIgXAorICAgICAgICAtLWFyZ2pzb24gc3RhZ2luZyAiJHN0YWdpbmciIC0tYXJnIGJyYW5jaCAiJHNvdXJjZV9icmFuY2giIFwKKyAgICAgICAgJy5zY2hlbWEgPT0gMSBhbmQgLmtpbmQgPT0gInNpbS1sYXRlbmN5LWV2YWx1YXRpb24tc291cmNlIiBhbmQKKyAgICAgICAgIC50ZW1wb3JhcnkgPT0gdHJ1ZSBhbmQgLmJhc2VfaW1hZ2VfaWQgPT0gJGJhc2VfaW1hZ2VfaWQgYW5kCisgICAgICAgICAuYmFzZV9zaGEgPT0gJGJhc2Vfc2hhIGFuZCAuc291cmNlX2Vwb2NoID09ICRzb3VyY2VfZXBvY2ggYW5kCisgICAgICAgICAuYnJhbmNoID09ICRicmFuY2ggYW5kICgoLnN0YWdpbmcgLy8gZmFsc2UpID09ICRzdGFnaW5nKSBhbmQgLmNhbmRpZGF0ZV9wYXRjaF9zaGEyNTYgPT0gbnVsbCBhbmQKKyAgICAgICAgICgoLmNhbmRpZGF0ZV9wYXRoX2Jhc2UgLy8gIiIpID09ICIiIG9yIC5jYW5kaWRhdGVfcGF0aF9iYXNlID09ICJtb25vX3Jvb3RfdjEiKSBhbmQKKyAgICAgICAgICgkcGF0aF9iYXNlID09ICIiIG9yICgkcGF0aF9iYXNlID09ICJtb25vX3Jvb3RfdjEiIGFuZCAuY2FuZGlkYXRlX3BhdGhfYmFzZSA9PSAkcGF0aF9iYXNlKSknIFwKKyAgICAgICAgPDw8IiQxIiA+L2Rldi9udWxsCit9CisKKyMgTGVnYWN5IHJlcXVlc3RzIHJldGFpbiB0aGVpciBleGFjdCB0aHJlZS1rZXkgcG9saWN5LiBBIGJyb2FkIHBvbGljeSBtdXN0CisjIGV4cGxpY2l0bHkgc2VsZWN0IHRoZSBvbmUgcXVhbGlmaWVkIHJlcG9zaXRvcnktcmVsYXRpdmUgcGF0aCBjb252ZW50aW9uLgordmFsaWRhdGVfd29ya2VyX3JlcXVlc3Rfc2NoZW1hKCkgeworICAgIGxvY2FsIHJlcXVlc3Rfa2V5cz0nWyJhcGlfaW1hZ2VfZGlnZXN0IiwiYXJ0aWZhY3RfZGlyZWN0b3J5IiwiYXR0ZW1wdCIsImJhc2Vfc2hhIiwiY29tcGV0aXRpb25faWQiLCJjb25maWdfbG9jYWxfZGlyZWN0b3J5IiwiZXZhbHVhdGlvbl9wb2xpY3kiLCJldmFsdWF0b3JfaW1hZ2VfZGlnZXN0Iiwiam9iX2lkIiwicGF0Y2hfcGF0aCIsInBhdGNoX3BvbGljeSIsInBhdGNoX3NoYTI1NiIsInByb3ZpZGVyc19wYXRoIiwicHJvdmlkZXJzX3NoYTI1NiIsInJvdW5kX2Jhc2VsaW5lX3BhdGgiLCJyb3VuZF9iYXNlbGluZV9zaGEyNTYiLCJyb3VuZF9pZCIsInJvdW5kX3NlZWRfaGV4Iiwic2NoZW1hIiwic2NvcmVyX3ZlcnNpb24iLCJzb3VyY2VfZXBvY2giLCJ2YXVsdF9sb2NhbF9kaXJlY3RvcnkiLCJ3b3JrZXJfaW1hZ2VfZGlnZXN0Il0nCisgICAgbG9jYWwgcGF0Y2hfcG9saWN5X2tleXM9J1siYWxsb3dlZF9wYXRocyIsImZvcmJpZGRlbl9wYXRocyIsIm1heF9wYXRjaF9ieXRlcyJdJworICAgIGxvY2FsIGV2YWx1YXRpb25fcG9saWN5X2tleXM9J1siYW5ub3VuY2VfdGltZW91dF9tcyIsImFwaV9wb3J0IiwiYXJyaXZhbHNfcGVyX21pbnV0ZSIsImNsaWVudF9wb29sX3NpemUiLCJjbGllbnRfd2FybXVwX3RpbWVvdXRfbXMiLCJjb25maWdfbG9jYWxfc2hhMjU2IiwiZHVyYXRpb25fbXMiLCJleGNoYW5nZV9ob3N0cyIsImZsZWV0X3NoYXJkcyIsImhhcmR3YXJlX2lkIiwiaG9zdF9xdWFsaWZpY2F0aW9uX3NoYTI1NiIsImltcGFpcm1lbnRfZW5hYmxlZCIsInBpcGVsaW5lX2ludGVydmFsX21zIiwicHJld2FybV9tcyIsInByb3ZpZGVyX2NvdW50IiwicXVhbGl0eV93aW5kb3dfc2l6ZSIsInF1ZXVlX2xpbWl0IiwicmFtcF9tcyIsInJlcGxpY2F0ZXMiLCJyZXF1ZXN0X3RpbWVvdXRfbXMiLCJzY29yZV90aW1lb3V0X3NlY29uZHMiLCJzY29yZXJfc2hhMjU2Iiwic2V0dGxlX21zIiwic2ltdWxhdG9yX3NoYTI1NiIsInNpdGVfbGlzdGVuIiwidGFrZW92ZXJfbWFyZ2luIiwidGVzdF90aW1lb3V0X21zIiwidmF1bHRfbG9jYWxfc2hhMjU2Il0nCisgICAganEgLWUgXAorICAgICAgICAtLWFyZ2pzb24gcmVxdWVzdF9rZXlzICIkcmVxdWVzdF9rZXlzIiBcCisgICAgICAgIC0tYXJnanNvbiBwYXRjaF9wb2xpY3lfa2V5cyAiJHBhdGNoX3BvbGljeV9rZXlzIiBcCisgICAgICAgIC0tYXJnanNvbiBldmFsdWF0aW9uX3BvbGljeV9rZXlzICIkZXZhbHVhdGlvbl9wb2xpY3lfa2V5cyIgXAorICAgICAgICAndHlwZSA9PSAib2JqZWN0IiBhbmQgKC5zY2hlbWEgPT0gMSkgYW5kCisgICAgICAgICAoKGtleXMgLSBbInN0YWdpbmciXSB8IHNvcnQpID09ICRyZXF1ZXN0X2tleXMpIGFuZAorICAgICAgICAgKChoYXMoInN0YWdpbmciKSB8IG5vdCkgb3IgKC5zdGFnaW5nIHwgdHlwZSA9PSAiYm9vbGVhbiIpKSBhbmQKKyAgICAgICAgIChpZiAuc3RhZ2luZyA9PSB0cnVlIHRoZW4gLmV2YWx1YXRpb25fcG9saWN5LnRha2VvdmVyX21hcmdpbiA9PSAwIGVsc2UgdHJ1ZSBlbmQpIGFuZAorICAgICAgICAgKC5wYXRjaF9wb2xpY3kgfCB0eXBlID09ICJvYmplY3QiIGFuZAorICAgICAgICAgICAoaWYgaGFzKCJwYXRoX2Jhc2UiKSB0aGVuCisgICAgICAgICAgICAgICgoa2V5cyB8IHNvcnQpID09ICgkcGF0Y2hfcG9saWN5X2tleXMgKyBbInBhdGhfYmFzZSJdIHwgc29ydCkpIGFuZAorICAgICAgICAgICAgICAucGF0aF9iYXNlID09ICJtb25vX3Jvb3RfdjEiCisgICAgICAgICAgICBlbHNlIChrZXlzIHwgc29ydCkgPT0gJHBhdGNoX3BvbGljeV9rZXlzIGVuZCkpIGFuZAorICAgICAgICAgKC5ldmFsdWF0aW9uX3BvbGljeSB8IHR5cGUgPT0gIm9iamVjdCIgYW5kCisgICAgICAgICAgIChpZiBoYXMoImcyX3ZvbHVtZV9wb2xpY3kiKSB0aGVuCisgICAgICAgICAgICAgICgoa2V5cyB8IHNvcnQpID09ICgkZXZhbHVhdGlvbl9wb2xpY3lfa2V5cyArIFsiZzJfdm9sdW1lX3BvbGljeSJdIHwgc29ydCkpIGFuZAorICAgICAgICAgICAgICAuZzJfdm9sdW1lX3BvbGljeSA9PSAibWluaW11bS13b3JrLzEiCisgICAgICAgICAgICBlbHNlICgoa2V5cyB8IHNvcnQpID09ICRldmFsdWF0aW9uX3BvbGljeV9rZXlzKSBlbmQpKSBhbmQKKyAgICAgICAgIC5zY29yZXJfdmVyc2lvbiA9PSAoaWYgLmV2YWx1YXRpb25fcG9saWN5LmcyX3ZvbHVtZV9wb2xpY3kgPT0gIm1pbmltdW0td29yay8xIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuICJzaW0tbGF0ZW5jeS1zY29yZS8yIiBlbHNlICJzaW0tbGF0ZW5jeS1zY29yZS8xIiBlbmQpJyBcCisgICAgICAgICIkMSIgPi9kZXYvbnVsbAorfQorCitsb2NhbF90cmVlX3NoYTI1NigpIHsKKyAgICAiJEhBU0hfTE9DQUxfTU9VTlQiICIkMSIKK30KKworYXV0aGVudGljYXRlX2xvY2FsX21vdW50cygpIHsKKyAgICBbICIkKGxvY2FsX3RyZWVfc2hhMjU2ICIkY29uZmlnX2xvY2FsX2RpcmVjdG9yeSIpIiA9ICIkY29uZmlnX2xvY2FsX3NoYTI1NiIgXSB8fAorICAgICAgICBkaWUgImRpcmVjdCBjb25maWcvbG9jYWwgY29udGVudCBkb2VzIG5vdCBtYXRjaCB0aGUgZnJvemVuIGRpZ2VzdCIKKyAgICBbICIkKGxvY2FsX3RyZWVfc2hhMjU2ICIkdmF1bHRfbG9jYWxfZGlyZWN0b3J5IikiID0gIiR2YXVsdF9sb2NhbF9zaGEyNTYiIF0gfHwKKyAgICAgICAgZGllICJkaXJlY3QgdmF1bHQvbG9jYWwgY29udGVudCBkb2VzIG5vdCBtYXRjaCB0aGUgZnJvemVuIGRpZ2VzdCIKK30KKworIyBUaGlzIGhvc3QgYWRtaXRzIG9uZSBldmFsdWF0b3IgYXR0ZW1wdCBhdCBhIHRpbWUuIEZhaWxlZCBjbGVhbnVwIG11c3QgYmxvY2sKKyMgdGhlIG5leHQgYWxsb2NhdGlvbiByYXRoZXIgdGhhbiBhY2N1bXVsYXRpbmcgY29udGFpbmVycyBvciBldmlkZW5jZSBjaGFyZ2VzLgorIyBJbnNwZWN0aW9uIG9ubHk6IHJlY292ZXJ5IG9mIGFueSBsZWZ0b3ZlciByZXNvdXJjZXMgcmVxdWlyZXMgdGhlIG9wZXJhdG9yLgorY2hlY2tfZXZhbHVhdG9yX3Jlc2lkdWFsX3Jlc291cmNlcygpIHsKKyAgICBsb2NhbCBjb250YWluZXJzIG5ldHdvcmtzIG1vdW50cyBmaWxlc3lzdGVtIHNvdXJjZQorICAgIGNvbnRhaW5lcnM9IiQoc3VkbyAtbiB0aW1lb3V0IC0tc2lnbmFsPVRFUk0gLS1raWxsLWFmdGVyPTFzIDNzIGRvY2tlciBwcyAtYXEgXAorICAgICAgICAtLWZpbHRlciBsYWJlbD1jb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLmpvYi1pZCkiIHx8IGRpZSAiY291bGQgbm90IGVudW1lcmF0ZSBwcmlvciBldmFsdWF0b3IgY29udGFpbmVycyIKKyAgICBbIC16ICIkY29udGFpbmVycyIgXSB8fCBkaWUgInByaW9yIGV2YWx1YXRvciBjb250YWluZXJzIHN0aWxsIGV4aXN0IgorICAgIG5ldHdvcmtzPSIkKHN1ZG8gLW4gdGltZW91dCAtLXNpZ25hbD1URVJNIC0ta2lsbC1hZnRlcj0xcyAzcyBkb2NrZXIgbmV0d29yayBscyAtcSBcCisgICAgICAgIC0tZmlsdGVyIGxhYmVsPWNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkKSIgfHwgZGllICJjb3VsZCBub3QgZW51bWVyYXRlIHByaW9yIGV2YWx1YXRvciBuZXR3b3JrcyIKKyAgICBbIC16ICIkbmV0d29ya3MiIF0gfHwgZGllICJwcmlvciBldmFsdWF0b3IgbmV0d29ya3Mgc3RpbGwgZXhpc3QiCisgICAgbW91bnRzPSIkKHRpbWVvdXQgLS1zaWduYWw9VEVSTSAtLWtpbGwtYWZ0ZXI9MXMgM3MgZmluZG1udCAtcm4gLW8gRlNUWVBFLFNPVVJDRSkiIHx8CisgICAgICAgIGRpZSAiY291bGQgbm90IGVudW1lcmF0ZSBwcmlvciBldmFsdWF0b3IgZXZpZGVuY2UgbW91bnRzIgorICAgIFsgLW4gIiRtb3VudHMiIF0gfHwgZGllICJob3N0IG1vdW50IGVudW1lcmF0aW9uIHdhcyBlbXB0eSIKKyAgICB3aGlsZSByZWFkIC1yIGZpbGVzeXN0ZW0gc291cmNlOyBkbworICAgICAgICBpZiBbICIkZmlsZXN5c3RlbSIgPSB0bXBmcyBdOyB0aGVuCisgICAgICAgICAgICBjYXNlICIkc291cmNlIiBpbgorICAgICAgICAgICAgICAgIHVybmV0d29yay1ldmlkZW5jZS0qKSBkaWUgInByaW9yIGV2YWx1YXRvciBldmlkZW5jZSBtb3VudCBzdGlsbCBleGlzdHMiIDs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgIGZpCisgICAgZG9uZSA8PDwiJG1vdW50cyIKK30KKworb25fZXJyb3IoKSB7CisgICAgbG9jYWwgbGluZT0iJDEiIHJjPSIkMiIKKyAgICBpZiBbICIkQkFTSF9TVUJTSEVMTCIgLWVxIDAgXTsgdGhlbgorICAgICAgICBmYWlsdXJlX2xpbmU9IiRsaW5lIgorICAgICAgICBsb2cgIkVSUk9SOiBldmFsdWF0b3IgY29tbWFuZCBmYWlsZWQgYXQgbGluZSAkbGluZSAoZXhpdCAkcmMpIgorICAgIGZpCisgICAgcmV0dXJuICIkcmMiCit9CisKK3VzYWdlKCkgeworICAgIHByaW50ZiAnJXNcbicgJ3VzYWdlOiBjb21wZXRpdGlvbi1ldmFsdWF0b3IgLS1yZXF1ZXN0IEFCU09MVVRFX1JFUVVFU1QgLS1yZXN1bHQgQUJTT0xVVEVfUkVTVUxUJworfQorCit3aGlsZSBbICIkIyIgLWd0IDAgXTsgZG8KKyAgICBjYXNlICIkMSIgaW4KKyAgICAgICAgLS1yZXF1ZXN0fC0tcmVzdWx0KQorICAgICAgICAgICAgWyAiJCMiIC1nZSAyIF0gfHwgeyB1c2FnZSA+JjI7IGV4aXQgMjsgfQorICAgICAgICAgICAgY2FzZSAiJDEiIGluCisgICAgICAgICAgICAgICAgLS1yZXF1ZXN0KSByZXF1ZXN0X3BhdGg9IiQyIiA7OworICAgICAgICAgICAgICAgIC0tcmVzdWx0KSByZXN1bHRfcGF0aD0iJDIiIDs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICBzaGlmdCAyCisgICAgICAgICAgICA7OworICAgICAgICAtaHwtLWhlbHApCisgICAgICAgICAgICB1c2FnZQorICAgICAgICAgICAgZXhpdCAwCisgICAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgICAgdXNhZ2UgPiYyCisgICAgICAgICAgICBleGl0IDIKKyAgICAgICAgICAgIDs7CisgICAgZXNhYworZG9uZQorCitjbGVhbnVwKCkgeworICAgIGxvY2FsIHJjPSQ/CisgICAgc2V0ICtlCisgICAgaWYgWyAtbiAiJHthY3RpdmVfYnVpbGRfbG9nX3BpZDotfSIgXTsgdGhlbgorICAgICAgICBraWxsICIkYWN0aXZlX2J1aWxkX2xvZ19waWQiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgICAgIHdhaXQgIiRhY3RpdmVfYnVpbGRfbG9nX3BpZCIgPi9kZXYvbnVsbCAyPiYxIHx8IHRydWUKKyAgICAgICAgYWN0aXZlX2J1aWxkX2xvZ19waWQ9IiIKKyAgICBmaQorICAgIGlmIFsgLW4gIiR7YWN0aXZlX2J1aWxkX2xvZ19waXBlOi19IiBdOyB0aGVuCisgICAgICAgIHJtIC1mIC0tICIkYWN0aXZlX2J1aWxkX2xvZ19waXBlIgorICAgICAgICBhY3RpdmVfYnVpbGRfbG9nX3BpcGU9IiIKKyAgICBmaQorICAgIGlmIFsgLW4gIiR7YWN0aXZlX3NhbXBsZXJfcGlkOi19IiBdOyB0aGVuCisgICAgICAgIGtpbGwgIiRhY3RpdmVfc2FtcGxlcl9waWQiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgICAgIHdhaXQgIiRhY3RpdmVfc2FtcGxlcl9waWQiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgICAgIGFjdGl2ZV9zYW1wbGVyX3BpZD0iIgorICAgIGZpCisgICAgaWYgWyAtbiAiJHthY3RpdmVfcHJvamVjdDotfSIgXSAmJiBbIC1uICIke2FjdGl2ZV9jb21wb3NlX2VudjotfSIgXSAmJiBbIC1mICIkYWN0aXZlX2NvbXBvc2VfZW52IiBdOyB0aGVuCisgICAgICAgIGNvbXBvc2Vfd2l0aCAiJGFjdGl2ZV9wcm9qZWN0IiAiJGFjdGl2ZV9jb21wb3NlX2VudiIgLS1wcm9maWxlIHJ1biAtLXByb2ZpbGUgc2NvcmUgXAorICAgICAgICAgICAgZG93biAtLXZvbHVtZXMgLS1yZW1vdmUtb3JwaGFucyA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQorICAgIGZpCisgICAgaWYgWyAtbiAiJHtqb2JfaWQ6LX0iIF07IHRoZW4KKyAgICAgICAgd2hpbGUgSUZTPSByZWFkIC1yIGNvbnRhaW5lcl9pZDsgZG8KKyAgICAgICAgICAgIFsgLW4gIiRjb250YWluZXJfaWQiIF0gJiYgc3VkbyAtbiBkb2NrZXIgcm0gLWYgIiRjb250YWluZXJfaWQiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgICAgIGRvbmUgPCA8KHN1ZG8gLW4gZG9ja2VyIHBzIC1hcSAtLWZpbHRlciAibGFiZWw9Y29tLnVybmV0d29yay5jb21wZXRpdGlvbi5qb2ItaWQ9JGpvYl9pZCIgMj4vZGV2L251bGwgfHwgdHJ1ZSkKKyAgICAgICAgd2hpbGUgSUZTPSByZWFkIC1yIG5ldHdvcmtfaWQ7IGRvCisgICAgICAgICAgICBbIC1uICIkbmV0d29ya19pZCIgXSAmJiBzdWRvIC1uIGRvY2tlciBuZXR3b3JrIHJtICIkbmV0d29ya19pZCIgPi9kZXYvbnVsbCAyPiYxIHx8IHRydWUKKyAgICAgICAgZG9uZSA8IDwoc3VkbyAtbiBkb2NrZXIgbmV0d29yayBscyAtcSAtLWZpbHRlciAibGFiZWw9Y29tLnVybmV0d29yay5jb21wZXRpdGlvbi5qb2ItaWQ9JGpvYl9pZCIgMj4vZGV2L251bGwgfHwgdHJ1ZSkKKyAgICBmaQorICAgIGlmIFsgLW4gIiR7YXJ0aWZhY3RfZGlyOi19IiBdICYmIFsgLWYgIiRhcnRpZmFjdF9kaXIvZXZhbHVhdG9yLWZhaWx1cmUuanNvbiIgXTsgdGhlbgorICAgICAgICBsb2NhbCByZXNpZHVhbF9jb250YWluZXJzIHJlc2lkdWFsX25ldHdvcmtzCisgICAgICAgIGlmIHJlc2lkdWFsX2NvbnRhaW5lcnM9IiQoc3VkbyAtbiB0aW1lb3V0IC0tc2lnbmFsPVRFUk0gLS1raWxsLWFmdGVyPTFzIDNzIGRvY2tlciBwcyAtYXEgXAorICAgICAgICAgICAgICAgLS1maWx0ZXIgImxhYmVsPWNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkPSRqb2JfaWQiKSIgJiYKKyAgICAgICAgICAgcmVzaWR1YWxfbmV0d29ya3M9IiQoc3VkbyAtbiB0aW1lb3V0IC0tc2lnbmFsPVRFUk0gLS1raWxsLWFmdGVyPTFzIDNzIGRvY2tlciBuZXR3b3JrIGxzIC1xIFwKKyAgICAgICAgICAgICAgIC0tZmlsdGVyICJsYWJlbD1jb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLmpvYi1pZD0kam9iX2lkIikiICYmCisgICAgICAgICAgIFsgLXogIiRyZXNpZHVhbF9jb250YWluZXJzIiBdICYmIFsgLXogIiRyZXNpZHVhbF9uZXR3b3JrcyIgXTsgdGhlbgorICAgICAgICAgICAgOgorICAgICAgICBlbHNlCisgICAgICAgICAgICAjIEEgY2FuZGlkYXRlIGZhaWx1cmUgY2Fubm90IGJlY29tZSB0ZXJtaW5hbCB3aGlsZSBmYWlsZWQgaG9zdAorICAgICAgICAgICAgIyBjbGVhbnVwIG1pZ2h0IGNvbnRhbWluYXRlIHRoZSBuZXh0IGF0dGVtcHQncyBtZWFzdXJlbWVudHMuCisgICAgICAgICAgICBybSAtZiAtLSAiJGFydGlmYWN0X2Rpci9ldmFsdWF0b3ItZmFpbHVyZS5qc29uIgorICAgICAgICAgICAgbG9nICJFUlJPUjogc3RhZ2UgZmFpbHVyZSBjbGFzc2lmaWNhdGlvbiBpbnZhbGlkYXRlZCBieSBpbmNvbXBsZXRlIGNsZWFudXAiCisgICAgICAgIGZpCisgICAgZmkKKyAgICBpZiBbICIkcmMiIC1uZSAwIF0gJiYgWyAtbiAiJHthY3RpdmVfd29ya19tb3VudDotfSIgXSAmJgorICAgICAgIFsgIiRhY3RpdmVfd29ya19tb3VudCIgPSAiJHthcnRpZmFjdF9kaXI6LX0vLmV2aWRlbmNlLXJ1bnRpbWUiIF0gJiYKKyAgICAgICBtb3VudHBvaW50IC1xICIkYWN0aXZlX3dvcmtfbW91bnQiICYmIFsgLXggIiRSRVRBSU5fRkFJTFVSRV9FVklERU5DRSIgXTsgdGhlbgorICAgICAgICBpZiBlbnYgXAorICAgICAgICAgICAgRkFJTFVSRV9KT0JfSUQ9IiR7am9iX2lkOi19IiBcCisgICAgICAgICAgICBGQUlMVVJFX1JPVU5EX0lEPSIke3JvdW5kX2lkOi19IiBcCisgICAgICAgICAgICBGQUlMVVJFX0FUVEVNUFQ9IiR7YXR0ZW1wdDotfSIgXAorICAgICAgICAgICAgRkFJTFVSRV9FWElUX0NPREU9IiRyYyIgXAorICAgICAgICAgICAgRkFJTFVSRV9FVkFMVUFUT1JfTElORT0iJGZhaWx1cmVfbGluZSIgXAorICAgICAgICAgICAgIiRSRVRBSU5fRkFJTFVSRV9FVklERU5DRSIgXAorICAgICAgICAgICAgICAgICIkYWN0aXZlX3dvcmtfbW91bnQiICIkYXJ0aWZhY3RfZGlyL2ZhaWxlZC1ldmlkZW5jZSI7IHRoZW4KKyAgICAgICAgICAgIGxvZyAicmV0YWluZWQgc2FuaXRpemVkIGZhaWx1cmUgZXZpZGVuY2U6ICRhcnRpZmFjdF9kaXIvZmFpbGVkLWV2aWRlbmNlIgorICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2cgIkVSUk9SOiBjb3VsZCBub3QgcmV0YWluIHNhbml0aXplZCBmYWlsdXJlIGV2aWRlbmNlIgorICAgICAgICBmaQorICAgIGZpCisgICAgbG9jYWwgd29ya19jbGVhbnVwX2NvbXBsZXRlPXRydWUKKyAgICBpZiBbIC1uICIke2FjdGl2ZV93b3JrX21vdW50Oi19IiBdICYmIG1vdW50cG9pbnQgLXEgIiRhY3RpdmVfd29ya19tb3VudCI7IHRoZW4KKyAgICAgICAgc3VkbyAtbiB0aW1lb3V0IC0tc2lnbmFsPVRFUk0gLS1raWxsLWFmdGVyPTFzIDNzIHVtb3VudCAiJGFjdGl2ZV93b3JrX21vdW50IiA+L2Rldi9udWxsIDI+JjEgfHwKKyAgICAgICAgICAgIHdvcmtfY2xlYW51cF9jb21wbGV0ZT1mYWxzZQorICAgIGZpCisgICAgaWYgWyAtbiAiJHthY3RpdmVfd29ya19tb3VudDotfSIgXSAmJiBbIC1kICIkYWN0aXZlX3dvcmtfbW91bnQiIF07IHRoZW4KKyAgICAgICAgcm1kaXIgIiRhY3RpdmVfd29ya19tb3VudCIgPi9kZXYvbnVsbCAyPiYxIHx8IHdvcmtfY2xlYW51cF9jb21wbGV0ZT1mYWxzZQorICAgIGZpCisgICAgaWYgWyAiJHdvcmtfY2xlYW51cF9jb21wbGV0ZSIgIT0gdHJ1ZSBdOyB0aGVuCisgICAgICAgIFsgLXogIiR7YXJ0aWZhY3RfZGlyOi19IiBdIHx8IHJtIC1mIC0tICIkYXJ0aWZhY3RfZGlyL2V2YWx1YXRvci1mYWlsdXJlLmpzb24iCisgICAgICAgIGxvZyAiRVJST1I6IHN0YWdlIGZhaWx1cmUgY2xhc3NpZmljYXRpb24gaW52YWxpZGF0ZWQgYnkgaW5jb21wbGV0ZSBldmlkZW5jZSB0bXBmcyBjbGVhbnVwIgorICAgIGZpCisgICAgaWYgWyAtbiAiJHthcnRpZmFjdF9kaXI6LX0iIF0gJiYgWyAtZCAiJGFydGlmYWN0X2RpciIgXTsgdGhlbgorICAgICAgICBzdWRvIC1uIGNob3duIC1SICIkd29ya2VyX3VpZDokd29ya2VyX2dpZCIgIiRhcnRpZmFjdF9kaXIiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgZmkKKyAgICBleGl0ICIkcmMiCit9Cit0cmFwICdvbl9lcnJvciAiJExJTkVOTyIgIiQ/IicgRVJSCit0cmFwIGNsZWFudXAgRVhJVAordHJhcCAnZXhpdCAxMzAnIElOVAordHJhcCAnZXhpdCAxNDMnIFRFUk0KKworZm9yIGNvbW1hbmQgaW4gYXdrIGNhdCBjcCBkYXRlIGRmIGZpbmQgZmluZG1udCBnaXQgaGVhZCBpbnN0YWxsIGpxIG1rZmlmbyBtb3VudCBtb3VudHBvaW50IG9wZW5zc2wgcmVhbHBhdGggc2VkIHNoYTI1NnN1bSBzb3J0IHN0YXQgc3VkbyBzeW5jIHRhaWwgdGFza3NldCB0aW1lb3V0IHVtb3VudDsgZG8KKyAgICByZXF1aXJlX2NvbW1hbmQgIiRjb21tYW5kIgorZG9uZQorY2hlY2tfZXZhbHVhdG9yX3Jlc2lkdWFsX3Jlc291cmNlcworc3VkbyAtbiBkb2NrZXIgaW5mbyA+L2Rldi9udWxsCitbIC14ICIkQlVJTERfU1VCTUlTU0lPTiIgXSB8fCBkaWUgInRydXN0ZWQgc3VibWlzc2lvbiBidWlsZGVyIGlzIG5vdCBleGVjdXRhYmxlIgorWyAteCAiJFBSRVBBUkVfRVZBTFVBVElPTl9TT1VSQ0UiIF0gfHwgZGllICJ0cnVzdGVkIGV2YWx1YXRpb24gc291cmNlIHByZXBhcmVyIGlzIG5vdCBleGVjdXRhYmxlIgorWyAteCAiJFJFU09VUkNFX0JPVU5EQVJZIiBdIHx8IGRpZSAidHJ1c3RlZCByZXNvdXJjZSBib3VuZGFyeSBpcyBub3QgZXhlY3V0YWJsZSIKK1sgLXggIiRORVRXT1JLX0JPVU5EQVJZIiBdIHx8IGRpZSAidHJ1c3RlZCBuZXR3b3JrIGJvdW5kYXJ5IGlzIG5vdCBleGVjdXRhYmxlIgorWyAteCAiJERPQ0tFUl9JRF9NQVAiIF0gfHwgZGllICJ0cnVzdGVkIERvY2tlciBpZC1tYXAgcmVzb2x2ZXIgaXMgbm90IGV4ZWN1dGFibGUiCitbIC14ICIkSEFTSF9MT0NBTF9NT1VOVCIgXSB8fCBkaWUgInRydXN0ZWQgbG9jYWwtbW91bnQgZGlnZXN0IGhlbHBlciBpcyBub3QgZXhlY3V0YWJsZSIKK1sgLXggIiRSRVRBSU5fRkFJTFVSRV9FVklERU5DRSIgXSB8fCBkaWUgInRydXN0ZWQgZmFpbHVyZSBldmlkZW5jZSByZXRhaW5lciBpcyBub3QgZXhlY3V0YWJsZSIKK1sgLWYgIiRQT1NUR1JFU19JTklUIiBdIHx8IGRpZSAidHJ1c3RlZCBQb3N0Z3JlU1FMIGluaXRpYWxpemVyIGlzIG1pc3NpbmciCitbIC14ICIkVElNRU9VVF9CVURHRVQiIF0gfHwgZGllICJ0cnVzdGVkIHRpbWVvdXQtYnVkZ2V0IGNhbGN1bGF0b3IgaXMgbm90IGV4ZWN1dGFibGUiCitbIC1mICIkQ09NUE9TRV9GSUxFIiBdIHx8IGRpZSAidHJ1c3RlZCBDb21wb3NlIGRlZmluaXRpb24gaXMgbWlzc2luZyIKKworW1sgIiRyZXF1ZXN0X3BhdGgiID0gLyogJiYgIiRyZXN1bHRfcGF0aCIgPSAvKiBdXSB8fCBkaWUgInJlcXVlc3QgYW5kIHJlc3VsdCBwYXRocyBtdXN0IGJlIGFic29sdXRlIgorWyAtZiAiJHJlcXVlc3RfcGF0aCIgXSAmJiBbICEgLUwgIiRyZXF1ZXN0X3BhdGgiIF0gfHwgZGllICJyZXF1ZXN0IG11c3QgYmUgYSByZWd1bGFyIG5vbi1zeW1saW5rIGZpbGUiCitbICEgLWUgIiRyZXN1bHRfcGF0aCIgXSB8fCBkaWUgInJlc3VsdCBwYXRoIGFscmVhZHkgZXhpc3RzIgorWyAiJChmaWxlX2J5dGVzICIkcmVxdWVzdF9wYXRoIikiIC1sZSAiJE1BWF9SRVFVRVNUX0JZVEVTIiBdIHx8IGRpZSAicmVxdWVzdCBpcyBvdmVyc2l6ZWQiCityZXF1ZXN0X3BhdGg9IiQocmVhbHBhdGggLWUgIiRyZXF1ZXN0X3BhdGgiKSIKK2FydGlmYWN0X2Rpcj0iJChkaXJuYW1lICIkcmVxdWVzdF9wYXRoIikiCitbICIkcmVzdWx0X3BhdGgiID0gIiRhcnRpZmFjdF9kaXIvd29ya2VyLXJlc3VsdC5qc29uIiBdIHx8IGRpZSAicmVzdWx0IHBhdGggaXMgb3V0c2lkZSB0aGUgYXR0ZW1wdCBkaXJlY3RvcnkiCisKK3ZhbGlkYXRlX3dvcmtlcl9yZXF1ZXN0X3NjaGVtYSAiJHJlcXVlc3RfcGF0aCIgfHwgZGllICJyZXF1ZXN0IHNjaGVtYSBvciBmaWVsZHMgYXJlIGludmFsaWQiCisKK2pvYl9pZD0iJChqcSAtZXIgJy5qb2JfaWQnICIkcmVxdWVzdF9wYXRoIikiCitzdGFnaW5nPSIkKGpxIC1yICcuc3RhZ2luZyAvLyBmYWxzZScgIiRyZXF1ZXN0X3BhdGgiKSIKK3NvdXJjZV9icmFuY2g9c2ltLWxhdGVuY3kKK3NvdXJjZV9tb2RlX2FyZ3M9KCkKK2lmIFsgIiRzdGFnaW5nIiA9IHRydWUgXTsgdGhlbgorICAgIHNvdXJjZV9icmFuY2g9c2ltLWxhdGVuY3ktc3RhZ2luZworICAgIHNvdXJjZV9tb2RlX2FyZ3M9KC0tc3RhZ2luZykKK2ZpCitSRVBPU0lUT1JJRVM9KHNlcnZlciBjb25uZWN0IHNkayBwcm94eSBnbG9nIGdvaWRlbnRpY29ucyB1c2Vyd2lyZWd1YXJkIHNuIHdhcnAgZ3Zpc29yKQorcmVhZG9ubHkgUkVQT1NJVE9SSUVTCityZXBvc2l0b3J5X25hbWVzX2pzb249IiQocHJpbnRmICclc1xuJyAiJHtSRVBPU0lUT1JJRVNbQF19IiB8IGpxIC1Sc2MgJ3NwbGl0KCJcbiIpWzotMV0nKSIKK3JvdW5kX2lkPSIkKGpxIC1lciAnLnJvdW5kX2lkJyAiJHJlcXVlc3RfcGF0aCIpIgorc291cmNlX2Vwb2NoPSIkKGpxIC1lciAnLnNvdXJjZV9lcG9jaCcgIiRyZXF1ZXN0X3BhdGgiKSIKK2F0dGVtcHQ9IiQoanEgLWVyICcuYXR0ZW1wdCcgIiRyZXF1ZXN0X3BhdGgiKSIKK2NvbXBldGl0aW9uX2lkPSIkKGpxIC1lciAnLmNvbXBldGl0aW9uX2lkJyAiJHJlcXVlc3RfcGF0aCIpIgorYmFzZV9zaGE9IiQoanEgLWVyICcuYmFzZV9zaGEnICIkcmVxdWVzdF9wYXRoIikiCitiYXNlX2ltYWdlPSIkKGpxIC1lciAnLmV2YWx1YXRvcl9pbWFnZV9kaWdlc3QnICIkcmVxdWVzdF9wYXRoIikiCithcGlfY29udHJvbF9pbWFnZT0iJChqcSAtZXIgJy5hcGlfaW1hZ2VfZGlnZXN0JyAiJHJlcXVlc3RfcGF0aCIpIgord29ya2VyX2NvbnRyb2xfaW1hZ2U9IiQoanEgLWVyICcud29ya2VyX2ltYWdlX2RpZ2VzdCcgIiRyZXF1ZXN0X3BhdGgiKSIKK3Njb3Jlcl92ZXJzaW9uPSIkKGpxIC1lciAnLnNjb3Jlcl92ZXJzaW9uJyAiJHJlcXVlc3RfcGF0aCIpIgorZzJfdm9sdW1lX3BvbGljeT0iJChqcSAtciAnLmV2YWx1YXRpb25fcG9saWN5LmcyX3ZvbHVtZV9wb2xpY3kgLy8gIiInICIkcmVxdWVzdF9wYXRoIikiCitwcm92aWRlcnNfcGF0aD0iJChqcSAtZXIgJy5wcm92aWRlcnNfcGF0aCcgIiRyZXF1ZXN0X3BhdGgiKSIKK3Byb3ZpZGVyc19zaGEyNTY9IiQoanEgLWVyICcucHJvdmlkZXJzX3NoYTI1NicgIiRyZXF1ZXN0X3BhdGgiKSIKK3JvdW5kX2Jhc2VsaW5lX3BhdGg9IiQoanEgLWVyICcucm91bmRfYmFzZWxpbmVfcGF0aCcgIiRyZXF1ZXN0X3BhdGgiKSIKK3JvdW5kX2Jhc2VsaW5lX3NoYTI1Nj0iJChqcSAtZXIgJy5yb3VuZF9iYXNlbGluZV9zaGEyNTYnICIkcmVxdWVzdF9wYXRoIikiCitwYXRjaF9wYXRoPSIkKGpxIC1lciAnLnBhdGNoX3BhdGgnICIkcmVxdWVzdF9wYXRoIikiCitwYXRjaF9zaGEyNTY9IiQoanEgLWVyICcucGF0Y2hfc2hhMjU2JyAiJHJlcXVlc3RfcGF0aCIpIgorcmVxdWVzdF9hcnRpZmFjdF9kaXI9IiQoanEgLWVyICcuYXJ0aWZhY3RfZGlyZWN0b3J5JyAiJHJlcXVlc3RfcGF0aCIpIgorY29uZmlnX2xvY2FsX2RpcmVjdG9yeT0iJChqcSAtZXIgJy5jb25maWdfbG9jYWxfZGlyZWN0b3J5JyAiJHJlcXVlc3RfcGF0aCIpIgordmF1bHRfbG9jYWxfZGlyZWN0b3J5PSIkKGpxIC1lciAnLnZhdWx0X2xvY2FsX2RpcmVjdG9yeScgIiRyZXF1ZXN0X3BhdGgiKSIKK2NvbmZpZ19sb2NhbF9zaGEyNTY9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kuY29uZmlnX2xvY2FsX3NoYTI1NicgIiRyZXF1ZXN0X3BhdGgiKSIKK3ZhdWx0X2xvY2FsX3NoYTI1Nj0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS52YXVsdF9sb2NhbF9zaGEyNTYnICIkcmVxdWVzdF9wYXRoIikiCityZXBsaWNhdGVzPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnJlcGxpY2F0ZXMnICIkcmVxdWVzdF9wYXRoIikiCisKK1tbICIkam9iX2lkIiA9fiBeWzAtOWEtZi1dezM2fSQgXV0gfHwgZGllICJqb2IgaWQgaXMgaW52YWxpZCIKK1tbICIkcm91bmRfaWQiID1+IF5bMC05YS1mLV17MzZ9JCBdXSB8fCBkaWUgInJvdW5kIGlkIGlzIGludmFsaWQiCitbWyAiJHNvdXJjZV9lcG9jaCIgPX4gXlswLTZdJCBdXSB8fCBkaWUgInNvdXJjZSBlcG9jaCBpcyBpbnZhbGlkIgorW1sgIiRhdHRlbXB0IiA9fiBeWzEtOV1bMC05XSokIF1dIHx8IGRpZSAiYXR0ZW1wdCBpcyBpbnZhbGlkIgorIyBBIHN5c3RlbWQgc2xpY2UgbWF5IHJldGFpbiBjb3VudGVycyBhZnRlciBpdHMgbGFzdCBEb2NrZXIgY2hpbGQgZGlzYXBwZWFycy4KKyMgSW5jbHVkZSB0aGUgYXV0aGVudGljYXRlZCByZXRyeSBpZGVudGl0eSB3aXRob3V0IHRydW5jYXRpbmcgc3RhZ2Ugc3VmZml4ZXMuCithdHRlbXB0X3Rva2VuPSIkKHByaW50ZiAnJXM6JXMnICIkam9iX2lkIiAiJGF0dGVtcHQiIHwgc2hhMjU2c3VtIHwgYXdrICd7cHJpbnQgc3Vic3RyKCQxLCAxLCAzMil9JykiCitbWyAiJGNvbXBldGl0aW9uX2lkIiA9fiBeW0EtWmEtejAtOS5fLV17MSwxMjh9JCBdXSB8fCBkaWUgImNvbXBldGl0aW9uIGlkIGlzIGludmFsaWQiCitbWyAiJGJhc2Vfc2hhIiA9fiBeWzAtOWEtZl17NDB9JCBdXSB8fCBkaWUgImJhc2UgU0hBIGlzIGludmFsaWQiCitbWyAiJGJhc2VfaW1hZ2UiID1+IF5zaGEyNTY6WzAtOWEtZl17NjR9JCBdXSB8fCBkaWUgImJhc2UgaW1hZ2UgaWQgaXMgaW52YWxpZCIKK1tbICIkYXBpX2NvbnRyb2xfaW1hZ2UiID1+IF5zaGEyNTY6WzAtOWEtZl17NjR9JCBdXSB8fCBkaWUgIkFQSSBjb250cm9sIGltYWdlIGlkIGlzIGludmFsaWQiCitbWyAiJHdvcmtlcl9jb250cm9sX2ltYWdlIiA9fiBec2hhMjU2OlswLTlhLWZdezY0fSQgXV0gfHwgZGllICJ3b3JrZXIgY29udHJvbCBpbWFnZSBpZCBpcyBpbnZhbGlkIgorY2FzZSAiJGcyX3ZvbHVtZV9wb2xpY3k6JHNjb3Jlcl92ZXJzaW9uIiBpbgorICAgIDpzaW0tbGF0ZW5jeS1zY29yZS8xfG1pbmltdW0td29yay8xOnNpbS1sYXRlbmN5LXNjb3JlLzIpIDs7CisgICAgKikgZGllICJzY29yZXIgdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCBmcm96ZW4gZzIgdm9sdW1lIHBvbGljeSIgOzsKK2VzYWMKK1tbICIkcHJvdmlkZXJzX3NoYTI1NiIgPX4gXlswLTlhLWZdezY0fSQgXV0gfHwgZGllICJwcm92aWRlcnMgU0hBLTI1NiBpcyBpbnZhbGlkIgorW1sgIiRwYXRjaF9zaGEyNTYiID1+IF5bMC05YS1mXXs2NH0kIF1dIHx8IGRpZSAicGF0Y2ggU0hBLTI1NiBpcyBpbnZhbGlkIgorW1sgIiRjb25maWdfbG9jYWxfc2hhMjU2IiA9fiBeWzAtOWEtZl17NjR9JCBdXSB8fCBkaWUgImNvbmZpZy9sb2NhbCBTSEEtMjU2IGlzIGludmFsaWQiCitbWyAiJHZhdWx0X2xvY2FsX3NoYTI1NiIgPX4gXlswLTlhLWZdezY0fSQgXV0gfHwgZGllICJ2YXVsdC9sb2NhbCBTSEEtMjU2IGlzIGludmFsaWQiCitbWyAiJHJlcGxpY2F0ZXMiID1+IF5bMTM1NzldJCBdXSB8fCBkaWUgInJlcGxpY2F0ZSBjb3VudCBtdXN0IGJlIG9kZCBhbmQgaW4gMS4uOSIKK1sgIiRyZXF1ZXN0X2FydGlmYWN0X2RpciIgPSAiJGFydGlmYWN0X2RpciIgXSB8fCBkaWUgInJlcXVlc3QgYXJ0aWZhY3QgZGlyZWN0b3J5IGlkZW50aXR5IG1pc21hdGNoIgorWyAiJHBhdGNoX3BhdGgiID0gIiRhcnRpZmFjdF9kaXIvY2Fub25pY2FsLnBhdGNoIiBdIHx8IGRpZSAicGF0Y2ggcGF0aCBpZGVudGl0eSBtaXNtYXRjaCIKK1sgLWYgIiRwYXRjaF9wYXRoIiBdICYmIFsgISAtTCAiJHBhdGNoX3BhdGgiIF0gfHwgZGllICJjYW5vbmljYWwgcGF0Y2ggaXMgbWlzc2luZyBvciB1bnNhZmUiCitbICIkKHNoYTI1Nl9maWxlICIkcGF0Y2hfcGF0aCIpIiA9ICIkcGF0Y2hfc2hhMjU2IiBdIHx8IGRpZSAiY2Fub25pY2FsIHBhdGNoIGhhc2ggbWlzbWF0Y2giCitbIC1mICIkcHJvdmlkZXJzX3BhdGgiIF0gJiYgWyAhIC1MICIkcHJvdmlkZXJzX3BhdGgiIF0gfHwgZGllICJwcm92aWRlcnMgZmlsZSBpcyBtaXNzaW5nIG9yIHVuc2FmZSIKK1sgIiQoZmlsZV9ieXRlcyAiJHByb3ZpZGVyc19wYXRoIikiIC1sZSAiJE1BWF9QUk9WSURFUlNfQllURVMiIF0gfHwgZGllICJwcm92aWRlcnMgZmlsZSBpcyBvdmVyc2l6ZWQiCitbICIkKHNoYTI1Nl9maWxlICIkcHJvdmlkZXJzX3BhdGgiKSIgPSAiJHByb3ZpZGVyc19zaGEyNTYiIF0gfHwgZGllICJwcm92aWRlcnMgZmlsZSBoYXNoIG1pc21hdGNoIgoraWYgWyAtbiAiJHJvdW5kX2Jhc2VsaW5lX3BhdGgiIF0gfHwgWyAtbiAiJHJvdW5kX2Jhc2VsaW5lX3NoYTI1NiIgXTsgdGhlbgorICAgIFsgIiRyb3VuZF9iYXNlbGluZV9wYXRoIiA9ICIkYXJ0aWZhY3RfZGlyL3JvdW5kLWJhc2VsaW5lLmpzb24iIF0gfHwKKyAgICAgICAgZGllICJyb3VuZCBiYXNlbGluZSBwYXRoIGlkZW50aXR5IG1pc21hdGNoIgorICAgIFtbICIkcm91bmRfYmFzZWxpbmVfc2hhMjU2IiA9fiBeWzAtOWEtZl17NjR9JCBdXSB8fCBkaWUgInJvdW5kIGJhc2VsaW5lIFNIQS0yNTYgaXMgaW52YWxpZCIKKyAgICBbIC1mICIkcm91bmRfYmFzZWxpbmVfcGF0aCIgXSAmJiBbICEgLUwgIiRyb3VuZF9iYXNlbGluZV9wYXRoIiBdIHx8CisgICAgICAgIGRpZSAicm91bmQgYmFzZWxpbmUgaXMgbWlzc2luZyBvciB1bnNhZmUiCisgICAgWyAiJChmaWxlX2J5dGVzICIkcm91bmRfYmFzZWxpbmVfcGF0aCIpIiAtbGUgIiRNQVhfUkVRVUVTVF9CWVRFUyIgXSB8fCBkaWUgInJvdW5kIGJhc2VsaW5lIGlzIG92ZXJzaXplZCIKKyAgICBbICIkKHNoYTI1Nl9maWxlICIkcm91bmRfYmFzZWxpbmVfcGF0aCIpIiA9ICIkcm91bmRfYmFzZWxpbmVfc2hhMjU2IiBdIHx8CisgICAgICAgIGRpZSAicm91bmQgYmFzZWxpbmUgaGFzaCBtaXNtYXRjaCIKK2ZpCitqcSAtZSAnLnJvdW5kX3NlZWRfaGV4IHwgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXlswLTlhLWZdezY0fSQiKScgIiRyZXF1ZXN0X3BhdGgiID4vZGV2L251bGwgfHwKKyAgICBkaWUgImhpZGRlbiByb3VuZCBzZWVkIGlzIG1hbGZvcm1lZCIKKworZm9yIGxvY2FsX2RpcmVjdG9yeSBpbiAiJGNvbmZpZ19sb2NhbF9kaXJlY3RvcnkiICIkdmF1bHRfbG9jYWxfZGlyZWN0b3J5IjsgZG8KKyAgICBbWyAiJGxvY2FsX2RpcmVjdG9yeSIgPSAvKiBdXSB8fCBkaWUgImRpcmVjdCBsb2NhbCBtb3VudCBwYXRoIG11c3QgYmUgYWJzb2x1dGUiCisgICAgWyAiJGxvY2FsX2RpcmVjdG9yeSIgPSAiJChyZWFscGF0aCAtZSAiJGxvY2FsX2RpcmVjdG9yeSIpIiBdIHx8CisgICAgICAgIGRpZSAiZGlyZWN0IGxvY2FsIG1vdW50IHBhdGggaXMgbm90IGNhbm9uaWNhbCIKK2RvbmUKK1sgIiR7Y29uZmlnX2xvY2FsX2RpcmVjdG9yeSMjKi99IiA9IGxvY2FsIF0gJiYKKyAgICBbICIke2NvbmZpZ19sb2NhbF9kaXJlY3RvcnklLyp9IiAhPSAiJGNvbmZpZ19sb2NhbF9kaXJlY3RvcnkiIF0gJiYKKyAgICBbICIke2NvbmZpZ19sb2NhbF9kaXJlY3RvcnklLyp9IiA9ICIke2NvbmZpZ19sb2NhbF9kaXJlY3RvcnklL2NvbmZpZy9sb2NhbH0vY29uZmlnIiBdIHx8CisgICAgZGllICJjb25maWcgbW91bnQgaXMgbm90IHRoZSBleGFjdCBjb25maWcvbG9jYWwgbGVhZiIKK1sgIiR7dmF1bHRfbG9jYWxfZGlyZWN0b3J5IyMqL30iID0gbG9jYWwgXSAmJgorICAgIFsgIiR7dmF1bHRfbG9jYWxfZGlyZWN0b3J5JS8qfSIgIT0gIiR2YXVsdF9sb2NhbF9kaXJlY3RvcnkiIF0gJiYKKyAgICBbICIke3ZhdWx0X2xvY2FsX2RpcmVjdG9yeSUvKn0iID0gIiR7dmF1bHRfbG9jYWxfZGlyZWN0b3J5JS92YXVsdC9sb2NhbH0vdmF1bHQiIF0gfHwKKyAgICBkaWUgInZhdWx0IG1vdW50IGlzIG5vdCB0aGUgZXhhY3QgdmF1bHQvbG9jYWwgbGVhZiIKK2F1dGhlbnRpY2F0ZV9sb2NhbF9tb3VudHMKKworcmVzb3VyY2VfYm91bmRhcnlfanNvbj0iJCgkUkVTT1VSQ0VfQk9VTkRBUlkpIiB8fCBkaWUgImhvc3QgcmVzb3VyY2UgYm91bmRhcnkgaXMgaW52YWxpZCIKK2pxIC1lIFwKKyAgICAtLWFyZyBydW5uZXJfbWVtb3J5X2xpbWl0ICIkUlVOTkVSX01FTU9SWV9MSU1JVCIgXAorICAgIC0tYXJnanNvbiBydW5uZXJfbWVtb3J5X2J5dGVzICIkUlVOTkVSX01FTU9SWV9CWVRFUyIgXAorICAgIC0tYXJnanNvbiBwb3N0Z3Jlc19tZW1vcnlfYnl0ZXMgIiRQT1NUR1JFU19NRU1PUllfQllURVMiIFwKKyAgICAtLWFyZ2pzb24gcmVkaXNfbWVtb3J5X2J5dGVzICIkUkVESVNfTUVNT1JZX0JZVEVTIiBcCisgICAgLS1hcmdqc29uIGFjdGl2ZV9tZW1vcnlfYnl0ZXMgIiRBQ1RJVkVfRVZBTFVBVElPTl9NRU1PUllfQllURVMiIFwKKyAgICAtLWFyZ2pzb24gZXZpZGVuY2VfbWVtb3J5X2J5dGVzICIkRVZJREVOQ0VfV09SS19CWVRFUyIgXAorICAgIC0tYXJnanNvbiByZXNlcnZlX2J5dGVzICIkTUlOSU1VTV9NQU5BR0VNRU5UX01FTU9SWV9SRVNFUlZFX0JZVEVTIiBcCisgICAgJy5zY2hlbWEgPT0gMSBhbmQgLmtpbmQgPT0gInNpbS1sYXRlbmN5LXJlc291cmNlLWJvdW5kYXJ5IiBhbmQKKyAgICAgLmV2YWx1YXRpb25fcGh5c2ljYWxfY29yZV9jb3VudCA9PSAxMCBhbmQKKyAgICAgLm1hbmFnZW1lbnRfcGh5c2ljYWxfY29yZV9jb3VudCA9PSAyIGFuZAorICAgICAuZXZhbHVhdGlvbl9jcHVzZXQgIT0gIiIgYW5kIC5tYW5hZ2VtZW50X2NwdXNldCAhPSAiIiBhbmQKKyAgICAgLmRpc2pvaW50X2NwdV9zZXRzID09IHRydWUgYW5kIC5tZW1vcnlfY2FwYWNpdHlfcGFzc2VkID09IHRydWUgYW5kCisgICAgIC5ydW5uZXJfbWVtb3J5X2xpbWl0ID09ICRydW5uZXJfbWVtb3J5X2xpbWl0IGFuZAorICAgICAucnVubmVyX21lbW9yeV9saW1pdF9ieXRlcyA9PSAkcnVubmVyX21lbW9yeV9ieXRlcyBhbmQKKyAgICAgLnBvc3RncmVzX21lbW9yeV9saW1pdF9ieXRlcyA9PSAkcG9zdGdyZXNfbWVtb3J5X2J5dGVzIGFuZAorICAgICAucmVkaXNfbWVtb3J5X2xpbWl0X2J5dGVzID09ICRyZWRpc19tZW1vcnlfYnl0ZXMgYW5kCisgICAgIC5hY3RpdmVfbWVtb3J5X2xpbWl0X2J5dGVzID09ICRhY3RpdmVfbWVtb3J5X2J5dGVzIGFuZAorICAgICAuZXZpZGVuY2VfbWVtb3J5X2xpbWl0X2J5dGVzID09ICRldmlkZW5jZV9tZW1vcnlfYnl0ZXMgYW5kCisgICAgIC50b3RhbF9ldmFsdWF0aW9uX21lbW9yeV9saW1pdF9ieXRlcyA9PSAoJGFjdGl2ZV9tZW1vcnlfYnl0ZXMgKyAkZXZpZGVuY2VfbWVtb3J5X2J5dGVzKSBhbmQKKyAgICAgLmNhcGFjaXR5X3Jlc2VydmVfYnl0ZXMgPT0gKC5ob3N0X21lbW9yeV9ieXRlcyAtIC50b3RhbF9ldmFsdWF0aW9uX21lbW9yeV9saW1pdF9ieXRlcykgYW5kCisgICAgIC5taW5pbXVtX21hbmFnZW1lbnRfbWVtb3J5X3Jlc2VydmVfYnl0ZXMgPT0gJHJlc2VydmVfYnl0ZXMgYW5kCisgICAgIC5jYXBhY2l0eV9yZXNlcnZlX2J5dGVzID49ICRyZXNlcnZlX2J5dGVzJyBcCisgICAgPDw8IiRyZXNvdXJjZV9ib3VuZGFyeV9qc29uIiA+L2Rldi9udWxsIHx8IGRpZSAicmVzb3VyY2UgYm91bmRhcnkgZG9lcyBub3QgbWF0Y2ggdGhlIGZyb3plbiBldmFsdWF0b3IgcG9saWN5IgorY3B1c2V0PSIkKGpxIC1lciAnLmV2YWx1YXRpb25fY3B1c2V0JyA8PDwiJHJlc291cmNlX2JvdW5kYXJ5X2pzb24iKSIKK21hbmFnZW1lbnRfY3B1c2V0PSIkKGpxIC1lciAnLm1hbmFnZW1lbnRfY3B1c2V0JyA8PDwiJHJlc291cmNlX2JvdW5kYXJ5X2pzb24iKSIKK2V2YWx1YXRpb25fY3B1X2NvdW50PSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcGh5c2ljYWxfY29yZV9jb3VudCcgPDw8IiRyZXNvdXJjZV9ib3VuZGFyeV9qc29uIikiCitleHBlY3RlZF9tYW5hZ2VtZW50X2FmZmluaXR5PSIkKHRhc2tzZXQgLWMgIiRtYW5hZ2VtZW50X2NwdXNldCIgYXdrIC1GOiBcCisgICAgJyQxID09ICJDcHVzX2FsbG93ZWRfbGlzdCIge2dzdWIoL1tbOnNwYWNlOl1dLywgIiIsICQyKTsgcHJpbnQgJDJ9JyAvcHJvYy9zZWxmL3N0YXR1cykiCitpZiBbICIke0NPTVBFVElUSU9OX01BTkFHRU1FTlRfQ1BVU0VUX0FQUExJRUQ6LX0iICE9ICIkbWFuYWdlbWVudF9jcHVzZXQiIF07IHRoZW4KKyAgICBleGVjIGVudiBDT01QRVRJVElPTl9NQU5BR0VNRU5UX0NQVVNFVF9BUFBMSUVEPSIkbWFuYWdlbWVudF9jcHVzZXQiIFwKKyAgICAgICAgdGFza3NldCAtYyAiJG1hbmFnZW1lbnRfY3B1c2V0IiAiJChyZWFscGF0aCAtZSAiJDAiKSIgXAorICAgICAgICAtLXJlcXVlc3QgIiRyZXF1ZXN0X3BhdGgiIC0tcmVzdWx0ICIkcmVzdWx0X3BhdGgiCitmaQorYWN0dWFsX21hbmFnZW1lbnRfYWZmaW5pdHk9IiQoYXdrIC1GOiBcCisgICAgJyQxID09ICJDcHVzX2FsbG93ZWRfbGlzdCIge2dzdWIoL1tbOnNwYWNlOl1dLywgIiIsICQyKTsgcHJpbnQgJDJ9JyAvcHJvYy9zZWxmL3N0YXR1cykiCitbICIkYWN0dWFsX21hbmFnZW1lbnRfYWZmaW5pdHkiID0gIiRleHBlY3RlZF9tYW5hZ2VtZW50X2FmZmluaXR5IiBdIHx8CisgICAgZGllICJldmFsdWF0b3Igd29ya2VyIGlzIG5vdCBjb25maW5lZCB0byB0aGUgZGVkaWNhdGVkIG1hbmFnZW1lbnQgQ1BVcyIKKword29ya19kaXI9IiRhcnRpZmFjdF9kaXIvLmV2aWRlbmNlLXJ1bnRpbWUiCitbICEgLWUgIiR3b3JrX2RpciIgXSB8fCBkaWUgInJ1bnRpbWUgZXZpZGVuY2UgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzIgoraW5zdGFsbCAtZCAtbSAwNzAwICIkd29ya19kaXIiCitzdWRvIC1uIG1vdW50IC10IHRtcGZzIFwKKyAgICAtbyAic2l6ZT0kRVZJREVOQ0VfV09SS19MSU1JVCxtb2RlPTA3MDAsdWlkPSR3b3JrZXJfdWlkLGdpZD0kd29ya2VyX2dpZCxub3N1aWQsbm9kZXYsbm9leGVjIiBcCisgICAgInVybmV0d29yay1ldmlkZW5jZS0ke2pvYl9pZC8vLS99LSRhdHRlbXB0IiAiJHdvcmtfZGlyIgorYWN0aXZlX3dvcmtfbW91bnQ9IiR3b3JrX2RpciIKK1sgIiQoc3RhdCAtZiAtYyAnJVQnICIkd29ya19kaXIiKSIgPSB0bXBmcyBdIHx8IGRpZSAicnVudGltZSBldmlkZW5jZSBmaWxlc3lzdGVtIGlzIG5vdCB0bXBmcyIKK3dvcmtfY2FwYWNpdHk9IiQoZGYgLUIxIC0tb3V0cHV0PXNpemUgIiR3b3JrX2RpciIgfCBhd2sgJ05SID09IDIge3ByaW50ICQxfScpIgorWyAiJHdvcmtfY2FwYWNpdHkiID0gIiRFVklERU5DRV9XT1JLX0JZVEVTIiBdIHx8IGRpZSAicnVudGltZSBldmlkZW5jZSBieXRlIGxpbWl0IGlzIG5vdCBmcm96ZW4iCit3b3JrX21vdW50X29wdGlvbnM9IiQoZmluZG1udCAtbiAtbyBPUFRJT05TIC0tdGFyZ2V0ICIkd29ya19kaXIiKSIKK2ZvciByZXF1aXJlZF9vcHRpb24gaW4gbm9zdWlkIG5vZGV2IG5vZXhlYzsgZG8KKyAgICBjYXNlICIsJHdvcmtfbW91bnRfb3B0aW9ucywiIGluCisgICAgICAgICoiLCRyZXF1aXJlZF9vcHRpb24sIiopIDs7CisgICAgICAgICopIGRpZSAicnVudGltZSBldmlkZW5jZSBtb3VudCBpcyBtaXNzaW5nICRyZXF1aXJlZF9vcHRpb24iIDs7CisgICAgZXNhYworZG9uZQoraW5zdGFsbCAtZCAtbSAwNzAwICIkd29ya19kaXIvaW5wdXQiICIkd29ya19kaXIvcnVucyIgXAorICAgICIkd29ya19kaXIvc2NvcmVyLWlucHV0IiAiJHdvcmtfZGlyL3Njb3JlLW91dHB1dCIKK2pxIC1uIC0tYXJnIGZpbGVzeXN0ZW0gdG1wZnMgLS1hcmcgbW91bnRfb3B0aW9ucyAiJHdvcmtfbW91bnRfb3B0aW9ucyIgXAorICAgIC0tYXJnanNvbiBsaW1pdF9ieXRlcyAiJEVWSURFTkNFX1dPUktfQllURVMiIFwKKyAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LWV2aWRlbmNlLXF1b3RhIixmaWxlc3lzdGVtOiRmaWxlc3lzdGVtLAorICAgICAgbW91bnRfb3B0aW9uczokbW91bnRfb3B0aW9ucyxsaW1pdF9ieXRlczokbGltaXRfYnl0ZXMsaGFyZF9saW1pdDp0cnVlfScgXAorICAgID4gIiR3b3JrX2Rpci9ldmlkZW5jZS1xdW90YS5qc29uIgorY2htb2QgMDQwMCAiJHdvcmtfZGlyL2V2aWRlbmNlLXF1b3RhLmpzb24iCittYWtlX2xvY2FsX21vdW50X2V2aWRlbmNlKCkgeworICAgIGpxIC1uIC0tYXJnIGNvbmZpZ19sb2NhbF9zaGEyNTYgIiRjb25maWdfbG9jYWxfc2hhMjU2IiBcCisgICAgICAgIC0tYXJnIHZhdWx0X2xvY2FsX3NoYTI1NiAiJHZhdWx0X2xvY2FsX3NoYTI1NiIgXAorICAgICAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LWxvY2FsLW1vdW50cyIsZGlyZWN0X2JpbmQ6dHJ1ZSwKKyAgICAgICAgICByZWFkX29ubHk6dHJ1ZSxwYXJlbnRfbW91bnRzOmZhbHNlLGFsbF9tYWluX3NpdGVfYWJzZW50OnRydWUsCisgICAgICAgICAgY29uZmlnOnt0YXJnZXQ6Ii9ydW50aW1lL2NvbmZpZy9sb2NhbCIsc2hhMjU2OiRjb25maWdfbG9jYWxfc2hhMjU2fSwKKyAgICAgICAgICB2YXVsdDp7dGFyZ2V0OiIvcnVudGltZS92YXVsdC9sb2NhbCIsc2hhMjU2OiR2YXVsdF9sb2NhbF9zaGEyNTZ9fScgXAorICAgICAgICA+ICIkd29ya19kaXIvbG9jYWwtbW91bnRzLmpzb24iCisgICAgY2htb2QgMDQwMCAiJHdvcmtfZGlyL2xvY2FsLW1vdW50cy5qc29uIgorfQorbWFrZV9sb2NhbF9tb3VudF9ldmlkZW5jZQorcHJpbnRmICclc1xuJyAiJHJlc291cmNlX2JvdW5kYXJ5X2pzb24iID4gIiR3b3JrX2Rpci9yZXNvdXJjZS1ib3VuZGFyeS5qc29uIgorY2htb2QgMDQwMCAiJHdvcmtfZGlyL3Jlc291cmNlLWJvdW5kYXJ5Lmpzb24iCitwb2xpY3lfcGF0aD0iJHdvcmtfZGlyL3BvbGljeS5qc29uIgoranEgLVMgJy5wYXRjaF9wb2xpY3knICIkcmVxdWVzdF9wYXRoIiA+ICIkcG9saWN5X3BhdGgiCitjaG1vZCAwNDAwICIkcG9saWN5X3BhdGgiCitwb2xpY3lfc2hhMjU2PSIkKHNoYTI1Nl9maWxlICIkcG9saWN5X3BhdGgiKSIKK3BhdGNoX3BhdGhfYmFzZT0iJChqcSAtZXIgJy5wYXRoX2Jhc2UgLy8gIiInICIkcG9saWN5X3BhdGgiKSIKK2Nhc2UgIiRwYXRjaF9wYXRoX2Jhc2UiIGluCisgICAgJyd8bW9ub19yb290X3YxKSA7OworICAgICopIGRpZSAidW5zdXBwb3J0ZWQgZnJvemVuIHBhdGNoIHBhdGggYmFzZSIgOzsKK2VzYWMKK2J1aWxkZXJfaWRlbnRpdHk9IiQoc3VibWlzc2lvbl9idWlsZGVyX2lkZW50aXR5KSIgfHwgZGllICJ0cnVzdGVkIGJ1aWxkZXIgcmVsZWFzZSBpZGVudGl0eSBpcyB1bmF2YWlsYWJsZSIKK2J1aWxkZXJfc2hhMjU2PSIkKGpxIC1lciAnLmJ1aWxkZXJfc2hhMjU2IHwgc2VsZWN0KHRlc3QoIl5bMC05YS1mXXs2NH0kIikpJyA8PDwiJGJ1aWxkZXJfaWRlbnRpdHkiKSIKK3BhdGNoX3ZhbGlkYXRvcl9zaGEyNTY9IiQoanEgLWVyICcucGF0Y2hfdmFsaWRhdG9yX3NoYTI1NiB8IHNlbGVjdCh0ZXN0KCJeWzAtOWEtZl17NjR9JCIpKScgPDw8IiRidWlsZGVyX2lkZW50aXR5IikiCitwcmludGYgJyVzXG4nICIkYnVpbGRlcl9pZGVudGl0eSIgPiAiJHdvcmtfZGlyL2J1aWxkZXItaWRlbnRpdHkuanNvbiIKK2NobW9kIDA0MDAgIiR3b3JrX2Rpci9idWlsZGVyLWlkZW50aXR5Lmpzb24iCitiYXNlX2ltYWdlX2lkPSIkKHN1ZG8gLW4gZG9ja2VyIGltYWdlIGluc3BlY3QgLS1mb3JtYXQgJ3t7LklkfX0nICIkYmFzZV9pbWFnZSIpIiB8fCBkaWUgImJhc2UgaW1hZ2UgaXMgdW5hdmFpbGFibGUgb2ZmbGluZSIKK1sgIiRiYXNlX2ltYWdlX2lkIiA9ICIkYmFzZV9pbWFnZSIgXSB8fCBkaWUgImJhc2UgaW1hZ2UgaWQgZG9lcyBub3QgbWF0Y2ggZnJvemVuIGRpZ2VzdCIKK2RvY2tlcl9pZF9tYXBfanNvbj0iJCgkRE9DS0VSX0lEX01BUCAtLWltYWdlICIkYmFzZV9pbWFnZV9pZCIgLS11aWQgNjU1MzIgLS1naWQgNjU1MzIpIiB8fAorICAgIGRpZSAiY291bGQgbm90IHJlc29sdmUgdGhlIGxpdmUgRG9ja2VyIHVzZXItbmFtZXNwYWNlIG1hcCIKK2pxIC1lIC0tYXJnIGltYWdlX2lkICIkYmFzZV9pbWFnZV9pZCIgXAorICAgICcuc2NoZW1hID09IDEgYW5kIC5raW5kID09ICJzaW0tbGF0ZW5jeS1kb2NrZXItaWQtbWFwIiBhbmQKKyAgICAgLmltYWdlX2lkID09ICRpbWFnZV9pZCBhbmQgLmNvbnRhaW5lcl91aWQgPT0gNjU1MzIgYW5kIC5jb250YWluZXJfZ2lkID09IDY1NTMyIGFuZAorICAgICAoLmhvc3RfdWlkIHwgdHlwZSA9PSAibnVtYmVyIiBhbmQgLiA+PSAwKSBhbmQKKyAgICAgKC5ob3N0X2dpZCB8IHR5cGUgPT0gIm51bWJlciIgYW5kIC4gPj0gMCkgYW5kCisgICAgICgucm9vdF9ob3N0X3VpZCB8IHR5cGUgPT0gIm51bWJlciIgYW5kIC4gPj0gMCkgYW5kCisgICAgICgucm9vdF9ob3N0X2dpZCB8IHR5cGUgPT0gIm51bWJlciIgYW5kIC4gPj0gMCkgYW5kCisgICAgICgudWlkX21hcF9zaGEyNTYgfCB0ZXN0KCJeWzAtOWEtZl17NjR9JCIpKSBhbmQKKyAgICAgKC5naWRfbWFwX3NoYTI1NiB8IHRlc3QoIl5bMC05YS1mXXs2NH0kIikpIGFuZAorICAgICAoLnJlbWFwcGVkIHwgdHlwZSA9PSAiYm9vbGVhbiIpIGFuZCAoLmRhZW1vbl9zZWN1cml0eV9vcHRpb25zIHwgdHlwZSA9PSAiYXJyYXkiKScgXAorICAgIDw8PCIkZG9ja2VyX2lkX21hcF9qc29uIiA+L2Rldi9udWxsIHx8IGRpZSAiRG9ja2VyIGlkLW1hcCBldmlkZW5jZSBpcyBpbnZhbGlkIgorY29udGFpbmVyX2hvc3RfdWlkPSIkKGpxIC1lciAnLmhvc3RfdWlkJyA8PDwiJGRvY2tlcl9pZF9tYXBfanNvbiIpIgorY29udGFpbmVyX2hvc3RfZ2lkPSIkKGpxIC1lciAnLmhvc3RfZ2lkJyA8PDwiJGRvY2tlcl9pZF9tYXBfanNvbiIpIgorcHJpbnRmICclc1xuJyAiJGRvY2tlcl9pZF9tYXBfanNvbiIgPiAiJHdvcmtfZGlyL2RvY2tlci1pZC1tYXAuanNvbiIKK2NobW9kIDA0MDAgIiR3b3JrX2Rpci9kb2NrZXItaWQtbWFwLmpzb24iCitzdWRvIC1uIGluc3RhbGwgLW8gIiRjb250YWluZXJfaG9zdF91aWQiIC1nICIkY29udGFpbmVyX2hvc3RfZ2lkIiAtbSAwNDAwIFwKKyAgICAiJHByb3ZpZGVyc19wYXRoIiAiJHdvcmtfZGlyL2lucHV0L3Byb3ZpZGVycy55bWwiCitzdWRvIC1uIGluc3RhbGwgLW8gIiRjb250YWluZXJfaG9zdF91aWQiIC1nICIkY29udGFpbmVyX2hvc3RfZ2lkIiAtbSAwNDAwIFwKKyAgICAiJHByb3ZpZGVyc19wYXRoIiAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dC9wcm92aWRlcnMueW1sIgorc3VkbyAtbiBjaG93biAiJGNvbnRhaW5lcl9ob3N0X3VpZDokY29udGFpbmVyX2hvc3RfZ2lkIiAiJHdvcmtfZGlyL2lucHV0IiAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dCIKK3N1ZG8gLW4gY2htb2QgMDUwMCAiJHdvcmtfZGlyL2lucHV0IiAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dCIKKworYmFzZV9idWlsZF9yZWY9InVybmV0d29yay9zaW0tbGF0ZW5jeS1ldmFsdWF0b3ItYmFzZS1pZDoke2Jhc2VfaW1hZ2VfaWQjc2hhMjU2On0iCitpZiBzdWRvIC1uIGRvY2tlciBpbWFnZSBpbnNwZWN0ICIkYmFzZV9idWlsZF9yZWYiID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgIFsgIiQoc3VkbyAtbiBkb2NrZXIgaW1hZ2UgaW5zcGVjdCAtLWZvcm1hdCAne3suSWR9fScgIiRiYXNlX2J1aWxkX3JlZiIpIiA9ICIkYmFzZV9pbWFnZV9pZCIgXSB8fAorICAgICAgICBkaWUgImRhZW1vbi1sb2NhbCBiYXNlIGFsaWFzIHBvaW50cyBhdCB0aGUgd3JvbmcgaW1hZ2UiCitlbHNlCisgICAgc3VkbyAtbiBkb2NrZXIgaW1hZ2UgdGFnICIkYmFzZV9pbWFnZV9pZCIgIiRiYXNlX2J1aWxkX3JlZiIKK2ZpCitpbWFnZV9rZXk9IiQocHJpbnRmICclc1wwMDAlc1wwMDAlc1wwMDAlcycgXAorICAgICIkYmFzZV9pbWFnZV9pZCIgIiRwYXRjaF9zaGEyNTYiICIkcG9saWN5X3NoYTI1NiIgIiRidWlsZGVyX3NoYTI1NiIgfCBzaGEyNTZzdW0gfCBhd2sgJ3twcmludCAkMX0nKSIKK2Jhc2VfaWRlbnRpdHk9IiQoc3VkbyAtbiBkb2NrZXIgcnVuIC0tcm0gLS1uZXR3b3JrIG5vbmUgLS1yZWFkLW9ubHkgLS1jYXAtZHJvcCBBTEwgXAorICAgIC0tc2VjdXJpdHktb3B0IG5vLW5ldy1wcml2aWxlZ2VzOnRydWUgIiRiYXNlX2ltYWdlX2lkIiBpZGVudGl0eSkiCitqcSAtZSAtLWFyZyBiYXNlX3NoYSAiJGJhc2Vfc2hhIiAtLWFyZyBlbXB0eV9wYXRjaCAiJEVNUFRZX1BBVENIX1NIQTI1NiIgLS1hcmdqc29uIHNvdXJjZV9lcG9jaCAiJHNvdXJjZV9lcG9jaCIgXAorICAgICcuc2NoZW1hID09IDEgYW5kIC5pbWFnZV9raW5kID09ICJldmFsdWF0b3ItYmFzZSIgYW5kCisgICAgIC5iYXNlX3NoYSA9PSAkYmFzZV9zaGEgYW5kIC5idWlsZF9zaGEgPT0gJGJhc2Vfc2hhIGFuZAorICAgICAuc291cmNlX2Vwb2NoID09ICRzb3VyY2VfZXBvY2ggYW5kCisgICAgIC5wYXRjaF9zaGEyNTYgPT0gJGVtcHR5X3BhdGNoIGFuZCAoLnNpbXVsYXRvcl9zaGEyNTYgfCB0ZXN0KCJeWzAtOWEtZl17NjR9JCIpKScgXAorICAgIDw8PCIkYmFzZV9pZGVudGl0eSIgPi9kZXYvbnVsbCB8fCBkaWUgImJhc2UgaW1hZ2UgaWRlbnRpdHkgaXMgaW52YWxpZCIKK2Jhc2Vfc2ltdWxhdG9yX3NoYTI1Nj0iJChqcSAtZXIgJy5zaW11bGF0b3Jfc2hhMjU2JyA8PDwiJGJhc2VfaWRlbnRpdHkiKSIKK3BvbGljeV9zY29yZXJfc2hhMjU2PSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnNjb3Jlcl9zaGEyNTYnICIkcmVxdWVzdF9wYXRoIikiCitwb2xpY3lfc2ltdWxhdG9yX3NoYTI1Nj0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5zaW11bGF0b3Jfc2hhMjU2JyAiJHJlcXVlc3RfcGF0aCIpIgorWyAiJHBvbGljeV9zY29yZXJfc2hhMjU2IiA9ICIkYmFzZV9zaW11bGF0b3Jfc2hhMjU2IiBdIHx8IGRpZSAiZnJvemVuIHNjb3JlciBkaWdlc3QgZG9lcyBub3QgbWF0Y2ggcHJpc3RpbmUgaW1hZ2UiCitbICIkcG9saWN5X3NpbXVsYXRvcl9zaGEyNTYiID0gIiRiYXNlX3NpbXVsYXRvcl9zaGEyNTYiIF0gfHwgZGllICJmcm96ZW4gc2ltdWxhdG9yIGRpZ2VzdCBkb2VzIG5vdCBtYXRjaCBwcmlzdGluZSBpbWFnZSIKK2lmIFsgLW4gIiRnMl92b2x1bWVfcG9saWN5IiBdOyB0aGVuCisgICAgaW5zdHJ1bWVudF9wb2xpY3k9IiQoc3VkbyAtbiBkb2NrZXIgcnVuIC0tcm0gLS1uZXR3b3JrIG5vbmUgLS1yZWFkLW9ubHkgLS1jYXAtZHJvcCBBTEwgXAorICAgICAgICAtLXNlY3VyaXR5LW9wdCBuby1uZXctcHJpdmlsZWdlczp0cnVlIC0tY3B1c2V0LWNwdXMgIiRtYW5hZ2VtZW50X2NwdXNldCIgXAorICAgICAgICAtLW1lbW9yeSAiJFNDT1JFUl9NRU1PUllfTElNSVQiIC0tbWVtb3J5LXN3YXAgIiRTQ09SRVJfTUVNT1JZX0xJTUlUIiAtLXBpZHMtbGltaXQgIiRTQ09SRVJfUElEU19MSU1JVCIgXAorICAgICAgICAtLWVudHJ5cG9pbnQgL29wdC91cm5ldHdvcmsvYmluL3NpbS1sYXRlbmN5ICIkYmFzZV9pbWFnZV9pZCIgXAorICAgICAgICBzY29yZS1wb2xpY3kgLS1nMi12b2x1bWUtcG9saWN5ICIkZzJfdm9sdW1lX3BvbGljeSIpIiB8fCBkaWUgInByaXN0aW5lIGltYWdlIGRvZXMgbm90IGltcGxlbWVudCB0aGUgZnJvemVuIHNjb3JpbmcgcG9saWN5IgorICAgIGpxIC1lIC0tYXJnIHBvbGljeSAiJGcyX3ZvbHVtZV9wb2xpY3kiIC0tYXJnIHZlcnNpb24gIiRzY29yZXJfdmVyc2lvbiIgXAorICAgICAgICAnLnNjb3JlX3NjaGVtYSA9PSAxIGFuZCAuZzJfdm9sdW1lX3BvbGljeSA9PSAkcG9saWN5IGFuZCAuc2NvcmVyX3ZlcnNpb24gPT0gJHZlcnNpb24nIFwKKyAgICAgICAgPDw8IiRpbnN0cnVtZW50X3BvbGljeSIgPi9kZXYvbnVsbCB8fCBkaWUgInByaXN0aW5lIHNjb3JpbmcgcG9saWN5IGlkZW50aXR5IG1pc21hdGNoIgorZmkKKworIyBFdmVyeSBhdHRlbXB0IGdldHMgaW5kZXBlbmRlbnQgYmFzZWxpbmUgYW5kIGNhbmRpZGF0ZSBzb3VyY2UgY2hlY2tvdXRzLiBUaGV5CisjIGFyZSBjb3BpZWQgZnJvbSB0aGUgYXV0aGVudGljYXRlZCBiYXNlIGltYWdlIGludG8gdGhpcyBhdHRlbXB0J3MgYm91bmRlZAorIyB0bXBmcywgbmV2ZXIgZnJvbSB0aGUgQVBJL3dvcmtlciByZXBvc2l0b3J5IHdvcmt0cmVlcy4gVGhlIHByZXBhcmVyIGNyZWF0ZXMKKyMgYSBsb2NhbCBzaW0tbGF0ZW5jeSBicmFuY2ggYXQgZWFjaCBzb3VyY2UtbG9jayBjb21taXQ7IG9ubHkgdGhlIGNhbmRpZGF0ZQorIyBjaGVja291dCBpcyBzdWJzZXF1ZW50bHkgcGF0Y2hlZCBieSB0aGUgdHJ1c3RlZCBidWlsZGVyLgorYWN0aXZlX3NvdXJjZV9yb290PSIkKG1rdGVtcCAtZCAiJHdvcmtfZGlyL2V2YWx1YXRpb24tc291cmNlcy5YWFhYWFhYWCIpIgorYmFzZWxpbmVfc291cmNlX3Jvb3Q9IiRhY3RpdmVfc291cmNlX3Jvb3QvYmFzZWxpbmUiCitjYW5kaWRhdGVfc291cmNlX3Jvb3Q9IiRhY3RpdmVfc291cmNlX3Jvb3QvY2FuZGlkYXRlIgorYmFzZWxpbmVfc291cmNlX2lkZW50aXR5PSIkKCRQUkVQQVJFX0VWQUxVQVRJT05fU09VUkNFIFwKKyAgICAiJHtzb3VyY2VfbW9kZV9hcmdzW0BdfSIgLS1iYXNlLWltYWdlICIkYmFzZV9pbWFnZV9pZCIgLS1kZXN0aW5hdGlvbiAiJGJhc2VsaW5lX3NvdXJjZV9yb290IikiIHx8CisgICAgZGllICJjb3VsZCBub3QgcHJlcGFyZSB0aGUgdGVtcG9yYXJ5IGJhc2VsaW5lIHNvdXJjZSBjaGVja291dCIKK2NhbmRpZGF0ZV9zb3VyY2VfaWRlbnRpdHk9IiQoJFBSRVBBUkVfRVZBTFVBVElPTl9TT1VSQ0UgXAorICAgICIke3NvdXJjZV9tb2RlX2FyZ3NbQF19IiAtLWJhc2UtaW1hZ2UgIiRiYXNlX2ltYWdlX2lkIiAtLWRlc3RpbmF0aW9uICIkY2FuZGlkYXRlX3NvdXJjZV9yb290IikiIHx8CisgICAgZGllICJjb3VsZCBub3QgcHJlcGFyZSB0aGUgdGVtcG9yYXJ5IGNhbmRpZGF0ZSBzb3VyY2UgY2hlY2tvdXQiCitjYW5kaWRhdGVfb3JpZ2luYWxfc291cmNlX2lkZW50aXR5X3NoYTI1Nj0iJChzaGEyNTZfZmlsZSAiJGNhbmRpZGF0ZV9zb3VyY2Vfcm9vdC8uZXZhbHVhdGlvbi1zb3VyY2UuanNvbiIpIgoraW5zdGFsbCAtbSAwNDAwICIkY2FuZGlkYXRlX3NvdXJjZV9yb290Ly5ldmFsdWF0aW9uLXNvdXJjZS5qc29uIiAiJHdvcmtfZGlyL2NhbmRpZGF0ZS1vcmlnaW5hbC1zb3VyY2UuanNvbiIKK2ZvciBwcmVwYXJlZF9pZGVudGl0eSBpbiAiJGJhc2VsaW5lX3NvdXJjZV9pZGVudGl0eSIgIiRjYW5kaWRhdGVfc291cmNlX2lkZW50aXR5IjsgZG8KKyAgICB2YWxpZGF0ZV9wcmVwYXJlZF9zb3VyY2VfaWRlbnRpdHkgIiRwcmVwYXJlZF9pZGVudGl0eSIgfHwgZGllICJ0ZW1wb3JhcnkgZXZhbHVhdGlvbiBzb3VyY2UgaWRlbnRpdHkgb3IgaW1hZ2UgY2FwYWJpbGl0eSBpcyBpbnZhbGlkIgorZG9uZQorc291cmNlX2V2aWRlbmNlX3BhdGg9IiR3b3JrX2Rpci9ldmFsdWF0aW9uLXNvdXJjZXMuanNvbiIKK3dyaXRlX3NvdXJjZV9ldmlkZW5jZSgpIHsKKyAgICBsb2NhbCBjbGVhbnVwX2NvbXBsZXRlPSIkMSIKKyAgICBsb2NhbCBwZW5kaW5nPSIke3NvdXJjZV9ldmlkZW5jZV9wYXRofS5uZXciCisgICAganEgLW5TIFwKKyAgICAgICAgLS1hcmdqc29uIGJhc2VsaW5lICIkKGpxIC1jIC4gIiRiYXNlbGluZV9zb3VyY2Vfcm9vdC8uZXZhbHVhdGlvbi1zb3VyY2UuanNvbiIpIiBcCisgICAgICAgIC0tYXJnanNvbiBjYW5kaWRhdGUgIiQoanEgLWMgLiAiJGNhbmRpZGF0ZV9zb3VyY2Vfcm9vdC8uZXZhbHVhdGlvbi1zb3VyY2UuanNvbiIpIiBcCisgICAgICAgIC0tYXJnanNvbiBjbGVhbnVwX2NvbXBsZXRlICIkY2xlYW51cF9jb21wbGV0ZSIgXAorICAgICAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LXRlbXBvcmFyeS1ldmFsdWF0aW9uLXNvdXJjZXMiLAorICAgICAgICAgIG9yaWdpbjoiYXV0aGVudGljYXRlZF9ldmFsdWF0b3JfaW1hZ2UiLGhvc3RfcmVwb3NpdG9yaWVzX3VzZWQ6ZmFsc2UsCisgICAgICAgICAgcnVudGltZV90YXJnZXQ6Ii93b3Jrc3BhY2UiLHJlYWRfb25seV9tb3VudDp0cnVlLAorICAgICAgICAgIGJhc2VsaW5lOiRiYXNlbGluZSxjYW5kaWRhdGU6JGNhbmRpZGF0ZSwKKyAgICAgICAgICBjbGVhbnVwX2NvbXBsZXRlOiRjbGVhbnVwX2NvbXBsZXRlfScgPiAiJHBlbmRpbmciCisgICAgY2htb2QgMDQwMCAiJHBlbmRpbmciCisgICAgbXYgLWYgLS0gIiRwZW5kaW5nIiAiJHNvdXJjZV9ldmlkZW5jZV9wYXRoIgorfQord3JpdGVfc291cmNlX2V2aWRlbmNlIGZhbHNlCisKK2tlcm5lbF9yZWxlYXNlPSIkKHVuYW1lIC1yKSIKK21pY3JvY29kZV9yZXZpc2lvbj0iJChhd2sgLUY6ICckMSB+IC9ebWljcm9jb2RlLyB7Z3N1YigvW1s6c3BhY2U6XV0vLCAiIiwgJDIpOyBwcmludCAkMn0nIC9wcm9jL2NwdWluZm8gfCBzb3J0IC11IHwgcGFzdGUgLXNkLCAtKSIKK1sgLW4gIiRtaWNyb2NvZGVfcmV2aXNpb24iIF0gfHwgZGllICJtaWNyb2NvZGUgaWRlbnRpdHkgaXMgdW5hdmFpbGFibGUiCitoYXJkd2FyZV9pZD0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5oYXJkd2FyZV9pZCcgIiRyZXF1ZXN0X3BhdGgiKSIKK3F1YWxpZmljYXRpb25fc2hhMjU2PSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5Lmhvc3RfcXVhbGlmaWNhdGlvbl9zaGEyNTYnICIkcmVxdWVzdF9wYXRoIikiCitbWyAiJHF1YWxpZmljYXRpb25fc2hhMjU2IiA9fiBeWzAtOWEtZl17NjR9JCBdXSB8fCBkaWUgInF1YWxpZmljYXRpb24gZGlnZXN0IGlzIGludmFsaWQiCisKK2R1cmF0aW9uX21zPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LmR1cmF0aW9uX21zJyAiJHJlcXVlc3RfcGF0aCIpIgorcmVxdWVzdF90aW1lb3V0X21zPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnJlcXVlc3RfdGltZW91dF9tcycgIiRyZXF1ZXN0X3BhdGgiKSIKK3JhbXBfbXM9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kucmFtcF9tcycgIiRyZXF1ZXN0X3BhdGgiKSIKK3ByZXdhcm1fbXM9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kucHJld2FybV9tcycgIiRyZXF1ZXN0X3BhdGgiKSIKK3NldHRsZV9tcz0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5zZXR0bGVfbXMnICIkcmVxdWVzdF9wYXRoIikiCitjbGllbnRfd2FybXVwX3RpbWVvdXRfbXM9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kuY2xpZW50X3dhcm11cF90aW1lb3V0X21zJyAiJHJlcXVlc3RfcGF0aCIpIgorcGlwZWxpbmVfaW50ZXJ2YWxfbXM9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kucGlwZWxpbmVfaW50ZXJ2YWxfbXMnICIkcmVxdWVzdF9wYXRoIikiCit0ZXN0X3RpbWVvdXRfbXM9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kudGVzdF90aW1lb3V0X21zJyAiJHJlcXVlc3RfcGF0aCIpIgorYW5ub3VuY2VfdGltZW91dF9tcz0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5hbm5vdW5jZV90aW1lb3V0X21zJyAiJHJlcXVlc3RfcGF0aCIpIgorZmxlZXRfc2hhcmRzPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LmZsZWV0X3NoYXJkcycgIiRyZXF1ZXN0X3BhdGgiKSIKK2V4Y2hhbmdlX2hvc3RzPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LmV4Y2hhbmdlX2hvc3RzJyAiJHJlcXVlc3RfcGF0aCIpIgorc2l0ZV9saXN0ZW49IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kuc2l0ZV9saXN0ZW4nICIkcmVxdWVzdF9wYXRoIikiCithcGlfcG9ydD0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5hcGlfcG9ydCcgIiRyZXF1ZXN0X3BhdGgiKSIKK2ltcGFpcm1lbnRfZW5hYmxlZD0iJChqcSAtciAnLmV2YWx1YXRpb25fcG9saWN5LmltcGFpcm1lbnRfZW5hYmxlZCcgIiRyZXF1ZXN0X3BhdGgiKSIKKyMgSlNPTiB6ZXJvIGlzIG51bWVyaWM7IHRoZSBpbW11dGFibGUgb2ZmaWNpYWwgcnVubmVyIHJlcXVpcmVzIGRlY2ltYWwgdGV4dC4KK3Rha2VvdmVyX21hcmdpbj0iJChqcSAtZXIgLS1hcmdqc29uIHN0YWdpbmcgIiRzdGFnaW5nIiAnCisgICAgLmV2YWx1YXRpb25fcG9saWN5LnRha2VvdmVyX21hcmdpbiB8IHNlbGVjdCh0eXBlID09ICJudW1iZXIiKSB8CisgICAgaWYgJHN0YWdpbmcgdGhlbiBzZWxlY3QoLiA9PSAwKSB8ICIwLjAiCisgICAgZWxzZSBzZWxlY3QoLiA+IDAgYW5kIC4gPD0gMC41KSBlbmQKKyAgICAnICIkcmVxdWVzdF9wYXRoIikiIHx8IGRpZSAidGFrZW92ZXIgbWFyZ2luIGRvZXMgbm90IG1hdGNoIHRoZSBleHBsaWNpdCBldmFsdWF0aW9uIG1vZGUiCitxdWV1ZV9saW1pdD0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5xdWV1ZV9saW1pdCcgIiRyZXF1ZXN0X3BhdGgiKSIKK3Njb3JlX3RpbWVvdXRfc2Vjb25kcz0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5zY29yZV90aW1lb3V0X3NlY29uZHMnICIkcmVxdWVzdF9wYXRoIikiCitmb3IgbnVtZXJpYyBpbiBjbGllbnRfd2FybXVwX3RpbWVvdXRfbXMgZHVyYXRpb25fbXMgcmVxdWVzdF90aW1lb3V0X21zIHBpcGVsaW5lX2ludGVydmFsX21zIHRlc3RfdGltZW91dF9tcyBhbm5vdW5jZV90aW1lb3V0X21zIGV4Y2hhbmdlX2hvc3RzIGFwaV9wb3J0IHNjb3JlX3RpbWVvdXRfc2Vjb25kczsgZG8KKyAgICBbWyAiJHshbnVtZXJpY30iID1+IF5bMS05XVswLTldKiQgXV0gfHwgZGllICJpbnZhbGlkIHBvc2l0aXZlIHBvbGljeSBmaWVsZDogJG51bWVyaWMiCitkb25lCitmb3IgbnVtZXJpYyBpbiByYW1wX21zIHByZXdhcm1fbXMgc2V0dGxlX21zIGZsZWV0X3NoYXJkczsgZG8KKyAgICBbWyAiJHshbnVtZXJpY30iID1+IF5bMC05XSskIF1dIHx8IGRpZSAiaW52YWxpZCBub25uZWdhdGl2ZSBwb2xpY3kgZmllbGQ6ICRudW1lcmljIgorZG9uZQorWyAiJGltcGFpcm1lbnRfZW5hYmxlZCIgPSB0cnVlIF0gfHwgWyAiJGltcGFpcm1lbnRfZW5hYmxlZCIgPSBmYWxzZSBdIHx8IGRpZSAiaW1wYWlybWVudCBwb2xpY3kgaXMgaW52YWxpZCIKK1sgIiRxdWV1ZV9saW1pdCIgLWVxIDAgXSB8fCBkaWUgInF1ZXVlIGxpbWl0IGlzIG5vdCB0aGUgZnJvemVuIHVuYm91bmRlZCBzZW50aW5lbCIKK2lmIFsgIiRpbXBhaXJtZW50X2VuYWJsZWQiID0gdHJ1ZSBdOyB0aGVuIG5vX2ltcGFpcj1ubzsgZWxzZSBub19pbXBhaXI9eWVzOyBmaQord2FsbF90aW1lb3V0X3NlY29uZHM9IiQoCisgICAgIiRUSU1FT1VUX0JVREdFVCIgc3RhZ2UgXAorICAgICAgICAiJHJhbXBfbXMiICIkc2V0dGxlX21zIiAiJGNsaWVudF93YXJtdXBfdGltZW91dF9tcyIgIiRkdXJhdGlvbl9tcyIgIiRyZXF1ZXN0X3RpbWVvdXRfbXMiCispIiB8fCBkaWUgImNvdWxkIG5vdCBjYWxjdWxhdGUgdGhlIHN0YWdlIHRpbWVvdXQgYnVkZ2V0IgorWyAiJHNjb3JlX3RpbWVvdXRfc2Vjb25kcyIgLWVxIDEwODAwIF0gfHwgZGllICJzY29yZSB0aW1lb3V0IGlzIG5vdCB0aGUgZnJvemVuIHRocmVlLWhvdXIgc3VibWlzc2lvbiBsaW1pdCIKKworY29tcG9zZV93aXRoKCkgeworICAgIGxvY2FsIHByb2plY3Q9IiQxIiBlbnZfZmlsZT0iJDIiCisgICAgc2hpZnQgMgorICAgIHN1ZG8gLW4gZG9ja2VyIGNvbXBvc2UgLS1lbnYtZmlsZSAiJGVudl9maWxlIiAtLWZpbGUgIiRDT01QT1NFX0ZJTEUiIFwKKyAgICAgICAgLS1wcm9qZWN0LW5hbWUgIiRwcm9qZWN0IiAiJEAiCit9CisKK25ld19zZWNyZXQoKSB7CisgICAgb3BlbnNzbCByYW5kIC1oZXggMzIKK30KKword3JpdGVfcnVubmVyX2VudigpIHsKKyAgICBsb2NhbCBwYXRoPSIkMSIgZXZhbHVhdGlvbl9pZD0iJDIiIGJ1aWxkX3NoYT0iJDMiIHNpbXVsYXRvcl9zaGE9IiQ0IiBpbWFnZV9pZD0iJDUiIGNhbmRpZGF0ZV9wYXRjaF9zaGE9IiQ2IgorICAgIGxvY2FsIHBlbmRpbmc9IiR7cGF0aH0ubmV3IgorICAgIFsgISAtZSAiJHBlbmRpbmciIF0gfHwgZGllICJwZW5kaW5nIHJ1bm5lciBlbnZpcm9ubWVudCBhbHJlYWR5IGV4aXN0cyIKKyAgICBwcmludGYgJyVzXG4nIFwKKyAgICAgICAgIkVWQUxVQVRJT05fREJfUEFTU1dPUkQ9JHN0YWdlX2RiX3Bhc3N3b3JkIiBcCisgICAgICAgICJFVkFMVUFUSU9OX1JFRElTX1BBU1NXT1JEPSRzdGFnZV9yZWRpc19wYXNzd29yZCIgXAorICAgICAgICAiQVBFWF9CQVNFX1NIQT0kYmFzZV9zaGEiIFwKKyAgICAgICAgIkFQRVhfQlVJTERfU0hBPSRidWlsZF9zaGEiIFwKKyAgICAgICAgJ0FQRVhfU0NPUkVSX0JJTj0vb3B0L3VybmV0d29yay9iaW4vc2ltLWxhdGVuY3knIFwKKyAgICAgICAgIkFQRVhfU0NPUkVSX1NIQTI1Nj0kc2ltdWxhdG9yX3NoYSIgXAorICAgICAgICAnQVBFWF9TSU1fQklOPS9vcHQvdXJuZXR3b3JrL2Jpbi9zaW0tbGF0ZW5jeScgXAorICAgICAgICAiQVBFWF9TSU1fU0hBMjU2PSRzaW11bGF0b3Jfc2hhIiBcCisgICAgICAgICdBUEVYX1BST1ZJREVSU19GSUxFPS9pbnB1dC9wcm92aWRlcnMueW1sJyBcCisgICAgICAgICJBUEVYX1BST1ZJREVSU19TSEEyNTY9JHByb3ZpZGVyc19zaGEyNTYiIFwKKyAgICAgICAgJ0FQRVhfQVJUSUZBQ1RfUk9PVD0vYXJ0aWZhY3RzJyBcCisgICAgICAgICJBUEVYX0VWQUxVQVRJT05fSUQ9JGV2YWx1YXRpb25faWQiIFwKKyAgICAgICAgIkFQRVhfRVBPQ0g9JHNvdXJjZV9lcG9jaCIgXAorICAgICAgICAiQVBFWF9BUElfSU1BR0VfRElHRVNUPSRpbWFnZV9pZCIgXAorICAgICAgICAiQVBFWF9IQVJEV0FSRV9JRD0kaGFyZHdhcmVfaWQiIFwKKyAgICAgICAgIkFQRVhfSE9TVF9RVUFMSUZJQ0FUSU9OX1NIQTI1Nj0kcXVhbGlmaWNhdGlvbl9zaGEyNTYiIFwKKyAgICAgICAgIkFQRVhfS0VSTkVMX1JFTEVBU0U9JGtlcm5lbF9yZWxlYXNlIiBcCisgICAgICAgICJBUEVYX01JQ1JPQ09ERV9SRVZJU0lPTj0kbWljcm9jb2RlX3JldmlzaW9uIiBcCisgICAgICAgICdBUEVYX1BBVENIX0ZJTEU9L29wdC91cm5ldHdvcmsvc3VibWlzc2lvbi9jYW5vbmljYWwucGF0Y2gnIFwKKyAgICAgICAgIkFQRVhfUEFUQ0hfU0hBMjU2PSRjYW5kaWRhdGVfcGF0Y2hfc2hhIiBcCisgICAgICAgICJBUEVYX0NQVV9DT1VOVD0kZXZhbHVhdGlvbl9jcHVfY291bnQiIFwKKyAgICAgICAgIkFQRVhfRFVSQVRJT049JHtkdXJhdGlvbl9tc31tcyIgXAorICAgICAgICAiQVBFWF9SRVFVRVNUX1RJTUVPVVQ9JHtyZXF1ZXN0X3RpbWVvdXRfbXN9bXMiIFwKKyAgICAgICAgIkFQRVhfUkFNUD0ke3JhbXBfbXN9bXMiIFwKKyAgICAgICAgIkFQRVhfUFJFV0FSTT0ke3ByZXdhcm1fbXN9bXMiIFwKKyAgICAgICAgIkFQRVhfU0VUVExFPSR7c2V0dGxlX21zfW1zIiBcCisgICAgICAgICJBUEVYX0NMSUVOVF9XQVJNVVBfVElNRU9VVD0ke2NsaWVudF93YXJtdXBfdGltZW91dF9tc31tcyIgXAorICAgICAgICAiQVBFWF9GTEVFVF9TSEFSRFM9JGZsZWV0X3NoYXJkcyIgXAorICAgICAgICAiQVBFWF9IT1NUUz0kZXhjaGFuZ2VfaG9zdHMiIFwKKyAgICAgICAgIkFQRVhfUElQRUxJTkVfSU5URVJWQUw9JHtwaXBlbGluZV9pbnRlcnZhbF9tc31tcyIgXAorICAgICAgICAiQVBFWF9URVNUX1RJTUVPVVQ9JHt0ZXN0X3RpbWVvdXRfbXN9bXMiIFwKKyAgICAgICAgIkFQRVhfQU5OT1VOQ0VfVElNRU9VVD0ke2Fubm91bmNlX3RpbWVvdXRfbXN9bXMiIFwKKyAgICAgICAgIkFQRVhfU0lURV9MSVNURU49JHNpdGVfbGlzdGVuIiBcCisgICAgICAgICJBUEVYX0FQSV9QT1JUPSRhcGlfcG9ydCIgXAorICAgICAgICAiQVBFWF9OT19JTVBBSVI9JG5vX2ltcGFpciIgXAorICAgICAgICAiQVBFWF9XQUxMX1RJTUVPVVQ9JHt3YWxsX3RpbWVvdXRfc2Vjb25kc31zIiBcCisgICAgICAgICdBUEVYX0tJTExfQUZURVI9MzBzJyBcCisgICAgICAgICdBUEVYX0NBTElCUkFUSU9OX0FDQ0VQVEVEPXllcycgXAorICAgICAgICA+ICIkcGVuZGluZyIKKyAgICBpZiBbIC1uICIkZzJfdm9sdW1lX3BvbGljeSIgXTsgdGhlbgorICAgICAgICBwcmludGYgJyVzXG4nICJBUEVYX0cyX1ZPTFVNRV9QT0xJQ1k9JGcyX3ZvbHVtZV9wb2xpY3kiID4+ICIkcGVuZGluZyIKKyAgICBmaQorICAgIGNobW9kIDA0MDAgIiRwZW5kaW5nIgorICAgIG12IC1mIC0tICIkcGVuZGluZyIgIiRwYXRoIgorfQorCit3cml0ZV9jb21wb3NlX2VudigpIHsKKyAgICBsb2NhbCBwYXRoPSIkMSIgcHJvamVjdD0iJDIiIHN0YWdlPSIkMyIgaW1hZ2U9IiQ0IiBydW5uZXJfZW52PSIkNSIgaW5wdXQ9IiQ2IiBvdXRwdXQ9IiQ3IiBjZ3JvdXBfcGFyZW50PSIkOCIgc291cmNlPSIkOSIKKyAgICBsb2NhbCBwZW5kaW5nPSIke3BhdGh9Lm5ldyIKKyAgICBbICEgLWUgIiRwZW5kaW5nIiBdIHx8IGRpZSAicGVuZGluZyBDb21wb3NlIGVudmlyb25tZW50IGFscmVhZHkgZXhpc3RzIgorICAgIHByaW50ZiAnJXNcbicgXAorICAgICAgICAiQ09NUE9TRV9QUk9KRUNUX05BTUU9JHByb2plY3QiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fSk9CX0lEPSRqb2JfaWQiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fUk9VTkRfSUQ9JHJvdW5kX2lkIiBcCisgICAgICAgICJFVkFMVUFUSU9OX1NUQUdFPSRzdGFnZSIgXAorICAgICAgICAnRVZBTFVBVElPTl9BQ1RJT049cnVuJyBcCisgICAgICAgICJFVkFMVUFUSU9OX0NHUk9VUF9QQVJFTlQ9JGNncm91cF9wYXJlbnQiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fQ1BVU0VUPSRjcHVzZXQiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fSU1BR0U9JGltYWdlIiBcCisgICAgICAgICJFVkFMVUFUT1JfQkFTRV9JTUFHRT0kYmFzZV9pbWFnZV9pZCIgXAorICAgICAgICAiRVZBTFVBVElPTl9FTlZfRklMRT0kcnVubmVyX2VudiIgXAorICAgICAgICAiRVZBTFVBVElPTl9TT1VSQ0VfRElSPSRzb3VyY2UiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fQ09ORklHX0xPQ0FMX0RJUj0kY29uZmlnX2xvY2FsX2RpcmVjdG9yeSIgXAorICAgICAgICAiRVZBTFVBVElPTl9WQVVMVF9MT0NBTF9ESVI9JHZhdWx0X2xvY2FsX2RpcmVjdG9yeSIgXAorICAgICAgICAiRVZBTFVBVElPTl9JTlBVVF9ESVI9JGlucHV0IiBcCisgICAgICAgICJFVkFMVUFUSU9OX09VVFBVVF9ESVI9JG91dHB1dCIgXAorICAgICAgICAiRVZBTFVBVElPTl9QT1NUR1JFU19JTklUPSRQT1NUR1JFU19JTklUIiBcCisgICAgICAgICJSVU5ORVJfTUVNT1JZX0xJTUlUPSRSVU5ORVJfTUVNT1JZX0xJTUlUIiBcCisgICAgICAgICJSVU5ORVJfUElEU19MSU1JVD0kUlVOTkVSX1BJRFNfTElNSVQiIFwKKyAgICAgICAgIlJVTk5FUl9UTVBfTElNSVQ9JFJVTk5FUl9UTVBfTElNSVQiIFwKKyAgICAgICAgIlJVTk5FUl9XT1JLX0xJTUlUPSRSVU5ORVJfV09SS19MSU1JVCIgXAorICAgICAgICAiTUlHUkFUT1JfTUVNT1JZX0xJTUlUPSRNSUdSQVRPUl9NRU1PUllfTElNSVQiIFwKKyAgICAgICAgIk1JR1JBVE9SX1BJRFNfTElNSVQ9JE1JR1JBVE9SX1BJRFNfTElNSVQiIFwKKyAgICAgICAgIk1JR1JBVE9SX1RNUF9MSU1JVD0kTUlHUkFUT1JfVE1QX0xJTUlUIiBcCisgICAgICAgICJQT1NUR1JFU19NRU1PUllfTElNSVQ9JFBPU1RHUkVTX01FTU9SWV9MSU1JVCIgXAorICAgICAgICAiUE9TVEdSRVNfUElEU19MSU1JVD0kUE9TVEdSRVNfUElEU19MSU1JVCIgXAorICAgICAgICAiUE9TVEdSRVNfREFUQV9MSU1JVD0kUE9TVEdSRVNfREFUQV9MSU1JVCIgXAorICAgICAgICAiUE9TVEdSRVNfTUFYX0NPTk5FQ1RJT05TPSRQT1NUR1JFU19NQVhfQ09OTkVDVElPTlMiIFwKKyAgICAgICAgIlBPU1RHUkVTX1NIQVJFRF9CVUZGRVJTPSRQT1NUR1JFU19TSEFSRURfQlVGRkVSUyIgXAorICAgICAgICAiUkVESVNfTUVNT1JZX0xJTUlUPSRSRURJU19NRU1PUllfTElNSVQiIFwKKyAgICAgICAgIlJFRElTX1BJRFNfTElNSVQ9JFJFRElTX1BJRFNfTElNSVQiIFwKKyAgICAgICAgIlJFRElTX0RBVEFfTElNSVQ9JFJFRElTX0RBVEFfTElNSVQiIFwKKyAgICAgICAgIlJFRElTX01BWF9DTElFTlRTPSRSRURJU19NQVhfQ0xJRU5UUyIgXAorICAgICAgICAiUkVESVNfVENQX0JBQ0tMT0c9JFJFRElTX1RDUF9CQUNLTE9HIiBcCisgICAgICAgICJTQ09SRVJfTUVNT1JZX0xJTUlUPSRTQ09SRVJfTUVNT1JZX0xJTUlUIiBcCisgICAgICAgICJTQ09SRVJfUElEU19MSU1JVD0kU0NPUkVSX1BJRFNfTElNSVQiIFwKKyAgICAgICAgIlNDT1JFUl9UTVBfTElNSVQ9JFNDT1JFUl9UTVBfTElNSVQiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fTk9GSUxFPSRFVkFMVUFUSU9OX05PRklMRSIgXAorICAgICAgICAnRVZBTFVBVElPTl9EQl9VU0VSPWJyaW5neW91cicgXAorICAgICAgICAiRVZBTFVBVElPTl9EQl9BRE1JTl9QQVNTV09SRD0kc3RhZ2VfZGJfYWRtaW5fcGFzc3dvcmQiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fREJfUEFTU1dPUkQ9JHN0YWdlX2RiX3Bhc3N3b3JkIiBcCisgICAgICAgICdFVkFMVUFUSU9OX0RCX05BTUU9YnJpbmd5b3VyJyBcCisgICAgICAgICJFVkFMVUFUSU9OX1JFRElTX1BBU1NXT1JEPSRzdGFnZV9yZWRpc19wYXNzd29yZCIgXAorICAgICAgICAnRVZBTFVBVElPTl9EQl9NSU5fQ09OTkVDVElPTlM9NCcgXAorICAgICAgICAnRVZBTFVBVElPTl9EQl9NQVhfQ09OTkVDVElPTlM9MzInIFwKKyAgICAgICAgJ0VWQUxVQVRJT05fUkVESVNfTUlOX0NPTk5FQ1RJT05TPTQnIFwKKyAgICAgICAgJ0VWQUxVQVRJT05fUkVESVNfTUFYX0NPTk5FQ1RJT05TPTMyJyBcCisgICAgICAgID4gIiRwZW5kaW5nIgorICAgIGNobW9kIDA0MDAgIiRwZW5kaW5nIgorICAgIG12IC1mIC0tICIkcGVuZGluZyIgIiRwYXRoIgorfQorCit2YWxpZGF0ZV9vdXRwdXRfdHJlZSgpIHsKKyAgICBsb2NhbCByb290PSIkMSIKKyAgICBbIC16ICIkKHN1ZG8gLW4gZmluZCAiJHJvb3QiIC1taW5kZXB0aCAxICEgLXR5cGUgZiAhIC10eXBlIGQgLXByaW50IC1xdWl0KSIgXSB8fAorICAgICAgICBkaWUgImNhbmRpZGF0ZSBvdXRwdXQgY29udGFpbnMgYSBub24tcmVndWxhciBlbnRyeSIKK30KKworIyBUaGUgYmFzZWxpbmUgaGFzIGFscmVhZHkgYmVlbiBzZWFsZWQgZm9yIHRoZSBjb250YWluZXIgdWlkIHdoZW4gdGhlIGNhbmRpZGF0ZQorIyBpcyBidWlsdC4gVHJ1c3Qgb25seSB0aGVzZSBhdXRoZW50aWNhdGVkIGF0dGVtcHQtbG9jYWwgcmVwb3NpdG9yaWVzIGZvciBlYWNoCisjIHJlYWQ7IG5ldmVyIHBlcnNpc3Qgc2FmZS5kaXJlY3Rvcnkgb3IgdHVybiBvZmYgR2l0J3Mgb3duZXJzaGlwIGNoZWNrIGdsb2JhbGx5LgorYXV0aGVudGljYXRlX3Byb3RlY3RlZF9zaW11bGF0b3JfdHJlZSgpIHsKKyAgICBsb2NhbCBiYXNlbGluZV90cmVlIGNhbmRpZGF0ZV90cmVlCisgICAgYmFzZWxpbmVfdHJlZT0iJChnaXQgLWMgc2FmZS5kaXJlY3Rvcnk9IC1jIHNhZmUuZGlyZWN0b3J5PSIkYmFzZWxpbmVfc291cmNlX3Jvb3Qvc2VydmVyIiBcCisgICAgICAgIC1DICIkYmFzZWxpbmVfc291cmNlX3Jvb3Qvc2VydmVyIiByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRDpjb25uZWN0L3NpbS1sYXRlbmN5KSIgfHwKKyAgICAgICAgZGllICJjb3VsZCBub3QgcmVhZCB0aGUgYmFzZWxpbmUgcHJvdGVjdGVkIHNpbS1sYXRlbmN5IHNvdXJjZSB0cmVlOiBHaXQgaW52b2NhdGlvbiBmYWlsZWQiCisgICAgY2FuZGlkYXRlX3RyZWU9IiQoZ2l0IC1jIHNhZmUuZGlyZWN0b3J5PSAtYyBzYWZlLmRpcmVjdG9yeT0iJGNhbmRpZGF0ZV9zb3VyY2Vfcm9vdC9zZXJ2ZXIiIFwKKyAgICAgICAgLUMgIiRjYW5kaWRhdGVfc291cmNlX3Jvb3Qvc2VydmVyIiByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRDpjb25uZWN0L3NpbS1sYXRlbmN5KSIgfHwKKyAgICAgICAgZGllICJjb3VsZCBub3QgcmVhZCB0aGUgY2FuZGlkYXRlIHByb3RlY3RlZCBzaW0tbGF0ZW5jeSBzb3VyY2UgdHJlZTogR2l0IGludm9jYXRpb24gZmFpbGVkIgorICAgIFtbICIkYmFzZWxpbmVfdHJlZSIgPX4gXlswLTlhLWZdezQwfSQgXV0gJiYgW1sgIiRjYW5kaWRhdGVfdHJlZSIgPX4gXlswLTlhLWZdezQwfSQgXV0gfHwKKyAgICAgICAgZGllICJjb3VsZCBub3QgYXV0aGVudGljYXRlIHRoZSBwcm90ZWN0ZWQgc2ltLWxhdGVuY3kgc291cmNlIHRyZWU6IGludmFsaWQgR2l0IG9iamVjdCBpZGVudGl0eSIKKyAgICBbICIkY2FuZGlkYXRlX3RyZWUiID0gIiRiYXNlbGluZV90cmVlIiBdIHx8CisgICAgICAgIGRpZSAiY2FuZGlkYXRlIGNoYW5nZWQgdGhlIHByb3RlY3RlZCBzaW0tbGF0ZW5jeSBzb3VyY2UgdHJlZSIKK30KKworc2VhbF9ldmFsdWF0aW9uX3NvdXJjZSgpIHsKKyAgICBsb2NhbCByb290PSIkMSIgZXhwZWN0ZWRfc2VydmVyPSIkMiIgZXhwZWN0ZWRfcGF0Y2g9IiQzIgorICAgIFsgIiRyb290IiA9ICIkYmFzZWxpbmVfc291cmNlX3Jvb3QiIF0gfHwgWyAiJHJvb3QiID0gIiRjYW5kaWRhdGVfc291cmNlX3Jvb3QiIF0gfHwKKyAgICAgICAgZGllICJyZWZ1c2luZyB0byBzZWFsIGFuIHVuZXhwZWN0ZWQgc291cmNlIGRpcmVjdG9yeSIKKyAgICBmb3IgcmVwb3NpdG9yeSBpbiAiJHtSRVBPU0lUT1JJRVNbQF19IjsgZG8KKyAgICAgICAgbG9jYWwgcmVwb3NpdG9yeV9yb290PSIkcm9vdC8kcmVwb3NpdG9yeSIKKyAgICAgICAgbG9jYWwgZXhwZWN0ZWRfY29tbWl0IGFjdHVhbF9icmFuY2ggYWN0dWFsX2NvbW1pdCBzb3VyY2Vfc3RhdHVzCisgICAgICAgIGV4cGVjdGVkX2NvbW1pdD0iJChqcSAtZXIgLS1hcmcgcmVwb3NpdG9yeSAiJHJlcG9zaXRvcnkiIFwKKyAgICAgICAgICAgICcucmVwb3NpdG9yaWVzWyRyZXBvc2l0b3J5XScgIiRyb290Ly5ldmFsdWF0aW9uLXNvdXJjZS5qc29uIikiCisgICAgICAgIGFjdHVhbF9icmFuY2g9IiQoZ2l0IC1DICIkcmVwb3NpdG9yeV9yb290IiBzeW1ib2xpYy1yZWYgLS1xdWlldCAtLXNob3J0IEhFQUQpIiB8fAorICAgICAgICAgICAgZGllICJjb3VsZCBub3QgcmVhZCB0ZW1wb3JhcnkgJHJlcG9zaXRvcnkgc291cmNlIGJyYW5jaCIKKyAgICAgICAgYWN0dWFsX2NvbW1pdD0iJChnaXQgLUMgIiRyZXBvc2l0b3J5X3Jvb3QiIHJldi1wYXJzZSBIRUFEKSIgfHwKKyAgICAgICAgICAgIGRpZSAiY291bGQgbm90IHJlYWQgdGVtcG9yYXJ5ICRyZXBvc2l0b3J5IHNvdXJjZSBjb21taXQiCisgICAgICAgIHNvdXJjZV9zdGF0dXM9IiQoZ2l0IC1DICIkcmVwb3NpdG9yeV9yb290IiBzdGF0dXMgLS1wb3JjZWxhaW49djEgLS11bnRyYWNrZWQtZmlsZXM9YWxsKSIgfHwKKyAgICAgICAgICAgIGRpZSAiY291bGQgbm90IGluc3BlY3QgdGVtcG9yYXJ5ICRyZXBvc2l0b3J5IHNvdXJjZSB3b3JrdHJlZSIKKyAgICAgICAgWyAiJGFjdHVhbF9icmFuY2giID0gIiRzb3VyY2VfYnJhbmNoIiBdICYmIFsgIiRhY3R1YWxfY29tbWl0IiA9ICIkZXhwZWN0ZWRfY29tbWl0IiBdICYmCisgICAgICAgICAgICBbIC16ICIkc291cmNlX3N0YXR1cyIgXSB8fAorICAgICAgICAgICAgZGllICJ0ZW1wb3JhcnkgJHJlcG9zaXRvcnkgc291cmNlIGNoZWNrb3V0IGlzIG5vdCBjbGVhbiBhbmQgaWRlbnRpdHktYm91bmQiCisgICAgZG9uZQorICAgIGxvY2FsIHNlcnZlcl9jb21taXQgYWN0dWFsX3BhdGNoCisgICAgc2VydmVyX2NvbW1pdD0iJChnaXQgLUMgIiRyb290L3NlcnZlciIgcmV2LXBhcnNlIEhFQUQpIiB8fAorICAgICAgICBkaWUgImNvdWxkIG5vdCByZWFkIHRlbXBvcmFyeSBzZXJ2ZXIgc291cmNlIGNvbW1pdCIKKyAgICBbICIkc2VydmVyX2NvbW1pdCIgPSAiJGV4cGVjdGVkX3NlcnZlciIgXSB8fAorICAgICAgICBkaWUgInRlbXBvcmFyeSBzZXJ2ZXIgc291cmNlIGNoZWNrb3V0IGhhcyB0aGUgd3JvbmcgY29tbWl0IgorICAgIGFjdHVhbF9wYXRjaD0iJChqcSAtZXIgJy5jYW5kaWRhdGVfcGF0Y2hfc2hhMjU2IC8vICIiJyAiJHJvb3QvLmV2YWx1YXRpb24tc291cmNlLmpzb24iKSIgfHwKKyAgICAgICAgZGllICJjb3VsZCBub3QgcmVhZCB0ZW1wb3Jhcnkgc291cmNlIHBhdGNoIGlkZW50aXR5IgorICAgIFsgIiRhY3R1YWxfcGF0Y2giID0gIiRleHBlY3RlZF9wYXRjaCIgXSB8fAorICAgICAgICBkaWUgInRlbXBvcmFyeSBzb3VyY2UgcGF0Y2ggaWRlbnRpdHkgbWlzbWF0Y2giCisKKyAgICAjIFByZXNlcnZlIHRyYWNrZWQgZXhlY3V0YWJsZSBiaXRzIHdoaWxlIG1ha2luZyBib3RoIHRoZSBiaW5kIGl0c2VsZiBhbmQKKyAgICAjIHRoZSB1bmRlcmx5aW5nIGhvc3QgdHJlZSBub24td3JpdGFibGUuIFRoZSBEb2NrZXIgYmluZCBhZGRzIGEgc2Vjb25kLAorICAgICMgaW5kZXBlbmRlbnRseSBpbnNwZWN0ZWQgcmVhZC1vbmx5IGJvdW5kYXJ5LgorICAgIHN1ZG8gLW4gZmluZCAiJHJvb3QiIC10eXBlIGQgLWV4ZWMgY2htb2QgMDU1NSB7fSArCisgICAgc3VkbyAtbiBmaW5kICIkcm9vdCIgLXR5cGUgZiAtcGVybSAvMTExIC1leGVjIGNobW9kIDA1NTUge30gKworICAgIHN1ZG8gLW4gZmluZCAiJHJvb3QiIC10eXBlIGYgISAtcGVybSAvMTExIC1leGVjIGNobW9kIDA0NDQge30gKworICAgIHN1ZG8gLW4gY2hvd24gLVIgIiRjb250YWluZXJfaG9zdF91aWQ6JGNvbnRhaW5lcl9ob3N0X2dpZCIgIiRyb290IgorfQorCityZW1vdmVfZXZhbHVhdGlvbl9zb3VyY2VzKCkgeworICAgIFsgLW4gIiR7YWN0aXZlX3NvdXJjZV9yb290Oi19IiBdIHx8IHJldHVybiAwCisgICAgY2FzZSAiJGFjdGl2ZV9zb3VyY2Vfcm9vdCIgaW4KKyAgICAgICAgIiR3b3JrX2RpciIvZXZhbHVhdGlvbi1zb3VyY2VzLiopIDs7CisgICAgICAgICopIGRpZSAicmVmdXNpbmcgdG8gcmVtb3ZlIGFuIHVuZXhwZWN0ZWQgc291cmNlIGRpcmVjdG9yeSIgOzsKKyAgICBlc2FjCisgICAgWyAiJChyZWFscGF0aCAtZSAiJChkaXJuYW1lICIkYWN0aXZlX3NvdXJjZV9yb290IikiKSIgPSAiJHdvcmtfZGlyIiBdIHx8CisgICAgICAgIGRpZSAidGVtcG9yYXJ5IHNvdXJjZSBkaXJlY3RvcnkgZXNjYXBlZCB0aGUgYXR0ZW1wdCB0bXBmcyIKKyAgICBzdWRvIC1uIHJtIC1yZiAtLSAiJGFjdGl2ZV9zb3VyY2Vfcm9vdCIKKyAgICBbICEgLWUgIiRhY3RpdmVfc291cmNlX3Jvb3QiIF0gfHwgZGllICJ0ZW1wb3JhcnkgZXZhbHVhdGlvbiBzb3VyY2VzIHN1cnZpdmVkIGNsZWFudXAiCisgICAgYWN0aXZlX3NvdXJjZV9yb290PSIiCisgICAganEgLVMgJy5jbGVhbnVwX2NvbXBsZXRlID0gdHJ1ZScgIiRzb3VyY2VfZXZpZGVuY2VfcGF0aCIgPiAiJHNvdXJjZV9ldmlkZW5jZV9wYXRoLm5ldyIKKyAgICBjaG1vZCAwNDAwICIkc291cmNlX2V2aWRlbmNlX3BhdGgubmV3IgorICAgIG12IC1mIC0tICIkc291cmNlX2V2aWRlbmNlX3BhdGgubmV3IiAiJHNvdXJjZV9ldmlkZW5jZV9wYXRoIgorfQorCitwZXJzaXN0X2V2aWRlbmNlX3RyZWUoKSB7CisgICAgc3VkbyAtbiBjaG93biAtUiAiJHdvcmtlcl91aWQ6JHdvcmtlcl9naWQiICIkd29ya19kaXIiCisgICAgZmluZCAiJHdvcmtfZGlyIiAtdHlwZSBkIC1leGVjIGNobW9kIHUrcnd4LGdvLXJ3eCB7fSArCisgICAgZmluZCAiJHdvcmtfZGlyIiAtdHlwZSBmIC1leGVjIGNobW9kIDA0MDAge30gKworICAgIHZhbGlkYXRlX291dHB1dF90cmVlICIkd29ya19kaXIiCisgICAgbG9jYWwgcnVudGltZV93b3JrX2Rpcj0iJHdvcmtfZGlyIgorICAgIHdvcmtfZGlyPSIkYXJ0aWZhY3RfZGlyL2V2aWRlbmNlIgorICAgIFsgISAtZSAiJHdvcmtfZGlyIiBdIHx8IGRpZSAicmV0YWluZWQgZXZpZGVuY2UgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzIgorICAgIGluc3RhbGwgLWQgLW0gMDcwMCAiJHdvcmtfZGlyIgorICAgIGNwIC1hICIkcnVudGltZV93b3JrX2Rpci8uIiAiJHdvcmtfZGlyLyIKKyAgICBzeW5jICIkd29ya19kaXIiCisgICAgc3VkbyAtbiB1bW91bnQgIiRydW50aW1lX3dvcmtfZGlyIgorICAgIGFjdGl2ZV93b3JrX21vdW50PSIiCisgICAgcm1kaXIgIiRydW50aW1lX3dvcmtfZGlyIgorICAgIHZhbGlkYXRlX291dHB1dF90cmVlICIkd29ya19kaXIiCisgICAgZmluZCAiJHdvcmtfZGlyIiAtdHlwZSBmIC1leGVjIGNobW9kIDA0MDAge30gKworICAgIGZpbmQgIiR3b3JrX2RpciIgLXR5cGUgZCAtZXhlYyBjaG1vZCAwNTAwIHt9ICsKK30KKword3JpdGVfZXZpZGVuY2VfbWFuaWZlc3QoKSB7CisgICAgZXZpZGVuY2VfbWFuaWZlc3Q9IiRhcnRpZmFjdF9kaXIvZXZpZGVuY2UtbWFuaWZlc3QuanNvbiIKKyAgICBsb2NhbCBldmlkZW5jZV9saW5lcz0iJGFydGlmYWN0X2Rpci8uZXZpZGVuY2UtbGluZXMiCisgICAgd2hpbGUgSUZTPSByZWFkIC1yIC1kICcnIHBhdGg7IGRvCisgICAgICAgIGxvY2FsIHJlbGF0aXZlPSIke3BhdGgjIiRhcnRpZmFjdF9kaXIvIn0iCisgICAgICAgIHByaW50ZiAnJXNcdCVzXHQlc1xuJyAiJHJlbGF0aXZlIiAiJChzaGEyNTZfZmlsZSAiJHBhdGgiKSIgIiQoZmlsZV9ieXRlcyAiJHBhdGgiKSIKKyAgICBkb25lIDwgPChmaW5kICIkd29ya19kaXIiIC10eXBlIGYgLXByaW50MCB8IHNvcnQgLXopID4gIiRldmlkZW5jZV9saW5lcyIKKyAgICBqcSAtUm4gLS1hcmcgam9iX2lkICIkam9iX2lkIiAtLWFyZyByb3VuZF9pZCAiJHJvdW5kX2lkIiBcCisgICAgICAgICdbaW5wdXRzIHwgc3BsaXQoIlx0IikgfCB7cGF0aDouWzBdLHNoYTI1NjouWzFdLGJ5dGVzOiguWzJdfHRvbnVtYmVyKX1dIHwKKyAgICAgICAgIHtzY2hlbWE6MSxraW5kOiJzaW0tbGF0ZW5jeS1ldmlkZW5jZS1tYW5pZmVzdCIsam9iX2lkOiRqb2JfaWQsCisgICAgICAgICAgcm91bmRfaWQ6JHJvdW5kX2lkLGFydGlmYWN0czoufScgPCAiJGV2aWRlbmNlX2xpbmVzIiA+ICIkZXZpZGVuY2VfbWFuaWZlc3QiCisgICAgcm0gLWYgLS0gIiRldmlkZW5jZV9saW5lcyIKKyAgICBjaG1vZCAwNDAwICIkZXZpZGVuY2VfbWFuaWZlc3QiCit9CisKK2VtaXRfY2FuZGlkYXRlX2J1aWxkX2ZhaWx1cmUoKSB7CisgICAgbG9jYWwgYnVpbGRfbG9nPSIkMSIKKyAgICB3cml0ZV9ldmFsdWF0aW9uX3Byb2dyZXNzIGZhaWxlZCAiJHJlcGxpY2F0ZXMiIDAKKyAgICBpZiBbIC1mICIkYnVpbGRfbG9nIiBdICYmIFsgIiRNQVhfQlVJTERfTE9HX0JZVEVTIiAtbHQgIiQoZmlsZV9ieXRlcyAiJGJ1aWxkX2xvZyIpIiBdOyB0aGVuCisgICAgICAgIHRhaWwgLWMgIiRNQVhfQlVJTERfTE9HX0JZVEVTIiAiJGJ1aWxkX2xvZyIgPiAiJGJ1aWxkX2xvZy50YWlsIgorICAgICAgICBtdiAiJGJ1aWxkX2xvZy50YWlsIiAiJGJ1aWxkX2xvZyIKKyAgICBmaQorICAgIHJtIC1mIC0tICIkd29ya19kaXIvY2FuZGlkYXRlLWJ1aWxkLmpzb24iCisgICAgWyAteiAiJChzdWRvIC1uIGRvY2tlciBwcyAtYXEgLS1maWx0ZXIgImxhYmVsPWNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkPSRqb2JfaWQiKSIgXSB8fAorICAgICAgICBkaWUgImNhbmRpZGF0ZSBidWlsZCBmYWlsdXJlIGxlZnQgam9iIGNvbnRhaW5lcnMiCisgICAgWyAteiAiJChzdWRvIC1uIGRvY2tlciBuZXR3b3JrIGxzIC1xIC0tZmlsdGVyICJsYWJlbD1jb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLmpvYi1pZD0kam9iX2lkIikiIF0gfHwKKyAgICAgICAgZGllICJjYW5kaWRhdGUgYnVpbGQgZmFpbHVyZSBsZWZ0IGpvYiBuZXR3b3JrcyIKKyAgICByZW1vdmVfZXZhbHVhdGlvbl9zb3VyY2VzCisKKyAgICBsb2NhbCBzdWJtaXNzaW9uX2Vycm9yPSIkYXJ0aWZhY3RfZGlyL3N1Ym1pc3Npb24tZXJyb3IuanNvbiIKKyAgICBqcSAtbiAtLWFyZyBqb2JfaWQgIiRqb2JfaWQiIC0tYXJnIHJvdW5kX2lkICIkcm91bmRfaWQiIFwKKyAgICAgICAgLS1hcmcgcGF0Y2hfc2hhMjU2ICIkcGF0Y2hfc2hhMjU2IiBcCisgICAgICAgICd7c2NoZW1hOjEsa2luZDoic3VibWlzc2lvbiIsY29kZToiY2FuZGlkYXRlX2J1aWxkX2ZhaWxlZCIsCisgICAgICAgICAgbWVzc2FnZToiY2FuZGlkYXRlIGRpZCBub3QgcGFzcyB0aGUgZnJvemVuIG9mZmxpbmUgYnVpbGQiLAorICAgICAgICAgIHJldHJpYWJsZTpmYWxzZSxqb2JfaWQ6JGpvYl9pZCxyb3VuZF9pZDokcm91bmRfaWQsCisgICAgICAgICAgcGF0Y2hfc2hhMjU2OiRwYXRjaF9zaGEyNTZ9JyA+ICIkc3VibWlzc2lvbl9lcnJvciIKKyAgICBjaG1vZCAwNDAwICIkc3VibWlzc2lvbl9lcnJvciIKKworICAgIHBlcnNpc3RfZXZpZGVuY2VfdHJlZQorICAgIHdyaXRlX2V2aWRlbmNlX21hbmlmZXN0CisgICAgbG9jYWwgY29tcGxldGVfcGF0aD0iJGFydGlmYWN0X2Rpci9ldmFsdWF0aW9uLmNvbXBsZXRlLmpzb24iCisgICAganEgLW4gLS1hcmcgam9iX2lkICIkam9iX2lkIiAtLWFyZyByb3VuZF9pZCAiJHJvdW5kX2lkIiAtLWFyZ2pzb24gYXR0ZW1wdCAiJGF0dGVtcHQiIFwKKyAgICAgICAgLS1hcmcgYmFzZV9pbWFnZV9pZCAiJGJhc2VfaW1hZ2VfaWQiIC0tYXJnIHBhdGNoX3NoYTI1NiAiJHBhdGNoX3NoYTI1NiIgXAorICAgICAgICAtLWFyZyBwcm92aWRlcnNfc2hhMjU2ICIkcHJvdmlkZXJzX3NoYTI1NiIgXAorICAgICAgICAtLWFyZyBiYXNlbGluZV9zaGEyNTYgIiRiYXNlbGluZV9zaGEyNTYiIFwKKyAgICAgICAgLS1hcmcgc3VibWlzc2lvbl9lcnJvcl9zaGEyNTYgIiQoc2hhMjU2X2ZpbGUgIiRzdWJtaXNzaW9uX2Vycm9yIikiIFwKKyAgICAgICAgLS1hcmcgZXZpZGVuY2VfbWFuaWZlc3Rfc2hhMjU2ICIkKHNoYTI1Nl9maWxlICIkZXZpZGVuY2VfbWFuaWZlc3QiKSIgXAorICAgICAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LXdvcmtlci1ldmFsdWF0aW9uLWNvbXBsZXRlIixqb2JfaWQ6JGpvYl9pZCwKKyAgICAgICAgICByb3VuZF9pZDokcm91bmRfaWQsYXR0ZW1wdDokYXR0ZW1wdCxiYXNlX2ltYWdlX2lkOiRiYXNlX2ltYWdlX2lkLAorICAgICAgICAgIGNhbmRpZGF0ZV9pbWFnZV9pZDpudWxsLHBhdGNoX3NoYTI1NjokcGF0Y2hfc2hhMjU2LAorICAgICAgICAgIHByb3ZpZGVyc19zaGEyNTY6JHByb3ZpZGVyc19zaGEyNTYsY2xlYW51cF9jb21wbGV0ZTp0cnVlLAorICAgICAgICAgIHRlcm1pbmFsX2Vycm9yOiJjYW5kaWRhdGVfYnVpbGRfZmFpbGVkIiwKKyAgICAgICAgICBhcnRpZmFjdHM6e2Jhc2VsaW5lOiRiYXNlbGluZV9zaGEyNTYsc3VibWlzc2lvbl9lcnJvcjokc3VibWlzc2lvbl9lcnJvcl9zaGEyNTYsCisgICAgICAgICAgICBldmlkZW5jZV9tYW5pZmVzdDokZXZpZGVuY2VfbWFuaWZlc3Rfc2hhMjU2fX0nID4gIiRjb21wbGV0ZV9wYXRoIgorICAgIGNobW9kIDA0MDAgIiRjb21wbGV0ZV9wYXRoIgorICAgIHN5bmMgLWQgIiRhcnRpZmFjdF9kaXIvYmFzZWxpbmUuanNvbiIgIiRzdWJtaXNzaW9uX2Vycm9yIiAiJGV2aWRlbmNlX21hbmlmZXN0IiAiJGNvbXBsZXRlX3BhdGgiCisgICAgc3luYyAiJGFydGlmYWN0X2RpciIKKworICAgIGxvY2FsIGFydGlmYWN0X3JlY29yZHM9KCkKKyAgICBsb2NhbCByZWxhdGl2ZSBwYXRoCisgICAgZm9yIHJlbGF0aXZlIGluIGJhc2VsaW5lLmpzb24gc3VibWlzc2lvbi1lcnJvci5qc29uIGV2YWx1YXRpb24tcHJvZ3Jlc3MuanNvbiBldmFsdWF0aW9uLmNvbXBsZXRlLmpzb24gZXZpZGVuY2UtbWFuaWZlc3QuanNvbjsgZG8KKyAgICAgICAgcGF0aD0iJGFydGlmYWN0X2Rpci8kcmVsYXRpdmUiCisgICAgICAgIGFydGlmYWN0X3JlY29yZHMrPSgiJChqcSAtY24gLS1hcmcgcGF0aCAiJHJlbGF0aXZlIiAtLWFyZyBzaGEyNTYgIiQoc2hhMjU2X2ZpbGUgIiRwYXRoIikiIFwKKyAgICAgICAgICAgIC0tYXJnanNvbiBieXRlcyAiJChmaWxlX2J5dGVzICIkcGF0aCIpIiAne3BhdGg6JHBhdGgsc2hhMjU2OiRzaGEyNTYsYnl0ZXM6JGJ5dGVzfScpIikKKyAgICBkb25lCisgICAgbG9jYWwgYXJ0aWZhY3RzX2pzb24KKyAgICBhcnRpZmFjdHNfanNvbj0iJChwcmludGYgJyVzXG4nICIke2FydGlmYWN0X3JlY29yZHNbQF19IiB8IGpxIC1zICcuJykiCisgICAgbG9jYWwgc2VjdXJpdHlfanNvbgorICAgIHNlY3VyaXR5X2pzb249IiQoanEgLWNuIFwKKyAgICAgICAgJ3t0ZW1wbGF0ZV9kYXRhYmFzZV9yZXNldDpmYWxzZSxyZWRpc19yZXNldDpmYWxzZSxjZ3JvdXBfY29udGFpbmVkOmZhbHNlLAorICAgICAgICAgIHJlc291cmNlX2xpbWl0czpmYWxzZSxtYW5hZ2VtZW50X2NwdV9yZXNlcnZlZDp0cnVlLAorICAgICAgICAgIG1hbmFnZW1lbnRfbWVtb3J5X3Jlc2VydmVkOnRydWUsZGVmYXVsdF9kZW55X25ldHdvcms6dHJ1ZSxvZmZsaW5lX2J1aWxkOnRydWUsCisgICAgICAgICAgb2ZmbGluZV9idWlsZF9yZXNvdXJjZV9saW1pdHM6dHJ1ZSwKKyAgICAgICAgICBub19wcm9kdWN0aW9uX3NlY3JldHM6dHJ1ZSxzdHJ1Y3R1cmFsX3BhdGNoX2NoZWNrOnRydWUsCisgICAgICAgICAgYWNjb3VudGluZ19jb21wbGV0ZTpmYWxzZSxyZXNvdXJjZV9yZXBvcnRfY29tcGxldGU6ZmFsc2UsCisgICAgICAgICAgY2xlYW51cF9jb21wbGV0ZTp0cnVlLGltbXV0YWJsZV9yZXBvcnRzOnRydWUsY2dyb3VwX2lkOiIiLAorICAgICAgICAgIHRlbXBsYXRlX2RhdGFiYXNlX2lkOiIiLHJlZGlzX2dlbmVyYXRpb25faWQ6IiJ9JykiCisgICAgbG9jYWwgZXZhbF9lcnJvcl9qc29uCisgICAgZXZhbF9lcnJvcl9qc29uPSIkKGpxICd7a2luZCxjb2RlLG1lc3NhZ2UscmV0cmlhYmxlfScgIiRzdWJtaXNzaW9uX2Vycm9yIikiCisgICAgbG9jYWwgcmVzdWx0X3RtcD0iJGFydGlmYWN0X2Rpci8ud29ya2VyLXJlc3VsdC50bXAiCisgICAganEgLW4gLS1hcmcgam9iX2lkICIkam9iX2lkIiAtLWFyZ2pzb24gZXZhbF9lcnJvciAiJGV2YWxfZXJyb3JfanNvbiIgXAorICAgICAgICAtLWFyZ2pzb24gc2VjdXJpdHkgIiRzZWN1cml0eV9qc29uIiAtLWFyZ2pzb24gYXJ0aWZhY3RzICIkYXJ0aWZhY3RzX2pzb24iIFwKKyAgICAgICAgJ3tzY2hlbWE6MSxqb2JfaWQ6JGpvYl9pZCxzY29yZTpudWxsLGV2YWxfZXJyb3I6JGV2YWxfZXJyb3IsCisgICAgICAgICAgc2VjdXJpdHk6JHNlY3VyaXR5LGFydGlmYWN0czokYXJ0aWZhY3RzfScgPiAiJHJlc3VsdF90bXAiCisgICAgc3luYyAtZCAiJHJlc3VsdF90bXAiCisgICAgWyAhIC1lICIkcmVzdWx0X3BhdGgiIF0gfHwgZGllICJ3b3JrZXIgcmVzdWx0IHBhdGggYXBwZWFyZWQgZHVyaW5nIGV2YWx1YXRpb24iCisgICAgbXYgIiRyZXN1bHRfdG1wIiAiJHJlc3VsdF9wYXRoIgorICAgIGNobW9kIDA0MDAgIiRyZXN1bHRfcGF0aCIKKyAgICBzeW5jIC1kICIkcmVzdWx0X3BhdGgiCisgICAgc3luYyAiJGFydGlmYWN0X2RpciIKKyAgICBsb2cgInRlcm1pbmFsIHN1Ym1pc3Npb24gYnVpbGQgZmFpbHVyZTogam9iPSRqb2JfaWQiCit9CisKK2NvbnRhaW5lcl9jZ3JvdXAoKSB7CisgICAgbG9jYWwgY29udGFpbmVyX2lkPSIkMSIgcGlkIHJlbAorICAgIHBpZD0iJChzdWRvIC1uIGRvY2tlciBpbnNwZWN0IC0tZm9ybWF0ICd7ey5TdGF0ZS5QaWR9fScgIiRjb250YWluZXJfaWQiKSIKKyAgICBbWyAiJHBpZCIgPX4gXlsxLTldWzAtOV0qJCBdXSB8fCByZXR1cm4gMQorICAgIHJlbD0iJChzdWRvIC1uIGF3ayAtRjogJyQxID09ICIwIiB7cHJpbnQgJDN9JyAiL3Byb2MvJHBpZC9jZ3JvdXAiKSIKKyAgICBbIC1uICIkcmVsIiBdICYmIFsgLWQgIi9zeXMvZnMvY2dyb3VwJHJlbCIgXSB8fCByZXR1cm4gMQorICAgIHByaW50ZiAnJXMnICIkcmVsIgorfQorCityZWFkX2Nncm91cF91c2FnZV91c2VjKCkgeworICAgIGF3ayAnJDEgPT0gInVzYWdlX3VzZWMiIHtwcmludCAkMn0nICIvc3lzL2ZzL2Nncm91cCQxL2NwdS5zdGF0IgorfQorCityZWFkX2Nncm91cF9wZWFrKCkgeworICAgIGxvY2FsIHZhbHVlCisgICAgdmFsdWU9IiQoPCIvc3lzL2ZzL2Nncm91cCQxL21lbW9yeS5wZWFrIikiCisgICAgW1sgIiR2YWx1ZSIgPX4gXlswLTldKyQgXV0gfHwgcmV0dXJuIDEKKyAgICBwcmludGYgJyVzJyAiJHZhbHVlIgorfQorCityZWFkX2Nncm91cF9vb21fa2lsbHMoKSB7CisgICAgYXdrICckMSA9PSAib29tX2tpbGwiIHtwcmludCAkMjsgZm91bmQ9MX0gRU5EIHtpZiAoIWZvdW5kKSBleGl0IDF9JyBcCisgICAgICAgICIvc3lzL2ZzL2Nncm91cCQxL21lbW9yeS5ldmVudHMiCit9CisKK3NhbXBsZV9jZ3JvdXBfY291bnRlcnMoKSB7CisgICAgbG9jYWwgdGFyZ2V0PSIkMSIKKyAgICBzaGlmdAorICAgIGxvY2FsIHJlbCB1c2FnZSBwZWFrIG9vbSBjcHVfdXNlYyBwZWFrX2J5dGVzIG9vbV9raWxscyB2YWxpZCBzYW1wbGVfdG1wCisgICAgc2FtcGxlX3RtcD0iJHRhcmdldC5uZXciCisgICAgd2hpbGUgOjsgZG8KKyAgICAgICAgY3B1X3VzZWM9MAorICAgICAgICBwZWFrX2J5dGVzPTAKKyAgICAgICAgb29tX2tpbGxzPTAKKyAgICAgICAgdmFsaWQ9dHJ1ZQorICAgICAgICBmb3IgcmVsIGluICIkQCI7IGRvCisgICAgICAgICAgICBpZiAhIHVzYWdlPSIkKHJlYWRfY2dyb3VwX3VzYWdlX3VzZWMgIiRyZWwiIDI+L2Rldi9udWxsKSI7IHRoZW4KKyAgICAgICAgICAgICAgICB2YWxpZD1mYWxzZQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgaWYgISBwZWFrPSIkKHJlYWRfY2dyb3VwX3BlYWsgIiRyZWwiIDI+L2Rldi9udWxsKSI7IHRoZW4KKyAgICAgICAgICAgICAgICB2YWxpZD1mYWxzZQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgaWYgISBvb209IiQocmVhZF9jZ3JvdXBfb29tX2tpbGxzICIkcmVsIiAyPi9kZXYvbnVsbCkiOyB0aGVuCisgICAgICAgICAgICAgICAgdmFsaWQ9ZmFsc2UKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGlmIFtbICEgIiR1c2FnZSIgPX4gXlswLTldKyQgXV0gfHwgW1sgISAiJHBlYWsiID1+IF5bMC05XSskIF1dIHx8IFtbICEgIiRvb20iID1+IF5bMC05XSskIF1dOyB0aGVuCisgICAgICAgICAgICAgICAgdmFsaWQ9ZmFsc2UKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGNwdV91c2VjPSQoKGNwdV91c2VjICsgdXNhZ2UpKQorICAgICAgICAgICAgcGVha19ieXRlcz0kKChwZWFrX2J5dGVzICsgcGVhaykpCisgICAgICAgICAgICBvb21fa2lsbHM9JCgob29tX2tpbGxzICsgb29tKSkKKyAgICAgICAgZG9uZQorICAgICAgICBpZiBbICIkdmFsaWQiID0gdHJ1ZSBdOyB0aGVuCisgICAgICAgICAgICBwcmludGYgJyVzICVzICVzXG4nICIkY3B1X3VzZWMiICIkcGVha19ieXRlcyIgIiRvb21fa2lsbHMiID4gIiRzYW1wbGVfdG1wIgorICAgICAgICAgICAgbXYgIiRzYW1wbGVfdG1wIiAiJHRhcmdldCIKKyAgICAgICAgZmkKKyAgICAgICAgc2xlZXAgMC4xCisgICAgZG9uZQorfQorCisjIERvY2tlciBpbnNwZWN0aW9uIGNhbiBjb250YWluIGNyZWRlbnRpYWxzIGFuZCBiaW5kLXNvdXJjZSBwYXRocy4gUGVyc2lzdAorIyBvbmx5IHRoaXMgYWxsb3dsaXN0LCBiZWZvcmUgYW55IHBvbGljeSBmYWlsdXJlIG9yIGNsZWFudXAgY2FuIGRpc2NhcmQgaXQuCit3cml0ZV9jb250YWluZXJfaW5zcGVjdGlvbigpIHsKKyAgICBsb2NhbCBwYXRoPSIkMSIgcGVuZGluZz0iJDEubmV3IgorICAgIGpxICdbLltdIHwgeworICAgICAgICAgIGlkOi5JZCxuYW1lOi5OYW1lLGltYWdlX2lkOi5JbWFnZSwKKyAgICAgICAgICBjb25maWc6e2ltYWdlOi5Db25maWcuSW1hZ2UsdXNlcjouQ29uZmlnLlVzZXIsbGFiZWxzOi5Db25maWcuTGFiZWxzfSwKKyAgICAgICAgICBob3N0X2NvbmZpZzp7cmVhZG9ubHlfcm9vdGZzOi5Ib3N0Q29uZmlnLlJlYWRvbmx5Um9vdGZzLAorICAgICAgICAgICAgbWVtb3J5Oi5Ib3N0Q29uZmlnLk1lbW9yeSxtZW1vcnlfc3dhcDouSG9zdENvbmZpZy5NZW1vcnlTd2FwLAorICAgICAgICAgICAgcGlkc19saW1pdDouSG9zdENvbmZpZy5QaWRzTGltaXQsY2dyb3VwX3BhcmVudDouSG9zdENvbmZpZy5DZ3JvdXBQYXJlbnQsCisgICAgICAgICAgICBjcHVzZXRfY3B1czouSG9zdENvbmZpZy5DcHVzZXRDcHVzLGNhcF9kcm9wOi5Ib3N0Q29uZmlnLkNhcERyb3AsCisgICAgICAgICAgICBzZWN1cml0eV9vcHQ6Lkhvc3RDb25maWcuU2VjdXJpdHlPcHQsbmV0d29ya19tb2RlOi5Ib3N0Q29uZmlnLk5ldHdvcmtNb2RlLAorICAgICAgICAgICAgaXB2Nl9hbGxfZGlzYWJsZWQ6Lkhvc3RDb25maWcuU3lzY3Rsc1sibmV0LmlwdjYuY29uZi5hbGwuZGlzYWJsZV9pcHY2Il0sCisgICAgICAgICAgICBpcHY2X2RlZmF1bHRfZGlzYWJsZWQ6Lkhvc3RDb25maWcuU3lzY3Rsc1sibmV0LmlwdjYuY29uZi5kZWZhdWx0LmRpc2FibGVfaXB2NiJdfSwKKyAgICAgICAgICBtb3VudHM6Wy5Nb3VudHNbXT8gfCB7dHlwZTouVHlwZSxkZXN0aW5hdGlvbjouRGVzdGluYXRpb24scnc6LlJXfV0sCisgICAgICAgICAgc3RhdGU6e3N0YXR1czouU3RhdGUuU3RhdHVzLGV4aXRfY29kZTouU3RhdGUuRXhpdENvZGUsCisgICAgICAgICAgICBvb21fa2lsbGVkOi5TdGF0ZS5PT01LaWxsZWQsc3RhcnRlZF9hdDouU3RhdGUuU3RhcnRlZEF0LAorICAgICAgICAgICAgZmluaXNoZWRfYXQ6LlN0YXRlLkZpbmlzaGVkQXQscnVubmluZzouU3RhdGUuUnVubmluZywKKyAgICAgICAgICAgIGRlYWQ6LlN0YXRlLkRlYWQscmVzdGFydGluZzouU3RhdGUuUmVzdGFydGluZyxwYXVzZWQ6LlN0YXRlLlBhdXNlZCwKKyAgICAgICAgICAgIHJlc3RhcnRfY291bnQ6LlJlc3RhcnRDb3VudCxoZWFsdGhfc3RhdHVzOi5TdGF0ZS5IZWFsdGguU3RhdHVzLAorICAgICAgICAgICAgaGVhbHRoX2ZhaWxpbmdfc3RyZWFrOi5TdGF0ZS5IZWFsdGguRmFpbGluZ1N0cmVha319XScgPiAiJHBlbmRpbmciCisgICAgY2htb2QgMDQwMCAiJHBlbmRpbmciCisgICAgbXYgLWYgLS0gIiRwZW5kaW5nIiAiJHBhdGgiCit9CisKK2Jhc2VsaW5lX2Nzdj0oKQorYmFzZWxpbmVfc3RkZXJyPSgpCitiYXNlbGluZV9hY2NvdW50aW5nPSgpCitiYXNlbGluZV9zYW1wbGVzPSgpCitiYXNlbGluZV9yZXNvdXJjZXM9KCkKK2Jhc2VsaW5lX21hcmtlcnM9KCkKK2Jhc2VsaW5lX21hbmlmZXN0cz0oKQorY2FuZGlkYXRlX2Nzdj0oKQorY2FuZGlkYXRlX3N0ZGVycj0oKQorY2FuZGlkYXRlX2FjY291bnRpbmc9KCkKK2NhbmRpZGF0ZV9zYW1wbGVzPSgpCitjYW5kaWRhdGVfcmVzb3VyY2VzPSgpCitjYW5kaWRhdGVfbWFya2Vycz0oKQorY2FuZGlkYXRlX21hbmlmZXN0cz0oKQorcnVuX2FjY291bnRpbmdfcmVjb3Jkcz0oKQorcnVuX3Jlc291cmNlX3JlY29yZHM9KCkKK21pZ3JhdGlvbl9oYXNoZXM9KCkKK3JlZGlzX2dlbmVyYXRpb25zPSgpCitwcm9ncmVzc19yZWNvcmRzPSgpCitwcm9ncmVzc19wYXRoPSIkYXJ0aWZhY3RfZGlyL2V2YWx1YXRpb24tcHJvZ3Jlc3MuanNvbiIKKworam9pbl9jc3YoKSB7CisgICAgbG9jYWwgSUZTPSwKKyAgICBwcmludGYgJyVzJyAiJCoiCit9CisKK3dyaXRlX2V2YWx1YXRpb25fcHJvZ3Jlc3MoKSB7CisgICAgbG9jYWwgcGhhc2U9IiQxIiBiYXNlbGluZV9jb21wbGV0ZWQ9IiQyIiBjYW5kaWRhdGVfY29tcGxldGVkPSIkMyIKKyAgICBsb2NhbCBwZW5kaW5nPSIkcHJvZ3Jlc3NfcGF0aC5uZXciCisgICAgcHJpbnRmICclc1xuJyAiJHtwcm9ncmVzc19yZWNvcmRzW0BdfSIgfCBqcSAtcyBcCisgICAgICAgIC0tYXJnIGpvYl9pZCAiJGpvYl9pZCIgLS1hcmcgcm91bmRfaWQgIiRyb3VuZF9pZCIgLS1hcmcgcGhhc2UgIiRwaGFzZSIgXAorICAgICAgICAtLWFyZ2pzb24gcmVwbGljYXRlX2NvdW50ICIkcmVwbGljYXRlcyIgXAorICAgICAgICAtLWFyZ2pzb24gYmFzZWxpbmVfY29tcGxldGVkICIkYmFzZWxpbmVfY29tcGxldGVkIiBcCisgICAgICAgIC0tYXJnanNvbiBjYW5kaWRhdGVfY29tcGxldGVkICIkY2FuZGlkYXRlX2NvbXBsZXRlZCIgXAorICAgICAgICAtLWFyZ2pzb24gdXBkYXRlZF91bml4X21zICIkKGRhdGUgKyVzJTNOKSIgXAorICAgICAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LWV2YWx1YXRpb24tcHJvZ3Jlc3MiLGpvYl9pZDokam9iX2lkLAorICAgICAgICAgIHJvdW5kX2lkOiRyb3VuZF9pZCxwaGFzZTokcGhhc2UscmVwbGljYXRlX2NvdW50OiRyZXBsaWNhdGVfY291bnQsCisgICAgICAgICAgYmFzZWxpbmVfY29tcGxldGVkOiRiYXNlbGluZV9jb21wbGV0ZWQsCisgICAgICAgICAgY2FuZGlkYXRlX2NvbXBsZXRlZDokY2FuZGlkYXRlX2NvbXBsZXRlZCwKKyAgICAgICAgICB1cGRhdGVkX3VuaXhfbXM6JHVwZGF0ZWRfdW5peF9tcyxtZXRyaWNzOi59JyA+ICIkcGVuZGluZyIKKyAgICBjaG1vZCAwNDAwICIkcGVuZGluZyIKKyAgICBtdiAtZiAtLSAiJHBlbmRpbmciICIkcHJvZ3Jlc3NfcGF0aCIKKyAgICBzeW5jIC1kICIkcHJvZ3Jlc3NfcGF0aCIKK30KKworcnVuX2xpdmVfY29tcGFyaXNvbigpIHsKKyAgICBsb2NhbCBpbmRleD0iJDEiIG9yZGluYWwgY29tcGFyZV9uYW1lIGNvbXBhcmVfY2dyb3VwIGNvbXBhcmlzb24KKyAgICBvcmRpbmFsPSIkKHByaW50ZiAnJTAyZCcgIiRpbmRleCIpIgorICAgIGNvbXBhcmVfbmFtZT0idXJuZXR3b3JrLWV2YWwtJHtqb2JfaWQvLy0vfS1saXZlLSR7b3JkaW5hbH0iCisgICAgY29tcGFyZV9uYW1lPSIke2NvbXBhcmVfbmFtZTowOjYzfSIKKyAgICBjb21wYXJlX2Nncm91cD0idXJuZXR3b3JrLWV2YWx1YXRpb24tJHtqb2JfaWQvLy0vfS1saXZlLSR7b3JkaW5hbH0uc2xpY2UiCisgICAgY29tcGFyZV9jZ3JvdXA9IiR7Y29tcGFyZV9jZ3JvdXA6MDo5NX0uc2xpY2UiCisgICAgY29tcGFyZV9jZ3JvdXA9IiR7Y29tcGFyZV9jZ3JvdXAvLnNsaWNlLnNsaWNlLy5zbGljZX0iCisgICAgaWYgWyAtbiAiJHJvdW5kX2Jhc2VsaW5lX3BhdGgiIF07IHRoZW4KKyAgICAgICAgIyBPZmZpY2lhbCBzY29yZSBjb21tYW5kcyBhY2NlcHQgcmVzdWx0cy5jc3YgYW5kIHJlc29sdmUgaXRzIHJ1bi5qc29uCisgICAgICAgICMgc2lkZWNhcjsgY29tcGFyZSBiZWxvdyBhY2NlcHRzIHRoZSBtYW5pZmVzdHMgZGlyZWN0bHkuCisgICAgICAgIGNvbXBhcmlzb249IiQoc3VkbyAtbiBkb2NrZXIgcnVuIC0tcm0gLS1uYW1lICIkY29tcGFyZV9uYW1lIiBcCisgICAgICAgICAgICAtLW5ldHdvcmsgbm9uZSAtLXJlYWQtb25seSAtLXVzZXIgNjU1MzI6NjU1MzIgXAorICAgICAgICAgICAgLS1jcHVzZXQtY3B1cyAiJGNwdXNldCIgXAorICAgICAgICAgICAgLS1tZW1vcnkgIiRTQ09SRVJfTUVNT1JZX0JZVEVTIiAtLW1lbW9yeS1zd2FwICIkU0NPUkVSX01FTU9SWV9CWVRFUyIgXAorICAgICAgICAgICAgLS1waWRzLWxpbWl0ICIkU0NPUkVSX1BJRFNfTElNSVQiIC0tY2dyb3VwLXBhcmVudCAiJGNvbXBhcmVfY2dyb3VwIiBcCisgICAgICAgICAgICAtLWNhcC1kcm9wIEFMTCAtLXNlY3VyaXR5LW9wdCBuby1uZXctcHJpdmlsZWdlczp0cnVlIFwKKyAgICAgICAgICAgIC0tbGFiZWwgImNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkPSRqb2JfaWQiIFwKKyAgICAgICAgICAgIC0tbGFiZWwgJ2NvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uc3RhZ2U9bGl2ZS1wcm9ncmVzcycgXAorICAgICAgICAgICAgLS1sYWJlbCAiY29tLnVybmV0d29yay5jb21wZXRpdGlvbi5yb3VuZC1pZD0kcm91bmRfaWQiIFwKKyAgICAgICAgICAgIC0tbW91bnQgInR5cGU9YmluZCxzcmM9JHdvcmtfZGlyL3Njb3Jlci1pbnB1dCxkc3Q9L2FydGlmYWN0cyxyZWFkb25seSIgXAorICAgICAgICAgICAgLS1lbnRyeXBvaW50IC9vcHQvdXJuZXR3b3JrL2Jpbi9zaW0tbGF0ZW5jeSBcCisgICAgICAgICAgICAiJGJhc2VfaW1hZ2VfaWQiIHNjb3JlLXByb2dyZXNzIFwKKyAgICAgICAgICAgIC0tcnVuICIkKGpvaW5fY3N2ICIke2NhbmRpZGF0ZV9jc3ZbQF19IikiIFwKKyAgICAgICAgICAgIC0tYmFzZWxpbmUgL2FydGlmYWN0cy9iYXNlbGluZS5qc29uKSIgfHwgZGllICJjYW5kaWRhdGUtJG9yZGluYWwgbGl2ZSBjb21wYXJpc29uIGZhaWxlZCIKKyAgICBlbHNlCisgICAgICAgIGNvbXBhcmlzb249IiQoc3VkbyAtbiBkb2NrZXIgcnVuIC0tcm0gLS1uYW1lICIkY29tcGFyZV9uYW1lIiBcCisgICAgICAgICAgICAtLW5ldHdvcmsgbm9uZSAtLXJlYWQtb25seSAtLXVzZXIgNjU1MzI6NjU1MzIgXAorICAgICAgICAgICAgLS1jcHVzZXQtY3B1cyAiJGNwdXNldCIgXAorICAgICAgICAgICAgLS1tZW1vcnkgIiRTQ09SRVJfTUVNT1JZX0JZVEVTIiAtLW1lbW9yeS1zd2FwICIkU0NPUkVSX01FTU9SWV9CWVRFUyIgXAorICAgICAgICAgICAgLS1waWRzLWxpbWl0ICIkU0NPUkVSX1BJRFNfTElNSVQiIC0tY2dyb3VwLXBhcmVudCAiJGNvbXBhcmVfY2dyb3VwIiBcCisgICAgICAgICAgICAtLWNhcC1kcm9wIEFMTCAtLXNlY3VyaXR5LW9wdCBuby1uZXctcHJpdmlsZWdlczp0cnVlIFwKKyAgICAgICAgICAgIC0tbGFiZWwgImNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkPSRqb2JfaWQiIFwKKyAgICAgICAgICAgIC0tbGFiZWwgJ2NvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uc3RhZ2U9bGl2ZS1wcm9ncmVzcycgXAorICAgICAgICAgICAgLS1sYWJlbCAiY29tLnVybmV0d29yay5jb21wZXRpdGlvbi5yb3VuZC1pZD0kcm91bmRfaWQiIFwKKyAgICAgICAgICAgIC0tbW91bnQgInR5cGU9YmluZCxzcmM9JHdvcmtfZGlyL3Njb3Jlci1pbnB1dCxkc3Q9L2FydGlmYWN0cyxyZWFkb25seSIgXAorICAgICAgICAgICAgLS1lbnRyeXBvaW50IC9vcHQvdXJuZXR3b3JrL2Jpbi9zaW0tbGF0ZW5jeSBcCisgICAgICAgICAgICAiJGJhc2VfaW1hZ2VfaWQiIGNvbXBhcmUgXAorICAgICAgICAgICAgLS1hICIkKGpvaW5fY3N2ICIke2NhbmRpZGF0ZV9tYW5pZmVzdHNbQF19IikiIFwKKyAgICAgICAgICAgIC0tYiAiJChqb2luX2NzdiAiJHtiYXNlbGluZV9tYW5pZmVzdHNbQF19IikiIFwKKyAgICAgICAgICAgIC0tcCAwLjA1IC0tanNvbikiIHx8IGRpZSAiY2FuZGlkYXRlLSRvcmRpbmFsIGxpdmUgY29tcGFyaXNvbiBmYWlsZWQiCisgICAgZmkKKyAgICBqcSAtZSBcCisgICAgICAgICcuYWxwaGEgPT0gMC4wNSBhbmQgKC5tZXRyaWNzIHwgdHlwZSA9PSAiYXJyYXkiKSBhbmQKKyAgICAgICAgIChbLm1ldHJpY3NbXSB8IHNlbGVjdCgubmFtZSA9PSAidHRmYl9wNTBfbXMiIG9yCisgICAgICAgICAgICAgLm5hbWUgPT0gInR0ZmJfcDk1X21zIiBvcgorICAgICAgICAgICAgIC5uYW1lID09ICJ0aHJvdWdocHV0X3A1MF9ieXRlc19wZXJfcyIgb3IKKyAgICAgICAgICAgICAubmFtZSA9PSAidGhyb3VnaHB1dF9wOTVfYnl0ZXNfcGVyX3MiKV0gfCBsZW5ndGgpID09IDQnIFwKKyAgICAgICAgPDw8IiRjb21wYXJpc29uIiA+L2Rldi9udWxsIHx8IGRpZSAiY2FuZGlkYXRlLSRvcmRpbmFsIGxpdmUgY29tcGFyaXNvbiBpcyBpbnZhbGlkIgorICAgIHByaW50ZiAnJXMnICIkY29tcGFyaXNvbiIKK30KKworcmVjb3JkX3N0YWdlX3Byb2dyZXNzKCkgeworICAgIGxvY2FsIHJvbGU9IiQxIiBpbmRleD0iJDIiIHJ1bl9tYW5pZmVzdD0iJDMiCisgICAgbG9jYWwgY29tcGFyaXNvbl9qc29uPW51bGwgbWV0cmljIHF1YW50aWxlIHZhbHVlIG1ldHJpY19jb21wYXJpc29uCisgICAgbG9jYWwgcF9pbXByb3ZlbWVudCBwX3JlZ3Jlc3Npb24gc2lnbmlmaWNhbmNlCisgICAgaWYgWyAiJHJvbGUiID0gY2FuZGlkYXRlIF07IHRoZW4KKyAgICAgICAgY29tcGFyaXNvbl9qc29uPSIkKHJ1bl9saXZlX2NvbXBhcmlzb24gIiRpbmRleCIpIgorICAgIGZpCisgICAgZm9yIG1ldHJpYyBpbiBcCisgICAgICAgIHR0ZmJfcDUwX21zIHR0ZmJfcDk1X21zIFwKKyAgICAgICAgdGhyb3VnaHB1dF9wNTBfYnl0ZXNfcGVyX3MgdGhyb3VnaHB1dF9wOTVfYnl0ZXNfcGVyX3M7IGRvCisgICAgICAgIHZhbHVlPSIkKHN1ZG8gLW4ganEgLWVyIC0tYXJnIG1ldHJpYyAiJG1ldHJpYyIgXAorICAgICAgICAgICAgJy5tZXRyaWNzWyRtZXRyaWNdLnZhbHVlIHwKKyAgICAgICAgICAgICBzZWxlY3QodHlwZSA9PSAibnVtYmVyIiBhbmQgaXNmaW5pdGUgYW5kIC4gPj0gMCknIFwKKyAgICAgICAgICAgICIkcnVuX21hbmlmZXN0IikiIHx8IGRpZSAiJHJvbGUtJGluZGV4IGxpdmUgbWV0cmljICRtZXRyaWMgaXMgaW52YWxpZCIKKyAgICAgICAgY2FzZSAiJG1ldHJpYyIgaW4KKyAgICAgICAgICAgICpfcDUwXyopIHF1YW50aWxlPXA1MCA7OworICAgICAgICAgICAgKl9wOTVfKikgcXVhbnRpbGU9cDk1IDs7CisgICAgICAgICAgICAqKSBkaWUgInVuc3VwcG9ydGVkIGxpdmUgbWV0cmljICRtZXRyaWMiIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgaWYgWyAiJHJvbGUiID0gYmFzZWxpbmUgXTsgdGhlbgorICAgICAgICAgICAgcF9pbXByb3ZlbWVudD1udWxsCisgICAgICAgICAgICBwX3JlZ3Jlc3Npb249bnVsbAorICAgICAgICAgICAgc2lnbmlmaWNhbmNlPWJhc2VsaW5lCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1ldHJpY19jb21wYXJpc29uPSIkKGpxIC1lYyAtLWFyZyBtZXRyaWMgIiRtZXRyaWMiIFwKKyAgICAgICAgICAgICAgICAnLm1ldHJpY3NbXSB8IHNlbGVjdCgubmFtZSA9PSAkbWV0cmljKScgPDw8IiRjb21wYXJpc29uX2pzb24iKSIgfHwKKyAgICAgICAgICAgICAgICBkaWUgImNhbmRpZGF0ZS0kaW5kZXggY29tcGFyaXNvbiBvbWl0dGVkICRtZXRyaWMiCisgICAgICAgICAgICBwX2ltcHJvdmVtZW50PSIkKGpxIC1jICdpZiAudGVzdGFibGUgdGhlbiAoLnBfYSAvLyAwKSBlbHNlIG51bGwgZW5kJyBcCisgICAgICAgICAgICAgICAgPDw8IiRtZXRyaWNfY29tcGFyaXNvbiIpIgorICAgICAgICAgICAgcF9yZWdyZXNzaW9uPSIkKGpxIC1jICdpZiAudGVzdGFibGUgdGhlbiAoLnBfYiAvLyAwKSBlbHNlIG51bGwgZW5kJyBcCisgICAgICAgICAgICAgICAgPDw8IiRtZXRyaWNfY29tcGFyaXNvbiIpIgorICAgICAgICAgICAgc2lnbmlmaWNhbmNlPSIkKGpxIC1yIC0tYXJnanNvbiBhbHBoYSAwLjA1IFwKKyAgICAgICAgICAgICAgICAnaWYgLnRlc3RhYmxlICE9IHRydWUgdGhlbiAibm90X3Rlc3RhYmxlIgorICAgICAgICAgICAgICAgICBlbGlmICgucF9hIC8vIDApIDw9ICRhbHBoYSB0aGVuICJpbXByb3ZlZCIKKyAgICAgICAgICAgICAgICAgZWxpZiAoLnBfYiAvLyAwKSA8PSAkYWxwaGEgdGhlbiAicmVncmVzc2VkIgorICAgICAgICAgICAgICAgICBlbHNlICJub3Rfc2lnbmlmaWNhbnQiIGVuZCcgPDw8IiRtZXRyaWNfY29tcGFyaXNvbiIpIgorICAgICAgICBmaQorICAgICAgICBwcm9ncmVzc19yZWNvcmRzKz0oIiQoanEgLWNuIFwKKyAgICAgICAgICAgIC0tYXJnIHJvbGUgIiRyb2xlIiAtLWFyZ2pzb24gcmVwbGljYXRlICIkaW5kZXgiIFwKKyAgICAgICAgICAgIC0tYXJnIG1ldHJpYyAiJG1ldHJpYyIgLS1hcmcgcXVhbnRpbGUgIiRxdWFudGlsZSIgXAorICAgICAgICAgICAgLS1hcmdqc29uIHZhbHVlICIkdmFsdWUiIFwKKyAgICAgICAgICAgIC0tYXJnanNvbiBwX2ltcHJvdmVtZW50ICIkcF9pbXByb3ZlbWVudCIgXAorICAgICAgICAgICAgLS1hcmdqc29uIHBfcmVncmVzc2lvbiAiJHBfcmVncmVzc2lvbiIgXAorICAgICAgICAgICAgLS1hcmcgc2lnbmlmaWNhbmNlICIkc2lnbmlmaWNhbmNlIiBcCisgICAgICAgICAgICAne3JvbGU6JHJvbGUscmVwbGljYXRlOiRyZXBsaWNhdGUsbWV0cmljOiRtZXRyaWMsCisgICAgICAgICAgICAgIHF1YW50aWxlOiRxdWFudGlsZSx2YWx1ZTokdmFsdWUsCisgICAgICAgICAgICAgIHBfaW1wcm92ZW1lbnQ6JHBfaW1wcm92ZW1lbnQscF9yZWdyZXNzaW9uOiRwX3JlZ3Jlc3Npb24sCisgICAgICAgICAgICAgIHNpZ25pZmljYW5jZTokc2lnbmlmaWNhbmNlfScpIikKKyAgICBkb25lCisgICAgaWYgWyAiJHJvbGUiID0gYmFzZWxpbmUgXTsgdGhlbgorICAgICAgICB3cml0ZV9ldmFsdWF0aW9uX3Byb2dyZXNzIGJhc2VsaW5lICIkaW5kZXgiIDAKKyAgICBlbHNlCisgICAgICAgIHdyaXRlX2V2YWx1YXRpb25fcHJvZ3Jlc3MgY2FuZGlkYXRlICIkcmVwbGljYXRlcyIgIiRpbmRleCIKKyAgICBmaQorfQorCit3cml0ZV9ldmFsdWF0aW9uX3Byb2dyZXNzIHByZXBhcmluZyAwIDAKKworcnVuX3N0YWdlKCkgeworICAgIGxvY2FsIHJvbGU9IiQxIiBpbmRleD0iJDIiIGltYWdlPSIkMyIgYnVpbGRfc2hhPSIkNCIgc2ltdWxhdG9yX3NoYT0iJDUiIGNhbmRpZGF0ZV9wYXRjaF9zaGE9IiQ2IgorICAgIGxvY2FsIG9yZGluYWwgZXZhbHVhdGlvbl9pZCBzdGFnZV90b2tlbiBwcm9qZWN0IGNncm91cF9wYXJlbnQgc3RhZ2Vfcm9vdCBvdXRwdXQgcnVubmVyX2VudiBjb21wb3NlX2VudiBzb3VyY2UKKyAgICBvcmRpbmFsPSIkKHByaW50ZiAnJTAyZCcgIiRpbmRleCIpIgorICAgIGV2YWx1YXRpb25faWQ9IiR7cm9sZX0tJHtvcmRpbmFsfS0ke2pvYl9pZDowOjh9IgorICAgIHN0YWdlX3Rva2VuPSIke3JvbGV9LSR7b3JkaW5hbH0iCisgICAgcHJvamVjdD0idXJuZXR3b3JrLWV2YWwtJHthdHRlbXB0X3Rva2VufS0ke3N0YWdlX3Rva2VufSIKKyAgICBjZ3JvdXBfcGFyZW50PSJ1cm5ldHdvcmstZXZhbHVhdGlvbi0ke2F0dGVtcHRfdG9rZW59LSR7c3RhZ2VfdG9rZW59LnNsaWNlIgorICAgIHN0YWdlX3Jvb3Q9IiR3b3JrX2Rpci9ydW5zLyRzdGFnZV90b2tlbiIKKyAgICBvdXRwdXQ9IiRzdGFnZV9yb290L291dHB1dCIKKyAgICBydW5uZXJfZW52PSIkc3RhZ2Vfcm9vdC9ydW5uZXIuZW52IgorICAgIGNvbXBvc2VfZW52PSIkc3RhZ2Vfcm9vdC9jb21wb3NlLmVudiIKKyAgICBpZiBbICIkcm9sZSIgPSBiYXNlbGluZSBdOyB0aGVuCisgICAgICAgIHNvdXJjZT0iJGJhc2VsaW5lX3NvdXJjZV9yb290IgorICAgIGVsc2UKKyAgICAgICAgc291cmNlPSIkY2FuZGlkYXRlX3NvdXJjZV9yb290IgorICAgIGZpCisgICAgaW5zdGFsbCAtZCAtbSAwNzAwICIkc3RhZ2Vfcm9vdCIgIiRvdXRwdXQiCisKKyAgICBzdGFnZV9kYl9hZG1pbl9wYXNzd29yZD0iJChuZXdfc2VjcmV0KSIKKyAgICBzdGFnZV9kYl9wYXNzd29yZD0iJChuZXdfc2VjcmV0KSIKKyAgICBzdGFnZV9yZWRpc19wYXNzd29yZD0iJChuZXdfc2VjcmV0KSIKKyAgICBhdXRoZW50aWNhdGVfbG9jYWxfbW91bnRzCisgICAgd3JpdGVfcnVubmVyX2VudiAiJHJ1bm5lcl9lbnYiICIkZXZhbHVhdGlvbl9pZCIgIiRidWlsZF9zaGEiICIkc2ltdWxhdG9yX3NoYSIgIiRpbWFnZSIgIiRjYW5kaWRhdGVfcGF0Y2hfc2hhIgorICAgIHdyaXRlX2NvbXBvc2VfZW52ICIkY29tcG9zZV9lbnYiICIkcHJvamVjdCIgIiRyb2xlIiAiJGltYWdlIiAiJHJ1bm5lcl9lbnYiIFwKKyAgICAgICAgIiR3b3JrX2Rpci9pbnB1dCIgIiRvdXRwdXQiICIkY2dyb3VwX3BhcmVudCIgIiRzb3VyY2UiCisgICAgc3VkbyAtbiBjaG93biAtUiAiJGNvbnRhaW5lcl9ob3N0X3VpZDokY29udGFpbmVyX2hvc3RfZ2lkIiAiJG91dHB1dCIKKyAgICBzdWRvIC1uIGNobW9kIDA3MDAgIiRvdXRwdXQiCisKKyAgICBhY3RpdmVfcHJvamVjdD0iJHByb2plY3QiCisgICAgYWN0aXZlX2NvbXBvc2VfZW52PSIkY29tcG9zZV9lbnYiCisgICAgY29tcG9zZV93aXRoICIkcHJvamVjdCIgIiRjb21wb3NlX2VudiIgLS1wcm9maWxlIHJ1biBjb25maWcgPi9kZXYvbnVsbAorICAgIGNvbXBvc2Vfd2l0aCAiJHByb2plY3QiICIkY29tcG9zZV9lbnYiIC0tcHJvZmlsZSBydW4gdXAgLS1kZXRhY2ggLS13YWl0IHBvc3RncmVzIHJlZGlzID4mMgorICAgICMgT25seSB0cnVzdGVkIGJhY2tpbmcgaW1hZ2VzIGhhdmUgc3RhcnRlZC4gUmVqZWN0IGEgaG9zdC1hZGRyZXNzZWQgYnJpZGdlCisgICAgIyBiZWZvcmUgbWlncmF0aW9uLCBwcmVmbGlnaHQgb3IgY2FuZGlkYXRlIHBhY2thZ2UgaW5pdGlhbGl6YXRpb24gY2FuIHJ1bi4KKyAgICAiJE5FVFdPUktfQk9VTkRBUlkiICIke3Byb2plY3R9X2V2YWx1YXRpb24iID4gIiRzdGFnZV9yb290L25ldHdvcmstYm91bmRhcnkuanNvbiIgfHwKKyAgICAgICAgZGllICIkc3RhZ2VfdG9rZW4gbmV0d29yayBib3VuZGFyeSBmYWlsZWQgYmVmb3JlIHJ1bm5lciBhZG1pc3Npb24iCisgICAgbG9jYWwgbWlncmF0aW9uX2pzb24gbWlncmF0aW9uX3BhdGggbWlncmF0aW9uX3NoYQorICAgIG1pZ3JhdGlvbl9qc29uPSIkKGNvbXBvc2Vfd2l0aCAiJHByb2plY3QiICIkY29tcG9zZV9lbnYiIC0tcHJvZmlsZSBydW4gcnVuIC0tcm0gLS1uby1kZXBzIC0tbm8tdHR5IG1pZ3JhdGUpIgorICAgIGpxIC1lICcuc2NoZW1hID09IDEgYW5kIC5kYXRhYmFzZV92ZXJzaW9uID4gMCBhbmQgLmRhdGFiYXNlX3ZlcnNpb24gPT0gLm1pZ3JhdGlvbl9jb3VudCcgXAorICAgICAgICA8PDwiJG1pZ3JhdGlvbl9qc29uIiA+L2Rldi9udWxsIHx8IGRpZSAiJHN0YWdlX3Rva2VuIG1pZ3JhdGlvbiBnYXRlIGZhaWxlZCIKKyAgICBtaWdyYXRpb25fcGF0aD0iJHN0YWdlX3Jvb3QvbWlncmF0aW9uLmpzb24iCisgICAgcHJpbnRmICclc1xuJyAiJG1pZ3JhdGlvbl9qc29uIiA+ICIkbWlncmF0aW9uX3BhdGgiCisgICAgbWlncmF0aW9uX3NoYT0iJChzaGEyNTZfZmlsZSAiJG1pZ3JhdGlvbl9wYXRoIikiCisgICAgbWlncmF0aW9uX2hhc2hlcys9KCIkbWlncmF0aW9uX3NoYSIpCisgICAgcmVkaXNfZ2VuZXJhdGlvbnMrPSgiJChuZXdfc2VjcmV0KSIpCisKKyAgICBjb21wb3NlX3dpdGggIiRwcm9qZWN0IiAiJGNvbXBvc2VfZW52IiAtLXByb2ZpbGUgcnVuIHJ1biAtLXJtIC0tbm8tZGVwcyAtLW5vLXR0eSBydW5uZXIgcHJlZmxpZ2h0ID4mMgorICAgIGxvY2FsIHJ1bm5lcl9pZD0iIiBwb3N0Z3Jlc19pZCByZWRpc19pZCBydW5uZXJfY2dyb3VwIHBvc3RncmVzX2Nncm91cCByZWRpc19jZ3JvdXAKKyAgICBsb2NhbCBpbnNwZWN0X3BhdGg9IiRzdGFnZV9yb290L2NvbnRhaW5lcnMuanNvbiIgaW5zcGVjdF9qc29uCisgICAgcG9zdGdyZXNfaWQ9IiQoY29tcG9zZV93aXRoICIkcHJvamVjdCIgIiRjb21wb3NlX2VudiIgLS1wcm9maWxlIHJ1biBwcyAtLWFsbCAtLXF1aWV0IHBvc3RncmVzKSIKKyAgICByZWRpc19pZD0iJChjb21wb3NlX3dpdGggIiRwcm9qZWN0IiAiJGNvbXBvc2VfZW52IiAtLXByb2ZpbGUgcnVuIHBzIC0tYWxsIC0tcXVpZXQgcmVkaXMpIgorICAgIFsgLW4gIiRwb3N0Z3Jlc19pZCIgXSAmJiBbIC1uICIkcmVkaXNfaWQiIF0gfHwgZGllICIkc3RhZ2VfdG9rZW4gYmFja2luZyBjb250YWluZXIgaWRlbnRpdHkgbWlzc2luZyIKKyAgICBpbnNwZWN0X2pzb249IiQoc3VkbyAtbiBkb2NrZXIgaW5zcGVjdCAiJHBvc3RncmVzX2lkIiAiJHJlZGlzX2lkIikiCisgICAgd3JpdGVfY29udGFpbmVyX2luc3BlY3Rpb24gIiRpbnNwZWN0X3BhdGgiIDw8PCIkaW5zcGVjdF9qc29uIgorICAgIHBvc3RncmVzX2Nncm91cD0iJChjb250YWluZXJfY2dyb3VwICIkcG9zdGdyZXNfaWQiKSIgfHwgZGllICIkc3RhZ2VfdG9rZW4gcG9zdGdyZXMgY2dyb3VwIG1lbWJlcnNoaXAgdW5hdmFpbGFibGUiCisgICAgcmVkaXNfY2dyb3VwPSIkKGNvbnRhaW5lcl9jZ3JvdXAgIiRyZWRpc19pZCIpIiB8fCBkaWUgIiRzdGFnZV90b2tlbiByZWRpcyBjZ3JvdXAgbWVtYmVyc2hpcCB1bmF2YWlsYWJsZSIKKyAgICBbICIke3Bvc3RncmVzX2Nncm91cCUvKn0iID0gIiR7cmVkaXNfY2dyb3VwJS8qfSIgXSB8fCBkaWUgIiRzdGFnZV90b2tlbiBiYWNraW5nIGNncm91cCBwYXJlbnRzIGRpc2FncmVlIgorICAgIGNhc2UgIiRwb3N0Z3Jlc19jZ3JvdXAiIGluCisgICAgICAgICoiLyRjZ3JvdXBfcGFyZW50LyIqKSA7OworICAgICAgICAqKSBkaWUgIiRzdGFnZV90b2tlbiBiYWNraW5nIGNvbnRhaW5lciBlc2NhcGVkIHRoZSBkZWRpY2F0ZWQgY2dyb3VwIHBhcmVudCIgOzsKKyAgICBlc2FjCisgICAgbG9jYWwgcHJlX3J1bl9vb21fa2lsbHMKKyAgICBwcmVfcnVuX29vbV9raWxscz0iJChyZWFkX2Nncm91cF9vb21fa2lsbHMgIiR7cG9zdGdyZXNfY2dyb3VwJS8qfSIpIiB8fAorICAgICAgICBkaWUgIiRzdGFnZV90b2tlbiBwcmUtcnVuIG1lbW9yeSBldmVudHMgdW5hdmFpbGFibGUiCisgICAgWyAiJHByZV9ydW5fb29tX2tpbGxzIiA9IDAgXSB8fCBkaWUgIiRzdGFnZV90b2tlbiBwcmUtcnVuIHJlc291cmNlIGNvbnRhaW5tZW50IGZhaWx1cmUiCisgICAgY29tcG9zZV93aXRoICIkcHJvamVjdCIgIiRjb21wb3NlX2VudiIgLS1wcm9maWxlIHJ1biB1cCAtLW5vLWRlcHMgLS1kZXRhY2ggcnVubmVyID4mMgorICAgIHJ1bm5lcl9pZD0iJChjb21wb3NlX3dpdGggIiRwcm9qZWN0IiAiJGNvbXBvc2VfZW52IiAtLXByb2ZpbGUgcnVuIHBzIC0tYWxsIC0tcXVpZXQgcnVubmVyKSIKKyAgICBbIC1uICIkcnVubmVyX2lkIiBdICYmIFsgLW4gIiRwb3N0Z3Jlc19pZCIgXSAmJiBbIC1uICIkcmVkaXNfaWQiIF0gfHwgZGllICIkc3RhZ2VfdG9rZW4gY29udGFpbmVyIGlkZW50aXR5IG1pc3NpbmciCisgICAgaW5zcGVjdF9qc29uPSIkKHN1ZG8gLW4gZG9ja2VyIGluc3BlY3QgIiRydW5uZXJfaWQiICIkcG9zdGdyZXNfaWQiICIkcmVkaXNfaWQiKSIKKyAgICB3cml0ZV9jb250YWluZXJfaW5zcGVjdGlvbiAiJGluc3BlY3RfcGF0aCIgPDw8IiRpbnNwZWN0X2pzb24iCisgICAgZm9yIF8gaW4gJChzZXEgMSAyMDApOyBkbworICAgICAgICBydW5uZXJfY2dyb3VwPSIkKGNvbnRhaW5lcl9jZ3JvdXAgIiRydW5uZXJfaWQiIDI+L2Rldi9udWxsIHx8IHRydWUpIgorICAgICAgICBwb3N0Z3Jlc19jZ3JvdXA9IiQoY29udGFpbmVyX2Nncm91cCAiJHBvc3RncmVzX2lkIiAyPi9kZXYvbnVsbCB8fCB0cnVlKSIKKyAgICAgICAgcmVkaXNfY2dyb3VwPSIkKGNvbnRhaW5lcl9jZ3JvdXAgIiRyZWRpc19pZCIgMj4vZGV2L251bGwgfHwgdHJ1ZSkiCisgICAgICAgIFsgLW4gIiRydW5uZXJfY2dyb3VwIiBdICYmIFsgLW4gIiRwb3N0Z3Jlc19jZ3JvdXAiIF0gJiYgWyAtbiAiJHJlZGlzX2Nncm91cCIgXSAmJiBicmVhaworICAgICAgICAjIEEgZmFzdCBjcmFzaCByZW1vdmVzIGl0cyBsaXZlIGNncm91cCBiZWZvcmUgdGhlIGZpcnN0IHNhbXBsZS4gSXRzCisgICAgICAgICMgaW1tdXRhYmxlIERvY2tlciBpZGVudGl0eSBhbmQgdGVybWluYWwgc3RhdGUgcmVtYWluIGluc3BlY3RhYmxlLgorICAgICAgICBbICIkKHN1ZG8gLW4gZG9ja2VyIGluc3BlY3QgLS1mb3JtYXQgJ3t7LlN0YXRlLlN0YXR1c319JyAiJHJ1bm5lcl9pZCIpIiAhPSBleGl0ZWQgXSB8fCBicmVhaworICAgICAgICBzbGVlcCAwLjEKKyAgICBkb25lCisgICAgbG9jYWwgY2dyb3VwX21lbWJlcnNoaXBfYXZhaWxhYmxlPWZhbHNlCisgICAgWyAtbiAiJHJ1bm5lcl9jZ3JvdXAiIF0gJiYgWyAtbiAiJHBvc3RncmVzX2Nncm91cCIgXSAmJiBbIC1uICIkcmVkaXNfY2dyb3VwIiBdICYmIGNncm91cF9tZW1iZXJzaGlwX2F2YWlsYWJsZT10cnVlCisgICAgZm9yIHJlbCBpbiAiJHJ1bm5lcl9jZ3JvdXAiICIkcG9zdGdyZXNfY2dyb3VwIiAiJHJlZGlzX2Nncm91cCI7IGRvCisgICAgICAgIGNhc2UgIiRyZWwiIGluCisgICAgICAgICAgICAiIikgOzsKKyAgICAgICAgICAgICoiLyRjZ3JvdXBfcGFyZW50LyIqKSA7OworICAgICAgICAgICAgKikgZGllICIkc3RhZ2VfdG9rZW4gY29udGFpbmVyIGVzY2FwZWQgdGhlIGRlZGljYXRlZCBjZ3JvdXAgcGFyZW50IiA7OworICAgICAgICBlc2FjCisgICAgZG9uZQorCisgICAgbG9jYWwgZXhpdF9jb2RlIHJlc291cmNlX3NhbXBsZSBzYW1wbGVyX3BpZD0iIiBjcHVfdXNlYyBwZWFrX2J5dGVzIHNhbXBsZWRfb29tX2tpbGxzPTAgcGFyZW50X29vbV9raWxscworICAgIHJlc291cmNlX3NhbXBsZT0iJHN0YWdlX3Jvb3QvcmVzb3VyY2UtY291bnRlcnMudHh0IgorICAgIGlmIFsgIiRjZ3JvdXBfbWVtYmVyc2hpcF9hdmFpbGFibGUiID0gdHJ1ZSBdOyB0aGVuCisgICAgICAgIHNhbXBsZV9jZ3JvdXBfY291bnRlcnMgIiRyZXNvdXJjZV9zYW1wbGUiICIkcnVubmVyX2Nncm91cCIgIiRwb3N0Z3Jlc19jZ3JvdXAiICIkcmVkaXNfY2dyb3VwIiAmCisgICAgICAgIHNhbXBsZXJfcGlkPSQhCisgICAgICAgIGFjdGl2ZV9zYW1wbGVyX3BpZD0iJHNhbXBsZXJfcGlkIgorICAgIGZpCisgICAgZXhpdF9jb2RlPSIkKHN1ZG8gLW4gZG9ja2VyIHdhaXQgIiRydW5uZXJfaWQiKSIKKyAgICBpZiBbIC1uICIkc2FtcGxlcl9waWQiIF07IHRoZW4KKyAgICAgICAga2lsbCAiJHNhbXBsZXJfcGlkIiA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQorICAgICAgICB3YWl0ICIkc2FtcGxlcl9waWQiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgZmkKKyAgICBhY3RpdmVfc2FtcGxlcl9waWQ9IiIKKyAgICBzdWRvIC1uIGRvY2tlciBsb2dzICIkcnVubmVyX2lkIiA+JjIgfHwgdHJ1ZQorICAgIGluc3BlY3RfanNvbj0iJChzdWRvIC1uIGRvY2tlciBpbnNwZWN0ICIkcnVubmVyX2lkIiAiJHBvc3RncmVzX2lkIiAiJHJlZGlzX2lkIikiCisgICAgd3JpdGVfY29udGFpbmVyX2luc3BlY3Rpb24gIiRpbnNwZWN0X3BhdGgiIDw8PCIkaW5zcGVjdF9qc29uIgorICAgIFtbICIkZXhpdF9jb2RlIiA9fiBeKDB8WzEtOV1bMC05XXswLDJ9KSQgXV0gJiYgWyAiJGV4aXRfY29kZSIgLWxlIDI1NSBdIHx8CisgICAgICAgIGRpZSAiJHN0YWdlX3Rva2VuIHJ1bm5lciBleGl0IHN0YXR1cyBpcyBpbnZhbGlkIgorICAgIGpxIC1lIC0tYXJnIHBhcmVudCAiJGNncm91cF9wYXJlbnQiIC0tYXJnIGltYWdlICIkaW1hZ2UiIFwKKyAgICAgICAgLS1hcmcgY3B1c2V0ICIkY3B1c2V0IiBcCisgICAgICAgIC0tYXJnIHJ1bm5lcl9pZCAiJHJ1bm5lcl9pZCIgLS1hcmcgcG9zdGdyZXNfaWQgIiRwb3N0Z3Jlc19pZCIgLS1hcmcgcmVkaXNfaWQgIiRyZWRpc19pZCIgXAorICAgICAgICAtLWFyZyBwcm9qZWN0ICIkcHJvamVjdCIgLS1hcmcgcm9sZSAiJHJvbGUiIC0tYXJnIGpvYl9pZCAiJGpvYl9pZCIgLS1hcmcgcm91bmRfaWQgIiRyb3VuZF9pZCIgXAorICAgICAgICAtLWFyZ2pzb24gZXhpdF9jb2RlICIkZXhpdF9jb2RlIiBcCisgICAgICAgIC0tYXJnIGNvbmZpZ19sb2NhbCAiJGNvbmZpZ19sb2NhbF9kaXJlY3RvcnkiIFwKKyAgICAgICAgLS1hcmcgdmF1bHRfbG9jYWwgIiR2YXVsdF9sb2NhbF9kaXJlY3RvcnkiIFwKKyAgICAgICAgLS1hcmcgc291cmNlICIkc291cmNlIiBcCisgICAgICAgIC0tYXJnanNvbiBydW5uZXJfbWVtb3J5ICIkUlVOTkVSX01FTU9SWV9CWVRFUyIgXAorICAgICAgICAtLWFyZ2pzb24gcnVubmVyX3BpZHMgIiRSVU5ORVJfUElEU19MSU1JVCIgXAorICAgICAgICAtLWFyZ2pzb24gcG9zdGdyZXNfbWVtb3J5ICIkUE9TVEdSRVNfTUVNT1JZX0JZVEVTIiBcCisgICAgICAgIC0tYXJnanNvbiBwb3N0Z3Jlc19waWRzICIkUE9TVEdSRVNfUElEU19MSU1JVCIgXAorICAgICAgICAtLWFyZ2pzb24gcmVkaXNfbWVtb3J5ICIkUkVESVNfTUVNT1JZX0JZVEVTIiBcCisgICAgICAgIC0tYXJnanNvbiByZWRpc19waWRzICIkUkVESVNfUElEU19MSU1JVCIgXAorICAgICAgICAnbGVuZ3RoID09IDMgYW5kCisgICAgICAgICAobWFwKHNlbGVjdCguTmFtZSB8IGVuZHN3aXRoKCItcnVubmVyLTEiKSkpIHwgbGVuZ3RoID09IDEpIGFuZAorICAgICAgICAgKG1hcChzZWxlY3QoLk5hbWUgfCBlbmRzd2l0aCgiLXJ1bm5lci0xIikpKVswXSB8CisgICAgICAgICAgLklkID09ICRydW5uZXJfaWQgYW5kIC5OYW1lID09ICgiLyIgKyAkcHJvamVjdCArICItcnVubmVyLTEiKSBhbmQKKyAgICAgICAgICAuQ29uZmlnLkltYWdlID09ICRpbWFnZSBhbmQgLkNvbmZpZy5Vc2VyID09ICI2NTUzMjo2NTUzMiIgYW5kCisgICAgICAgICAgLkhvc3RDb25maWcuUmVhZG9ubHlSb290ZnMgPT0gdHJ1ZSBhbmQgLkhvc3RDb25maWcuTWVtb3J5ID09ICRydW5uZXJfbWVtb3J5IGFuZAorICAgICAgICAgIC5Ib3N0Q29uZmlnLk1lbW9yeVN3YXAgPT0gJHJ1bm5lcl9tZW1vcnkgYW5kIC5Ib3N0Q29uZmlnLlBpZHNMaW1pdCA9PSAkcnVubmVyX3BpZHMgYW5kCisgICAgICAgICAgLkhvc3RDb25maWcuQ2dyb3VwUGFyZW50ID09ICRwYXJlbnQgYW5kIC5TdGF0ZS5TdGF0dXMgPT0gImV4aXRlZCIgYW5kCisgICAgICAgICAgLlN0YXRlLlJ1bm5pbmcgPT0gZmFsc2UgYW5kIC5TdGF0ZS5FeGl0Q29kZSA9PSAkZXhpdF9jb2RlIGFuZAorICAgICAgICAgICguU3RhdGUuT09NS2lsbGVkID09IGZhbHNlIG9yICgkcm9sZSA9PSAiY2FuZGlkYXRlIiBhbmQgJGV4aXRfY29kZSA+IDAgYW5kIC5TdGF0ZS5PT01LaWxsZWQgPT0gdHJ1ZSkpIGFuZAorICAgICAgICAgICguSG9zdENvbmZpZy5DYXBEcm9wIHwgaW5kZXgoIkFMTCIpICE9IG51bGwpIGFuZAorICAgICAgICAgICguSG9zdENvbmZpZy5TZWN1cml0eU9wdCB8IGluZGV4KCJuby1uZXctcHJpdmlsZWdlczp0cnVlIikgIT0gbnVsbCkgYW5kCisgICAgICAgICAgKFsuTW91bnRzW10gfCBzZWxlY3QoLkRlc3RpbmF0aW9uIHwgc3RhcnRzd2l0aCgiL3J1bnRpbWUiKSldIHwgbGVuZ3RoID09IDIpIGFuZAorICAgICAgICAgIChhbnkoLk1vdW50c1tdOyAuVHlwZSA9PSAiYmluZCIgYW5kIC5Tb3VyY2UgPT0gJGNvbmZpZ19sb2NhbCBhbmQKKyAgICAgICAgICAgIC5EZXN0aW5hdGlvbiA9PSAiL3J1bnRpbWUvY29uZmlnL2xvY2FsIiBhbmQgLlJXID09IGZhbHNlKSkgYW5kCisgICAgICAgICAgKGFueSguTW91bnRzW107IC5UeXBlID09ICJiaW5kIiBhbmQgLlNvdXJjZSA9PSAkdmF1bHRfbG9jYWwgYW5kCisgICAgICAgICAgICAuRGVzdGluYXRpb24gPT0gIi9ydW50aW1lL3ZhdWx0L2xvY2FsIiBhbmQgLlJXID09IGZhbHNlKSkgYW5kCisgICAgICAgICAgKGFueSguTW91bnRzW107IC5UeXBlID09ICJiaW5kIiBhbmQgLlNvdXJjZSA9PSAkc291cmNlIGFuZAorICAgICAgICAgICAgLkRlc3RpbmF0aW9uID09ICIvd29ya3NwYWNlIiBhbmQgLlJXID09IGZhbHNlKSkpIGFuZAorICAgICAgICAgKG1hcChzZWxlY3QoLk5hbWUgfCBlbmRzd2l0aCgiLXBvc3RncmVzLTEiKSkpIHwgbGVuZ3RoID09IDEpIGFuZAorICAgICAgICAgKG1hcChzZWxlY3QoLk5hbWUgfCBlbmRzd2l0aCgiLXBvc3RncmVzLTEiKSkpWzBdIHwKKyAgICAgICAgICAuSWQgPT0gJHBvc3RncmVzX2lkIGFuZCAuTmFtZSA9PSAoIi8iICsgJHByb2plY3QgKyAiLXBvc3RncmVzLTEiKSBhbmQKKyAgICAgICAgICAuQ29uZmlnLlVzZXIgPT0gIjk5OTo5OTkiIGFuZCAuSG9zdENvbmZpZy5NZW1vcnkgPT0gJHBvc3RncmVzX21lbW9yeSBhbmQKKyAgICAgICAgICAuSG9zdENvbmZpZy5NZW1vcnlTd2FwID09ICRwb3N0Z3Jlc19tZW1vcnkgYW5kIC5Ib3N0Q29uZmlnLlBpZHNMaW1pdCA9PSAkcG9zdGdyZXNfcGlkcyBhbmQKKyAgICAgICAgICAuU3RhdGUuU3RhdHVzID09ICJydW5uaW5nIiBhbmQgLlN0YXRlLlJ1bm5pbmcgPT0gdHJ1ZSBhbmQgLlN0YXRlLkV4aXRDb2RlID09IDAgYW5kCisgICAgICAgICAgLlN0YXRlLk9PTUtpbGxlZCA9PSBmYWxzZSBhbmQKKyAgICAgICAgICAuU3RhdGUuSGVhbHRoLlN0YXR1cyA9PSAiaGVhbHRoeSIgYW5kIC5TdGF0ZS5IZWFsdGguRmFpbGluZ1N0cmVhayA9PSAwKSBhbmQKKyAgICAgICAgIChtYXAoc2VsZWN0KC5OYW1lIHwgZW5kc3dpdGgoIi1yZWRpcy0xIikpKSB8IGxlbmd0aCA9PSAxKSBhbmQKKyAgICAgICAgIChtYXAoc2VsZWN0KC5OYW1lIHwgZW5kc3dpdGgoIi1yZWRpcy0xIikpKVswXSB8CisgICAgICAgICAgLklkID09ICRyZWRpc19pZCBhbmQgLk5hbWUgPT0gKCIvIiArICRwcm9qZWN0ICsgIi1yZWRpcy0xIikgYW5kCisgICAgICAgICAgLkNvbmZpZy5Vc2VyID09ICI5OTk6OTk5IiBhbmQgLkhvc3RDb25maWcuTWVtb3J5ID09ICRyZWRpc19tZW1vcnkgYW5kCisgICAgICAgICAgLkhvc3RDb25maWcuTWVtb3J5U3dhcCA9PSAkcmVkaXNfbWVtb3J5IGFuZCAuSG9zdENvbmZpZy5QaWRzTGltaXQgPT0gJHJlZGlzX3BpZHMgYW5kCisgICAgICAgICAgLlN0YXRlLlN0YXR1cyA9PSAicnVubmluZyIgYW5kIC5TdGF0ZS5SdW5uaW5nID09IHRydWUgYW5kIC5TdGF0ZS5FeGl0Q29kZSA9PSAwIGFuZAorICAgICAgICAgIC5TdGF0ZS5PT01LaWxsZWQgPT0gZmFsc2UgYW5kCisgICAgICAgICAgLlN0YXRlLkhlYWx0aC5TdGF0dXMgPT0gImhlYWx0aHkiIGFuZCAuU3RhdGUuSGVhbHRoLkZhaWxpbmdTdHJlYWsgPT0gMCkgYW5kCisgICAgICAgICAoWy5bXSB8IC5Ib3N0Q29uZmlnLkNncm91cFBhcmVudCA9PSAkcGFyZW50IGFuZCAuSG9zdENvbmZpZy5SZWFkb25seVJvb3RmcyA9PSB0cnVlIGFuZAorICAgICAgICAgICAuSG9zdENvbmZpZy5DcHVzZXRDcHVzID09ICRjcHVzZXQgYW5kCisgICAgICAgICAgIC5Ib3N0Q29uZmlnLlN5c2N0bHNbIm5ldC5pcHY2LmNvbmYuYWxsLmRpc2FibGVfaXB2NiJdID09ICIxIiBhbmQKKyAgICAgICAgICAgLkhvc3RDb25maWcuU3lzY3Rsc1sibmV0LmlwdjYuY29uZi5kZWZhdWx0LmRpc2FibGVfaXB2NiJdID09ICIxIiBhbmQKKyAgICAgICAgICAgLlJlc3RhcnRDb3VudCA9PSAwIGFuZCAuSG9zdENvbmZpZy5SZXN0YXJ0UG9saWN5Lk5hbWUgPT0gIm5vIiBhbmQKKyAgICAgICAgICAgLlN0YXRlLkRlYWQgPT0gZmFsc2UgYW5kIC5TdGF0ZS5QYXVzZWQgPT0gZmFsc2UgYW5kCisgICAgICAgICAgIC5TdGF0ZS5SZXN0YXJ0aW5nID09IGZhbHNlIGFuZCAuU3RhdGUuRXJyb3IgPT0gIiIgYW5kCisgICAgICAgICAgIC5Db25maWcuTGFiZWxzWyJjb20uZG9ja2VyLmNvbXBvc2UucHJvamVjdCJdID09ICRwcm9qZWN0IGFuZAorICAgICAgICAgICAuQ29uZmlnLkxhYmVsc1siY29tLnVybmV0d29yay5jb21wZXRpdGlvbi5qb2ItaWQiXSA9PSAkam9iX2lkIGFuZAorICAgICAgICAgICAuQ29uZmlnLkxhYmVsc1siY29tLnVybmV0d29yay5jb21wZXRpdGlvbi5yb3VuZC1pZCJdID09ICRyb3VuZF9pZCBhbmQKKyAgICAgICAgICAgLkNvbmZpZy5MYWJlbHNbImNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uc3RhZ2UiXSA9PSAkcm9sZSBhbmQKKyAgICAgICAgICAgKCguSG9zdENvbmZpZy5DYXBEcm9wIC8vIFtdKSB8IGluZGV4KCJBTEwiKSAhPSBudWxsKSBhbmQKKyAgICAgICAgICAgKCguSG9zdENvbmZpZy5TZWN1cml0eU9wdCAvLyBbXSkgfCBpbmRleCgibm8tbmV3LXByaXZpbGVnZXM6dHJ1ZSIpICE9IG51bGwpXSB8IGFsbCknIFwKKyAgICAgICAgPDw8IiRpbnNwZWN0X2pzb24iID4vZGV2L251bGwgfHwgZGllICIkc3RhZ2VfdG9rZW4gbGl2ZSBjb250YWluZXIgcG9saWN5IG1pc21hdGNoIgorICAgIGxvY2FsIG5ldHdvcmtfaWQ9IiR7cHJvamVjdH1fZXZhbHVhdGlvbiIKKyAgICAiJE5FVFdPUktfQk9VTkRBUlkiICIkbmV0d29ya19pZCIgPiAiJHN0YWdlX3Jvb3QvbmV0d29yay1ib3VuZGFyeS5wb3N0Lmpzb24iIHx8CisgICAgICAgIGRpZSAiJHN0YWdlX3Rva2VuIG5ldHdvcmsgaXMgbm90IGlzb2xhdGVkIgorCisgICAgWyAtbiAiJHBvc3RncmVzX2Nncm91cCIgXSAmJiBbIC1uICIkcmVkaXNfY2dyb3VwIiBdICYmCisgICAgICAgIFsgIiR7cG9zdGdyZXNfY2dyb3VwJS8qfSIgPSAiJHtyZWRpc19jZ3JvdXAlLyp9IiBdIHx8IGRpZSAiJHN0YWdlX3Rva2VuIHNlcnZpY2UgY2dyb3VwIG1lbWJlcnNoaXAgdW5hdmFpbGFibGUiCisgICAgIyBUaGUgZGVkaWNhdGVkIHBhcmVudCBzdXJ2aXZlcyBhIGZhc3QgcnVubmVyIGV4aXQgYW5kIHJlY29yZHMgYmFja2VuZC1vbmx5CisgICAgIyBPT00ga2lsbHMgZXZlbiB3aGVuIERvY2tlciBrZWVwcyByZXBvcnRpbmcgYSBoZWFsdGh5IGNvbnRhaW5lciBpbml0LgorICAgIHBhcmVudF9vb21fa2lsbHM9IiQocmVhZF9jZ3JvdXBfb29tX2tpbGxzICIke3Bvc3RncmVzX2Nncm91cCUvKn0iKSIgfHwKKyAgICAgICAgZGllICIkc3RhZ2VfdG9rZW4gcGFyZW50IG1lbW9yeSBldmVudHMgdW5hdmFpbGFibGUiCisgICAgW1sgIiRwYXJlbnRfb29tX2tpbGxzIiA9fiBeWzAtOV0rJCBdXSB8fCBkaWUgIiRzdGFnZV90b2tlbiBwYXJlbnQgbWVtb3J5IGV2ZW50cyBpbnZhbGlkIgorICAgIGlmIFsgLXMgIiRyZXNvdXJjZV9zYW1wbGUiIF07IHRoZW4KKyAgICAgICAgcmVhZCAtciBjcHVfdXNlYyBwZWFrX2J5dGVzIHNhbXBsZWRfb29tX2tpbGxzIDwgIiRyZXNvdXJjZV9zYW1wbGUiCisgICAgICAgIFtbICIkY3B1X3VzZWMiID1+IF5bMC05XSskIF1dICYmIFtbICIkcGVha19ieXRlcyIgPX4gXlswLTldKyQgXV0gJiYKKyAgICAgICAgICAgIFtbICIkc2FtcGxlZF9vb21fa2lsbHMiID1+IF5bMC05XSskIF1dIHx8IGRpZSAiJHN0YWdlX3Rva2VuIHJlc291cmNlIGNvdW50ZXIgc2FtcGxlIGludmFsaWQiCisgICAgZmkKKyAgICBsb2NhbCBwb3N0Z3Jlc19vb21fa2lsbHMgcmVkaXNfb29tX2tpbGxzCisgICAgcG9zdGdyZXNfb29tX2tpbGxzPSIkKHJlYWRfY2dyb3VwX29vbV9raWxscyAiJHBvc3RncmVzX2Nncm91cCIpIiB8fCBkaWUgIiRzdGFnZV90b2tlbiBwb3N0Z3JlcyBtZW1vcnkgZXZlbnRzIHVuYXZhaWxhYmxlIgorICAgIHJlZGlzX29vbV9raWxscz0iJChyZWFkX2Nncm91cF9vb21fa2lsbHMgIiRyZWRpc19jZ3JvdXAiKSIgfHwgZGllICIkc3RhZ2VfdG9rZW4gcmVkaXMgbWVtb3J5IGV2ZW50cyB1bmF2YWlsYWJsZSIKKyAgICBbWyAiJHBvc3RncmVzX29vbV9raWxscyIgPX4gXlswLTldKyQgXV0gJiYgW1sgIiRyZWRpc19vb21fa2lsbHMiID1+IF5bMC05XSskIF1dIHx8CisgICAgICAgIGRpZSAiJHN0YWdlX3Rva2VuIGJhY2tpbmcgbWVtb3J5IGV2ZW50cyBpbnZhbGlkIgorICAgIFsgIiRwYXJlbnRfb29tX2tpbGxzIiAtZ2UgIiQoKHBvc3RncmVzX29vbV9raWxscyArIHJlZGlzX29vbV9raWxscykpIiBdICYmCisgICAgICAgIFsgIiRwYXJlbnRfb29tX2tpbGxzIiAtZ2UgIiRzYW1wbGVkX29vbV9raWxscyIgXSB8fCBkaWUgIiRzdGFnZV90b2tlbiBtZW1vcnkgZXZlbnQgYXR0cmlidXRpb24gaW5jb25zaXN0ZW50IgorICAgIGxvY2FsIHJlc291cmNlX3N0YXRlCisgICAgcmVzb3VyY2Vfc3RhdGU9IiQoanEgLS1hcmcgcGFyZW50ICIkY2dyb3VwX3BhcmVudCIgLS1hcmcgY3B1c2V0ICIkY3B1c2V0IiBcCisgICAgICAgIC0tYXJnanNvbiBvb21fa2lsbHMgIiRwYXJlbnRfb29tX2tpbGxzIiBcCisgICAgICAgIC0tYXJnanNvbiBiYWNraW5nX29vbV9raWxscyAiJCgocG9zdGdyZXNfb29tX2tpbGxzICsgcmVkaXNfb29tX2tpbGxzKSkiIFwKKyAgICAgICAgJ3tleGl0X2NvZGU6KG1hcChzZWxlY3QoLk5hbWUgfCBlbmRzd2l0aCgiLXJ1bm5lci0xIikpKVswXS5TdGF0ZS5FeGl0Q29kZSksCisgICAgICAgICAgb29tX2tpbGxlZDooYW55KC5bXTsgLlN0YXRlLk9PTUtpbGxlZCA9PSB0cnVlKSBvciAkb29tX2tpbGxzID4gMCksCisgICAgICAgICAgcnVubmVyX29vbV9raWxsczooJG9vbV9raWxscyAtICRiYWNraW5nX29vbV9raWxscyksYmFja2luZ19vb21fa2lsbHM6JGJhY2tpbmdfb29tX2tpbGxzLAorICAgICAgICAgIHJ1bm5lcl9vb21fa2lsbGVkOihtYXAoc2VsZWN0KC5OYW1lIHwgZW5kc3dpdGgoIi1ydW5uZXItMSIpKSlbMF0uU3RhdGUuT09NS2lsbGVkKSwKKyAgICAgICAgICBoYXJkX2tpbGxlZDphbnkoLltdOyAuU3RhdGUuRXhpdENvZGUgPT0gMTM3KSwKKyAgICAgICAgICBsaW1pdF9lc2NhcGU6YW55KC5bXTsgLkhvc3RDb25maWcuQ2dyb3VwUGFyZW50ICE9ICRwYXJlbnQgb3IgLkhvc3RDb25maWcuQ3B1c2V0Q3B1cyAhPSAkY3B1c2V0KX0nIFwKKyAgICAgICAgPDw8IiRpbnNwZWN0X2pzb24iKSIKKyAgICBwcmludGYgJyVzXG4nICIkcmVzb3VyY2Vfc3RhdGUiID4gIiRzdGFnZV9yb290L2NvbnRhaW5lci1yZXNvdXJjZS1zdGF0ZS5qc29uIgorICAgIGNobW9kIDA0MDAgIiRzdGFnZV9yb290L2NvbnRhaW5lci1yZXNvdXJjZS1zdGF0ZS5qc29uIgorICAgIHVuc2V0IGluc3BlY3RfanNvbgorICAgIGpxIC1lICcuYmFja2luZ19vb21fa2lsbHMgPT0gMCBhbmQgLmxpbWl0X2VzY2FwZSA9PSBmYWxzZSBhbmQKKyAgICAgICAgKC5ydW5uZXJfb29tX2tpbGxlZCA9PSBmYWxzZSBvciAucnVubmVyX29vbV9raWxscyA+IDApJyA8PDwiJHJlc291cmNlX3N0YXRlIiA+L2Rldi9udWxsIHx8CisgICAgICAgIGRpZSAiJHN0YWdlX3Rva2VuIHJlc291cmNlIGNvbnRhaW5tZW50IGZhaWx1cmUiCisKKyAgICBpZiBbICIkZXhpdF9jb2RlIiAtbmUgMCBdOyB0aGVuCisgICAgICAgIGlmIFsgIiRyb2xlIiA9IGNhbmRpZGF0ZSBdOyB0aGVuCisgICAgICAgICAgICAjIE9ubHkgdHJ1c3RlZCBob3N0IGluc3BlY3Rpb24gbWF5IHB1Ymxpc2ggdGhpcyB0ZXJtaW5hbCBmYWlsdXJlOworICAgICAgICAgICAgIyBubyBjYW5kaWRhdGUgbW91bnQgY29udGFpbnMgdGhlIGF0dGVtcHQtcm9vdCBzaWRlY2FyIG9yIGl0cyB0ZW1wLgorICAgICAgICAgICAgbG9jYWwgZmFpbHVyZV9wYXRoPSIkYXJ0aWZhY3RfZGlyL2V2YWx1YXRvci1mYWlsdXJlLmpzb24iIGZhaWx1cmVfdG1wPSIkYXJ0aWZhY3RfZGlyLy5ldmFsdWF0b3ItZmFpbHVyZS5qc29uLm5ldyIKKyAgICAgICAgICAgIFsgISAtZSAiJGZhaWx1cmVfcGF0aCIgXSAmJiBbICEgLUwgIiRmYWlsdXJlX3BhdGgiIF0gJiYKKyAgICAgICAgICAgICAgICBbICEgLWUgIiRmYWlsdXJlX3RtcCIgXSAmJiBbICEgLUwgIiRmYWlsdXJlX3RtcCIgXSB8fCBkaWUgInN0YWdlIGZhaWx1cmUgcGF0aCBhbHJlYWR5IGV4aXN0cyIKKyAgICAgICAgICAgIGpxIC1uIC0tYXJnIGpvYl9pZCAiJGpvYl9pZCIgLS1hcmcgcm91bmRfaWQgIiRyb3VuZF9pZCIgXAorICAgICAgICAgICAgICAgIC0tYXJnanNvbiBhdHRlbXB0ICIkYXR0ZW1wdCIgLS1hcmdqc29uIGV4aXRfY29kZSAiJGV4aXRfY29kZSIgXAorICAgICAgICAgICAgICAgICd7c2NoZW1hOjEsa2luZDoic2ltLWxhdGVuY3ktc3RhZ2UtZmFpbHVyZSIsam9iX2lkOiRqb2JfaWQscm91bmRfaWQ6JHJvdW5kX2lkLAorICAgICAgICAgICAgICAgICAgYXR0ZW1wdDokYXR0ZW1wdCxyb2xlOiJjYW5kaWRhdGUiLHN0YWdlOiJydW4iLGV4aXRfY29kZTokZXhpdF9jb2RlLAorICAgICAgICAgICAgICAgICAgZXJyb3I6e2tpbmQ6InN1Ym1pc3Npb24iLGNvZGU6InJ1bl9wcm9jZXNzX2ZhaWxlZCIsCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ImNhbmRpZGF0ZSBydW5uZXIgZXhpdGVkIHVuc3VjY2Vzc2Z1bGx5IixyZXRyaWFibGU6ZmFsc2V9fScgPiAiJGZhaWx1cmVfdG1wIgorICAgICAgICAgICAgY2htb2QgMDQwMCAiJGZhaWx1cmVfdG1wIgorICAgICAgICAgICAgc3luYyAtZCAiJGZhaWx1cmVfdG1wIgorICAgICAgICAgICAgbXYgLS0gIiRmYWlsdXJlX3RtcCIgIiRmYWlsdXJlX3BhdGgiCisgICAgICAgICAgICBzeW5jICIkYXJ0aWZhY3RfZGlyIgorICAgICAgICBmaQorICAgICAgICBkaWUgIiRzdGFnZV90b2tlbiBydW5uZXIgZXhpdGVkICRleGl0X2NvZGUiCisgICAgZmkKKyAgICBbICIkY2dyb3VwX21lbWJlcnNoaXBfYXZhaWxhYmxlIiA9IHRydWUgXSB8fCBkaWUgIiRzdGFnZV90b2tlbiBjZ3JvdXAgbWVtYmVyc2hpcCB1bmF2YWlsYWJsZSIKKyAgICBbIC1zICIkcmVzb3VyY2Vfc2FtcGxlIiBdIHx8IGRpZSAiJHN0YWdlX3Rva2VuIHJlc291cmNlIGNvdW50ZXIgc2FtcGxlIG1pc3NpbmciCisgICAganEgLWUgJy5vb21fa2lsbGVkID09IGZhbHNlIGFuZCAuaGFyZF9raWxsZWQgPT0gZmFsc2UnIDw8PCIkcmVzb3VyY2Vfc3RhdGUiID4vZGV2L251bGwgfHwKKyAgICAgICAgZGllICIkc3RhZ2VfdG9rZW4gcmVzb3VyY2UgY29udGFpbm1lbnQgZmFpbHVyZSIKKyAgICBybSAtZiAtLSAiJHJlc291cmNlX3NhbXBsZSIKKworICAgIGxvY2FsIHN0YXJ0ZWRfYXQgZmluaXNoZWRfYXQgcmVzb3VyY2Vfc3RhcnRfbXMgcmVzb3VyY2VfZW5kX21zCisgICAgc3RhcnRlZF9hdD0iJChqcSAtZXIgJ21hcChzZWxlY3QoLm5hbWUgfCBlbmRzd2l0aCgiLXJ1bm5lci0xIikpKVswXS5zdGF0ZS5zdGFydGVkX2F0JyAiJGluc3BlY3RfcGF0aCIpIgorICAgIGZpbmlzaGVkX2F0PSIkKGpxIC1lciAnbWFwKHNlbGVjdCgubmFtZSB8IGVuZHN3aXRoKCItcnVubmVyLTEiKSkpWzBdLnN0YXRlLmZpbmlzaGVkX2F0JyAiJGluc3BlY3RfcGF0aCIpIgorICAgIHJlc291cmNlX3N0YXJ0X21zPSIkKGRhdGUgLS1kYXRlPSIkc3RhcnRlZF9hdCIgKyVzJTNOKSIKKyAgICByZXNvdXJjZV9lbmRfbXM9IiQoZGF0ZSAtLWRhdGU9IiRmaW5pc2hlZF9hdCIgKyVzJTNOKSIKKworICAgIGxvY2FsIHJ1bl9kaXI9IiRvdXRwdXQvJGV2YWx1YXRpb25faWQiCisgICAgc3VkbyAtbiB0ZXN0IC1zICIkcnVuX2Rpci9ydW4uanNvbiIgfHwgZGllICIkc3RhZ2VfdG9rZW4gcnVuIG1hbmlmZXN0IG1pc3NpbmciCisgICAgc3VkbyAtbiB0ZXN0IC1zICIkcnVuX2Rpci9hY2NvdW50aW5nLnNvdXJjZS5qc29uIiB8fCBkaWUgIiRzdGFnZV90b2tlbiBwcm92aWRlciBhY2NvdW50aW5nIHNvdXJjZSBtaXNzaW5nIgorICAgIHN1ZG8gLW4ganEgLWUgLS1hcmcgZXZhbHVhdGlvbl9pZCAiJGV2YWx1YXRpb25faWQiIFwKKyAgICAgICAgJy5zY2hlbWEgPT0gMSBhbmQgLmtpbmQgPT0gInNpbS1sYXRlbmN5LXByb3ZpZGVyLWFjY291bnRpbmctc291cmNlIiBhbmQKKyAgICAgICAgIC5ldmFsdWF0aW9uX2lkID09ICRldmFsdWF0aW9uX2lkIGFuZCAuY29tcGxldGUgPT0gdHJ1ZSBhbmQgLnByb3ZpZGVyX2VncmVzc19ieXRlcyA+PSAwJyBcCisgICAgICAgICIkcnVuX2Rpci9hY2NvdW50aW5nLnNvdXJjZS5qc29uIiA+L2Rldi9udWxsIHx8IGRpZSAiJHN0YWdlX3Rva2VuIHByb3ZpZGVyIGFjY291bnRpbmcgc291cmNlIGludmFsaWQiCisgICAgbG9jYWwgYWNjb3VudGluZ190bXA9IiRzdGFnZV9yb290L2FjY291bnRpbmcuanNvbiIKKyAgICBzdWRvIC1uIGpxIFwKKyAgICAgICAgJ3tzY2hlbWE6MSxraW5kOiJzaW0tbGF0ZW5jeS1hY2NvdW50aW5nIixldmFsdWF0aW9uX2lkOi5ldmFsdWF0aW9uX2lkLAorICAgICAgICAgIGNvbXBsZXRlOi5jb21wbGV0ZSxtZWFzdXJlX3N0YXJ0X21zOi5tZWFzdXJlX3N0YXJ0X21zLAorICAgICAgICAgIG1lYXN1cmVfZW5kX21zOi5tZWFzdXJlX2VuZF9tcyxwcm92aWRlcl9lZ3Jlc3NfYnl0ZXM6LnByb3ZpZGVyX2VncmVzc19ieXRlc30nIFwKKyAgICAgICAgIiRydW5fZGlyL2FjY291bnRpbmcuc291cmNlLmpzb24iID4gIiRhY2NvdW50aW5nX3RtcCIKKyAgICBzdWRvIC1uIGluc3RhbGwgLW8gIiRjb250YWluZXJfaG9zdF91aWQiIC1nICIkY29udGFpbmVyX2hvc3RfZ2lkIiAtbSAwNDAwIFwKKyAgICAgICAgIiRhY2NvdW50aW5nX3RtcCIgIiRydW5fZGlyL2FjY291bnRpbmcuanNvbiIKKyAgICBsb2NhbCByZXNvdXJjZV90bXA9IiRzdGFnZV9yb290L3Jlc291cmNlcy5qc29uIgorICAgIGpxIC1uIFwKKyAgICAgICAgLS1hcmcgZXZhbHVhdGlvbl9pZCAiJGV2YWx1YXRpb25faWQiIFwKKyAgICAgICAgLS1hcmcgY2dyb3VwX2lkICIkY2dyb3VwX3BhcmVudCIgXAorICAgICAgICAtLWFyZ2pzb24gbWVhc3VyZW1lbnRfc3RhcnRfbXMgIiRyZXNvdXJjZV9zdGFydF9tcyIgXAorICAgICAgICAtLWFyZ2pzb24gbWVhc3VyZW1lbnRfZW5kX21zICIkcmVzb3VyY2VfZW5kX21zIiBcCisgICAgICAgIC0tYXJnanNvbiBjcHVfc2Vjb25kcyAiJChhd2sgLXYgdmFsdWU9IiRjcHVfdXNlYyIgJ0JFR0lOIHtwcmludGYgIiUuNmYiLCB2YWx1ZSAvIDEwMDAwMDB9JykiIFwKKyAgICAgICAgLS1hcmdqc29uIHBlYWtfcnNzX2J5dGVzICIkcGVha19ieXRlcyIgXAorICAgICAgICAtLWFyZ2pzb24gcmVzb3VyY2Vfc3RhdGUgIiRyZXNvdXJjZV9zdGF0ZSIgXAorICAgICAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LXJlc291cmNlLXJlcG9ydCIsZXZhbHVhdGlvbl9pZDokZXZhbHVhdGlvbl9pZCwKKyAgICAgICAgICBjZ3JvdXBfaWQ6JGNncm91cF9pZCxtZWFzdXJlbWVudF9zdGFydF9tczokbWVhc3VyZW1lbnRfc3RhcnRfbXMsCisgICAgICAgICAgbWVhc3VyZW1lbnRfZW5kX21zOiRtZWFzdXJlbWVudF9lbmRfbXMsY29tcGxldGU6dHJ1ZSwKKyAgICAgICAgICBleGl0X2NvZGU6JHJlc291cmNlX3N0YXRlLmV4aXRfY29kZSxvb21fa2lsbGVkOiRyZXNvdXJjZV9zdGF0ZS5vb21fa2lsbGVkLAorICAgICAgICAgIGhhcmRfa2lsbGVkOiRyZXNvdXJjZV9zdGF0ZS5oYXJkX2tpbGxlZCxsaW1pdF9lc2NhcGU6JHJlc291cmNlX3N0YXRlLmxpbWl0X2VzY2FwZSwKKyAgICAgICAgICBtZWFzdXJlbWVudF9taXNzaW5nOmZhbHNlLGNwdV9zZWNvbmRzOiRjcHVfc2Vjb25kcywKKyAgICAgICAgICBwZWFrX3Jzc19ieXRlczokcGVha19yc3NfYnl0ZXN9JyA+ICIkcmVzb3VyY2VfdG1wIgorICAgIHN1ZG8gLW4gaW5zdGFsbCAtbyAiJGNvbnRhaW5lcl9ob3N0X3VpZCIgLWcgIiRjb250YWluZXJfaG9zdF9naWQiIC1tIDA0MDAgXAorICAgICAgICAiJHJlc291cmNlX3RtcCIgIiRydW5fZGlyL3Jlc291cmNlcy5qc29uIgorICAgIHN1ZG8gLW4gc3luYyAtZCAiJHJ1bl9kaXIvYWNjb3VudGluZy5qc29uIiAiJHJ1bl9kaXIvcmVzb3VyY2VzLmpzb24iCisgICAgdmFsaWRhdGVfb3V0cHV0X3RyZWUgIiRvdXRwdXQiCisKKyAgICBsb2NhbCBzdGF0c19yb290CisgICAgc3RhdHNfcm9vdD0iJChzdWRvIC1uIGpxIC1lciAnLnN0YXRzX3Jvb3QnICIkcnVuX2Rpci9ydW4uanNvbiIpIgorICAgIGNhc2UgIiRzdGF0c19yb290IiBpbgorICAgICAgICAiL2FydGlmYWN0cy8kZXZhbHVhdGlvbl9pZC9zaXRlL3N0YXRzLyIqKSA7OworICAgICAgICAqKSBkaWUgIiRzdGFnZV90b2tlbiBzdGF0cyByb290IGlkZW50aXR5IG1pc21hdGNoIiA7OworICAgIGVzYWMKKyAgICBsb2NhbCBjc3Y9Ii9hcnRpZmFjdHMvJGV2YWx1YXRpb25faWQvcmVzdWx0cy5jc3YiCisgICAgbG9jYWwgc3RkZXJyPSIvYXJ0aWZhY3RzLyRldmFsdWF0aW9uX2lkL3N0ZGVyci5sb2ciCisgICAgbG9jYWwgYWNjb3VudGluZz0iL2FydGlmYWN0cy8kZXZhbHVhdGlvbl9pZC9hY2NvdW50aW5nLmpzb24iCisgICAgbG9jYWwgcmVzb3VyY2VzPSIvYXJ0aWZhY3RzLyRldmFsdWF0aW9uX2lkL3Jlc291cmNlcy5qc29uIgorICAgIGxvY2FsIG1hcmtlcj0iL2FydGlmYWN0cy8kZXZhbHVhdGlvbl9pZC9ydW4uY29tcGxldGUuanNvbiIKKyAgICBsb2NhbCBtYW5pZmVzdD0iL2FydGlmYWN0cy8kZXZhbHVhdGlvbl9pZC9ydW4uanNvbiIKKyAgICBpZiBbICIkcm9sZSIgPSBiYXNlbGluZSBdOyB0aGVuCisgICAgICAgIGJhc2VsaW5lX2Nzdis9KCIkY3N2IikKKyAgICAgICAgYmFzZWxpbmVfc3RkZXJyKz0oIiRzdGRlcnIiKQorICAgICAgICBiYXNlbGluZV9hY2NvdW50aW5nKz0oIiRhY2NvdW50aW5nIikKKyAgICAgICAgYmFzZWxpbmVfc2FtcGxlcys9KCIkc3RhdHNfcm9vdCIpCisgICAgICAgIGJhc2VsaW5lX3Jlc291cmNlcys9KCIkcmVzb3VyY2VzIikKKyAgICAgICAgYmFzZWxpbmVfbWFya2Vycys9KCIkbWFya2VyIikKKyAgICAgICAgYmFzZWxpbmVfbWFuaWZlc3RzKz0oIiRtYW5pZmVzdCIpCisgICAgZWxzZQorICAgICAgICBjYW5kaWRhdGVfY3N2Kz0oIiRjc3YiKQorICAgICAgICBjYW5kaWRhdGVfc3RkZXJyKz0oIiRzdGRlcnIiKQorICAgICAgICBjYW5kaWRhdGVfYWNjb3VudGluZys9KCIkYWNjb3VudGluZyIpCisgICAgICAgIGNhbmRpZGF0ZV9zYW1wbGVzKz0oIiRzdGF0c19yb290IikKKyAgICAgICAgY2FuZGlkYXRlX3Jlc291cmNlcys9KCIkcmVzb3VyY2VzIikKKyAgICAgICAgY2FuZGlkYXRlX21hcmtlcnMrPSgiJG1hcmtlciIpCisgICAgICAgIGNhbmRpZGF0ZV9tYW5pZmVzdHMrPSgiJG1hbmlmZXN0IikKKyAgICBmaQorICAgIGxvY2FsIHByb3ZpZGVyX2J5dGVzCisgICAgcHJvdmlkZXJfYnl0ZXM9IiQoc3VkbyAtbiBqcSAtZXIgJy5wcm92aWRlcl9lZ3Jlc3NfYnl0ZXMnICIkcnVuX2Rpci9hY2NvdW50aW5nLmpzb24iKSIKKyAgICBydW5fYWNjb3VudGluZ19yZWNvcmRzKz0oIiQoanEgLWNuIC0tYXJnIGV2YWx1YXRpb25faWQgIiRldmFsdWF0aW9uX2lkIiAtLWFyZyByb2xlICIkcm9sZSIgXAorICAgICAgICAtLWFyZyBwYXRoICIkYWNjb3VudGluZyIgLS1hcmcgc2hhMjU2ICIkKHN1ZG8gLW4gc2hhMjU2c3VtICIkcnVuX2Rpci9hY2NvdW50aW5nLmpzb24iIHwgYXdrICd7cHJpbnQgJDF9JykiIFwKKyAgICAgICAgLS1hcmdqc29uIGJ5dGVzICIkKHN1ZG8gLW4gc3RhdCAtYyAnJXMnICIkcnVuX2Rpci9hY2NvdW50aW5nLmpzb24iKSIgXAorICAgICAgICAtLWFyZ2pzb24gcHJvdmlkZXJfZWdyZXNzX2J5dGVzICIkcHJvdmlkZXJfYnl0ZXMiIFwKKyAgICAgICAgJ3tldmFsdWF0aW9uX2lkOiRldmFsdWF0aW9uX2lkLHJvbGU6JHJvbGUscGF0aDokcGF0aCxzaGEyNTY6JHNoYTI1NixieXRlczokYnl0ZXMsCisgICAgICAgICAgcHJvdmlkZXJfZWdyZXNzX2J5dGVzOiRwcm92aWRlcl9lZ3Jlc3NfYnl0ZXN9JykiKQorICAgIHJ1bl9yZXNvdXJjZV9yZWNvcmRzKz0oIiQoanEgLWNuIC0tYXJnIGV2YWx1YXRpb25faWQgIiRldmFsdWF0aW9uX2lkIiAtLWFyZyByb2xlICIkcm9sZSIgXAorICAgICAgICAtLWFyZyBwYXRoICIkcmVzb3VyY2VzIiAtLWFyZyBzaGEyNTYgIiQoc3VkbyAtbiBzaGEyNTZzdW0gIiRydW5fZGlyL3Jlc291cmNlcy5qc29uIiB8IGF3ayAne3ByaW50ICQxfScpIiBcCisgICAgICAgIC0tYXJnanNvbiBieXRlcyAiJChzdWRvIC1uIHN0YXQgLWMgJyVzJyAiJHJ1bl9kaXIvcmVzb3VyY2VzLmpzb24iKSIgXAorICAgICAgICAtLWFyZ2pzb24gY3B1X3NlY29uZHMgIiQoYXdrIC12IHZhbHVlPSIkY3B1X3VzZWMiICdCRUdJTiB7cHJpbnRmICIlLjZmIiwgdmFsdWUgLyAxMDAwMDAwfScpIiBcCisgICAgICAgIC0tYXJnanNvbiBwZWFrX3Jzc19ieXRlcyAiJHBlYWtfYnl0ZXMiIFwKKyAgICAgICAgJ3tldmFsdWF0aW9uX2lkOiRldmFsdWF0aW9uX2lkLHJvbGU6JHJvbGUscGF0aDokcGF0aCxzaGEyNTY6JHNoYTI1NixieXRlczokYnl0ZXMsCisgICAgICAgICAgY3B1X3NlY29uZHM6JGNwdV9zZWNvbmRzLHBlYWtfcnNzX2J5dGVzOiRwZWFrX3Jzc19ieXRlc30nKSIpCisKKyAgICBjb21wb3NlX3dpdGggIiRwcm9qZWN0IiAiJGNvbXBvc2VfZW52IiAtLXByb2ZpbGUgcnVuIGRvd24gLS12b2x1bWVzIC0tcmVtb3ZlLW9ycGhhbnMgPiYyCisgICAgWyAteiAiJChzdWRvIC1uIGRvY2tlciBwcyAtYXEgLS1maWx0ZXIgImxhYmVsPWNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkPSRqb2JfaWQiIFwKKyAgICAgICAgLS1maWx0ZXIgImxhYmVsPWNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uc3RhZ2U9JHJvbGUiKSIgXSB8fCBkaWUgIiRzdGFnZV90b2tlbiBjbGVhbnVwIGxlZnQgY29udGFpbmVycyIKKyAgICBzdWRvIC1uIGNwIC1hICIkb3V0cHV0Ly4iICIkd29ya19kaXIvc2NvcmVyLWlucHV0LyIKKyAgICB2YWxpZGF0ZV9vdXRwdXRfdHJlZSAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dCIKKyAgICByZWNvcmRfc3RhZ2VfcHJvZ3Jlc3MgIiRyb2xlIiAiJGluZGV4IiAiJHJ1bl9kaXIvcnVuLmpzb24iCisgICAgYXV0aGVudGljYXRlX2xvY2FsX21vdW50cworICAgIGFjdGl2ZV9wcm9qZWN0PSIiCisgICAgYWN0aXZlX2NvbXBvc2VfZW52PSIiCisgICAgcm0gLWYgLS0gIiRydW5uZXJfZW52IiAiJGNvbXBvc2VfZW52IiAiJGFjY291bnRpbmdfdG1wIiAiJHJlc291cmNlX3RtcCIKKyAgICBzdWRvIC1uIGNob3duIC1SICIkd29ya2VyX3VpZDokd29ya2VyX2dpZCIgIiRzdGFnZV9yb290IgorICAgIGxvZyAiJHN0YWdlX3Rva2VuIGNvbXBsZXRlIgorfQorCisjIEJ1aWxkIHN1Ym1pdHRlZCBjb2RlIG9ubHkgYWZ0ZXIgdGhlIHRydXN0ZWQgcm91bmQgYmFzZWxpbmUgaGFzIGJlZW4gbWVhc3VyZWQKKyMgb3IgYXV0aGVudGljYXRlZC4gS2VlcGluZyB0aGlzIGFzIGEgZnVuY3Rpb24gbGV0cyB0aGUgZmlyc3Qgcm91bmQgZXZhbHVhdGlvbgorIyBlc3RhYmxpc2ggaXRzIGNvbnRyb2wgYmVmb3JlIGFueSB1bnRydXN0ZWQgY29tcGlsZXIgd29ya2xvYWQgY2FuIHBlcnR1cmIgdGhlCisjIGhvc3QgdXNlZCB0byBtZWFzdXJlIHRoYXQgY29udHJvbC4KK2J1aWxkX2NhbmRpZGF0ZSgpIHsKK3dyaXRlX2V2YWx1YXRpb25fcHJvZ3Jlc3MgYnVpbGRpbmcgIiRyZXBsaWNhdGVzIiAwCitsb2cgImJ1aWxkaW5nIGF1dGhlbnRpY2F0ZWQgY2FuZGlkYXRlIGltYWdlIG9mZmxpbmUiCitjYW5kaWRhdGVfYnVpbGRfanNvbj0iJHdvcmtfZGlyL2NhbmRpZGF0ZS1idWlsZC5qc29uIgorY2FuZGlkYXRlX2J1aWxkX2xvZz0iJHdvcmtfZGlyL2NhbmRpZGF0ZS1idWlsZC5sb2ciCitjYW5kaWRhdGVfYnVpbGRfcGlwZT0iJHdvcmtfZGlyLy5jYW5kaWRhdGUtYnVpbGQucGlwZSIKK21rZmlmbyAtbSAwNjAwICIkY2FuZGlkYXRlX2J1aWxkX3BpcGUiCit7IGhlYWQgLWMgIiRNQVhfQlVJTERfTE9HX0JZVEVTIjsgY2F0ID4vZGV2L251bGw7IH0gXAorICAgIDwgIiRjYW5kaWRhdGVfYnVpbGRfcGlwZSIgPiAiJGNhbmRpZGF0ZV9idWlsZF9sb2ciICYKK2FjdGl2ZV9idWlsZF9sb2dfcGlkPSQhCithY3RpdmVfYnVpbGRfbG9nX3BpcGU9IiRjYW5kaWRhdGVfYnVpbGRfcGlwZSIKK3RyYXAgLSBFUlIKK3NldCArZQorJEJVSUxEX1NVQk1JU1NJT04gIiR7c291cmNlX21vZGVfYXJnc1tAXX0iIC0tYWxsb3ctbG9jYWwtYmFzZSAtLWJhc2UtaW1hZ2UgIiRiYXNlX2J1aWxkX3JlZiIgXAorICAgIC0tc291cmNlLXJvb3QgIiRjYW5kaWRhdGVfc291cmNlX3Jvb3QiIFwKKyAgICAtLXBhdGNoICIkcGF0Y2hfcGF0aCIgLS1wb2xpY3kgIiRwb2xpY3lfcGF0aCIgXAorICAgID4gIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIgMj4gIiRjYW5kaWRhdGVfYnVpbGRfcGlwZSIKK2NhbmRpZGF0ZV9idWlsZF9zdGF0dXM9JD8KK3dhaXQgIiRhY3RpdmVfYnVpbGRfbG9nX3BpZCIKK2NhbmRpZGF0ZV9idWlsZF9sb2dfc3RhdHVzPSQ/CithY3RpdmVfYnVpbGRfbG9nX3BpZD0iIgorcm0gLWYgLS0gIiRjYW5kaWRhdGVfYnVpbGRfcGlwZSIKK2FjdGl2ZV9idWlsZF9sb2dfcGlwZT0iIgorc2V0IC1lCit0cmFwICdvbl9lcnJvciAiJExJTkVOTyIgIiQ/IicgRVJSCitbICIkY2FuZGlkYXRlX2J1aWxkX2xvZ19zdGF0dXMiIC1lcSAwIF0gfHwgZGllICJib3VuZGVkIGNhbmRpZGF0ZSBidWlsZCBsb2cgY2FwdHVyZSBmYWlsZWQiCitpZiBbICIkY2FuZGlkYXRlX2J1aWxkX3N0YXR1cyIgLW5lIDAgXTsgdGhlbgorICAgIGlmIFsgIiRjYW5kaWRhdGVfYnVpbGRfc3RhdHVzIiAtZXEgMiBdIHx8CisgICAgICAgISBzdWRvIC1uIGRvY2tlciBpbmZvID4vZGV2L251bGwgMj4mMSB8fAorICAgICAgICEgc3VkbyAtbiBkb2NrZXIgaW1hZ2UgaW5zcGVjdCAiJGJhc2VfaW1hZ2VfaWQiID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgICBkaWUgImNhbmRpZGF0ZSBidWlsZGVyIGZhaWxlZCBiZWNhdXNlIGV2YWx1YXRvciBpbmZyYXN0cnVjdHVyZSBpcyB1bmF2YWlsYWJsZSIKKyAgICBmaQorICAgIGVtaXRfY2FuZGlkYXRlX2J1aWxkX2ZhaWx1cmUgIiRjYW5kaWRhdGVfYnVpbGRfbG9nIgorICAgIGV4aXQgMAorZmkKK2NobW9kIDA0MDAgIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIgIiRjYW5kaWRhdGVfYnVpbGRfbG9nIgorcmVhZG9ubHkgY2FuZGlkYXRlX2J1aWxkX2tleXM9J1siYmFzZV9pbWFnZV9pZCIsImJhc2Vfc2hhIiwiYnVpbGRlcl9zaGEyNTYiLCJjYW5kaWRhdGVfY29tbWl0cyIsImNhbmRpZGF0ZV9jb21taXRzX3NoYTI1NiIsImNhbmRpZGF0ZV9zaGEiLCJpbWFnZSIsImltYWdlX2lkIiwiaW1hZ2Vfa2V5Iiwib3JpZ2luYWxfc291cmNlX2lkZW50aXR5X3NoYTI1NiIsInBhdGNoX3NoYTI1NiIsInBhdGNoX3ZhbGlkYXRvcl9zaGEyNTYiLCJwb2xpY3lfc2hhMjU2Iiwic2NoZW1hIl0nCitqcSAtZSAtLWFyZ2pzb24gY2FuZGlkYXRlX2J1aWxkX2tleXMgIiRjYW5kaWRhdGVfYnVpbGRfa2V5cyIgXAorICAgIC0tYXJnanNvbiByZXBvc2l0b3JpZXMgIiRyZXBvc2l0b3J5X25hbWVzX2pzb24iIFwKKyAgICAndHlwZSA9PSAib2JqZWN0IiBhbmQgLnNjaGVtYSA9PSAxIGFuZCAoKGtleXMgfCBzb3J0KSA9PSAkY2FuZGlkYXRlX2J1aWxkX2tleXMpIGFuZAorICAgICAoLmltYWdlIHwgdHlwZSA9PSAic3RyaW5nIiBhbmQgbGVuZ3RoID4gMCkgYW5kCisgICAgICguaW1hZ2VfaWQgfCB0eXBlID09ICJzdHJpbmciIGFuZCB0ZXN0KCJec2hhMjU2OlswLTlhLWZdezY0fSQiKSkgYW5kCisgICAgICguYmFzZV9pbWFnZV9pZCB8IHR5cGUgPT0gInN0cmluZyIgYW5kIHRlc3QoIl5zaGEyNTY6WzAtOWEtZl17NjR9JCIpKSBhbmQKKyAgICAgKC5iYXNlX3NoYSB8IHR5cGUgPT0gInN0cmluZyIgYW5kIHRlc3QoIl5bMC05YS1mXXs0MH0kIikpIGFuZAorICAgICAoLmNhbmRpZGF0ZV9zaGEgfCB0eXBlID09ICJzdHJpbmciIGFuZCB0ZXN0KCJeWzAtOWEtZl17NDB9JCIpKSBhbmQKKyAgICAgKC5wYXRjaF9zaGEyNTYgfCB0eXBlID09ICJzdHJpbmciIGFuZCB0ZXN0KCJeWzAtOWEtZl17NjR9JCIpKSBhbmQKKyAgICAgKC5wb2xpY3lfc2hhMjU2IHwgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXlswLTlhLWZdezY0fSQiKSkgYW5kCisgICAgICguYnVpbGRlcl9zaGEyNTYgfCB0eXBlID09ICJzdHJpbmciIGFuZCB0ZXN0KCJeWzAtOWEtZl17NjR9JCIpKSBhbmQKKyAgICAgKC5wYXRjaF92YWxpZGF0b3Jfc2hhMjU2IHwgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXlswLTlhLWZdezY0fSQiKSkgYW5kCisgICAgICguY2FuZGlkYXRlX2NvbW1pdHNfc2hhMjU2IHwgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXlswLTlhLWZdezY0fSQiKSkgYW5kCisgICAgICgub3JpZ2luYWxfc291cmNlX2lkZW50aXR5X3NoYTI1NiB8IHR5cGUgPT0gInN0cmluZyIgYW5kIHRlc3QoIl5bMC05YS1mXXs2NH0kIikpIGFuZAorICAgICAoKC5jYW5kaWRhdGVfY29tbWl0cyB8IGtleXMpID09ICgkcmVwb3NpdG9yaWVzIHwgc29ydCkpIGFuZAorICAgICAoLmNhbmRpZGF0ZV9jb21taXRzIHwgYWxsKC5bXTsgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXlswLTlhLWZdezQwfSQiKSkpIGFuZAorICAgICAoLmltYWdlX2tleSB8IHR5cGUgPT0gInN0cmluZyIgYW5kIHRlc3QoIl5bMC05YS1mXXs2NH0kIikpJyBcCisgICAgIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIgPi9kZXYvbnVsbCB8fCBkaWUgImNhbmRpZGF0ZSBidWlsZCByZWNvcmQgaXMgaW52YWxpZCIKK2NhbmRpZGF0ZV9pbWFnZV9pZD0iJChqcSAtZXIgJy5pbWFnZV9pZCcgIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIpIgorY2FuZGlkYXRlX3NoYT0iJChqcSAtZXIgJy5jYW5kaWRhdGVfc2hhJyAiJGNhbmRpZGF0ZV9idWlsZF9qc29uIikiCitbICIkKGpxIC1lciAnLmJhc2VfaW1hZ2VfaWQnICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iKSIgPSAiJGJhc2VfaW1hZ2VfaWQiIF0gfHwgZGllICJjYW5kaWRhdGUgYmFzZSBpZGVudGl0eSBtaXNtYXRjaCIKK1sgIiQoanEgLWVyICcuYmFzZV9zaGEnICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iKSIgPSAiJGJhc2Vfc2hhIiBdIHx8IGRpZSAiY2FuZGlkYXRlIGJhc2UgU0hBIG1pc21hdGNoIgorWyAiJChqcSAtZXIgJy5wYXRjaF9zaGEyNTYnICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iKSIgPSAiJHBhdGNoX3NoYTI1NiIgXSB8fCBkaWUgImNhbmRpZGF0ZSBwYXRjaCBpZGVudGl0eSBtaXNtYXRjaCIKK1sgIiQoanEgLWVyICcucG9saWN5X3NoYTI1NicgIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIpIiA9ICIkcG9saWN5X3NoYTI1NiIgXSB8fCBkaWUgImNhbmRpZGF0ZSBwb2xpY3kgaWRlbnRpdHkgbWlzbWF0Y2giCitbICIkKGpxIC1lciAnLmJ1aWxkZXJfc2hhMjU2JyAiJGNhbmRpZGF0ZV9idWlsZF9qc29uIikiID0gIiRidWlsZGVyX3NoYTI1NiIgXSB8fCBkaWUgImNhbmRpZGF0ZSBidWlsZGVyIGlkZW50aXR5IG1pc21hdGNoIgorWyAiJChqcSAtZXIgJy5wYXRjaF92YWxpZGF0b3Jfc2hhMjU2JyAiJGNhbmRpZGF0ZV9idWlsZF9qc29uIikiID0gIiRwYXRjaF92YWxpZGF0b3Jfc2hhMjU2IiBdIHx8IGRpZSAiY2FuZGlkYXRlIHBhdGNoLXZhbGlkYXRvciBpZGVudGl0eSBtaXNtYXRjaCIKK1sgIiQoanEgLWVyICcub3JpZ2luYWxfc291cmNlX2lkZW50aXR5X3NoYTI1NicgIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIpIiA9ICIkY2FuZGlkYXRlX29yaWdpbmFsX3NvdXJjZV9pZGVudGl0eV9zaGEyNTYiIF0gfHwgZGllICJjYW5kaWRhdGUgb3JpZ2luYWwgc291cmNlIGlkZW50aXR5IG1pc21hdGNoIgorY2FuZGlkYXRlX2NvbW1pdHNfanNvbj0iJChqcSAtY1MgJy5jYW5kaWRhdGVfY29tbWl0cycgIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIpIgorY2FuZGlkYXRlX2NvbW1pdHNfc2hhMjU2PSIkKGpxIC1TICcuY2FuZGlkYXRlX2NvbW1pdHMnICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iIHwgc2hhMjU2c3VtIHwgYXdrICd7cHJpbnQgJDF9JykiCitbICIkKGpxIC1lciAnLmNhbmRpZGF0ZV9jb21taXRzX3NoYTI1NicgIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIpIiA9ICIkY2FuZGlkYXRlX2NvbW1pdHNfc2hhMjU2IiBdIHx8IGRpZSAiY2FuZGlkYXRlIGNvbW1pdC1tYXAgZGlnZXN0IG1pc21hdGNoIgoranEgLWUgLS1hcmdqc29uIGNvbW1pdHMgIiRjYW5kaWRhdGVfY29tbWl0c19qc29uIiAnLnJlcG9zaXRvcmllcyA9PSAkY29tbWl0cycgXAorICAgICIkY2FuZGlkYXRlX3NvdXJjZV9yb290Ly5ldmFsdWF0aW9uLXNvdXJjZS5qc29uIiA+L2Rldi9udWxsIHx8IGRpZSAidGVtcG9yYXJ5IGNhbmRpZGF0ZSBjb21taXQgbWFwIGRvZXMgbm90IG1hdGNoIGl0cyBpbWFnZSIKK1sgIiQoanEgLWVyICcuaW1hZ2Vfa2V5JyAiJGNhbmRpZGF0ZV9idWlsZF9qc29uIikiID0gIiRpbWFnZV9rZXkiIF0gfHwgZGllICJjYW5kaWRhdGUgaW1hZ2Uga2V5IG1pc21hdGNoIgorWyAiJChqcSAtZXIgJy5yZXBvc2l0b3JpZXMuc2VydmVyJyAiJGNhbmRpZGF0ZV9zb3VyY2Vfcm9vdC8uZXZhbHVhdGlvbi1zb3VyY2UuanNvbiIpIiA9ICIkY2FuZGlkYXRlX3NoYSIgXSB8fAorICAgIGRpZSAidGVtcG9yYXJ5IGNhbmRpZGF0ZSBjaGVja291dCBkb2VzIG5vdCBtYXRjaCB0aGUgY2FuZGlkYXRlIGltYWdlIgorWyAiJChqcSAtZXIgJy5jYW5kaWRhdGVfcGF0Y2hfc2hhMjU2JyAiJGNhbmRpZGF0ZV9zb3VyY2Vfcm9vdC8uZXZhbHVhdGlvbi1zb3VyY2UuanNvbiIpIiA9ICIkcGF0Y2hfc2hhMjU2IiBdIHx8CisgICAgZGllICJ0ZW1wb3JhcnkgY2FuZGlkYXRlIGNoZWNrb3V0IGRvZXMgbm90IG1hdGNoIHRoZSBjYW5vbmljYWwgcGF0Y2giCitbICIkKHN1ZG8gLW4gZG9ja2VyIGltYWdlIGluc3BlY3QgLS1mb3JtYXQgJ3t7LklkfX0nICIkY2FuZGlkYXRlX2ltYWdlX2lkIikiID0gIiRjYW5kaWRhdGVfaW1hZ2VfaWQiIF0gfHwKKyAgICBkaWUgImNhbmRpZGF0ZSBpbWFnZSBpZCBpcyB1bmF2YWlsYWJsZSBvciBjaGFuZ2VkIgorY2FuZGlkYXRlX2lkZW50aXR5PSIkKHN1ZG8gLW4gZG9ja2VyIHJ1biAtLXJtIC0tbmV0d29yayBub25lIC0tcmVhZC1vbmx5IC0tY2FwLWRyb3AgQUxMIFwKKyAgICAtLXNlY3VyaXR5LW9wdCBuby1uZXctcHJpdmlsZWdlczp0cnVlICIkY2FuZGlkYXRlX2ltYWdlX2lkIiBpZGVudGl0eSkiCitjYW5kaWRhdGVfc2ltdWxhdG9yX3NoYTI1Nj0iJChqcSAtZXIgJy5zaW11bGF0b3Jfc2hhMjU2JyA8PDwiJGNhbmRpZGF0ZV9pZGVudGl0eSIpIgoranEgLWUgLS1hcmcgYmFzZV9zaGEgIiRiYXNlX3NoYSIgLS1hcmcgYnVpbGRfc2hhICIkY2FuZGlkYXRlX3NoYSIgXAorICAgIC0tYXJnIHBhdGNoX3NoYSAiJHBhdGNoX3NoYTI1NiIgLS1hcmcgcG9saWN5X3NoYSAiJHBvbGljeV9zaGEyNTYiIFwKKyAgICAtLWFyZyBidWlsZGVyX3NoYSAiJGJ1aWxkZXJfc2hhMjU2IiAtLWFyZyBpbWFnZV9rZXkgIiRpbWFnZV9rZXkiIFwKKyAgICAtLWFyZyBwYXRjaF92YWxpZGF0b3Jfc2hhMjU2ICIkcGF0Y2hfdmFsaWRhdG9yX3NoYTI1NiIgXAorICAgIC0tYXJnIGNhbmRpZGF0ZV9jb21taXRzX3NoYTI1NiAiJGNhbmRpZGF0ZV9jb21taXRzX3NoYTI1NiIgXAorICAgIC0tYXJnIG9yaWdpbmFsX3NvdXJjZV9pZGVudGl0eV9zaGEyNTYgIiRjYW5kaWRhdGVfb3JpZ2luYWxfc291cmNlX2lkZW50aXR5X3NoYTI1NiIgXAorICAgIC0tYXJnanNvbiBjYW5kaWRhdGVfY29tbWl0cyAiJGNhbmRpZGF0ZV9jb21taXRzX2pzb24iIFwKKyAgICAnLnNjaGVtYSA9PSAxIGFuZCAuaW1hZ2Vfa2luZCA9PSAic3VibWlzc2lvbiIgYW5kIC5iYXNlX3NoYSA9PSAkYmFzZV9zaGEgYW5kCisgICAgIC5idWlsZF9zaGEgPT0gJGJ1aWxkX3NoYSBhbmQgLnBhdGNoX3NoYTI1NiA9PSAkcGF0Y2hfc2hhIGFuZAorICAgICAucG9saWN5X3NoYTI1NiA9PSAkcG9saWN5X3NoYSBhbmQgLmJ1aWxkZXJfc2hhMjU2ID09ICRidWlsZGVyX3NoYSBhbmQKKyAgICAgLmltYWdlX2tleSA9PSAkaW1hZ2Vfa2V5IGFuZCAoLnNpbXVsYXRvcl9zaGEyNTYgfCB0ZXN0KCJeWzAtOWEtZl17NjR9JCIpKSBhbmQKKyAgICAgLnBhdGNoX3ZhbGlkYXRvcl9zaGEyNTYgPT0gJHBhdGNoX3ZhbGlkYXRvcl9zaGEyNTYgYW5kCisgICAgIC5jYW5kaWRhdGVfY29tbWl0c19zaGEyNTYgPT0gJGNhbmRpZGF0ZV9jb21taXRzX3NoYTI1NiBhbmQKKyAgICAgLm9yaWdpbmFsX3NvdXJjZV9pZGVudGl0eV9zaGEyNTYgPT0gJG9yaWdpbmFsX3NvdXJjZV9pZGVudGl0eV9zaGEyNTYgYW5kCisgICAgIC5jYW5kaWRhdGVfY29tbWl0cyA9PSAkY2FuZGlkYXRlX2NvbW1pdHMgYW5kCisgICAgICgucGF0aHMgfCB0eXBlID09ICJhcnJheSIpJyBcCisgICAgPDw8IiRjYW5kaWRhdGVfaWRlbnRpdHkiID4vZGV2L251bGwgfHwgZGllICJjYW5kaWRhdGUgaW1hZ2UgaWRlbnRpdHkgaXMgaW52YWxpZCIKK2F1dGhlbnRpY2F0ZV9wcm90ZWN0ZWRfc2ltdWxhdG9yX3RyZWUKK3dyaXRlX3NvdXJjZV9ldmlkZW5jZSBmYWxzZQorc2VhbF9ldmFsdWF0aW9uX3NvdXJjZSAiJGNhbmRpZGF0ZV9zb3VyY2Vfcm9vdCIgIiRjYW5kaWRhdGVfc2hhIiAiJHBhdGNoX3NoYTI1NiIKK30KKworc2VhbF9ldmFsdWF0aW9uX3NvdXJjZSAiJGJhc2VsaW5lX3NvdXJjZV9yb290IiAiJGJhc2Vfc2hhIiAiIgorCisjIFJlZnVzZSBzb3VyY2UtcGVyY2VudC9yZXF1ZXN0LWZyYWN0aW9uIG1pc21hdGNoZXMgYmVmb3JlIHBheWluZyBmb3IgYW55CisjIGJhc2VsaW5lIHJ1bi4gVGhlIHByaXN0aW5lIGltYWdlIHBlcmZvcm1zIHRoaXMgbWV0YWRhdGEtb25seSBjaGVjayBvZmZsaW5lLgorc3VkbyAtbiBkb2NrZXIgcnVuIC0tcm0gLS1uZXR3b3JrIG5vbmUgLS1yZWFkLW9ubHkgLS1jYXAtZHJvcCBBTEwgXAorICAgIC0tc2VjdXJpdHktb3B0IG5vLW5ldy1wcml2aWxlZ2VzOnRydWUgLS1jcHVzZXQtY3B1cyAiJG1hbmFnZW1lbnRfY3B1c2V0IiBcCisgICAgLS1tZW1vcnkgIiRTQ09SRVJfTUVNT1JZX0xJTUlUIiAtLW1lbW9yeS1zd2FwICIkU0NPUkVSX01FTU9SWV9MSU1JVCIgLS1waWRzLWxpbWl0ICIkU0NPUkVSX1BJRFNfTElNSVQiIFwKKyAgICAtLWVudiBBUEVYX1NJTV9CSU49L29wdC91cm5ldHdvcmsvYmluL3NpbS1sYXRlbmN5IFwKKyAgICAtLWVudiAiQVBFWF9TSU1fU0hBMjU2PSRiYXNlX3NpbXVsYXRvcl9zaGEyNTYiIFwKKyAgICAtLWVudiAiQVBFWF9FUE9DSD0kc291cmNlX2Vwb2NoIiAtLWVudiAiQVBFWF9UQUtFT1ZFUl9NQVJHSU49JHRha2VvdmVyX21hcmdpbiIgXAorICAgIC0tZW52ICJBUEVYX0cyX1ZPTFVNRV9QT0xJQ1k9JGcyX3ZvbHVtZV9wb2xpY3kiIFwKKyAgICAiJGJhc2VfaW1hZ2VfaWQiIG1hcmdpbi1wcmVmbGlnaHQgPiYyIHx8IGRpZSAic291cmNlIGVwb2NoIHRha2VvdmVyIG1hcmdpbiBwcmVmbGlnaHQgZmFpbGVkIgorCitpZiBbIC1uICIkcm91bmRfYmFzZWxpbmVfcGF0aCIgXTsgdGhlbgorICAgIGpxIC1lIC0tYXJnIHJvdW5kX2lkICIkcm91bmRfaWQiIC0tYXJnIHByb3ZpZGVyc19zaGEyNTYgIiRwcm92aWRlcnNfc2hhMjU2IiBcCisgICAgICAgIC0tYXJnIHNjb3Jlcl92ZXJzaW9uICIkc2NvcmVyX3ZlcnNpb24iIC0tYXJnanNvbiByZXBsaWNhdGVzICIkcmVwbGljYXRlcyIgXAorICAgICAgICAtLWFyZyBnMl92b2x1bWVfcG9saWN5ICIkZzJfdm9sdW1lX3BvbGljeSIgXAorICAgICAgICAtLWFyZ2pzb24gcmVxdWVzdF90aW1lb3V0X21zICIkcmVxdWVzdF90aW1lb3V0X21zIiBcCisgICAgICAgIC0tYXJnanNvbiB0YWtlb3Zlcl9tYXJnaW4gIiR0YWtlb3Zlcl9tYXJnaW4iIFwKKyAgICAgICAgJy5zY29yZV9zY2hlbWEgPT0gMSBhbmQgLmtpbmQgPT0gInNpbS1sYXRlbmN5LXNjb3JlLWJhc2VsaW5lIiBhbmQKKyAgICAgICAgIC5zY29yZXJfdmVyc2lvbiA9PSAkc2NvcmVyX3ZlcnNpb24gYW5kIC5yb3VuZF9pZCA9PSAkcm91bmRfaWQgYW5kCisgICAgICAgICAoLmcyX3ZvbHVtZV9wb2xpY3kgLy8gIiIpID09ICRnMl92b2x1bWVfcG9saWN5IGFuZAorICAgICAgICAgLmNvbmZpZ19zaGEyNTYgPT0gJHByb3ZpZGVyc19zaGEyNTYgYW5kCisgICAgICAgICAucmVxdWVzdF90aW1lb3V0X21zID09ICRyZXF1ZXN0X3RpbWVvdXRfbXMgYW5kCisgICAgICAgICAudGFrZW92ZXJfbWFyZ2luID09ICR0YWtlb3Zlcl9tYXJnaW4gYW5kCisgICAgICAgICAoLnJlcGxpY2F0ZXMgfCB0eXBlID09ICJhcnJheSIgYW5kIGxlbmd0aCA9PSAkcmVwbGljYXRlcykgYW5kCisgICAgICAgICBhbGwoLnJlcGxpY2F0ZXNbXTsKKyAgICAgICAgICAgKC5saXZlX21ldHJpY3MgfCB0eXBlID09ICJvYmplY3QiIGFuZAorICAgICAgICAgICAgKGtleXMgfCBzb3J0KSA9PSBbInRocm91Z2hwdXRfcDUwX2J5dGVzX3Blcl9zIiwidGhyb3VnaHB1dF9wOTVfYnl0ZXNfcGVyX3MiLCJ0dGZiX3A1MF9tcyIsInR0ZmJfcDk1X21zIl0gYW5kCisgICAgICAgICAgICBhbGwoLltdOyAudmFsdWUgPj0gMCBhbmQgLm4gPiAwIGFuZCAoLmJsb2NrX3NlIC8vIDApID49IDApKSknIFwKKyAgICAgICAgIiRyb3VuZF9iYXNlbGluZV9wYXRoIiA+L2Rldi9udWxsIHx8IGRpZSAiZnJvemVuIHJvdW5kIGJhc2VsaW5lIGNvbnRyYWN0IG1pc21hdGNoIgorICAgIHN1ZG8gLW4gaW5zdGFsbCAtbyAiJHdvcmtlcl91aWQiIC1nICIkd29ya2VyX2dpZCIgLW0gMDQwMCBcCisgICAgICAgICIkcm91bmRfYmFzZWxpbmVfcGF0aCIgIiRhcnRpZmFjdF9kaXIvYmFzZWxpbmUuanNvbiIKKyAgICBzdWRvIC1uIGluc3RhbGwgLW8gIiRjb250YWluZXJfaG9zdF91aWQiIC1nICIkY29udGFpbmVyX2hvc3RfZ2lkIiAtbSAwNDAwIFwKKyAgICAgICAgIiRhcnRpZmFjdF9kaXIvYmFzZWxpbmUuanNvbiIgIiR3b3JrX2Rpci9zY29yZXItaW5wdXQvYmFzZWxpbmUuanNvbiIKKyAgICBiYXNlbGluZV9zaGEyNTY9IiQoc2hhMjU2X2ZpbGUgIiRhcnRpZmFjdF9kaXIvYmFzZWxpbmUuanNvbiIpIgorICAgIFsgIiRiYXNlbGluZV9zaGEyNTYiID0gIiRyb3VuZF9iYXNlbGluZV9zaGEyNTYiIF0gfHwgZGllICJtYXRlcmlhbGl6ZWQgcm91bmQgYmFzZWxpbmUgaGFzaCBtaXNtYXRjaCIKKyAgICB3aGlsZSBJRlM9IHJlYWQgLXIgcHJvZ3Jlc3NfcmVjb3JkOyBkbworICAgICAgICBwcm9ncmVzc19yZWNvcmRzKz0oIiRwcm9ncmVzc19yZWNvcmQiKQorICAgIGRvbmUgPCA8KGpxIC1jICcKKyAgICAgICAgLnJlcGxpY2F0ZXMgfCB0b19lbnRyaWVzW10gYXMgJHJlcGxpY2F0ZSB8CisgICAgICAgICRyZXBsaWNhdGUudmFsdWUubGl2ZV9tZXRyaWNzIHwgdG9fZW50cmllc1tdIHwKKyAgICAgICAge3JvbGU6ImJhc2VsaW5lIixyZXBsaWNhdGU6KCRyZXBsaWNhdGUua2V5ICsgMSksbWV0cmljOi5rZXksCisgICAgICAgICBxdWFudGlsZTooaWYgKC5rZXkgfCBjb250YWlucygiX3A1MF8iKSkgdGhlbiAicDUwIiBlbHNlICJwOTUiIGVuZCksCisgICAgICAgICB2YWx1ZToudmFsdWUudmFsdWUscF9pbXByb3ZlbWVudDpudWxsLHBfcmVncmVzc2lvbjpudWxsLHNpZ25pZmljYW5jZToiYmFzZWxpbmUifScgXAorICAgICAgICAiJGFydGlmYWN0X2Rpci9iYXNlbGluZS5qc29uIikKKyAgICB3cml0ZV9ldmFsdWF0aW9uX3Byb2dyZXNzIGJhc2VsaW5lICIkcmVwbGljYXRlcyIgMAorZWxzZQorICAgIGZvciAoKGkgPSAxOyBpIDw9IHJlcGxpY2F0ZXM7IGkrKykpOyBkbworICAgICAgICBydW5fc3RhZ2UgYmFzZWxpbmUgIiRpIiAiJGJhc2VfaW1hZ2VfaWQiICIkYmFzZV9zaGEiICIkYmFzZV9zaW11bGF0b3Jfc2hhMjU2IiAiJEVNUFRZX1BBVENIX1NIQTI1NiIKKyAgICBkb25lCitmaQorCitzY29yZV9ydW5uZXJfZW52PSIkd29ya19kaXIvc2NvcmVyLmVudiIKK3Njb3JlX2NvbXBvc2VfZW52PSIkd29ya19kaXIvc2NvcmVyLWNvbXBvc2UuZW52IgoraWYgWyAteiAiJHJvdW5kX2Jhc2VsaW5lX3BhdGgiIF07IHRoZW4KK3N0YWdlX2RiX2FkbWluX3Bhc3N3b3JkPSIkKG5ld19zZWNyZXQpIgorc3RhZ2VfZGJfcGFzc3dvcmQ9IiQobmV3X3NlY3JldCkiCitzdGFnZV9yZWRpc19wYXNzd29yZD0iJChuZXdfc2VjcmV0KSIKK3dyaXRlX3J1bm5lcl9lbnYgIiRzY29yZV9ydW5uZXJfZW52IiAic2NvcmUtJHtqb2JfaWQ6MDo4fSIgIiRiYXNlX3NoYSIgIiRiYXNlX3NpbXVsYXRvcl9zaGEyNTYiICIkYmFzZV9pbWFnZV9pZCIgIiRFTVBUWV9QQVRDSF9TSEEyNTYiCitzZWQgLWkgJ3N8XkFQRVhfUFJPVklERVJTX0ZJTEU9Lip8QVBFWF9QUk9WSURFUlNfRklMRT0vYXJ0aWZhY3RzL3Byb3ZpZGVycy55bWx8JyAiJHNjb3JlX3J1bm5lcl9lbnYiCitjaG1vZCAwNjAwICIkc2NvcmVfcnVubmVyX2VudiIKK3ByaW50ZiAnJXNcbicgXAorICAgICJBUEVYX1JPVU5EX0lEPSRyb3VuZF9pZCIgXAorICAgICJBUEVYX1RBS0VPVkVSX01BUkdJTj0kdGFrZW92ZXJfbWFyZ2luIiBcCisgICAgIkFQRVhfQkFTRUxJTkVfUlVOUz0kKGpvaW5fY3N2ICIke2Jhc2VsaW5lX2NzdltAXX0iKSIgXAorICAgICJBUEVYX0JBU0VMSU5FX1NUREVSUj0kKGpvaW5fY3N2ICIke2Jhc2VsaW5lX3N0ZGVycltAXX0iKSIgXAorICAgICJBUEVYX0JBU0VMSU5FX0FDQ09VTlRJTkc9JChqb2luX2NzdiAiJHtiYXNlbGluZV9hY2NvdW50aW5nW0BdfSIpIiBcCisgICAgIkFQRVhfQkFTRUxJTkVfU0FNUExFUz0kKGpvaW5fY3N2ICIke2Jhc2VsaW5lX3NhbXBsZXNbQF19IikiIFwKKyAgICAiQVBFWF9CQVNFTElORV9SRVNPVVJDRVM9JChqb2luX2NzdiAiJHtiYXNlbGluZV9yZXNvdXJjZXNbQF19IikiIFwKKyAgICAiQVBFWF9CQVNFTElORV9NQVJLRVJTPSQoam9pbl9jc3YgIiR7YmFzZWxpbmVfbWFya2Vyc1tAXX0iKSIgXAorICAgICdBUEVYX0JBU0VMSU5FX01BTklGRVNUPS9zY29yZS1vdXRwdXQvYmFzZWxpbmUuanNvbicgXAorICAgID4+ICIkc2NvcmVfcnVubmVyX2VudiIKK2NobW9kIDA0MDAgIiRzY29yZV9ydW5uZXJfZW52IgorCitiYXNlbGluZV9zY29yZV9vdXRwdXQ9IiR3b3JrX2Rpci9iYXNlbGluZS1zY29yZS1vdXRwdXQiCitpbnN0YWxsIC1kIC1tIDA3MDAgIiRiYXNlbGluZV9zY29yZV9vdXRwdXQiCitzdWRvIC1uIGNob3duICIkY29udGFpbmVyX2hvc3RfdWlkOiRjb250YWluZXJfaG9zdF9naWQiICIkYmFzZWxpbmVfc2NvcmVfb3V0cHV0Igorc2NvcmVfcHJvamVjdD0idXJuZXR3b3JrLWV2YWwtJHthdHRlbXB0X3Rva2VufS1iYXNlbGluZS1zY29yZSIKK3Njb3JlX2Nncm91cF9wYXJlbnQ9InVybmV0d29yay1ldmFsdWF0aW9uLSR7YXR0ZW1wdF90b2tlbn0tYmFzZWxpbmUtc2NvcmUuc2xpY2UiCit3cml0ZV9jb21wb3NlX2VudiAiJHNjb3JlX2NvbXBvc2VfZW52IiAiJHNjb3JlX3Byb2plY3QiIHNjb3JlICIkYmFzZV9pbWFnZV9pZCIgIiRzY29yZV9ydW5uZXJfZW52IiBcCisgICAgIiR3b3JrX2Rpci9zY29yZXItaW5wdXQiICIkYmFzZWxpbmVfc2NvcmVfb3V0cHV0IiAiJHNjb3JlX2Nncm91cF9wYXJlbnQiICIkYmFzZWxpbmVfc291cmNlX3Jvb3QiCitzZWQgLWkgJ3MvXkVWQUxVQVRJT05fQUNUSU9OPS4qL0VWQUxVQVRJT05fQUNUSU9OPWJhc2VsaW5lLycgIiRzY29yZV9jb21wb3NlX2VudiIKK2FjdGl2ZV9wcm9qZWN0PSIkc2NvcmVfcHJvamVjdCIKK2FjdGl2ZV9jb21wb3NlX2Vudj0iJHNjb3JlX2NvbXBvc2VfZW52IgorY29tcG9zZV93aXRoICIkc2NvcmVfcHJvamVjdCIgIiRzY29yZV9jb21wb3NlX2VudiIgLS1wcm9maWxlIHNjb3JlIHVwIC0tZGV0YWNoIHNjb3JlciA+JjIKK3Njb3Jlcl9pZD0iJChjb21wb3NlX3dpdGggIiRzY29yZV9wcm9qZWN0IiAiJHNjb3JlX2NvbXBvc2VfZW52IiAtLXByb2ZpbGUgc2NvcmUgcHMgLS1hbGwgLS1xdWlldCBzY29yZXIpIgorWyAtbiAiJHNjb3Jlcl9pZCIgXSB8fCBkaWUgImJhc2VsaW5lIHNjb3JlciBjb250YWluZXIgbWlzc2luZyIKK3Njb3Jlcl9leGl0PSIkKHN1ZG8gLW4gZG9ja2VyIHdhaXQgIiRzY29yZXJfaWQiKSIKK2Jhc2VsaW5lX3Njb3Jlcl9sb2c9IiR3b3JrX2Rpci9iYXNlbGluZS1zY29yZXIubG9nIgorc3VkbyAtbiBkb2NrZXIgbG9ncyAiJHNjb3Jlcl9pZCIgPiAiJGJhc2VsaW5lX3Njb3Jlcl9sb2ciIDI+JjEgfHwgdHJ1ZQorY2F0ICIkYmFzZWxpbmVfc2NvcmVyX2xvZyIgPiYyCitjaG1vZCAwNDAwICIkYmFzZWxpbmVfc2NvcmVyX2xvZyIKK1sgIiRzY29yZXJfZXhpdCIgLWVxIDAgXSB8fCBkaWUgImJhc2VsaW5lIHNjb3JlciBleGl0ZWQgJHNjb3Jlcl9leGl0Igorc3VkbyAtbiBkb2NrZXIgaW5zcGVjdCAiJHNjb3Jlcl9pZCIgfCBqcSAtZSAtLWFyZyBwYXJlbnQgIiRzY29yZV9jZ3JvdXBfcGFyZW50IiBcCisgICAgLS1hcmcgaW1hZ2UgIiRiYXNlX2ltYWdlX2lkIiAtLWFyZyBjcHVzZXQgIiRjcHVzZXQiIFwKKyAgICAnLlswXS5Db25maWcuVXNlciA9PSAiNjU1MzI6NjU1MzIiIGFuZCAuWzBdLkhvc3RDb25maWcuUmVhZG9ubHlSb290ZnMgPT0gdHJ1ZSBhbmQKKyAgICAgLlswXS5Ib3N0Q29uZmlnLk5ldHdvcmtNb2RlID09ICJub25lIiBhbmQgLlswXS5Ib3N0Q29uZmlnLk1lbW9yeSA9PSA0Mjk0OTY3Mjk2IGFuZAorICAgICAuWzBdLkhvc3RDb25maWcuTWVtb3J5U3dhcCA9PSA0Mjk0OTY3Mjk2IGFuZCAuWzBdLkhvc3RDb25maWcuUGlkc0xpbWl0ID09IDEwMjQgYW5kCisgICAgIC5bMF0uQ29uZmlnLkltYWdlID09ICRpbWFnZSBhbmQgLlswXS5Ib3N0Q29uZmlnLkNncm91cFBhcmVudCA9PSAkcGFyZW50IGFuZAorICAgICAuWzBdLkhvc3RDb25maWcuQ3B1c2V0Q3B1cyA9PSAkY3B1c2V0IGFuZAorICAgICAoLlswXS5Ib3N0Q29uZmlnLkNhcERyb3AgfCBpbmRleCgiQUxMIikgIT0gbnVsbCkgYW5kCisgICAgICguWzBdLkhvc3RDb25maWcuU2VjdXJpdHlPcHQgfCBpbmRleCgibm8tbmV3LXByaXZpbGVnZXM6dHJ1ZSIpICE9IG51bGwpJyA+L2Rldi9udWxsIHx8CisgICAgZGllICJiYXNlbGluZSBzY29yZXIgY29udGFpbm1lbnQgbWlzbWF0Y2giCitzdWRvIC1uIHRlc3QgLXMgIiRiYXNlbGluZV9zY29yZV9vdXRwdXQvYmFzZWxpbmUuanNvbiIgfHwgZGllICJiYXNlbGluZSBtYW5pZmVzdCBtaXNzaW5nIgorY29tcG9zZV93aXRoICIkc2NvcmVfcHJvamVjdCIgIiRzY29yZV9jb21wb3NlX2VudiIgLS1wcm9maWxlIHNjb3JlIGRvd24gLS12b2x1bWVzIC0tcmVtb3ZlLW9ycGhhbnMgPiYyCithY3RpdmVfcHJvamVjdD0iIgorYWN0aXZlX2NvbXBvc2VfZW52PSIiCitzdWRvIC1uIGluc3RhbGwgLW8gIiR3b3JrZXJfdWlkIiAtZyAiJHdvcmtlcl9naWQiIC1tIDA0MDAgXAorICAgICIkYmFzZWxpbmVfc2NvcmVfb3V0cHV0L2Jhc2VsaW5lLmpzb24iICIkYXJ0aWZhY3RfZGlyL2Jhc2VsaW5lLmpzb24iCitzdWRvIC1uIGluc3RhbGwgLW8gIiRjb250YWluZXJfaG9zdF91aWQiIC1nICIkY29udGFpbmVyX2hvc3RfZ2lkIiAtbSAwNDAwIFwKKyAgICAiJGFydGlmYWN0X2Rpci9iYXNlbGluZS5qc29uIiAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dC9iYXNlbGluZS5qc29uIgorYmFzZWxpbmVfc2hhMjU2PSIkKHNoYTI1Nl9maWxlICIkYXJ0aWZhY3RfZGlyL2Jhc2VsaW5lLmpzb24iKSIKK2ZpCisKKyMgTm90aGluZyBmcm9tIHRydXN0ZWQgYmFzZWxpbmUgc2NvcmluZyBpcyBuZWVkZWQgd2hpbGUgYnVpbGRpbmcgdGhlCisjIHN1Ym1pc3Npb24uIFJlbW92aW5nIHRoZSBlcGhlbWVyYWwgZW52aXJvbm1lbnQgYWxzbyBrZWVwcyBpdHMgb25lLXRpbWUKKyMgYmFja2luZy1zZXJ2aWNlIGNyZWRlbnRpYWxzIG91dCBvZiBhIHRlcm1pbmFsIGJ1aWxkLWZhaWx1cmUgYXJjaGl2ZS4KK3JtIC1mIC0tICIkc2NvcmVfcnVubmVyX2VudiIgIiRzY29yZV9jb21wb3NlX2VudiIKK2J1aWxkX2NhbmRpZGF0ZQorZm9yICgoaSA9IDE7IGkgPD0gcmVwbGljYXRlczsgaSsrKSk7IGRvCisgICAgcnVuX3N0YWdlIGNhbmRpZGF0ZSAiJGkiICIkY2FuZGlkYXRlX2ltYWdlX2lkIiAiJGNhbmRpZGF0ZV9zaGEiICIkY2FuZGlkYXRlX3NpbXVsYXRvcl9zaGEyNTYiICIkcGF0Y2hfc2hhMjU2IgorZG9uZQord3JpdGVfZXZhbHVhdGlvbl9wcm9ncmVzcyBzY29yaW5nICIkcmVwbGljYXRlcyIgIiRyZXBsaWNhdGVzIgorCisjIFJlYnVpbGQgdGhlIHNjb3JlciBlbnZpcm9ubWVudCBmb3IgY2FuZGlkYXRlIHNjb3Jpbmc7IG5vIGJhc2VsaW5lIHBhdGggd2FzCisjIGV2ZXIgbW91bnRlZCBpbnRvIGEgY2FuZGlkYXRlIHJ1bm5lci4KK3N0YWdlX2RiX2FkbWluX3Bhc3N3b3JkPSIkKG5ld19zZWNyZXQpIgorc3RhZ2VfZGJfcGFzc3dvcmQ9IiQobmV3X3NlY3JldCkiCitzdGFnZV9yZWRpc19wYXNzd29yZD0iJChuZXdfc2VjcmV0KSIKK1sgISAtZSAiJHNjb3JlX3J1bm5lcl9lbnYiIF0gfHwgY2htb2QgMDYwMCAiJHNjb3JlX3J1bm5lcl9lbnYiCit3cml0ZV9ydW5uZXJfZW52ICIkc2NvcmVfcnVubmVyX2VudiIgInNjb3JlLSR7am9iX2lkOjA6OH0iICIkYmFzZV9zaGEiICIkYmFzZV9zaW11bGF0b3Jfc2hhMjU2IiAiJGJhc2VfaW1hZ2VfaWQiICIkRU1QVFlfUEFUQ0hfU0hBMjU2Igorc2VkIC1pICdzfF5BUEVYX1BST1ZJREVSU19GSUxFPS4qfEFQRVhfUFJPVklERVJTX0ZJTEU9L2FydGlmYWN0cy9wcm92aWRlcnMueW1sfCcgIiRzY29yZV9ydW5uZXJfZW52IgorY2htb2QgMDYwMCAiJHNjb3JlX3J1bm5lcl9lbnYiCitwcmludGYgJyVzXG4nIFwKKyAgICAnQVBFWF9CQVNFTElORV9NQU5JRkVTVD0vYXJ0aWZhY3RzL2Jhc2VsaW5lLmpzb24nIFwKKyAgICAiQVBFWF9CQVNFTElORV9TSEEyNTY9JGJhc2VsaW5lX3NoYTI1NiIgXAorICAgICJBUEVYX0NBTkRJREFURV9SVU5TPSQoam9pbl9jc3YgIiR7Y2FuZGlkYXRlX2NzdltAXX0iKSIgXAorICAgICJBUEVYX0NBTkRJREFURV9TVERFUlI9JChqb2luX2NzdiAiJHtjYW5kaWRhdGVfc3RkZXJyW0BdfSIpIiBcCisgICAgIkFQRVhfQ0FORElEQVRFX0FDQ09VTlRJTkc9JChqb2luX2NzdiAiJHtjYW5kaWRhdGVfYWNjb3VudGluZ1tAXX0iKSIgXAorICAgICJBUEVYX0NBTkRJREFURV9TQU1QTEVTPSQoam9pbl9jc3YgIiR7Y2FuZGlkYXRlX3NhbXBsZXNbQF19IikiIFwKKyAgICAiQVBFWF9DQU5ESURBVEVfUkVTT1VSQ0VTPSQoam9pbl9jc3YgIiR7Y2FuZGlkYXRlX3Jlc291cmNlc1tAXX0iKSIgXAorICAgICJBUEVYX0NBTkRJREFURV9NQVJLRVJTPSQoam9pbl9jc3YgIiR7Y2FuZGlkYXRlX21hcmtlcnNbQF19IikiIFwKKyAgICAnQVBFWF9TQ09SRV9PVVRQVVQ9L3Njb3JlLW91dHB1dC9zY29yZS5qc29uJyBcCisgICAgPj4gIiRzY29yZV9ydW5uZXJfZW52IgorY2htb2QgMDQwMCAiJHNjb3JlX3J1bm5lcl9lbnYiCisKK2NhbmRpZGF0ZV9zY29yZV9vdXRwdXQ9IiR3b3JrX2Rpci9jYW5kaWRhdGUtc2NvcmUtb3V0cHV0IgoraW5zdGFsbCAtZCAtbSAwNzAwICIkY2FuZGlkYXRlX3Njb3JlX291dHB1dCIKK3N1ZG8gLW4gY2hvd24gIiRjb250YWluZXJfaG9zdF91aWQ6JGNvbnRhaW5lcl9ob3N0X2dpZCIgIiRjYW5kaWRhdGVfc2NvcmVfb3V0cHV0Igorc2NvcmVfcHJvamVjdD0idXJuZXR3b3JrLWV2YWwtJHthdHRlbXB0X3Rva2VufS1jYW5kaWRhdGUtc2NvcmUiCitzY29yZV9jZ3JvdXBfcGFyZW50PSJ1cm5ldHdvcmstZXZhbHVhdGlvbi0ke2F0dGVtcHRfdG9rZW59LWNhbmRpZGF0ZS1zY29yZS5zbGljZSIKK3dyaXRlX2NvbXBvc2VfZW52ICIkc2NvcmVfY29tcG9zZV9lbnYiICIkc2NvcmVfcHJvamVjdCIgc2NvcmUgIiRiYXNlX2ltYWdlX2lkIiAiJHNjb3JlX3J1bm5lcl9lbnYiIFwKKyAgICAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dCIgIiRjYW5kaWRhdGVfc2NvcmVfb3V0cHV0IiAiJHNjb3JlX2Nncm91cF9wYXJlbnQiICIkYmFzZWxpbmVfc291cmNlX3Jvb3QiCitzZWQgLWkgJ3MvXkVWQUxVQVRJT05fQUNUSU9OPS4qL0VWQUxVQVRJT05fQUNUSU9OPXNjb3JlLycgIiRzY29yZV9jb21wb3NlX2VudiIKK2FjdGl2ZV9wcm9qZWN0PSIkc2NvcmVfcHJvamVjdCIKK2FjdGl2ZV9jb21wb3NlX2Vudj0iJHNjb3JlX2NvbXBvc2VfZW52IgorY29tcG9zZV93aXRoICIkc2NvcmVfcHJvamVjdCIgIiRzY29yZV9jb21wb3NlX2VudiIgLS1wcm9maWxlIHNjb3JlIHVwIC0tZGV0YWNoIHNjb3JlciA+JjIKK3Njb3Jlcl9pZD0iJChjb21wb3NlX3dpdGggIiRzY29yZV9wcm9qZWN0IiAiJHNjb3JlX2NvbXBvc2VfZW52IiAtLXByb2ZpbGUgc2NvcmUgcHMgLS1hbGwgLS1xdWlldCBzY29yZXIpIgorWyAtbiAiJHNjb3Jlcl9pZCIgXSB8fCBkaWUgImNhbmRpZGF0ZSBzY29yZXIgY29udGFpbmVyIG1pc3NpbmciCitzY29yZXJfZXhpdD0iJChzdWRvIC1uIGRvY2tlciB3YWl0ICIkc2NvcmVyX2lkIikiCitjYW5kaWRhdGVfc2NvcmVyX2xvZz0iJHdvcmtfZGlyL2NhbmRpZGF0ZS1zY29yZXIubG9nIgorc3VkbyAtbiBkb2NrZXIgbG9ncyAiJHNjb3Jlcl9pZCIgPiAiJGNhbmRpZGF0ZV9zY29yZXJfbG9nIiAyPiYxIHx8IHRydWUKK2NhdCAiJGNhbmRpZGF0ZV9zY29yZXJfbG9nIiA+JjIKK2NobW9kIDA0MDAgIiRjYW5kaWRhdGVfc2NvcmVyX2xvZyIKK1sgIiRzY29yZXJfZXhpdCIgLWVxIDAgXSB8fCBkaWUgImNhbmRpZGF0ZSBzY29yZXIgZXhpdGVkICRzY29yZXJfZXhpdCIKK3N1ZG8gLW4gZG9ja2VyIGluc3BlY3QgIiRzY29yZXJfaWQiIHwganEgLWUgLS1hcmcgcGFyZW50ICIkc2NvcmVfY2dyb3VwX3BhcmVudCIgXAorICAgIC0tYXJnIGltYWdlICIkYmFzZV9pbWFnZV9pZCIgLS1hcmcgY3B1c2V0ICIkY3B1c2V0IiBcCisgICAgJy5bMF0uQ29uZmlnLlVzZXIgPT0gIjY1NTMyOjY1NTMyIiBhbmQgLlswXS5Ib3N0Q29uZmlnLlJlYWRvbmx5Um9vdGZzID09IHRydWUgYW5kCisgICAgIC5bMF0uSG9zdENvbmZpZy5OZXR3b3JrTW9kZSA9PSAibm9uZSIgYW5kIC5bMF0uSG9zdENvbmZpZy5NZW1vcnkgPT0gNDI5NDk2NzI5NiBhbmQKKyAgICAgLlswXS5Ib3N0Q29uZmlnLk1lbW9yeVN3YXAgPT0gNDI5NDk2NzI5NiBhbmQgLlswXS5Ib3N0Q29uZmlnLlBpZHNMaW1pdCA9PSAxMDI0IGFuZAorICAgICAuWzBdLkNvbmZpZy5JbWFnZSA9PSAkaW1hZ2UgYW5kIC5bMF0uSG9zdENvbmZpZy5DZ3JvdXBQYXJlbnQgPT0gJHBhcmVudCBhbmQKKyAgICAgLlswXS5Ib3N0Q29uZmlnLkNwdXNldENwdXMgPT0gJGNwdXNldCBhbmQKKyAgICAgKC5bMF0uSG9zdENvbmZpZy5DYXBEcm9wIHwgaW5kZXgoIkFMTCIpICE9IG51bGwpIGFuZAorICAgICAoLlswXS5Ib3N0Q29uZmlnLlNlY3VyaXR5T3B0IHwgaW5kZXgoIm5vLW5ldy1wcml2aWxlZ2VzOnRydWUiKSAhPSBudWxsKScgPi9kZXYvbnVsbCB8fAorICAgIGRpZSAiY2FuZGlkYXRlIHNjb3JlciBjb250YWlubWVudCBtaXNtYXRjaCIKK3N1ZG8gLW4gdGVzdCAtcyAiJGNhbmRpZGF0ZV9zY29yZV9vdXRwdXQvc2NvcmUuanNvbiIgfHwgZGllICJzY29yZSBvdXRwdXQgbWlzc2luZyIKK2NvbXBvc2Vfd2l0aCAiJHNjb3JlX3Byb2plY3QiICIkc2NvcmVfY29tcG9zZV9lbnYiIC0tcHJvZmlsZSBzY29yZSBkb3duIC0tdm9sdW1lcyAtLXJlbW92ZS1vcnBoYW5zID4mMgorYWN0aXZlX3Byb2plY3Q9IiIKK2FjdGl2ZV9jb21wb3NlX2Vudj0iIgorc3VkbyAtbiBpbnN0YWxsIC1vICIkd29ya2VyX3VpZCIgLWcgIiR3b3JrZXJfZ2lkIiAtbSAwNDAwIFwKKyAgICAiJGNhbmRpZGF0ZV9zY29yZV9vdXRwdXQvc2NvcmUuanNvbiIgIiRhcnRpZmFjdF9kaXIvc2NvcmUuanNvbiIKKworcHJpbnRmICclc1xuJyAiJHtydW5fYWNjb3VudGluZ19yZWNvcmRzW0BdfSIgfCBqcSAtcyBcCisgICAgLS1hcmcgam9iX2lkICIkam9iX2lkIiAtLWFyZyByb3VuZF9pZCAiJHJvdW5kX2lkIiBcCisgICAgJ3tzY2hlbWE6MSxraW5kOiJzaW0tbGF0ZW5jeS1ldmFsdWF0aW9uLWFjY291bnRpbmciLGpvYl9pZDokam9iX2lkLAorICAgICAgcm91bmRfaWQ6JHJvdW5kX2lkLGNvbXBsZXRlOnRydWUscnVuczoufScgPiAiJGFydGlmYWN0X2Rpci9hY2NvdW50aW5nLmpzb24iCitwcmludGYgJyVzXG4nICIke3J1bl9yZXNvdXJjZV9yZWNvcmRzW0BdfSIgfCBqcSAtcyBcCisgICAgLS1hcmcgam9iX2lkICIkam9iX2lkIiAtLWFyZyByb3VuZF9pZCAiJHJvdW5kX2lkIiBcCisgICAgJ3tzY2hlbWE6MSxraW5kOiJzaW0tbGF0ZW5jeS1ldmFsdWF0aW9uLXJlc291cmNlcyIsam9iX2lkOiRqb2JfaWQsCisgICAgICByb3VuZF9pZDokcm91bmRfaWQsY29tcGxldGU6dHJ1ZSxydW5zOi59JyA+ICIkYXJ0aWZhY3RfZGlyL3Jlc291cmNlcy5qc29uIgorY2htb2QgMDQwMCAiJGFydGlmYWN0X2Rpci9hY2NvdW50aW5nLmpzb24iICIkYXJ0aWZhY3RfZGlyL3Jlc291cmNlcy5qc29uIgorCitybSAtZiAtLSAiJHNjb3JlX3J1bm5lcl9lbnYiICIkc2NvcmVfY29tcG9zZV9lbnYiCithdXRoZW50aWNhdGVfbG9jYWxfbW91bnRzCityZW1vdmVfZXZhbHVhdGlvbl9zb3VyY2VzCitwZXJzaXN0X2V2aWRlbmNlX3RyZWUKK3dyaXRlX2V2aWRlbmNlX21hbmlmZXN0CisKK3RlbXBsYXRlX2RhdGFiYXNlX2lkPSIkKHByaW50ZiAnJXNcbicgIiR7bWlncmF0aW9uX2hhc2hlc1tAXX0iIHwgc2hhMjU2c3VtIHwgYXdrICd7cHJpbnQgJDF9JykiCityZWRpc19nZW5lcmF0aW9uX2lkPSIkKHByaW50ZiAnJXNcbicgIiR7cmVkaXNfZ2VuZXJhdGlvbnNbQF19IiB8IHNoYTI1NnN1bSB8IGF3ayAne3ByaW50ICQxfScpIgorWyAteiAiJChzdWRvIC1uIGRvY2tlciBwcyAtYXEgLS1maWx0ZXIgImxhYmVsPWNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkPSRqb2JfaWQiKSIgXSB8fAorICAgIGRpZSAiZmluYWwgY2xlYW51cCBsZWZ0IGpvYiBjb250YWluZXJzIgorWyAteiAiJChzdWRvIC1uIGRvY2tlciBuZXR3b3JrIGxzIC1xIC0tZmlsdGVyICJsYWJlbD1jb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLmpvYi1pZD0kam9iX2lkIikiIF0gfHwKKyAgICBkaWUgImZpbmFsIGNsZWFudXAgbGVmdCBqb2IgbmV0d29ya3MiCitjbGVhbnVwX2NvbXBsZXRlPXRydWUKK3dyaXRlX2V2YWx1YXRpb25fcHJvZ3Jlc3MgY29tcGxldGUgIiRyZXBsaWNhdGVzIiAiJHJlcGxpY2F0ZXMiCisKK2NvbXBsZXRlX3BhdGg9IiRhcnRpZmFjdF9kaXIvZXZhbHVhdGlvbi5jb21wbGV0ZS5qc29uIgoranEgLW4gXAorICAgIC0tYXJnIGpvYl9pZCAiJGpvYl9pZCIgLS1hcmcgcm91bmRfaWQgIiRyb3VuZF9pZCIgLS1hcmdqc29uIGF0dGVtcHQgIiRhdHRlbXB0IiBcCisgICAgLS1hcmcgYmFzZV9pbWFnZV9pZCAiJGJhc2VfaW1hZ2VfaWQiIC0tYXJnIGNhbmRpZGF0ZV9pbWFnZV9pZCAiJGNhbmRpZGF0ZV9pbWFnZV9pZCIgXAorICAgIC0tYXJnIHBhdGNoX3NoYTI1NiAiJHBhdGNoX3NoYTI1NiIgLS1hcmcgcHJvdmlkZXJzX3NoYTI1NiAiJHByb3ZpZGVyc19zaGEyNTYiIFwKKyAgICAtLWFyZyBhY2NvdW50aW5nX3NoYTI1NiAiJChzaGEyNTZfZmlsZSAiJGFydGlmYWN0X2Rpci9hY2NvdW50aW5nLmpzb24iKSIgXAorICAgIC0tYXJnIGJhc2VsaW5lX3NoYTI1NiAiJGJhc2VsaW5lX3NoYTI1NiIgXAorICAgIC0tYXJnIHJlc291cmNlc19zaGEyNTYgIiQoc2hhMjU2X2ZpbGUgIiRhcnRpZmFjdF9kaXIvcmVzb3VyY2VzLmpzb24iKSIgXAorICAgIC0tYXJnIHNjb3JlX3NoYTI1NiAiJChzaGEyNTZfZmlsZSAiJGFydGlmYWN0X2Rpci9zY29yZS5qc29uIikiIFwKKyAgICAtLWFyZyBldmlkZW5jZV9tYW5pZmVzdF9zaGEyNTYgIiQoc2hhMjU2X2ZpbGUgIiRldmlkZW5jZV9tYW5pZmVzdCIpIiBcCisgICAgJ3tzY2hlbWE6MSxraW5kOiJzaW0tbGF0ZW5jeS13b3JrZXItZXZhbHVhdGlvbi1jb21wbGV0ZSIsam9iX2lkOiRqb2JfaWQsCisgICAgICByb3VuZF9pZDokcm91bmRfaWQsYXR0ZW1wdDokYXR0ZW1wdCxiYXNlX2ltYWdlX2lkOiRiYXNlX2ltYWdlX2lkLAorICAgICAgY2FuZGlkYXRlX2ltYWdlX2lkOiRjYW5kaWRhdGVfaW1hZ2VfaWQscGF0Y2hfc2hhMjU2OiRwYXRjaF9zaGEyNTYsCisgICAgICBwcm92aWRlcnNfc2hhMjU2OiRwcm92aWRlcnNfc2hhMjU2LGNsZWFudXBfY29tcGxldGU6dHJ1ZSwKKyAgICAgIGFydGlmYWN0czp7YWNjb3VudGluZzokYWNjb3VudGluZ19zaGEyNTYsYmFzZWxpbmU6JGJhc2VsaW5lX3NoYTI1NiwKKyAgICAgICAgcmVzb3VyY2VzOiRyZXNvdXJjZXNfc2hhMjU2LHNjb3JlOiRzY29yZV9zaGEyNTYsCisgICAgICAgIGV2aWRlbmNlX21hbmlmZXN0OiRldmlkZW5jZV9tYW5pZmVzdF9zaGEyNTZ9fScgPiAiJGNvbXBsZXRlX3BhdGgiCitjaG1vZCAwNDAwICIkY29tcGxldGVfcGF0aCIKK3N5bmMgLWQgIiRhcnRpZmFjdF9kaXIvYWNjb3VudGluZy5qc29uIiAiJGFydGlmYWN0X2Rpci9iYXNlbGluZS5qc29uIiBcCisgICAgIiRhcnRpZmFjdF9kaXIvcmVzb3VyY2VzLmpzb24iICIkYXJ0aWZhY3RfZGlyL3Njb3JlLmpzb24iICIkZXZpZGVuY2VfbWFuaWZlc3QiICIkY29tcGxldGVfcGF0aCIKK3N5bmMgIiRhcnRpZmFjdF9kaXIiCisKK2FydGlmYWN0X3JlY29yZHM9KCkKK2ZvciByZWxhdGl2ZSBpbiBhY2NvdW50aW5nLmpzb24gYmFzZWxpbmUuanNvbiByZXNvdXJjZXMuanNvbiBzY29yZS5qc29uIGV2YWx1YXRpb24tcHJvZ3Jlc3MuanNvbiBldmFsdWF0aW9uLmNvbXBsZXRlLmpzb24gZXZpZGVuY2UtbWFuaWZlc3QuanNvbjsgZG8KKyAgICBwYXRoPSIkYXJ0aWZhY3RfZGlyLyRyZWxhdGl2ZSIKKyAgICBhcnRpZmFjdF9yZWNvcmRzKz0oIiQoanEgLWNuIC0tYXJnIHBhdGggIiRyZWxhdGl2ZSIgLS1hcmcgc2hhMjU2ICIkKHNoYTI1Nl9maWxlICIkcGF0aCIpIiBcCisgICAgICAgIC0tYXJnanNvbiBieXRlcyAiJChmaWxlX2J5dGVzICIkcGF0aCIpIiAne3BhdGg6JHBhdGgsc2hhMjU2OiRzaGEyNTYsYnl0ZXM6JGJ5dGVzfScpIikKK2RvbmUKK2FydGlmYWN0c19qc29uPSIkKHByaW50ZiAnJXNcbicgIiR7YXJ0aWZhY3RfcmVjb3Jkc1tAXX0iIHwganEgLXMgJy4nKSIKK3NlY3VyaXR5X2pzb249IiQoanEgLWNuIFwKKyAgICAtLWFyZyBjZ3JvdXBfaWQgInVybmV0d29yay1ldmFsdWF0aW9uLSR7am9iX2lkLy8tL30uc2xpY2UiIFwKKyAgICAtLWFyZyB0ZW1wbGF0ZV9kYXRhYmFzZV9pZCAiJHRlbXBsYXRlX2RhdGFiYXNlX2lkIiBcCisgICAgLS1hcmcgcmVkaXNfZ2VuZXJhdGlvbl9pZCAiJHJlZGlzX2dlbmVyYXRpb25faWQiIFwKKyAgICAne3RlbXBsYXRlX2RhdGFiYXNlX3Jlc2V0OnRydWUscmVkaXNfcmVzZXQ6dHJ1ZSxjZ3JvdXBfY29udGFpbmVkOnRydWUsCisgICAgICByZXNvdXJjZV9saW1pdHM6dHJ1ZSxtYW5hZ2VtZW50X2NwdV9yZXNlcnZlZDp0cnVlLAorICAgICAgbWFuYWdlbWVudF9tZW1vcnlfcmVzZXJ2ZWQ6dHJ1ZSxkZWZhdWx0X2RlbnlfbmV0d29yazp0cnVlLG9mZmxpbmVfYnVpbGQ6dHJ1ZSwKKyAgICAgIG9mZmxpbmVfYnVpbGRfcmVzb3VyY2VfbGltaXRzOnRydWUsCisgICAgICBub19wcm9kdWN0aW9uX3NlY3JldHM6dHJ1ZSxzdHJ1Y3R1cmFsX3BhdGNoX2NoZWNrOnRydWUsCisgICAgICBhY2NvdW50aW5nX2NvbXBsZXRlOnRydWUscmVzb3VyY2VfcmVwb3J0X2NvbXBsZXRlOnRydWUsCisgICAgICBjbGVhbnVwX2NvbXBsZXRlOnRydWUsaW1tdXRhYmxlX3JlcG9ydHM6dHJ1ZSxjZ3JvdXBfaWQ6JGNncm91cF9pZCwKKyAgICAgIHRlbXBsYXRlX2RhdGFiYXNlX2lkOiR0ZW1wbGF0ZV9kYXRhYmFzZV9pZCwKKyAgICAgIHJlZGlzX2dlbmVyYXRpb25faWQ6JHJlZGlzX2dlbmVyYXRpb25faWR9JykiCisKK2lmIGpxIC1lICcuZXZhbF9lcnJvciA9PSBudWxsJyAiJGFydGlmYWN0X2Rpci9zY29yZS5qc29uIiA+L2Rldi9udWxsOyB0aGVuCisgICAgc2NvcmVfanNvbj0iJChqcSBcCisgICAgICAgICd7c2NvcmVfc2NoZW1hLHJhd19zY29yZSxub3JtYWxpemVkX3Njb3JlLHBsYWNlYWJsZSwKKyAgICAgICAgICB0YWtlb3Zlcl9lbGlnaWJsZTooLmRpYWdub3N0aWNzLmJhc2VsaW5lX3Rha2VvdmVyX2VsaWdpYmxlIC8vIGZhbHNlKSwKKyAgICAgICAgICBnYXRlcyxzaWduaWZpY2FuY2UsZGlhZ25vc3RpY3N9JyAiJGFydGlmYWN0X2Rpci9zY29yZS5qc29uIikiCisgICAgZXZhbF9lcnJvcl9qc29uPW51bGwKK2Vsc2UKKyAgICBzY29yZV9qc29uPW51bGwKKyAgICBldmFsX2Vycm9yX2pzb249IiQoanEgXAorICAgICAgICAnLmV2YWxfZXJyb3IgfCB7a2luZCxjb2RlLG1lc3NhZ2UscmV0cmlhYmxlOigua2luZCA9PSAiaW5mcmFzdHJ1Y3R1cmUiIGFuZCAuY29kZSAhPSAic2NvcmVfcmVzdWx0X2ludmFsaWQiKX0nIFwKKyAgICAgICAgIiRhcnRpZmFjdF9kaXIvc2NvcmUuanNvbiIpIgorZmkKKworcmVzdWx0X3RtcD0iJGFydGlmYWN0X2Rpci8ud29ya2VyLXJlc3VsdC50bXAiCitqcSAtbiBcCisgICAgLS1hcmcgam9iX2lkICIkam9iX2lkIiBcCisgICAgLS1hcmdqc29uIHNjb3JlICIkc2NvcmVfanNvbiIgXAorICAgIC0tYXJnanNvbiBldmFsX2Vycm9yICIkZXZhbF9lcnJvcl9qc29uIiBcCisgICAgLS1hcmdqc29uIHNlY3VyaXR5ICIkc2VjdXJpdHlfanNvbiIgXAorICAgIC0tYXJnanNvbiBhcnRpZmFjdHMgIiRhcnRpZmFjdHNfanNvbiIgXAorICAgICd7c2NoZW1hOjEsam9iX2lkOiRqb2JfaWQsc2NvcmU6JHNjb3JlLGV2YWxfZXJyb3I6JGV2YWxfZXJyb3IsCisgICAgICBzZWN1cml0eTokc2VjdXJpdHksYXJ0aWZhY3RzOiRhcnRpZmFjdHN9JyA+ICIkcmVzdWx0X3RtcCIKK3N5bmMgLWQgIiRyZXN1bHRfdG1wIgorWyAhIC1lICIkcmVzdWx0X3BhdGgiIF0gfHwgZGllICJ3b3JrZXIgcmVzdWx0IHBhdGggYXBwZWFyZWQgZHVyaW5nIGV2YWx1YXRpb24iCittdiAiJHJlc3VsdF90bXAiICIkcmVzdWx0X3BhdGgiCitjaG1vZCAwNDAwICIkcmVzdWx0X3BhdGgiCitzeW5jIC1kICIkcmVzdWx0X3BhdGgiCitzeW5jICIkYXJ0aWZhY3RfZGlyIgorbG9nICJldmFsdWF0aW9uIGNvbXBsZXRlOiBqb2I9JGpvYl9pZCBjYW5kaWRhdGU9JGNhbmRpZGF0ZV9zaGEiCmRpZmYgLS1naXQgYS9jb25uZWN0L3NpbS1sYXRlbmN5L2V2YWx1YXRvci9jb250YWluZXIvZXZhbHVhdG9yLXN1YmV2YWx1YXRpb24uc2ggYi9jb25uZWN0L3NpbS1sYXRlbmN5L2V2YWx1YXRvci9jb250YWluZXIvZXZhbHVhdG9yLXN1YmV2YWx1YXRpb24uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIwODZjMjdlNjBkZTk1NmVjZTQ4YWVmMzA3NDhhYzAwYzcyZWE0NAotLS0gL2Rldi9udWxsCisrKyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvZXZhbHVhdG9yL2NvbnRhaW5lci9ldmFsdWF0b3Itc3ViZXZhbHVhdGlvbi5zaApAQCAtMCwwICsxLDIwNzggQEAKKyMhL3Vzci9iaW4vZW52IGJhc2gKKworIyBQcm9zcGVjdGl2ZSBwcml2YXRlIHdvcmtlci10by1Db21wb3NlIGV2YWx1YXRvciBmb3IgcHJvdG9jb2wgdjEuCisjIFN1Ym1pc3Npb24gYnl0ZXMgY2hvb3NlIG9ubHkgdGhlIGNhbm9uaWNhbCBwYXRjaC4gRXZlcnkgaW1hZ2UsIGNvbW1hbmQsCisjIHJlc291cmNlIGNlaWxpbmcsIG1vdW50LCBhbmQgYXJ0aWZhY3QgbmFtZSBiZWxvdyBpcyBldmFsdWF0b3Itb3duZWQuCisKK3NldCAtRWV1byBwaXBlZmFpbAordW1hc2sgMDc3CitleHBvcnQgTEFORz1DIExDX0FMTD1DCisKK3JlYWRvbmx5IFNDUklQVF9ESVI9IiQoY2QgIiQoZGlybmFtZSAiJHtCQVNIX1NPVVJDRVswXX0iKSIgJiYgcHdkIC1QKSIKK3JlYWRvbmx5IENPTVBPU0VfRklMRT0iJFNDUklQVF9ESVIvY29tcG9zZS55bWwiCityZWFkb25seSBCVUlMRF9TVUJNSVNTSU9OPSIkU0NSSVBUX0RJUi9idWlsZC1zdWJtaXNzaW9uLnNoIgorcmVhZG9ubHkgUFJFUEFSRV9FVkFMVUFUSU9OX1NPVVJDRT0iJFNDUklQVF9ESVIvcHJlcGFyZS1ldmFsdWF0aW9uLXNvdXJjZS5zaCIKK3JlYWRvbmx5IFJFU09VUkNFX0JPVU5EQVJZPSIkU0NSSVBUX0RJUi9yZXNvdXJjZS1ib3VuZGFyeS5zaCIKK3JlYWRvbmx5IE5FVFdPUktfQk9VTkRBUlk9IiRTQ1JJUFRfRElSL25ldHdvcmstYm91bmRhcnkuc2giCityZWFkb25seSBET0NLRVJfSURfTUFQPSIkU0NSSVBUX0RJUi9kb2NrZXItaWQtbWFwLnNoIgorcmVhZG9ubHkgSEFTSF9MT0NBTF9NT1VOVD0iJFNDUklQVF9ESVIvaGFzaC1sb2NhbC1tb3VudC5zaCIKK3JlYWRvbmx5IFJFVEFJTl9GQUlMVVJFX0VWSURFTkNFPSIkU0NSSVBUX0RJUi9yZXRhaW4tZmFpbHVyZS1ldmlkZW5jZS5zaCIKK3JlYWRvbmx5IFBPU1RHUkVTX0lOSVQ9IiRTQ1JJUFRfRElSL3Bvc3RncmVzLWluaXQuc2giCityZWFkb25seSBUSU1FT1VUX0JVREdFVD0iJFNDUklQVF9ESVIvdGltZW91dC1idWRnZXQuc2giCisjIE9ubHkgYSBwcm9zcGVjdGl2ZSBhZ2VudCBzdXBwbGllcyB0aGlzIGFsbC1vci1ub25lIGF1dGhlbnRpY2F0ZWQgc2NvcGUuIE9sZAorIyByZWxlYXNlcyBhbmQgdW5zY29wZWQgZXZhbHVhdGlvbnMga2VlcCB0aGVpciBleGFjdCBEb2NrZXIvQ29tcG9zZSBhcmd1bWVudHMuCitzb3VyY2UgIiRTQ1JJUFRfRElSL3N1YmV2YWx1YXRpb24tb3duZXJzaGlwLnNoIgorc3ViZXZhbHVhdGlvbl9vd25lcnNoaXBfaW5pdAorW1sgIiRzdWJldmFsdWF0aW9uX3Njb3BlZCIgPSB0cnVlIF1dIHx8IHsgcHJpbnRmICdwcml2YXRlIGV2YWx1YXRpb24gcmVxdWlyZXMgYXV0aGVudGljYXRlZCBhZ2VudCBvd25lcnNoaXAgc2NvcGVcbicgPiYyOyBleGl0IDI7IH0KK3JlYWRvbmx5IEVNUFRZX1BBVENIX1NIQTI1Nj1lM2IwYzQ0Mjk4ZmMxYzE0OWFmYmY0Yzg5OTZmYjkyNDI3YWU0MWU0NjQ5YjkzNGNhNDk1OTkxYjc4NTJiODU1CityZWFkb25seSBNQVhfUkVRVUVTVF9CWVRFUz0kKCgyICogMTAyNCAqIDEwMjQpKQorcmVhZG9ubHkgTUFYX1BST1ZJREVSU19CWVRFUz0kKCgxMDI0ICogMTAyNCAqIDEwMjQpKQorcmVhZG9ubHkgTUFYX0JVSUxEX0xPR19CWVRFUz0kKCg0ICogMTAyNCAqIDEwMjQpKQorcmVhZG9ubHkgRVZJREVOQ0VfV09SS19MSU1JVD01ZworcmVhZG9ubHkgRVZJREVOQ0VfV09SS19CWVRFUz01MzY4NzA5MTIwCisKKyMgU2Vhc29uLWZyb3plbiBjb250YWluZXIgY2VpbGluZ3MuIEhvc3QgcXVhbGlmaWNhdGlvbiB2ZXJpZmllcyB0aGF0IHRoZWlyIHN1bQorIyBwbHVzIHRoZSBob3N0IHJlc2VydmUgZml0cyB0aGUgcGh5c2ljYWwgYm94LgorcmVhZG9ubHkgUlVOTkVSX01FTU9SWV9MSU1JVD03MmcKK3JlYWRvbmx5IFJVTk5FUl9NRU1PUllfQllURVM9NzczMDk0MTEzMjgKK3JlYWRvbmx5IFJVTk5FUl9QSURTX0xJTUlUPTY1NTM2CityZWFkb25seSBSVU5ORVJfVE1QX0xJTUlUPTJnCityZWFkb25seSBSVU5ORVJfV09SS19MSU1JVD04ZworcmVhZG9ubHkgTUlHUkFUT1JfTUVNT1JZX0xJTUlUPTRnCityZWFkb25seSBNSUdSQVRPUl9QSURTX0xJTUlUPTQwOTYKK3JlYWRvbmx5IE1JR1JBVE9SX1RNUF9MSU1JVD0xZworcmVhZG9ubHkgUE9TVEdSRVNfTUVNT1JZX0xJTUlUPTE2ZworcmVhZG9ubHkgUE9TVEdSRVNfTUVNT1JZX0JZVEVTPTE3MTc5ODY5MTg0CityZWFkb25seSBQT1NUR1JFU19QSURTX0xJTUlUPTQwOTYKK3JlYWRvbmx5IFBPU1RHUkVTX0RBVEFfTElNSVQ9MTJnCityZWFkb25seSBQT1NUR1JFU19NQVhfQ09OTkVDVElPTlM9NTEyCityZWFkb25seSBQT1NUR1JFU19TSEFSRURfQlVGRkVSUz0yR0IKK3JlYWRvbmx5IFJFRElTX01FTU9SWV9MSU1JVD04ZworcmVhZG9ubHkgUkVESVNfTUVNT1JZX0JZVEVTPTg1ODk5MzQ1OTIKK3JlYWRvbmx5IFJFRElTX1BJRFNfTElNSVQ9NDA5NgorcmVhZG9ubHkgUkVESVNfREFUQV9MSU1JVD02ZworcmVhZG9ubHkgUkVESVNfTUFYX0NMSUVOVFM9MzI3NjgKK3JlYWRvbmx5IFJFRElTX1RDUF9CQUNLTE9HPTY1NTM1CityZWFkb25seSBTQ09SRVJfTUVNT1JZX0xJTUlUPTRnCityZWFkb25seSBTQ09SRVJfTUVNT1JZX0JZVEVTPTQyOTQ5NjcyOTYKK3JlYWRvbmx5IFNDT1JFUl9QSURTX0xJTUlUPTEwMjQKK3JlYWRvbmx5IFNDT1JFUl9UTVBfTElNSVQ9MWcKK3JlYWRvbmx5IEVWQUxVQVRJT05fTk9GSUxFPTEwNDg1NzYKK3JlYWRvbmx5IEFDVElWRV9FVkFMVUFUSU9OX01FTU9SWV9CWVRFUz0xMDMwNzkyMTUxMDQKK3JlYWRvbmx5IE1JTklNVU1fTUFOQUdFTUVOVF9NRU1PUllfUkVTRVJWRV9CWVRFUz0yNTc2OTgwMzc3NgorCityZXF1ZXN0X3BhdGg9IiIKK3Jlc3VsdF9wYXRoPSIiCithcnRpZmFjdF9kaXI9IiIKK3dvcmtfZGlyPSIiCithY3RpdmVfcHJvamVjdD0iIgorYWN0aXZlX2NvbXBvc2VfZW52PSIiCithY3RpdmVfc2FtcGxlcl9waWQ9IiIKK2FjdGl2ZV93b3JrX21vdW50PSIiCithY3RpdmVfYnVpbGRfbG9nX3BpZD0iIgorYWN0aXZlX2J1aWxkX2xvZ19waXBlPSIiCithY3RpdmVfc291cmNlX3Jvb3Q9IiIKK2NsZWFudXBfY29tcGxldGU9ZmFsc2UKK2ZhaWx1cmVfbGluZT0wCit3b3JrZXJfdWlkPSIkKGlkIC11KSIKK3dvcmtlcl9naWQ9IiQoaWQgLWcpIgorCitsb2coKSB7IHByaW50ZiAnW2NvbXBldGl0aW9uLWV2YWx1YXRvcl0gJXNcbicgIiQqIiA+JjI7IH0KK2RpZSgpIHsKKyAgICBmYWlsdXJlX2xpbmU9IiR7QkFTSF9MSU5FTk9bMF06LTB9IgorICAgIGxvZyAiRVJST1I6ICQqIgorICAgIGV4aXQgMQorfQorcmVxdWlyZV9jb21tYW5kKCkgeyBjb21tYW5kIC12ICIkMSIgPi9kZXYvbnVsbCAyPiYxIHx8IGRpZSAicmVxdWlyZWQgY29tbWFuZCBtaXNzaW5nOiAkMSI7IH0KK3NoYTI1Nl9maWxlKCkgeyBzaGEyNTZzdW0gIiQxIiB8IGF3ayAne3ByaW50ICQxfSc7IH0KK2ZpbGVfYnl0ZXMoKSB7IHN0YXQgLWMgJyVzJyAiJDEiOyB9CisKKyMgVGhlIGNhbGxlciBpcyBhbHJlYWR5IHRydXN0ZWQ7IGF1dGhlbnRpY2F0ZSB0aGUgZml4ZWQgaGVscGVyIGJlZm9yZSBleGVjdXRpbmcKKyMgaXQgc28gYSB3cml0YWJsZSBoZWxwZXIgY2Fubm90IGdyYW50IGl0c2VsZiByZWxlYXNlIGF1dGhvcml0eSBhZnRlciBsYXVuY2guCitzdWJtaXNzaW9uX2J1aWxkZXJfaWRlbnRpdHkoKSB7CisgICAgbG9jYWwgY3VycmVudD0iJFNDUklQVF9ESVIvc3VibWlzc2lvbi1idWlsZGVyLWlkZW50aXR5LnNoIiBvd25lciBwZXJtaXNzaW9ucworICAgIFtbIC1mICIkY3VycmVudCIgJiYgLXggIiRjdXJyZW50IiAmJiAhIC1MICIkY3VycmVudCIgXV0gfHwgcmV0dXJuIDEKKyAgICB3aGlsZSA6OyBkbworICAgICAgICBbWyAhIC1MICIkY3VycmVudCIgXV0gfHwgcmV0dXJuIDEKKyAgICAgICAgb3duZXI9IiQoc3RhdCAtYyAldSAiJGN1cnJlbnQiKSIgfHwgcmV0dXJuIDEKKyAgICAgICAgcGVybWlzc2lvbnM9IiQoc3RhdCAtYyAlYSAiJGN1cnJlbnQiKSIgfHwgcmV0dXJuIDEKKyAgICAgICAgW1sgIiRvd25lciIgPT0gMCAmJiAiJHBlcm1pc3Npb25zIiA9fiBeWzAtN117Myw0fSQgXV0gfHwgcmV0dXJuIDEKKyAgICAgICAgKCggKDgjJHBlcm1pc3Npb25zICYgOCMwMjIpID09IDAgKSkgfHwgcmV0dXJuIDEKKyAgICAgICAgW1sgIiRjdXJyZW50IiAhPSAvIF1dIHx8IGJyZWFrCisgICAgICAgIGN1cnJlbnQ9IiQoZGlybmFtZSAiJGN1cnJlbnQiKSIKKyAgICAgICAgW1sgLWQgIiRjdXJyZW50IiBdXSB8fCByZXR1cm4gMQorICAgIGRvbmUKKyAgICAiJFNDUklQVF9ESVIvc3VibWlzc2lvbi1idWlsZGVyLWlkZW50aXR5LnNoIgorfQorCisjIFJlZnVzZSBtaXNtYXRjaGVkIGltYWdlIGNhcGFiaWxpdHkgYmVmb3JlIGFueSBiYXNlbGluZSBjb250cm9sIHJ1bnMuIFRoZQorIyBwcmVwYXJlciBhdXRoZW50aWNhdGVkIHRoaXMgb3B0aW9uYWwgZmllbGQgYWdhaW5zdCB0aGUgcmF3IGltYWdlIHNvdXJjZSBsb2NrLgordmFsaWRhdGVfcHJlcGFyZWRfc291cmNlX2lkZW50aXR5KCkgeworICAgIGpxIC1lIC0tYXJnIGJhc2VfaW1hZ2VfaWQgIiRiYXNlX2ltYWdlX2lkIiAtLWFyZyBiYXNlX3NoYSAiJGJhc2Vfc2hhIiBcCisgICAgICAgIC0tYXJnanNvbiBzb3VyY2VfZXBvY2ggIiRzb3VyY2VfZXBvY2giIC0tYXJnIHBhdGhfYmFzZSAiJHBhdGNoX3BhdGhfYmFzZSIgXAorICAgICAgICAtLWFyZ2pzb24gc3RhZ2luZyAiJHN0YWdpbmciIC0tYXJnIGJyYW5jaCAiJHNvdXJjZV9icmFuY2giIFwKKyAgICAgICAgJy5zY2hlbWEgPT0gMSBhbmQgLmtpbmQgPT0gInNpbS1sYXRlbmN5LWV2YWx1YXRpb24tc291cmNlIiBhbmQKKyAgICAgICAgIC50ZW1wb3JhcnkgPT0gdHJ1ZSBhbmQgLmJhc2VfaW1hZ2VfaWQgPT0gJGJhc2VfaW1hZ2VfaWQgYW5kCisgICAgICAgICAuYmFzZV9zaGEgPT0gJGJhc2Vfc2hhIGFuZCAuc291cmNlX2Vwb2NoID09ICRzb3VyY2VfZXBvY2ggYW5kCisgICAgICAgICAuYnJhbmNoID09ICRicmFuY2ggYW5kICgoLnN0YWdpbmcgLy8gZmFsc2UpID09ICRzdGFnaW5nKSBhbmQgLmNhbmRpZGF0ZV9wYXRjaF9zaGEyNTYgPT0gbnVsbCBhbmQKKyAgICAgICAgICgoLmNhbmRpZGF0ZV9wYXRoX2Jhc2UgLy8gIiIpID09ICIiIG9yIC5jYW5kaWRhdGVfcGF0aF9iYXNlID09ICJtb25vX3Jvb3RfdjEiKSBhbmQKKyAgICAgICAgICgkcGF0aF9iYXNlID09ICIiIG9yICgkcGF0aF9iYXNlID09ICJtb25vX3Jvb3RfdjEiIGFuZCAuY2FuZGlkYXRlX3BhdGhfYmFzZSA9PSAkcGF0aF9iYXNlKSknIFwKKyAgICAgICAgPDw8IiQxIiA+L2Rldi9udWxsCit9CisKKyMgTGVnYWN5IHJlcXVlc3RzIHJldGFpbiB0aGVpciBleGFjdCB0aHJlZS1rZXkgcG9saWN5LiBBIGJyb2FkIHBvbGljeSBtdXN0CisjIGV4cGxpY2l0bHkgc2VsZWN0IHRoZSBvbmUgcXVhbGlmaWVkIHJlcG9zaXRvcnktcmVsYXRpdmUgcGF0aCBjb252ZW50aW9uLgordmFsaWRhdGVfd29ya2VyX3JlcXVlc3Rfc2NoZW1hKCkgeworICAgIGxvY2FsIHJlcXVlc3Rfa2V5cz0nWyJhcGlfaW1hZ2VfZGlnZXN0IiwiYXJ0aWZhY3RfZGlyZWN0b3J5IiwiYXR0ZW1wdCIsImJhc2Vfc2hhIiwiY29tcGV0aXRpb25faWQiLCJjb25maWdfbG9jYWxfZGlyZWN0b3J5IiwiZXZhbHVhdGlvbl9wb2xpY3kiLCJldmFsdWF0b3JfaW1hZ2VfZGlnZXN0Iiwiam9iX2lkIiwicGF0Y2hfcGF0aCIsInBhdGNoX3BvbGljeSIsInBhdGNoX3NoYTI1NiIsInByb3ZpZGVyc19wYXRoIiwicHJvdmlkZXJzX3NoYTI1NiIsInJvdW5kX2Jhc2VsaW5lX3BhdGgiLCJyb3VuZF9iYXNlbGluZV9zaGEyNTYiLCJyb3VuZF9pZCIsInJvdW5kX3NlZWRfaGV4Iiwic2NoZW1hIiwic2NvcmVyX3ZlcnNpb24iLCJzb3VyY2VfZXBvY2giLCJ2YXVsdF9sb2NhbF9kaXJlY3RvcnkiLCJ3b3JrZXJfaW1hZ2VfZGlnZXN0Il0nCisgICAgbG9jYWwgcGF0Y2hfcG9saWN5X2tleXM9J1siYWxsb3dlZF9wYXRocyIsImZvcmJpZGRlbl9wYXRocyIsIm1heF9wYXRjaF9ieXRlcyJdJworICAgIGxvY2FsIGV2YWx1YXRpb25fcG9saWN5X2tleXM9J1siYW5ub3VuY2VfdGltZW91dF9tcyIsImFwaV9wb3J0IiwiYXJyaXZhbHNfcGVyX21pbnV0ZSIsImNsaWVudF9wb29sX3NpemUiLCJjbGllbnRfd2FybXVwX3RpbWVvdXRfbXMiLCJjb25maWdfbG9jYWxfc2hhMjU2IiwiZHVyYXRpb25fbXMiLCJleGNoYW5nZV9ob3N0cyIsImZsZWV0X3NoYXJkcyIsImhhcmR3YXJlX2lkIiwiaG9zdF9xdWFsaWZpY2F0aW9uX3NoYTI1NiIsImltcGFpcm1lbnRfZW5hYmxlZCIsInBpcGVsaW5lX2ludGVydmFsX21zIiwicHJld2FybV9tcyIsInByb3ZpZGVyX2NvdW50IiwicXVhbGl0eV93aW5kb3dfc2l6ZSIsInF1ZXVlX2xpbWl0IiwicmFtcF9tcyIsInJlcGxpY2F0ZXMiLCJyZXF1ZXN0X3RpbWVvdXRfbXMiLCJzY29yZV90aW1lb3V0X3NlY29uZHMiLCJzY29yZXJfc2hhMjU2Iiwic2V0dGxlX21zIiwic2ltdWxhdG9yX3NoYTI1NiIsInNpdGVfbGlzdGVuIiwidGFrZW92ZXJfbWFyZ2luIiwidGVzdF90aW1lb3V0X21zIiwidmF1bHRfbG9jYWxfc2hhMjU2Il0nCisgICAganEgLWUgXAorICAgICAgICAtLWFyZ2pzb24gcmVxdWVzdF9rZXlzICIkcmVxdWVzdF9rZXlzIiBcCisgICAgICAgIC0tYXJnanNvbiBwYXRjaF9wb2xpY3lfa2V5cyAiJHBhdGNoX3BvbGljeV9rZXlzIiBcCisgICAgICAgIC0tYXJnanNvbiBldmFsdWF0aW9uX3BvbGljeV9rZXlzICIkZXZhbHVhdGlvbl9wb2xpY3lfa2V5cyIgXAorICAgICAgICAndHlwZSA9PSAib2JqZWN0IiBhbmQgKC5zY2hlbWEgPT0gMSkgYW5kCisgICAgICAgICAoKGtleXMgLSBbInN0YWdpbmciXSB8IHNvcnQpID09ICRyZXF1ZXN0X2tleXMpIGFuZAorICAgICAgICAgKChoYXMoInN0YWdpbmciKSB8IG5vdCkgb3IgKC5zdGFnaW5nIHwgdHlwZSA9PSAiYm9vbGVhbiIpKSBhbmQKKyAgICAgICAgIChpZiAuc3RhZ2luZyA9PSB0cnVlIHRoZW4gLmV2YWx1YXRpb25fcG9saWN5LnRha2VvdmVyX21hcmdpbiA9PSAwIGFuZCAoLmV2YWx1YXRpb25fcG9saWN5IHwgaGFzKCJ3b3JrX2NvdmVyYWdlX3BvbGljeSIpIHwgbm90KSBlbHNlIHRydWUgZW5kKSBhbmQKKyAgICAgICAgICgucGF0Y2hfcG9saWN5IHwgdHlwZSA9PSAib2JqZWN0IiBhbmQKKyAgICAgICAgICAgKGlmIGhhcygicGF0aF9iYXNlIikgdGhlbgorICAgICAgICAgICAgICAoKGtleXMgfCBzb3J0KSA9PSAoJHBhdGNoX3BvbGljeV9rZXlzICsgWyJwYXRoX2Jhc2UiXSB8IHNvcnQpKSBhbmQKKyAgICAgICAgICAgICAgLnBhdGhfYmFzZSA9PSAibW9ub19yb290X3YxIgorICAgICAgICAgICAgZWxzZSAoa2V5cyB8IHNvcnQpID09ICRwYXRjaF9wb2xpY3lfa2V5cyBlbmQpKSBhbmQKKyAgICAgICAgICguZXZhbHVhdGlvbl9wb2xpY3kgfCB0eXBlID09ICJvYmplY3QiIGFuZAorICAgICAgICAgICAoKGtleXMgfCBzb3J0KSA9PSAoJGV2YWx1YXRpb25fcG9saWN5X2tleXMgKyAoaWYgaGFzKCJnMl92b2x1bWVfcG9saWN5IikgdGhlbiBbImcyX3ZvbHVtZV9wb2xpY3kiXSBlbHNlIFtdIGVuZCkgKyAoaWYgaGFzKCJ3b3JrX2NvdmVyYWdlX3BvbGljeSIpIHRoZW4gWyJ3b3JrX2NvdmVyYWdlX3BvbGljeSJdIGVsc2UgW10gZW5kKSB8IHNvcnQpKSBhbmQKKyAgICAgICAgICAgKChoYXMoImcyX3ZvbHVtZV9wb2xpY3kiKSB8IG5vdCkgb3IgLmcyX3ZvbHVtZV9wb2xpY3kgPT0gIm1pbmltdW0td29yay8xIikgYW5kCisgICAgICAgICAgICgoaGFzKCJ3b3JrX2NvdmVyYWdlX3BvbGljeSIpIHwgbm90KSBvciAoLmcyX3ZvbHVtZV9wb2xpY3kgPT0gIm1pbmltdW0td29yay8xIiBhbmQgKC53b3JrX2NvdmVyYWdlX3BvbGljeSB8IHR5cGUgPT0gIm9iamVjdCIgYW5kIC5raW5kID09ICJzZWVkZWQtY3Jhd2wtY292ZXJhZ2UvdjEiIGFuZAorICAgICAgICAgICAgIChrZXlzIHwgc29ydCkgPT0gWyJraW5kIiwibWluaW11bV9ieXRlX2NvdmVyYWdlX3JhdGlvIiwibWluaW11bV9wYWdlX2NvdmVyYWdlX3JhdGlvIl0gYW5kCisgICAgICAgICAgICAgYWxsKC5taW5pbXVtX3BhZ2VfY292ZXJhZ2VfcmF0aW8sLm1pbmltdW1fYnl0ZV9jb3ZlcmFnZV9yYXRpbzsgdHlwZSA9PSAibnVtYmVyIiBhbmQgaXNmaW5pdGUgYW5kIC4gPiAwIGFuZCAuIDwgMSkpKSkpIGFuZAorICAgICAgICAgLnNjb3Jlcl92ZXJzaW9uID09IChpZiAuZXZhbHVhdGlvbl9wb2xpY3kud29ya19jb3ZlcmFnZV9wb2xpY3kgIT0gbnVsbCB0aGVuICJzaW0tbGF0ZW5jeS1zY29yZS8zIiBlbGlmIC5ldmFsdWF0aW9uX3BvbGljeS5nMl92b2x1bWVfcG9saWN5ID09ICJtaW5pbXVtLXdvcmsvMSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAic2ltLWxhdGVuY3ktc2NvcmUvMiIgZWxzZSAic2ltLWxhdGVuY3ktc2NvcmUvMSIgZW5kKScgXAorICAgICAgICAiJDEiID4vZGV2L251bGwKK30KKworIyBEZXJpdmUgaGVscGVyIG5hbWVzIGZyb20gdGhlIGluZGVwZW5kZW50bHkgcGlubmVkIGhvc3QgdmFsaWRhdG9yLCBuZXZlcgorIyBmcm9tIGNhbmRpZGF0ZSBjb2RlIG9yIGEgY2FsbGVyLXNlbGVjdGVkIHBhdGggbGlzdC4KK2F1dGhlbnRpY2F0ZV93b3JrX2NvdmVyYWdlX3BhdGNoX3BvbGljeSgpIHsKKyAgICBsb2NhbCByZXF1ZXN0PSIkMSIgY292ZXJhZ2VfcHJlc2VudAorICAgIGNvdmVyYWdlX3Byb3RlY3RlZF9wYXRoc19qc29uPSIiCisgICAgY292ZXJhZ2VfcHJlc2VudD0iJChqcSAtciAnLmV2YWx1YXRpb25fcG9saWN5IHwgaWYgdHlwZSA9PSAib2JqZWN0IiB0aGVuIGhhcygid29ya19jb3ZlcmFnZV9wb2xpY3kiKSBlbHNlIGVycm9yKCJldmFsdWF0aW9uIHBvbGljeSBpcyBtaXNzaW5nIikgZW5kJyAiJHJlcXVlc3QiKSIgfHwgZGllICJmcm96ZW4gZXZhbHVhdGlvbiBwb2xpY3kgaXMgdW5yZWFkYWJsZSIKKyAgICBpZiBbICIkY292ZXJhZ2VfcHJlc2VudCIgPSBmYWxzZSBdOyB0aGVuCisgICAgICAgIHJldHVybiAwCisgICAgZmkKKyAgICBbICIkY292ZXJhZ2VfcHJlc2VudCIgPSB0cnVlIF0gfHwgZGllICJmcm96ZW4gZXZhbHVhdGlvbiBwb2xpY3kgaXMgYW1iaWd1b3VzIgorICAgIHN1Ym1pc3Npb25fYnVpbGRlcl9pZGVudGl0eSA+L2Rldi9udWxsIHx8IGRpZSAidHJ1c3RlZCBjb3ZlcmFnZSB2YWxpZGF0b3IgaWRlbnRpdHkgaXMgdW5hdmFpbGFibGUiCisgICAgY292ZXJhZ2VfcHJvdGVjdGVkX3BhdGhzX2pzb249IiQoIiRTQ1JJUFRfRElSL2NvbXBldGl0aW9ucGF0Y2giIC0td29yay1jb3ZlcmFnZS1wcm90ZWN0ZWQtcGF0aHMpIiB8fAorICAgICAgICBkaWUgInRydXN0ZWQgY292ZXJhZ2UgaGVscGVyIGNlbnN1cyBpcyB1bmF2YWlsYWJsZSIKKyAgICBqcSAtZSAtLWFyZ2pzb24gaGVscGVycyAiJGNvdmVyYWdlX3Byb3RlY3RlZF9wYXRoc19qc29uIiAnCisgICAgICAgIC4gYXMgJHJlcXVlc3QgfAorICAgICAgICAoaWYgKCRyZXF1ZXN0LnBhdGNoX3BvbGljeS5wYXRoX2Jhc2UgLy8gIiIpID09ICJtb25vX3Jvb3RfdjEiIHRoZW4gInNlcnZlci8iIGVsc2UgIiIgZW5kKSBhcyAkcHJlZml4IHwKKyAgICAgICAgKCRoZWxwZXJzIHwgdHlwZSA9PSAib2JqZWN0IiBhbmQgKGtleXMgfCBzb3J0KSA9PSBbImtpbmQiLCJwYXRocyIsInNjaGVtYSJdIGFuZAorICAgICAgICAgLnNjaGVtYSA9PSAxIGFuZCAua2luZCA9PSAic2VlZGVkLWNyYXdsLWNvdmVyYWdlLXByb3RlY3RlZC1oZWxwZXJzL3YxIiBhbmQKKyAgICAgICAgICgucGF0aHMgfCB0eXBlID09ICJhcnJheSIgYW5kIGxlbmd0aCA9PSA2IGFuZCAodW5pcXVlIHwgbGVuZ3RoID09IDYpIGFuZAorICAgICAgICAgIGFsbCguW107IHR5cGUgPT0gInN0cmluZyIgYW5kIHRlc3QoIl4oY29udHJvbGxlcnxtb2RlbCkvY29tcGV0aXRpb25fW2EtejAtOV9dK1suXWdvJCIpKSkpIGFuZAorICAgICAgICAoJHJlcXVlc3QuZXZhbHVhdGlvbl9wb2xpY3kuZzJfdm9sdW1lX3BvbGljeSA9PSAibWluaW11bS13b3JrLzEiKSBhbmQKKyAgICAgICAgKCRyZXF1ZXN0LmV2YWx1YXRpb25fcG9saWN5LndvcmtfY292ZXJhZ2VfcG9saWN5ID09CisgICAgICAgICAge2tpbmQ6InNlZWRlZC1jcmF3bC1jb3ZlcmFnZS92MSIsbWluaW11bV9wYWdlX2NvdmVyYWdlX3JhdGlvOjAuOTUsbWluaW11bV9ieXRlX2NvdmVyYWdlX3JhdGlvOjAuOTV9KSBhbmQKKyAgICAgICAgYWxsKCRoZWxwZXJzLnBhdGhzW107IC4gYXMgJHBhdGggfAorICAgICAgICAgICgkcmVxdWVzdC5wYXRjaF9wb2xpY3kuZm9yYmlkZGVuX3BhdGhzIHwgaW5kZXgoJHByZWZpeCArICRwYXRoKSkgIT0gbnVsbCkgYW5kCisgICAgICAgICgkcmVxdWVzdC5wYXRjaF9wb2xpY3kuZm9yYmlkZGVuX3BhdGhzIHwgaW5kZXgoJHByZWZpeCArICJjb25uZWN0L3NpbS1sYXRlbmN5LyoqIikpICE9IG51bGwKKyAgICAnICIkcmVxdWVzdCIgPi9kZXYvbnVsbCB8fCBkaWUgImZyb3plbiBjb3ZlcmFnZSBwYXRjaCBwb2xpY3kgb21pdHMgaXRzIGZpeGVkIHRydXN0ZWQgaGVscGVyIGNlbnN1cyIKK30KKworbG9jYWxfdHJlZV9zaGEyNTYoKSB7CisgICAgIiRIQVNIX0xPQ0FMX01PVU5UIiAiJDEiCit9CisKK2F1dGhlbnRpY2F0ZV9sb2NhbF9tb3VudHMoKSB7CisgICAgWyAiJChsb2NhbF90cmVlX3NoYTI1NiAiJGNvbmZpZ19sb2NhbF9kaXJlY3RvcnkiKSIgPSAiJGNvbmZpZ19sb2NhbF9zaGEyNTYiIF0gfHwKKyAgICAgICAgZGllICJkaXJlY3QgY29uZmlnL2xvY2FsIGNvbnRlbnQgZG9lcyBub3QgbWF0Y2ggdGhlIGZyb3plbiBkaWdlc3QiCisgICAgWyAiJChsb2NhbF90cmVlX3NoYTI1NiAiJHZhdWx0X2xvY2FsX2RpcmVjdG9yeSIpIiA9ICIkdmF1bHRfbG9jYWxfc2hhMjU2IiBdIHx8CisgICAgICAgIGRpZSAiZGlyZWN0IHZhdWx0L2xvY2FsIGNvbnRlbnQgZG9lcyBub3QgbWF0Y2ggdGhlIGZyb3plbiBkaWdlc3QiCit9CisKKyMgVGhpcyBob3N0IGFkbWl0cyBvbmUgZXZhbHVhdG9yIGF0dGVtcHQgYXQgYSB0aW1lLiBGYWlsZWQgY2xlYW51cCBtdXN0IGJsb2NrCisjIHRoZSBuZXh0IGFsbG9jYXRpb24gcmF0aGVyIHRoYW4gYWNjdW11bGF0aW5nIGNvbnRhaW5lcnMgb3IgZXZpZGVuY2UgY2hhcmdlcy4KKyMgSW5zcGVjdGlvbiBvbmx5OiByZWNvdmVyeSBvZiBhbnkgbGVmdG92ZXIgcmVzb3VyY2VzIHJlcXVpcmVzIHRoZSBvcGVyYXRvci4KK2NoZWNrX2V2YWx1YXRvcl9yZXNpZHVhbF9yZXNvdXJjZXMoKSB7CisgICAgbG9jYWwgY29udGFpbmVycyBuZXR3b3JrcyBtb3VudHMgZmlsZXN5c3RlbSBzb3VyY2UKKyAgICBjb250YWluZXJzPSIkKGV2YWx1YXRpb25fdGltZWRfZG9ja2VyIHBzIC1hcSBcCisgICAgICAgIC0tZmlsdGVyIGxhYmVsPWNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkKSIgfHwgZGllICJjb3VsZCBub3QgZW51bWVyYXRlIHByaW9yIGV2YWx1YXRvciBjb250YWluZXJzIgorICAgIFsgLXogIiRjb250YWluZXJzIiBdIHx8IGRpZSAicHJpb3IgZXZhbHVhdG9yIGNvbnRhaW5lcnMgc3RpbGwgZXhpc3QiCisgICAgbmV0d29ya3M9IiQoZXZhbHVhdGlvbl90aW1lZF9kb2NrZXIgbmV0d29yayBscyAtcSBcCisgICAgICAgIC0tZmlsdGVyIGxhYmVsPWNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkKSIgfHwgZGllICJjb3VsZCBub3QgZW51bWVyYXRlIHByaW9yIGV2YWx1YXRvciBuZXR3b3JrcyIKKyAgICBbIC16ICIkbmV0d29ya3MiIF0gfHwgZGllICJwcmlvciBldmFsdWF0b3IgbmV0d29ya3Mgc3RpbGwgZXhpc3QiCisgICAgbW91bnRzPSIkKHRpbWVvdXQgLS1zaWduYWw9VEVSTSAtLWtpbGwtYWZ0ZXI9MXMgM3MgZmluZG1udCAtcm4gLW8gRlNUWVBFLFNPVVJDRSkiIHx8CisgICAgICAgIGRpZSAiY291bGQgbm90IGVudW1lcmF0ZSBwcmlvciBldmFsdWF0b3IgZXZpZGVuY2UgbW91bnRzIgorICAgIFsgLW4gIiRtb3VudHMiIF0gfHwgZGllICJob3N0IG1vdW50IGVudW1lcmF0aW9uIHdhcyBlbXB0eSIKKyAgICB3aGlsZSByZWFkIC1yIGZpbGVzeXN0ZW0gc291cmNlOyBkbworICAgICAgICBpZiBbICIkZmlsZXN5c3RlbSIgPSB0bXBmcyBdOyB0aGVuCisgICAgICAgICAgICBjYXNlICIkc291cmNlIiBpbgorICAgICAgICAgICAgICAgIHVybmV0d29yay1ldmlkZW5jZS0qKSBkaWUgInByaW9yIGV2YWx1YXRvciBldmlkZW5jZSBtb3VudCBzdGlsbCBleGlzdHMiIDs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgIGZpCisgICAgZG9uZSA8PDwiJG1vdW50cyIKK30KKworb25fZXJyb3IoKSB7CisgICAgbG9jYWwgbGluZT0iJDEiIHJjPSIkMiIKKyAgICBpZiBbICIkQkFTSF9TVUJTSEVMTCIgLWVxIDAgXTsgdGhlbgorICAgICAgICBmYWlsdXJlX2xpbmU9IiRsaW5lIgorICAgICAgICBsb2cgIkVSUk9SOiBldmFsdWF0b3IgY29tbWFuZCBmYWlsZWQgYXQgbGluZSAkbGluZSAoZXhpdCAkcmMpIgorICAgIGZpCisgICAgcmV0dXJuICIkcmMiCit9CisKK3VzYWdlKCkgeworICAgIHByaW50ZiAnJXNcbicgJ3VzYWdlOiBjb21wZXRpdGlvbi1ldmFsdWF0b3IgLS1yZXF1ZXN0IEFCU09MVVRFX1JFUVVFU1QgLS1yZXN1bHQgQUJTT0xVVEVfUkVTVUxUJworfQorCit3aGlsZSBbICIkIyIgLWd0IDAgXTsgZG8KKyAgICBjYXNlICIkMSIgaW4KKyAgICAgICAgLS1yZXF1ZXN0fC0tcmVzdWx0KQorICAgICAgICAgICAgWyAiJCMiIC1nZSAyIF0gfHwgeyB1c2FnZSA+JjI7IGV4aXQgMjsgfQorICAgICAgICAgICAgY2FzZSAiJDEiIGluCisgICAgICAgICAgICAgICAgLS1yZXF1ZXN0KSByZXF1ZXN0X3BhdGg9IiQyIiA7OworICAgICAgICAgICAgICAgIC0tcmVzdWx0KSByZXN1bHRfcGF0aD0iJDIiIDs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICBzaGlmdCAyCisgICAgICAgICAgICA7OworICAgICAgICAtaHwtLWhlbHApCisgICAgICAgICAgICB1c2FnZQorICAgICAgICAgICAgZXhpdCAwCisgICAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgICAgdXNhZ2UgPiYyCisgICAgICAgICAgICBleGl0IDIKKyAgICAgICAgICAgIDs7CisgICAgZXNhYworZG9uZQorCitjbGVhbnVwKCkgeworICAgIGxvY2FsIHJjPSQ/CisgICAgc2V0ICtlCisgICAgaWYgWyAtbiAiJHthY3RpdmVfYnVpbGRfbG9nX3BpZDotfSIgXTsgdGhlbgorICAgICAgICBraWxsICIkYWN0aXZlX2J1aWxkX2xvZ19waWQiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgICAgIHdhaXQgIiRhY3RpdmVfYnVpbGRfbG9nX3BpZCIgPi9kZXYvbnVsbCAyPiYxIHx8IHRydWUKKyAgICAgICAgYWN0aXZlX2J1aWxkX2xvZ19waWQ9IiIKKyAgICBmaQorICAgIGlmIFsgLW4gIiR7YWN0aXZlX2J1aWxkX2xvZ19waXBlOi19IiBdOyB0aGVuCisgICAgICAgIHJtIC1mIC0tICIkYWN0aXZlX2J1aWxkX2xvZ19waXBlIgorICAgICAgICBhY3RpdmVfYnVpbGRfbG9nX3BpcGU9IiIKKyAgICBmaQorICAgIGlmIFsgLW4gIiR7YWN0aXZlX3NhbXBsZXJfcGlkOi19IiBdOyB0aGVuCisgICAgICAgIGtpbGwgIiRhY3RpdmVfc2FtcGxlcl9waWQiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgICAgIHdhaXQgIiRhY3RpdmVfc2FtcGxlcl9waWQiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgICAgIGFjdGl2ZV9zYW1wbGVyX3BpZD0iIgorICAgIGZpCisgICAgaWYgWyAtbiAiJHthY3RpdmVfcHJvamVjdDotfSIgXSAmJiBbIC1uICIke2FjdGl2ZV9jb21wb3NlX2VudjotfSIgXSAmJiBbIC1mICIkYWN0aXZlX2NvbXBvc2VfZW52IiBdOyB0aGVuCisgICAgICAgIGNvbXBvc2Vfd2l0aCAiJGFjdGl2ZV9wcm9qZWN0IiAiJGFjdGl2ZV9jb21wb3NlX2VudiIgLS1wcm9maWxlIHJ1biAtLXByb2ZpbGUgc2NvcmUgXAorICAgICAgICAgICAgZG93biAtLXZvbHVtZXMgLS1yZW1vdmUtb3JwaGFucyA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQorICAgIGZpCisgICAgaWYgWyAtbiAiJHtqb2JfaWQ6LX0iIF07IHRoZW4KKyAgICAgICAgd2hpbGUgSUZTPSByZWFkIC1yIGNvbnRhaW5lcl9pZDsgZG8KKyAgICAgICAgICAgIFsgLW4gIiRjb250YWluZXJfaWQiIF0gJiYgZXZhbHVhdGlvbl9kb2NrZXIgcm0gLWYgIiRjb250YWluZXJfaWQiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgICAgIGRvbmUgPCA8KGV2YWx1YXRpb25fZG9ja2VyIHBzIC1hcSAtLWZpbHRlciAibGFiZWw9Y29tLnVybmV0d29yay5jb21wZXRpdGlvbi5qb2ItaWQ9JGpvYl9pZCIgIiR7c3ViZXZhbHVhdGlvbl9jbGVhbnVwX2ZpbHRlcl9hcmdzW0BdfSIgMj4vZGV2L251bGwgfHwgdHJ1ZSkKKyAgICAgICAgd2hpbGUgSUZTPSByZWFkIC1yIG5ldHdvcmtfaWQ7IGRvCisgICAgICAgICAgICBbIC1uICIkbmV0d29ya19pZCIgXSAmJiBldmFsdWF0aW9uX2RvY2tlciBuZXR3b3JrIHJtICIkbmV0d29ya19pZCIgPi9kZXYvbnVsbCAyPiYxIHx8IHRydWUKKyAgICAgICAgZG9uZSA8IDwoZXZhbHVhdGlvbl9kb2NrZXIgbmV0d29yayBscyAtcSAtLWZpbHRlciAibGFiZWw9Y29tLnVybmV0d29yay5jb21wZXRpdGlvbi5qb2ItaWQ9JGpvYl9pZCIgIiR7c3ViZXZhbHVhdGlvbl9jbGVhbnVwX2ZpbHRlcl9hcmdzW0BdfSIgMj4vZGV2L251bGwgfHwgdHJ1ZSkKKyAgICBmaQorICAgIGlmIFtbICIkc3ViZXZhbHVhdGlvbl9zY29wZWQiID0gdHJ1ZSBdXSAmJiBbIC1uICIke2FjdGl2ZV93b3JrX21vdW50Oi19IiBdICYmIG1vdW50cG9pbnQgLXEgIiRhY3RpdmVfd29ya19tb3VudCI7IHRoZW4KKyAgICAgICAgbG9jYWwgcm9sZSBvcmRpbmFsIG91dHB1dAorICAgICAgICBmb3Igcm9sZSBpbiBiYXNlbGluZSBjYW5kaWRhdGU7IGRvCisgICAgICAgICAgICBmb3Igb3JkaW5hbCBpbiAwMSAwMiAwMyAwNCAwNSAwNiAwNyAwOCAwOTsgZG8KKyAgICAgICAgICAgICAgICBvdXRwdXQ9IiRhY3RpdmVfd29ya19tb3VudC9ydW5zLyRyb2xlLSRvcmRpbmFsL291dHB1dCIKKyAgICAgICAgICAgICAgICBpZiBbIC1kICIkb3V0cHV0IiBdICYmIFsgISAtTCAiJG91dHB1dCIgXTsgdGhlbgorICAgICAgICAgICAgICAgICAgICBldmFsdWF0aW9uX2hvc3QgcmVjbGFpbS1vdXRwdXQgIiRvdXRwdXQiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgIG91dHB1dD0iJGFjdGl2ZV93b3JrX21vdW50LyRyb2xlLXNjb3JlLW91dHB1dCIKKyAgICAgICAgICAgIGlmIFsgLWQgIiRvdXRwdXQiIF0gJiYgWyAhIC1MICIkb3V0cHV0IiBdOyB0aGVuCisgICAgICAgICAgICAgICAgZXZhbHVhdGlvbl9ob3N0IHJlY2xhaW0tb3V0cHV0ICIkb3V0cHV0IiA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQorICAgICAgICAgICAgZmkKKyAgICAgICAgZG9uZQorICAgIGZpCisgICAgaWYgWyAtbiAiJHthcnRpZmFjdF9kaXI6LX0iIF0gJiYgWyAtZiAiJGFydGlmYWN0X2Rpci9ldmFsdWF0b3ItZmFpbHVyZS5qc29uIiBdOyB0aGVuCisgICAgICAgIGxvY2FsIHJlc2lkdWFsX2NvbnRhaW5lcnMgcmVzaWR1YWxfbmV0d29ya3MKKyAgICAgICAgaWYgcmVzaWR1YWxfY29udGFpbmVycz0iJChldmFsdWF0aW9uX3RpbWVkX2RvY2tlciBwcyAtYXEgXAorICAgICAgICAgICAgICAgLS1maWx0ZXIgImxhYmVsPWNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkPSRqb2JfaWQiICIke3N1YmV2YWx1YXRpb25fY2xlYW51cF9maWx0ZXJfYXJnc1tAXX0iKSIgJiYKKyAgICAgICAgICAgcmVzaWR1YWxfbmV0d29ya3M9IiQoZXZhbHVhdGlvbl90aW1lZF9kb2NrZXIgbmV0d29yayBscyAtcSBcCisgICAgICAgICAgICAgICAtLWZpbHRlciAibGFiZWw9Y29tLnVybmV0d29yay5jb21wZXRpdGlvbi5qb2ItaWQ9JGpvYl9pZCIgIiR7c3ViZXZhbHVhdGlvbl9jbGVhbnVwX2ZpbHRlcl9hcmdzW0BdfSIpIiAmJgorICAgICAgICAgICBbIC16ICIkcmVzaWR1YWxfY29udGFpbmVycyIgXSAmJiBbIC16ICIkcmVzaWR1YWxfbmV0d29ya3MiIF07IHRoZW4KKyAgICAgICAgICAgIDoKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIyBBIGNhbmRpZGF0ZSBmYWlsdXJlIGNhbm5vdCBiZWNvbWUgdGVybWluYWwgd2hpbGUgZmFpbGVkIGhvc3QKKyAgICAgICAgICAgICMgY2xlYW51cCBtaWdodCBjb250YW1pbmF0ZSB0aGUgbmV4dCBhdHRlbXB0J3MgbWVhc3VyZW1lbnRzLgorICAgICAgICAgICAgcm0gLWYgLS0gIiRhcnRpZmFjdF9kaXIvZXZhbHVhdG9yLWZhaWx1cmUuanNvbiIKKyAgICAgICAgICAgIGxvZyAiRVJST1I6IHN0YWdlIGZhaWx1cmUgY2xhc3NpZmljYXRpb24gaW52YWxpZGF0ZWQgYnkgaW5jb21wbGV0ZSBjbGVhbnVwIgorICAgICAgICBmaQorICAgIGZpCisgICAgaWYgWyAiJHJjIiAtbmUgMCBdICYmIFsgLW4gIiR7YWN0aXZlX3dvcmtfbW91bnQ6LX0iIF0gJiYKKyAgICAgICBbICIkYWN0aXZlX3dvcmtfbW91bnQiID0gIiR7YXJ0aWZhY3RfZGlyOi19Ly5ldmlkZW5jZS1ydW50aW1lIiBdICYmCisgICAgICAgbW91bnRwb2ludCAtcSAiJGFjdGl2ZV93b3JrX21vdW50IiAmJiBbIC14ICIkUkVUQUlOX0ZBSUxVUkVfRVZJREVOQ0UiIF07IHRoZW4KKyAgICAgICAgaWYgZW52IFwKKyAgICAgICAgICAgIEZBSUxVUkVfSk9CX0lEPSIke2pvYl9pZDotfSIgXAorICAgICAgICAgICAgRkFJTFVSRV9ST1VORF9JRD0iJHtyb3VuZF9pZDotfSIgXAorICAgICAgICAgICAgRkFJTFVSRV9BVFRFTVBUPSIke2F0dGVtcHQ6LX0iIFwKKyAgICAgICAgICAgIEZBSUxVUkVfRVhJVF9DT0RFPSIkcmMiIFwKKyAgICAgICAgICAgIEZBSUxVUkVfRVZBTFVBVE9SX0xJTkU9IiRmYWlsdXJlX2xpbmUiIFwKKyAgICAgICAgICAgICIkUkVUQUlOX0ZBSUxVUkVfRVZJREVOQ0UiIFwKKyAgICAgICAgICAgICAgICAiJGFjdGl2ZV93b3JrX21vdW50IiAiJGFydGlmYWN0X2Rpci9mYWlsZWQtZXZpZGVuY2UiOyB0aGVuCisgICAgICAgICAgICBsb2cgInJldGFpbmVkIHNhbml0aXplZCBmYWlsdXJlIGV2aWRlbmNlOiAkYXJ0aWZhY3RfZGlyL2ZhaWxlZC1ldmlkZW5jZSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9nICJFUlJPUjogY291bGQgbm90IHJldGFpbiBzYW5pdGl6ZWQgZmFpbHVyZSBldmlkZW5jZSIKKyAgICAgICAgZmkKKyAgICBmaQorICAgIGxvY2FsIHdvcmtfY2xlYW51cF9jb21wbGV0ZT10cnVlCisgICAgaWYgWyAtbiAiJHthY3RpdmVfd29ya19tb3VudDotfSIgXSAmJiBtb3VudHBvaW50IC1xICIkYWN0aXZlX3dvcmtfbW91bnQiOyB0aGVuCisgICAgICAgIGlmIFtbICIkc3ViZXZhbHVhdGlvbl9zY29wZWQiID0gdHJ1ZSBdXTsgdGhlbgorICAgICAgICAgICAgZXZhbHVhdGlvbl9ob3N0IHVubW91bnQtZXZpZGVuY2UgPi9kZXYvbnVsbCAyPiYxIHx8IHdvcmtfY2xlYW51cF9jb21wbGV0ZT1mYWxzZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzdWRvIC1uIHRpbWVvdXQgLS1zaWduYWw9VEVSTSAtLWtpbGwtYWZ0ZXI9MXMgM3MgdW1vdW50ICIkYWN0aXZlX3dvcmtfbW91bnQiID4vZGV2L251bGwgMj4mMSB8fAorICAgICAgICAgICAgICAgIHdvcmtfY2xlYW51cF9jb21wbGV0ZT1mYWxzZQorICAgICAgICBmaQorICAgIGZpCisgICAgaWYgWyAtbiAiJHthY3RpdmVfd29ya19tb3VudDotfSIgXSAmJiBbIC1kICIkYWN0aXZlX3dvcmtfbW91bnQiIF07IHRoZW4KKyAgICAgICAgcm1kaXIgIiRhY3RpdmVfd29ya19tb3VudCIgPi9kZXYvbnVsbCAyPiYxIHx8IHdvcmtfY2xlYW51cF9jb21wbGV0ZT1mYWxzZQorICAgIGZpCisgICAgaWYgWyAiJHdvcmtfY2xlYW51cF9jb21wbGV0ZSIgIT0gdHJ1ZSBdOyB0aGVuCisgICAgICAgIFsgLXogIiR7YXJ0aWZhY3RfZGlyOi19IiBdIHx8IHJtIC1mIC0tICIkYXJ0aWZhY3RfZGlyL2V2YWx1YXRvci1mYWlsdXJlLmpzb24iCisgICAgICAgIGxvZyAiRVJST1I6IHN0YWdlIGZhaWx1cmUgY2xhc3NpZmljYXRpb24gaW52YWxpZGF0ZWQgYnkgaW5jb21wbGV0ZSBldmlkZW5jZSB0bXBmcyBjbGVhbnVwIgorICAgIGZpCisgICAgaWYgW1sgIiRzdWJldmFsdWF0aW9uX3Njb3BlZCIgIT0gdHJ1ZSBdXSAmJiBbIC1uICIke2FydGlmYWN0X2RpcjotfSIgXSAmJiBbIC1kICIkYXJ0aWZhY3RfZGlyIiBdOyB0aGVuCisgICAgICAgIHN1ZG8gLW4gY2hvd24gLVIgIiR3b3JrZXJfdWlkOiR3b3JrZXJfZ2lkIiAiJGFydGlmYWN0X2RpciIgPi9kZXYvbnVsbCAyPiYxIHx8IHRydWUKKyAgICBmaQorICAgIGV4aXQgIiRyYyIKK30KK3RyYXAgJ29uX2Vycm9yICIkTElORU5PIiAiJD8iJyBFUlIKK3RyYXAgY2xlYW51cCBFWElUCit0cmFwICdleGl0IDEzMCcgSU5UCit0cmFwICdleGl0IDE0MycgVEVSTQorCitmb3IgY29tbWFuZCBpbiBhd2sgY2F0IGNwIGRhdGUgZGYgZmluZCBmaW5kbW50IGdpdCBoZWFkIGluc3RhbGwganEgbWtmaWZvIG1vdW50IG1vdW50cG9pbnQgb3BlbnNzbCByZWFscGF0aCBzZWQgc2hhMjU2c3VtIHNvcnQgc3RhdCBzdWRvIHN5bmMgdGFpbCB0YXNrc2V0IHRpbWVvdXQgdW1vdW50OyBkbworICAgIHJlcXVpcmVfY29tbWFuZCAiJGNvbW1hbmQiCitkb25lCitjaGVja19ldmFsdWF0b3JfcmVzaWR1YWxfcmVzb3VyY2VzCitldmFsdWF0aW9uX2RvY2tlciBpbmZvID4vZGV2L251bGwKK1sgLXggIiRCVUlMRF9TVUJNSVNTSU9OIiBdIHx8IGRpZSAidHJ1c3RlZCBzdWJtaXNzaW9uIGJ1aWxkZXIgaXMgbm90IGV4ZWN1dGFibGUiCitbIC14ICIkUFJFUEFSRV9FVkFMVUFUSU9OX1NPVVJDRSIgXSB8fCBkaWUgInRydXN0ZWQgZXZhbHVhdGlvbiBzb3VyY2UgcHJlcGFyZXIgaXMgbm90IGV4ZWN1dGFibGUiCitbIC14ICIkUkVTT1VSQ0VfQk9VTkRBUlkiIF0gfHwgZGllICJ0cnVzdGVkIHJlc291cmNlIGJvdW5kYXJ5IGlzIG5vdCBleGVjdXRhYmxlIgorWyAteCAiJE5FVFdPUktfQk9VTkRBUlkiIF0gfHwgZGllICJ0cnVzdGVkIG5ldHdvcmsgYm91bmRhcnkgaXMgbm90IGV4ZWN1dGFibGUiCitbIC14ICIkRE9DS0VSX0lEX01BUCIgXSB8fCBkaWUgInRydXN0ZWQgRG9ja2VyIGlkLW1hcCByZXNvbHZlciBpcyBub3QgZXhlY3V0YWJsZSIKK1sgLXggIiRIQVNIX0xPQ0FMX01PVU5UIiBdIHx8IGRpZSAidHJ1c3RlZCBsb2NhbC1tb3VudCBkaWdlc3QgaGVscGVyIGlzIG5vdCBleGVjdXRhYmxlIgorWyAteCAiJFJFVEFJTl9GQUlMVVJFX0VWSURFTkNFIiBdIHx8IGRpZSAidHJ1c3RlZCBmYWlsdXJlIGV2aWRlbmNlIHJldGFpbmVyIGlzIG5vdCBleGVjdXRhYmxlIgorWyAtZiAiJFBPU1RHUkVTX0lOSVQiIF0gfHwgZGllICJ0cnVzdGVkIFBvc3RncmVTUUwgaW5pdGlhbGl6ZXIgaXMgbWlzc2luZyIKK1sgLXggIiRUSU1FT1VUX0JVREdFVCIgXSB8fCBkaWUgInRydXN0ZWQgdGltZW91dC1idWRnZXQgY2FsY3VsYXRvciBpcyBub3QgZXhlY3V0YWJsZSIKK1sgLWYgIiRDT01QT1NFX0ZJTEUiIF0gfHwgZGllICJ0cnVzdGVkIENvbXBvc2UgZGVmaW5pdGlvbiBpcyBtaXNzaW5nIgorCitbWyAiJHJlcXVlc3RfcGF0aCIgPSAvKiAmJiAiJHJlc3VsdF9wYXRoIiA9IC8qIF1dIHx8IGRpZSAicmVxdWVzdCBhbmQgcmVzdWx0IHBhdGhzIG11c3QgYmUgYWJzb2x1dGUiCitbIC1mICIkcmVxdWVzdF9wYXRoIiBdICYmIFsgISAtTCAiJHJlcXVlc3RfcGF0aCIgXSB8fCBkaWUgInJlcXVlc3QgbXVzdCBiZSBhIHJlZ3VsYXIgbm9uLXN5bWxpbmsgZmlsZSIKK1sgISAtZSAiJHJlc3VsdF9wYXRoIiBdIHx8IGRpZSAicmVzdWx0IHBhdGggYWxyZWFkeSBleGlzdHMiCitbICIkKGZpbGVfYnl0ZXMgIiRyZXF1ZXN0X3BhdGgiKSIgLWxlICIkTUFYX1JFUVVFU1RfQllURVMiIF0gfHwgZGllICJyZXF1ZXN0IGlzIG92ZXJzaXplZCIKK3JlcXVlc3RfcGF0aD0iJChyZWFscGF0aCAtZSAiJHJlcXVlc3RfcGF0aCIpIgorYXJ0aWZhY3RfZGlyPSIkKGRpcm5hbWUgIiRyZXF1ZXN0X3BhdGgiKSIKK1sgIiRyZXN1bHRfcGF0aCIgPSAiJGFydGlmYWN0X2Rpci93b3JrZXItcmVzdWx0Lmpzb24iIF0gfHwgZGllICJyZXN1bHQgcGF0aCBpcyBvdXRzaWRlIHRoZSBhdHRlbXB0IGRpcmVjdG9yeSIKKwordmFsaWRhdGVfd29ya2VyX3JlcXVlc3Rfc2NoZW1hICIkcmVxdWVzdF9wYXRoIiB8fCBkaWUgInJlcXVlc3Qgc2NoZW1hIG9yIGZpZWxkcyBhcmUgaW52YWxpZCIKK2F1dGhlbnRpY2F0ZV93b3JrX2NvdmVyYWdlX3BhdGNoX3BvbGljeSAiJHJlcXVlc3RfcGF0aCIKKworam9iX2lkPSIkKGpxIC1lciAnLmpvYl9pZCcgIiRyZXF1ZXN0X3BhdGgiKSIKK3N0YWdpbmc9IiQoanEgLXIgJy5zdGFnaW5nIC8vIGZhbHNlJyAiJHJlcXVlc3RfcGF0aCIpIgorc291cmNlX2JyYW5jaD1zaW0tbGF0ZW5jeQorc291cmNlX21vZGVfYXJncz0oKQoraWYgWyAiJHN0YWdpbmciID0gdHJ1ZSBdOyB0aGVuCisgICAgc291cmNlX2JyYW5jaD1zaW0tbGF0ZW5jeS1zdGFnaW5nCisgICAgc291cmNlX21vZGVfYXJncz0oLS1zdGFnaW5nKQorZmkKK1JFUE9TSVRPUklFUz0oc2VydmVyIGNvbm5lY3Qgc2RrIHByb3h5IGdsb2cgZ29pZGVudGljb25zIHVzZXJ3aXJlZ3VhcmQgc24gd2FycCBndmlzb3IpCityZWFkb25seSBSRVBPU0lUT1JJRVMKK3JlcG9zaXRvcnlfbmFtZXNfanNvbj0iJChwcmludGYgJyVzXG4nICIke1JFUE9TSVRPUklFU1tAXX0iIHwganEgLVJzYyAnc3BsaXQoIlxuIilbOi0xXScpIgorcm91bmRfaWQ9IiQoanEgLWVyICcucm91bmRfaWQnICIkcmVxdWVzdF9wYXRoIikiCitzb3VyY2VfZXBvY2g9IiQoanEgLWVyICcuc291cmNlX2Vwb2NoJyAiJHJlcXVlc3RfcGF0aCIpIgorYXR0ZW1wdD0iJChqcSAtZXIgJy5hdHRlbXB0JyAiJHJlcXVlc3RfcGF0aCIpIgorY29tcGV0aXRpb25faWQ9IiQoanEgLWVyICcuY29tcGV0aXRpb25faWQnICIkcmVxdWVzdF9wYXRoIikiCitiYXNlX3NoYT0iJChqcSAtZXIgJy5iYXNlX3NoYScgIiRyZXF1ZXN0X3BhdGgiKSIKK2Jhc2VfaW1hZ2U9IiQoanEgLWVyICcuZXZhbHVhdG9yX2ltYWdlX2RpZ2VzdCcgIiRyZXF1ZXN0X3BhdGgiKSIKK2FwaV9jb250cm9sX2ltYWdlPSIkKGpxIC1lciAnLmFwaV9pbWFnZV9kaWdlc3QnICIkcmVxdWVzdF9wYXRoIikiCit3b3JrZXJfY29udHJvbF9pbWFnZT0iJChqcSAtZXIgJy53b3JrZXJfaW1hZ2VfZGlnZXN0JyAiJHJlcXVlc3RfcGF0aCIpIgorc2NvcmVyX3ZlcnNpb249IiQoanEgLWVyICcuc2NvcmVyX3ZlcnNpb24nICIkcmVxdWVzdF9wYXRoIikiCitnMl92b2x1bWVfcG9saWN5PSIkKGpxIC1yICcuZXZhbHVhdGlvbl9wb2xpY3kuZzJfdm9sdW1lX3BvbGljeSAvLyAiIicgIiRyZXF1ZXN0X3BhdGgiKSIKK3dvcmtfY292ZXJhZ2VfcG9saWN5PSIkKGpxIC1jICcuZXZhbHVhdGlvbl9wb2xpY3kud29ya19jb3ZlcmFnZV9wb2xpY3kgLy8gbnVsbCcgIiRyZXF1ZXN0X3BhdGgiKSIKK2NvdmVyYWdlX3BvbGljeV9hcmdzPSgpCitpZiBbICIkd29ya19jb3ZlcmFnZV9wb2xpY3kiICE9IG51bGwgXTsgdGhlbiBjb3ZlcmFnZV9wb2xpY3lfYXJncz0oLS13b3JrLWNvdmVyYWdlLXBvbGljeSAiJChqcSAtZXIgJy5raW5kJyA8PDwiJHdvcmtfY292ZXJhZ2VfcG9saWN5IikiKTsgZmkKK3Byb3ZpZGVyc19wYXRoPSIkKGpxIC1lciAnLnByb3ZpZGVyc19wYXRoJyAiJHJlcXVlc3RfcGF0aCIpIgorcHJvdmlkZXJzX3NoYTI1Nj0iJChqcSAtZXIgJy5wcm92aWRlcnNfc2hhMjU2JyAiJHJlcXVlc3RfcGF0aCIpIgorcm91bmRfYmFzZWxpbmVfcGF0aD0iJChqcSAtZXIgJy5yb3VuZF9iYXNlbGluZV9wYXRoJyAiJHJlcXVlc3RfcGF0aCIpIgorcm91bmRfYmFzZWxpbmVfc2hhMjU2PSIkKGpxIC1lciAnLnJvdW5kX2Jhc2VsaW5lX3NoYTI1NicgIiRyZXF1ZXN0X3BhdGgiKSIKK3BhdGNoX3BhdGg9IiQoanEgLWVyICcucGF0Y2hfcGF0aCcgIiRyZXF1ZXN0X3BhdGgiKSIKK3BhdGNoX3NoYTI1Nj0iJChqcSAtZXIgJy5wYXRjaF9zaGEyNTYnICIkcmVxdWVzdF9wYXRoIikiCityZXF1ZXN0X2FydGlmYWN0X2Rpcj0iJChqcSAtZXIgJy5hcnRpZmFjdF9kaXJlY3RvcnknICIkcmVxdWVzdF9wYXRoIikiCitjb25maWdfbG9jYWxfZGlyZWN0b3J5PSIkKGpxIC1lciAnLmNvbmZpZ19sb2NhbF9kaXJlY3RvcnknICIkcmVxdWVzdF9wYXRoIikiCit2YXVsdF9sb2NhbF9kaXJlY3Rvcnk9IiQoanEgLWVyICcudmF1bHRfbG9jYWxfZGlyZWN0b3J5JyAiJHJlcXVlc3RfcGF0aCIpIgorY29uZmlnX2xvY2FsX3NoYTI1Nj0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5jb25maWdfbG9jYWxfc2hhMjU2JyAiJHJlcXVlc3RfcGF0aCIpIgordmF1bHRfbG9jYWxfc2hhMjU2PSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnZhdWx0X2xvY2FsX3NoYTI1NicgIiRyZXF1ZXN0X3BhdGgiKSIKK3JlcGxpY2F0ZXM9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kucmVwbGljYXRlcycgIiRyZXF1ZXN0X3BhdGgiKSIKKworW1sgIiRqb2JfaWQiID1+IF5bMC05YS1mLV17MzZ9JCBdXSB8fCBkaWUgImpvYiBpZCBpcyBpbnZhbGlkIgorW1sgIiRyb3VuZF9pZCIgPX4gXlswLTlhLWYtXXszNn0kIF1dIHx8IGRpZSAicm91bmQgaWQgaXMgaW52YWxpZCIKK1tbICIkc291cmNlX2Vwb2NoIiA9fiBeWzAtNl0kIF1dIHx8IGRpZSAic291cmNlIGVwb2NoIGlzIGludmFsaWQiCitbWyAiJGF0dGVtcHQiID1+IF5bMS05XVswLTldKiQgXV0gfHwgZGllICJhdHRlbXB0IGlzIGludmFsaWQiCitpZiBbWyAiJHN1YmV2YWx1YXRpb25fc2NvcGVkIiA9IHRydWUgXV07IHRoZW4KKyAgICBzdWJldmFsdWF0aW9uX3JlcXVpcmVfaWRlbnRpdHkgIiRqb2JfaWQiICIkcm91bmRfaWQiICIkYXR0ZW1wdCIgfHwgZGllICJzdWJldmFsdWF0aW9uIG93bmVyc2hpcCBkaWZmZXJzIGZyb20gaXRzIHJlcXVlc3QiCitmaQorIyBBIHN5c3RlbWQgc2xpY2UgbWF5IHJldGFpbiBjb3VudGVycyBhZnRlciBpdHMgbGFzdCBEb2NrZXIgY2hpbGQgZGlzYXBwZWFycy4KKyMgSW5jbHVkZSB0aGUgYXV0aGVudGljYXRlZCByZXRyeSBpZGVudGl0eSB3aXRob3V0IHRydW5jYXRpbmcgc3RhZ2Ugc3VmZml4ZXMuCithdHRlbXB0X3Rva2VuPSIkKHByaW50ZiAnJXM6JXMnICIkam9iX2lkIiAiJGF0dGVtcHQiIHwgc2hhMjU2c3VtIHwgYXdrICd7cHJpbnQgc3Vic3RyKCQxLCAxLCAzMil9JykiCitbWyAiJGNvbXBldGl0aW9uX2lkIiA9fiBeW0EtWmEtejAtOS5fLV17MSwxMjh9JCBdXSB8fCBkaWUgImNvbXBldGl0aW9uIGlkIGlzIGludmFsaWQiCitbWyAiJGJhc2Vfc2hhIiA9fiBeWzAtOWEtZl17NDB9JCBdXSB8fCBkaWUgImJhc2UgU0hBIGlzIGludmFsaWQiCitbWyAiJGJhc2VfaW1hZ2UiID1+IF5zaGEyNTY6WzAtOWEtZl17NjR9JCBdXSB8fCBkaWUgImJhc2UgaW1hZ2UgaWQgaXMgaW52YWxpZCIKK1tbICIkYXBpX2NvbnRyb2xfaW1hZ2UiID1+IF5zaGEyNTY6WzAtOWEtZl17NjR9JCBdXSB8fCBkaWUgIkFQSSBjb250cm9sIGltYWdlIGlkIGlzIGludmFsaWQiCitbWyAiJHdvcmtlcl9jb250cm9sX2ltYWdlIiA9fiBec2hhMjU2OlswLTlhLWZdezY0fSQgXV0gfHwgZGllICJ3b3JrZXIgY29udHJvbCBpbWFnZSBpZCBpcyBpbnZhbGlkIgorY2FzZSAiJGcyX3ZvbHVtZV9wb2xpY3k6JHNjb3Jlcl92ZXJzaW9uIiBpbgorICAgIDpzaW0tbGF0ZW5jeS1zY29yZS8xfG1pbmltdW0td29yay8xOnNpbS1sYXRlbmN5LXNjb3JlLzJ8bWluaW11bS13b3JrLzE6c2ltLWxhdGVuY3ktc2NvcmUvMykgOzsKKyAgICAqKSBkaWUgInNjb3JlciB2ZXJzaW9uIGRvZXMgbm90IG1hdGNoIGZyb3plbiBnMiB2b2x1bWUgcG9saWN5IiA7OworZXNhYworW1sgIiRwcm92aWRlcnNfc2hhMjU2IiA9fiBeWzAtOWEtZl17NjR9JCBdXSB8fCBkaWUgInByb3ZpZGVycyBTSEEtMjU2IGlzIGludmFsaWQiCitbWyAiJHBhdGNoX3NoYTI1NiIgPX4gXlswLTlhLWZdezY0fSQgXV0gfHwgZGllICJwYXRjaCBTSEEtMjU2IGlzIGludmFsaWQiCitbWyAiJGNvbmZpZ19sb2NhbF9zaGEyNTYiID1+IF5bMC05YS1mXXs2NH0kIF1dIHx8IGRpZSAiY29uZmlnL2xvY2FsIFNIQS0yNTYgaXMgaW52YWxpZCIKK1tbICIkdmF1bHRfbG9jYWxfc2hhMjU2IiA9fiBeWzAtOWEtZl17NjR9JCBdXSB8fCBkaWUgInZhdWx0L2xvY2FsIFNIQS0yNTYgaXMgaW52YWxpZCIKK1tbICIkcmVwbGljYXRlcyIgPX4gXlsxMzU3OV0kIF1dIHx8IGRpZSAicmVwbGljYXRlIGNvdW50IG11c3QgYmUgb2RkIGFuZCBpbiAxLi45IgorWyAiJHJlcXVlc3RfYXJ0aWZhY3RfZGlyIiA9ICIkYXJ0aWZhY3RfZGlyIiBdIHx8IGRpZSAicmVxdWVzdCBhcnRpZmFjdCBkaXJlY3RvcnkgaWRlbnRpdHkgbWlzbWF0Y2giCitbICIkcGF0Y2hfcGF0aCIgPSAiJGFydGlmYWN0X2Rpci9jYW5vbmljYWwucGF0Y2giIF0gfHwgZGllICJwYXRjaCBwYXRoIGlkZW50aXR5IG1pc21hdGNoIgorWyAtZiAiJHBhdGNoX3BhdGgiIF0gJiYgWyAhIC1MICIkcGF0Y2hfcGF0aCIgXSB8fCBkaWUgImNhbm9uaWNhbCBwYXRjaCBpcyBtaXNzaW5nIG9yIHVuc2FmZSIKK1sgIiQoc2hhMjU2X2ZpbGUgIiRwYXRjaF9wYXRoIikiID0gIiRwYXRjaF9zaGEyNTYiIF0gfHwgZGllICJjYW5vbmljYWwgcGF0Y2ggaGFzaCBtaXNtYXRjaCIKK1sgLWYgIiRwcm92aWRlcnNfcGF0aCIgXSAmJiBbICEgLUwgIiRwcm92aWRlcnNfcGF0aCIgXSB8fCBkaWUgInByb3ZpZGVycyBmaWxlIGlzIG1pc3Npbmcgb3IgdW5zYWZlIgorWyAiJChmaWxlX2J5dGVzICIkcHJvdmlkZXJzX3BhdGgiKSIgLWxlICIkTUFYX1BST1ZJREVSU19CWVRFUyIgXSB8fCBkaWUgInByb3ZpZGVycyBmaWxlIGlzIG92ZXJzaXplZCIKK1sgIiQoc2hhMjU2X2ZpbGUgIiRwcm92aWRlcnNfcGF0aCIpIiA9ICIkcHJvdmlkZXJzX3NoYTI1NiIgXSB8fCBkaWUgInByb3ZpZGVycyBmaWxlIGhhc2ggbWlzbWF0Y2giCitpZiBbIC1uICIkcm91bmRfYmFzZWxpbmVfcGF0aCIgXSB8fCBbIC1uICIkcm91bmRfYmFzZWxpbmVfc2hhMjU2IiBdOyB0aGVuCisgICAgWyAiJHJvdW5kX2Jhc2VsaW5lX3BhdGgiID0gIiRhcnRpZmFjdF9kaXIvcm91bmQtYmFzZWxpbmUuanNvbiIgXSB8fAorICAgICAgICBkaWUgInJvdW5kIGJhc2VsaW5lIHBhdGggaWRlbnRpdHkgbWlzbWF0Y2giCisgICAgW1sgIiRyb3VuZF9iYXNlbGluZV9zaGEyNTYiID1+IF5bMC05YS1mXXs2NH0kIF1dIHx8IGRpZSAicm91bmQgYmFzZWxpbmUgU0hBLTI1NiBpcyBpbnZhbGlkIgorICAgIFsgLWYgIiRyb3VuZF9iYXNlbGluZV9wYXRoIiBdICYmIFsgISAtTCAiJHJvdW5kX2Jhc2VsaW5lX3BhdGgiIF0gfHwKKyAgICAgICAgZGllICJyb3VuZCBiYXNlbGluZSBpcyBtaXNzaW5nIG9yIHVuc2FmZSIKKyAgICBbICIkKGZpbGVfYnl0ZXMgIiRyb3VuZF9iYXNlbGluZV9wYXRoIikiIC1sZSAiJE1BWF9SRVFVRVNUX0JZVEVTIiBdIHx8IGRpZSAicm91bmQgYmFzZWxpbmUgaXMgb3ZlcnNpemVkIgorICAgIFsgIiQoc2hhMjU2X2ZpbGUgIiRyb3VuZF9iYXNlbGluZV9wYXRoIikiID0gIiRyb3VuZF9iYXNlbGluZV9zaGEyNTYiIF0gfHwKKyAgICAgICAgZGllICJyb3VuZCBiYXNlbGluZSBoYXNoIG1pc21hdGNoIgorZmkKK2pxIC1lICcucm91bmRfc2VlZF9oZXggfCB0eXBlID09ICJzdHJpbmciIGFuZCB0ZXN0KCJeWzAtOWEtZl17NjR9JCIpJyAiJHJlcXVlc3RfcGF0aCIgPi9kZXYvbnVsbCB8fAorICAgIGRpZSAiaGlkZGVuIHJvdW5kIHNlZWQgaXMgbWFsZm9ybWVkIgorCitmb3IgbG9jYWxfZGlyZWN0b3J5IGluICIkY29uZmlnX2xvY2FsX2RpcmVjdG9yeSIgIiR2YXVsdF9sb2NhbF9kaXJlY3RvcnkiOyBkbworICAgIFtbICIkbG9jYWxfZGlyZWN0b3J5IiA9IC8qIF1dIHx8IGRpZSAiZGlyZWN0IGxvY2FsIG1vdW50IHBhdGggbXVzdCBiZSBhYnNvbHV0ZSIKKyAgICBbICIkbG9jYWxfZGlyZWN0b3J5IiA9ICIkKHJlYWxwYXRoIC1lICIkbG9jYWxfZGlyZWN0b3J5IikiIF0gfHwKKyAgICAgICAgZGllICJkaXJlY3QgbG9jYWwgbW91bnQgcGF0aCBpcyBub3QgY2Fub25pY2FsIgorZG9uZQorWyAiJHtjb25maWdfbG9jYWxfZGlyZWN0b3J5IyMqL30iID0gbG9jYWwgXSAmJgorICAgIFsgIiR7Y29uZmlnX2xvY2FsX2RpcmVjdG9yeSUvKn0iICE9ICIkY29uZmlnX2xvY2FsX2RpcmVjdG9yeSIgXSAmJgorICAgIFsgIiR7Y29uZmlnX2xvY2FsX2RpcmVjdG9yeSUvKn0iID0gIiR7Y29uZmlnX2xvY2FsX2RpcmVjdG9yeSUvY29uZmlnL2xvY2FsfS9jb25maWciIF0gfHwKKyAgICBkaWUgImNvbmZpZyBtb3VudCBpcyBub3QgdGhlIGV4YWN0IGNvbmZpZy9sb2NhbCBsZWFmIgorWyAiJHt2YXVsdF9sb2NhbF9kaXJlY3RvcnkjIyovfSIgPSBsb2NhbCBdICYmCisgICAgWyAiJHt2YXVsdF9sb2NhbF9kaXJlY3RvcnklLyp9IiAhPSAiJHZhdWx0X2xvY2FsX2RpcmVjdG9yeSIgXSAmJgorICAgIFsgIiR7dmF1bHRfbG9jYWxfZGlyZWN0b3J5JS8qfSIgPSAiJHt2YXVsdF9sb2NhbF9kaXJlY3RvcnklL3ZhdWx0L2xvY2FsfS92YXVsdCIgXSB8fAorICAgIGRpZSAidmF1bHQgbW91bnQgaXMgbm90IHRoZSBleGFjdCB2YXVsdC9sb2NhbCBsZWFmIgorYXV0aGVudGljYXRlX2xvY2FsX21vdW50cworCityZXNvdXJjZV9ib3VuZGFyeV9qc29uPSIkKCRSRVNPVVJDRV9CT1VOREFSWSkiIHx8IGRpZSAiaG9zdCByZXNvdXJjZSBib3VuZGFyeSBpcyBpbnZhbGlkIgoranEgLWUgXAorICAgIC0tYXJnIHJ1bm5lcl9tZW1vcnlfbGltaXQgIiRSVU5ORVJfTUVNT1JZX0xJTUlUIiBcCisgICAgLS1hcmdqc29uIHJ1bm5lcl9tZW1vcnlfYnl0ZXMgIiRSVU5ORVJfTUVNT1JZX0JZVEVTIiBcCisgICAgLS1hcmdqc29uIHBvc3RncmVzX21lbW9yeV9ieXRlcyAiJFBPU1RHUkVTX01FTU9SWV9CWVRFUyIgXAorICAgIC0tYXJnanNvbiByZWRpc19tZW1vcnlfYnl0ZXMgIiRSRURJU19NRU1PUllfQllURVMiIFwKKyAgICAtLWFyZ2pzb24gYWN0aXZlX21lbW9yeV9ieXRlcyAiJEFDVElWRV9FVkFMVUFUSU9OX01FTU9SWV9CWVRFUyIgXAorICAgIC0tYXJnanNvbiBldmlkZW5jZV9tZW1vcnlfYnl0ZXMgIiRFVklERU5DRV9XT1JLX0JZVEVTIiBcCisgICAgLS1hcmdqc29uIHJlc2VydmVfYnl0ZXMgIiRNSU5JTVVNX01BTkFHRU1FTlRfTUVNT1JZX1JFU0VSVkVfQllURVMiIFwKKyAgICAnLnNjaGVtYSA9PSAxIGFuZCAua2luZCA9PSAic2ltLWxhdGVuY3ktcmVzb3VyY2UtYm91bmRhcnkiIGFuZAorICAgICAuZXZhbHVhdGlvbl9waHlzaWNhbF9jb3JlX2NvdW50ID09IDEwIGFuZAorICAgICAubWFuYWdlbWVudF9waHlzaWNhbF9jb3JlX2NvdW50ID09IDIgYW5kCisgICAgIC5ldmFsdWF0aW9uX2NwdXNldCAhPSAiIiBhbmQgLm1hbmFnZW1lbnRfY3B1c2V0ICE9ICIiIGFuZAorICAgICAuZGlzam9pbnRfY3B1X3NldHMgPT0gdHJ1ZSBhbmQgLm1lbW9yeV9jYXBhY2l0eV9wYXNzZWQgPT0gdHJ1ZSBhbmQKKyAgICAgLnJ1bm5lcl9tZW1vcnlfbGltaXQgPT0gJHJ1bm5lcl9tZW1vcnlfbGltaXQgYW5kCisgICAgIC5ydW5uZXJfbWVtb3J5X2xpbWl0X2J5dGVzID09ICRydW5uZXJfbWVtb3J5X2J5dGVzIGFuZAorICAgICAucG9zdGdyZXNfbWVtb3J5X2xpbWl0X2J5dGVzID09ICRwb3N0Z3Jlc19tZW1vcnlfYnl0ZXMgYW5kCisgICAgIC5yZWRpc19tZW1vcnlfbGltaXRfYnl0ZXMgPT0gJHJlZGlzX21lbW9yeV9ieXRlcyBhbmQKKyAgICAgLmFjdGl2ZV9tZW1vcnlfbGltaXRfYnl0ZXMgPT0gJGFjdGl2ZV9tZW1vcnlfYnl0ZXMgYW5kCisgICAgIC5ldmlkZW5jZV9tZW1vcnlfbGltaXRfYnl0ZXMgPT0gJGV2aWRlbmNlX21lbW9yeV9ieXRlcyBhbmQKKyAgICAgLnRvdGFsX2V2YWx1YXRpb25fbWVtb3J5X2xpbWl0X2J5dGVzID09ICgkYWN0aXZlX21lbW9yeV9ieXRlcyArICRldmlkZW5jZV9tZW1vcnlfYnl0ZXMpIGFuZAorICAgICAuY2FwYWNpdHlfcmVzZXJ2ZV9ieXRlcyA9PSAoLmhvc3RfbWVtb3J5X2J5dGVzIC0gLnRvdGFsX2V2YWx1YXRpb25fbWVtb3J5X2xpbWl0X2J5dGVzKSBhbmQKKyAgICAgLm1pbmltdW1fbWFuYWdlbWVudF9tZW1vcnlfcmVzZXJ2ZV9ieXRlcyA9PSAkcmVzZXJ2ZV9ieXRlcyBhbmQKKyAgICAgLmNhcGFjaXR5X3Jlc2VydmVfYnl0ZXMgPj0gJHJlc2VydmVfYnl0ZXMnIFwKKyAgICA8PDwiJHJlc291cmNlX2JvdW5kYXJ5X2pzb24iID4vZGV2L251bGwgfHwgZGllICJyZXNvdXJjZSBib3VuZGFyeSBkb2VzIG5vdCBtYXRjaCB0aGUgZnJvemVuIGV2YWx1YXRvciBwb2xpY3kiCitjcHVzZXQ9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9jcHVzZXQnIDw8PCIkcmVzb3VyY2VfYm91bmRhcnlfanNvbiIpIgorbWFuYWdlbWVudF9jcHVzZXQ9IiQoanEgLWVyICcubWFuYWdlbWVudF9jcHVzZXQnIDw8PCIkcmVzb3VyY2VfYm91bmRhcnlfanNvbiIpIgorZXZhbHVhdGlvbl9jcHVfY291bnQ9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9waHlzaWNhbF9jb3JlX2NvdW50JyA8PDwiJHJlc291cmNlX2JvdW5kYXJ5X2pzb24iKSIKK2V4cGVjdGVkX21hbmFnZW1lbnRfYWZmaW5pdHk9IiQodGFza3NldCAtYyAiJG1hbmFnZW1lbnRfY3B1c2V0IiBhd2sgLUY6IFwKKyAgICAnJDEgPT0gIkNwdXNfYWxsb3dlZF9saXN0IiB7Z3N1YigvW1s6c3BhY2U6XV0vLCAiIiwgJDIpOyBwcmludCAkMn0nIC9wcm9jL3NlbGYvc3RhdHVzKSIKK2lmIFsgIiR7Q09NUEVUSVRJT05fTUFOQUdFTUVOVF9DUFVTRVRfQVBQTElFRDotfSIgIT0gIiRtYW5hZ2VtZW50X2NwdXNldCIgXTsgdGhlbgorICAgIGV4ZWMgZW52IENPTVBFVElUSU9OX01BTkFHRU1FTlRfQ1BVU0VUX0FQUExJRUQ9IiRtYW5hZ2VtZW50X2NwdXNldCIgXAorICAgICAgICB0YXNrc2V0IC1jICIkbWFuYWdlbWVudF9jcHVzZXQiICIkKHJlYWxwYXRoIC1lICIkMCIpIiBcCisgICAgICAgIC0tcmVxdWVzdCAiJHJlcXVlc3RfcGF0aCIgLS1yZXN1bHQgIiRyZXN1bHRfcGF0aCIKK2ZpCithY3R1YWxfbWFuYWdlbWVudF9hZmZpbml0eT0iJChhd2sgLUY6IFwKKyAgICAnJDEgPT0gIkNwdXNfYWxsb3dlZF9saXN0IiB7Z3N1YigvW1s6c3BhY2U6XV0vLCAiIiwgJDIpOyBwcmludCAkMn0nIC9wcm9jL3NlbGYvc3RhdHVzKSIKK1sgIiRhY3R1YWxfbWFuYWdlbWVudF9hZmZpbml0eSIgPSAiJGV4cGVjdGVkX21hbmFnZW1lbnRfYWZmaW5pdHkiIF0gfHwKKyAgICBkaWUgImV2YWx1YXRvciB3b3JrZXIgaXMgbm90IGNvbmZpbmVkIHRvIHRoZSBkZWRpY2F0ZWQgbWFuYWdlbWVudCBDUFVzIgorCit3b3JrX2Rpcj0iJGFydGlmYWN0X2Rpci8uZXZpZGVuY2UtcnVudGltZSIKK1sgISAtZSAiJHdvcmtfZGlyIiBdIHx8IGRpZSAicnVudGltZSBldmlkZW5jZSBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMiCitpbnN0YWxsIC1kIC1tIDA3MDAgIiR3b3JrX2RpciIKK2lmIFtbICIkc3ViZXZhbHVhdGlvbl9zY29wZWQiID0gdHJ1ZSBdXTsgdGhlbgorICAgIGV2YWx1YXRpb25faG9zdCBtb3VudC1ldmlkZW5jZQorZWxzZQorICAgIHN1ZG8gLW4gbW91bnQgLXQgdG1wZnMgXAorICAgICAgICAtbyAic2l6ZT0kRVZJREVOQ0VfV09SS19MSU1JVCxtb2RlPTA3MDAsdWlkPSR3b3JrZXJfdWlkLGdpZD0kd29ya2VyX2dpZCxub3N1aWQsbm9kZXYsbm9leGVjIiBcCisgICAgICAgICJ1cm5ldHdvcmstZXZpZGVuY2UtJHtqb2JfaWQvLy0vfS0kYXR0ZW1wdCIgIiR3b3JrX2RpciIKK2ZpCithY3RpdmVfd29ya19tb3VudD0iJHdvcmtfZGlyIgorWyAiJChzdGF0IC1mIC1jICclVCcgIiR3b3JrX2RpciIpIiA9IHRtcGZzIF0gfHwgZGllICJydW50aW1lIGV2aWRlbmNlIGZpbGVzeXN0ZW0gaXMgbm90IHRtcGZzIgord29ya19jYXBhY2l0eT0iJChkZiAtQjEgLS1vdXRwdXQ9c2l6ZSAiJHdvcmtfZGlyIiB8IGF3ayAnTlIgPT0gMiB7cHJpbnQgJDF9JykiCitbICIkd29ya19jYXBhY2l0eSIgPSAiJEVWSURFTkNFX1dPUktfQllURVMiIF0gfHwgZGllICJydW50aW1lIGV2aWRlbmNlIGJ5dGUgbGltaXQgaXMgbm90IGZyb3plbiIKK3dvcmtfbW91bnRfb3B0aW9ucz0iJChmaW5kbW50IC1uIC1vIE9QVElPTlMgLS10YXJnZXQgIiR3b3JrX2RpciIpIgorZm9yIHJlcXVpcmVkX29wdGlvbiBpbiBub3N1aWQgbm9kZXYgbm9leGVjOyBkbworICAgIGNhc2UgIiwkd29ya19tb3VudF9vcHRpb25zLCIgaW4KKyAgICAgICAgKiIsJHJlcXVpcmVkX29wdGlvbiwiKikgOzsKKyAgICAgICAgKikgZGllICJydW50aW1lIGV2aWRlbmNlIG1vdW50IGlzIG1pc3NpbmcgJHJlcXVpcmVkX29wdGlvbiIgOzsKKyAgICBlc2FjCitkb25lCitpbnN0YWxsIC1kIC1tIDA3MDAgIiR3b3JrX2Rpci9pbnB1dCIgIiR3b3JrX2Rpci9ydW5zIiBcCisgICAgIiR3b3JrX2Rpci9zY29yZXItaW5wdXQiICIkd29ya19kaXIvc2NvcmUtb3V0cHV0IgoranEgLW4gLS1hcmcgZmlsZXN5c3RlbSB0bXBmcyAtLWFyZyBtb3VudF9vcHRpb25zICIkd29ya19tb3VudF9vcHRpb25zIiBcCisgICAgLS1hcmdqc29uIGxpbWl0X2J5dGVzICIkRVZJREVOQ0VfV09SS19CWVRFUyIgXAorICAgICd7c2NoZW1hOjEsa2luZDoic2ltLWxhdGVuY3ktZXZpZGVuY2UtcXVvdGEiLGZpbGVzeXN0ZW06JGZpbGVzeXN0ZW0sCisgICAgICBtb3VudF9vcHRpb25zOiRtb3VudF9vcHRpb25zLGxpbWl0X2J5dGVzOiRsaW1pdF9ieXRlcyxoYXJkX2xpbWl0OnRydWV9JyBcCisgICAgPiAiJHdvcmtfZGlyL2V2aWRlbmNlLXF1b3RhLmpzb24iCitjaG1vZCAwNDAwICIkd29ya19kaXIvZXZpZGVuY2UtcXVvdGEuanNvbiIKK21ha2VfbG9jYWxfbW91bnRfZXZpZGVuY2UoKSB7CisgICAganEgLW4gLS1hcmcgY29uZmlnX2xvY2FsX3NoYTI1NiAiJGNvbmZpZ19sb2NhbF9zaGEyNTYiIFwKKyAgICAgICAgLS1hcmcgdmF1bHRfbG9jYWxfc2hhMjU2ICIkdmF1bHRfbG9jYWxfc2hhMjU2IiBcCisgICAgICAgICd7c2NoZW1hOjEsa2luZDoic2ltLWxhdGVuY3ktbG9jYWwtbW91bnRzIixkaXJlY3RfYmluZDp0cnVlLAorICAgICAgICAgIHJlYWRfb25seTp0cnVlLHBhcmVudF9tb3VudHM6ZmFsc2UsYWxsX21haW5fc2l0ZV9hYnNlbnQ6dHJ1ZSwKKyAgICAgICAgICBjb25maWc6e3RhcmdldDoiL3J1bnRpbWUvY29uZmlnL2xvY2FsIixzaGEyNTY6JGNvbmZpZ19sb2NhbF9zaGEyNTZ9LAorICAgICAgICAgIHZhdWx0Ont0YXJnZXQ6Ii9ydW50aW1lL3ZhdWx0L2xvY2FsIixzaGEyNTY6JHZhdWx0X2xvY2FsX3NoYTI1Nn19JyBcCisgICAgICAgID4gIiR3b3JrX2Rpci9sb2NhbC1tb3VudHMuanNvbiIKKyAgICBjaG1vZCAwNDAwICIkd29ya19kaXIvbG9jYWwtbW91bnRzLmpzb24iCit9CittYWtlX2xvY2FsX21vdW50X2V2aWRlbmNlCitwcmludGYgJyVzXG4nICIkcmVzb3VyY2VfYm91bmRhcnlfanNvbiIgPiAiJHdvcmtfZGlyL3Jlc291cmNlLWJvdW5kYXJ5Lmpzb24iCitjaG1vZCAwNDAwICIkd29ya19kaXIvcmVzb3VyY2UtYm91bmRhcnkuanNvbiIKK3BvbGljeV9wYXRoPSIkd29ya19kaXIvcG9saWN5Lmpzb24iCitqcSAtUyAnLnBhdGNoX3BvbGljeScgIiRyZXF1ZXN0X3BhdGgiID4gIiRwb2xpY3lfcGF0aCIKK2NobW9kIDA0MDAgIiRwb2xpY3lfcGF0aCIKK3BvbGljeV9zaGEyNTY9IiQoc2hhMjU2X2ZpbGUgIiRwb2xpY3lfcGF0aCIpIgorcGF0Y2hfcGF0aF9iYXNlPSIkKGpxIC1lciAnLnBhdGhfYmFzZSAvLyAiIicgIiRwb2xpY3lfcGF0aCIpIgorY2FzZSAiJHBhdGNoX3BhdGhfYmFzZSIgaW4KKyAgICAnJ3xtb25vX3Jvb3RfdjEpIDs7CisgICAgKikgZGllICJ1bnN1cHBvcnRlZCBmcm96ZW4gcGF0Y2ggcGF0aCBiYXNlIiA7OworZXNhYworYnVpbGRlcl9pZGVudGl0eT0iJChzdWJtaXNzaW9uX2J1aWxkZXJfaWRlbnRpdHkpIiB8fCBkaWUgInRydXN0ZWQgYnVpbGRlciByZWxlYXNlIGlkZW50aXR5IGlzIHVuYXZhaWxhYmxlIgorYnVpbGRlcl9zaGEyNTY9IiQoanEgLWVyICcuYnVpbGRlcl9zaGEyNTYgfCBzZWxlY3QodGVzdCgiXlswLTlhLWZdezY0fSQiKSknIDw8PCIkYnVpbGRlcl9pZGVudGl0eSIpIgorcGF0Y2hfdmFsaWRhdG9yX3NoYTI1Nj0iJChqcSAtZXIgJy5wYXRjaF92YWxpZGF0b3Jfc2hhMjU2IHwgc2VsZWN0KHRlc3QoIl5bMC05YS1mXXs2NH0kIikpJyA8PDwiJGJ1aWxkZXJfaWRlbnRpdHkiKSIKK3ByaW50ZiAnJXNcbicgIiRidWlsZGVyX2lkZW50aXR5IiA+ICIkd29ya19kaXIvYnVpbGRlci1pZGVudGl0eS5qc29uIgorY2htb2QgMDQwMCAiJHdvcmtfZGlyL2J1aWxkZXItaWRlbnRpdHkuanNvbiIKK2Jhc2VfaW1hZ2VfaWQ9IiQoZXZhbHVhdGlvbl9kb2NrZXIgaW1hZ2UgaW5zcGVjdCAtLWZvcm1hdCAne3suSWR9fScgIiRiYXNlX2ltYWdlIikiIHx8IGRpZSAiYmFzZSBpbWFnZSBpcyB1bmF2YWlsYWJsZSBvZmZsaW5lIgorWyAiJGJhc2VfaW1hZ2VfaWQiID0gIiRiYXNlX2ltYWdlIiBdIHx8IGRpZSAiYmFzZSBpbWFnZSBpZCBkb2VzIG5vdCBtYXRjaCBmcm96ZW4gZGlnZXN0IgorZG9ja2VyX2lkX21hcF9qc29uPSIkKCRET0NLRVJfSURfTUFQIC0taW1hZ2UgIiRiYXNlX2ltYWdlX2lkIiAtLXVpZCA2NTUzMiAtLWdpZCA2NTUzMikiIHx8CisgICAgZGllICJjb3VsZCBub3QgcmVzb2x2ZSB0aGUgbGl2ZSBEb2NrZXIgdXNlci1uYW1lc3BhY2UgbWFwIgoranEgLWUgLS1hcmcgaW1hZ2VfaWQgIiRiYXNlX2ltYWdlX2lkIiBcCisgICAgJy5zY2hlbWEgPT0gMSBhbmQgLmtpbmQgPT0gInNpbS1sYXRlbmN5LWRvY2tlci1pZC1tYXAiIGFuZAorICAgICAuaW1hZ2VfaWQgPT0gJGltYWdlX2lkIGFuZCAuY29udGFpbmVyX3VpZCA9PSA2NTUzMiBhbmQgLmNvbnRhaW5lcl9naWQgPT0gNjU1MzIgYW5kCisgICAgICguaG9zdF91aWQgfCB0eXBlID09ICJudW1iZXIiIGFuZCAuID49IDApIGFuZAorICAgICAoLmhvc3RfZ2lkIHwgdHlwZSA9PSAibnVtYmVyIiBhbmQgLiA+PSAwKSBhbmQKKyAgICAgKC5yb290X2hvc3RfdWlkIHwgdHlwZSA9PSAibnVtYmVyIiBhbmQgLiA+PSAwKSBhbmQKKyAgICAgKC5yb290X2hvc3RfZ2lkIHwgdHlwZSA9PSAibnVtYmVyIiBhbmQgLiA+PSAwKSBhbmQKKyAgICAgKC51aWRfbWFwX3NoYTI1NiB8IHRlc3QoIl5bMC05YS1mXXs2NH0kIikpIGFuZAorICAgICAoLmdpZF9tYXBfc2hhMjU2IHwgdGVzdCgiXlswLTlhLWZdezY0fSQiKSkgYW5kCisgICAgICgucmVtYXBwZWQgfCB0eXBlID09ICJib29sZWFuIikgYW5kICguZGFlbW9uX3NlY3VyaXR5X29wdGlvbnMgfCB0eXBlID09ICJhcnJheSIpJyBcCisgICAgPDw8IiRkb2NrZXJfaWRfbWFwX2pzb24iID4vZGV2L251bGwgfHwgZGllICJEb2NrZXIgaWQtbWFwIGV2aWRlbmNlIGlzIGludmFsaWQiCitjb250YWluZXJfaG9zdF91aWQ9IiQoanEgLWVyICcuaG9zdF91aWQnIDw8PCIkZG9ja2VyX2lkX21hcF9qc29uIikiCitjb250YWluZXJfaG9zdF9naWQ9IiQoanEgLWVyICcuaG9zdF9naWQnIDw8PCIkZG9ja2VyX2lkX21hcF9qc29uIikiCitwcmludGYgJyVzXG4nICIkZG9ja2VyX2lkX21hcF9qc29uIiA+ICIkd29ya19kaXIvZG9ja2VyLWlkLW1hcC5qc29uIgorY2htb2QgMDQwMCAiJHdvcmtfZGlyL2RvY2tlci1pZC1tYXAuanNvbiIKK2V2YWx1YXRpb25fc2VhbGVkX2NvcHkgIiRjb250YWluZXJfaG9zdF91aWQiICIkY29udGFpbmVyX2hvc3RfZ2lkIiBcCisgICAgIiRwcm92aWRlcnNfcGF0aCIgIiR3b3JrX2Rpci9pbnB1dC9wcm92aWRlcnMueW1sIgorZXZhbHVhdGlvbl9zZWFsZWRfY29weSAiJGNvbnRhaW5lcl9ob3N0X3VpZCIgIiRjb250YWluZXJfaG9zdF9naWQiIFwKKyAgICAiJHByb3ZpZGVyc19wYXRoIiAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dC9wcm92aWRlcnMueW1sIgoraWYgW1sgIiRzdWJldmFsdWF0aW9uX3Njb3BlZCIgPSB0cnVlIF1dOyB0aGVuCisgICAgY2htb2QgMDc1NSAiJHdvcmtfZGlyL2lucHV0IiAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dCIKK2Vsc2UKKyAgICBzdWRvIC1uIGNob3duICIkY29udGFpbmVyX2hvc3RfdWlkOiRjb250YWluZXJfaG9zdF9naWQiICIkd29ya19kaXIvaW5wdXQiICIkd29ya19kaXIvc2NvcmVyLWlucHV0IgorICAgIHN1ZG8gLW4gY2htb2QgMDUwMCAiJHdvcmtfZGlyL2lucHV0IiAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dCIKK2ZpCisKK2Jhc2VfYnVpbGRfcmVmPSJ1cm5ldHdvcmsvc2ltLWxhdGVuY3ktZXZhbHVhdG9yLWJhc2UtaWQ6JHtiYXNlX2ltYWdlX2lkI3NoYTI1Njp9IgoraWYgZXZhbHVhdGlvbl9kb2NrZXIgaW1hZ2UgaW5zcGVjdCAiJGJhc2VfYnVpbGRfcmVmIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICBbICIkKGV2YWx1YXRpb25fZG9ja2VyIGltYWdlIGluc3BlY3QgLS1mb3JtYXQgJ3t7LklkfX0nICIkYmFzZV9idWlsZF9yZWYiKSIgPSAiJGJhc2VfaW1hZ2VfaWQiIF0gfHwKKyAgICAgICAgZGllICJkYWVtb24tbG9jYWwgYmFzZSBhbGlhcyBwb2ludHMgYXQgdGhlIHdyb25nIGltYWdlIgorZWxzZQorICAgIGV2YWx1YXRpb25fZG9ja2VyIGltYWdlIHRhZyAiJGJhc2VfaW1hZ2VfaWQiICIkYmFzZV9idWlsZF9yZWYiCitmaQoraW1hZ2Vfa2V5PSIkKHByaW50ZiAnJXNcMDAwJXNcMDAwJXNcMDAwJXMnIFwKKyAgICAiJGJhc2VfaW1hZ2VfaWQiICIkcGF0Y2hfc2hhMjU2IiAiJHBvbGljeV9zaGEyNTYiICIkYnVpbGRlcl9zaGEyNTYiIHwgc2hhMjU2c3VtIHwgYXdrICd7cHJpbnQgJDF9JykiCitiYXNlX2lkZW50aXR5PSIkKGV2YWx1YXRpb25fZG9ja2VyIHJ1biAtLXJtIC0tbmV0d29yayBub25lIC0tcmVhZC1vbmx5IC0tY2FwLWRyb3AgQUxMIFwKKyAgICAtLXNlY3VyaXR5LW9wdCBuby1uZXctcHJpdmlsZWdlczp0cnVlICIke3N1YmV2YWx1YXRpb25fcHJvYmVfYXJnc1tAXX0iICIke3N1YmV2YWx1YXRpb25fZG9ja2VyX2FyZ3NbQF19IiAiJGJhc2VfaW1hZ2VfaWQiIGlkZW50aXR5KSIKK2pxIC1lIC0tYXJnIGJhc2Vfc2hhICIkYmFzZV9zaGEiIC0tYXJnIGVtcHR5X3BhdGNoICIkRU1QVFlfUEFUQ0hfU0hBMjU2IiAtLWFyZ2pzb24gc291cmNlX2Vwb2NoICIkc291cmNlX2Vwb2NoIiBcCisgICAgJy5zY2hlbWEgPT0gMSBhbmQgLmltYWdlX2tpbmQgPT0gImV2YWx1YXRvci1iYXNlIiBhbmQKKyAgICAgLmJhc2Vfc2hhID09ICRiYXNlX3NoYSBhbmQgLmJ1aWxkX3NoYSA9PSAkYmFzZV9zaGEgYW5kCisgICAgIC5zb3VyY2VfZXBvY2ggPT0gJHNvdXJjZV9lcG9jaCBhbmQKKyAgICAgLnBhdGNoX3NoYTI1NiA9PSAkZW1wdHlfcGF0Y2ggYW5kICguc2ltdWxhdG9yX3NoYTI1NiB8IHRlc3QoIl5bMC05YS1mXXs2NH0kIikpJyBcCisgICAgPDw8IiRiYXNlX2lkZW50aXR5IiA+L2Rldi9udWxsIHx8IGRpZSAiYmFzZSBpbWFnZSBpZGVudGl0eSBpcyBpbnZhbGlkIgorYmFzZV9zaW11bGF0b3Jfc2hhMjU2PSIkKGpxIC1lciAnLnNpbXVsYXRvcl9zaGEyNTYnIDw8PCIkYmFzZV9pZGVudGl0eSIpIgorcG9saWN5X3Njb3Jlcl9zaGEyNTY9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kuc2NvcmVyX3NoYTI1NicgIiRyZXF1ZXN0X3BhdGgiKSIKK3BvbGljeV9zaW11bGF0b3Jfc2hhMjU2PSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnNpbXVsYXRvcl9zaGEyNTYnICIkcmVxdWVzdF9wYXRoIikiCitbICIkcG9saWN5X3Njb3Jlcl9zaGEyNTYiID0gIiRiYXNlX3NpbXVsYXRvcl9zaGEyNTYiIF0gfHwgZGllICJmcm96ZW4gc2NvcmVyIGRpZ2VzdCBkb2VzIG5vdCBtYXRjaCBwcmlzdGluZSBpbWFnZSIKK1sgIiRwb2xpY3lfc2ltdWxhdG9yX3NoYTI1NiIgPSAiJGJhc2Vfc2ltdWxhdG9yX3NoYTI1NiIgXSB8fCBkaWUgImZyb3plbiBzaW11bGF0b3IgZGlnZXN0IGRvZXMgbm90IG1hdGNoIHByaXN0aW5lIGltYWdlIgoraWYgWyAtbiAiJGcyX3ZvbHVtZV9wb2xpY3kiIF07IHRoZW4KKyAgICBpbnN0cnVtZW50X3BvbGljeT0iJChldmFsdWF0aW9uX2RvY2tlciBydW4gLS1ybSAtLW5ldHdvcmsgbm9uZSAtLXJlYWQtb25seSAtLWNhcC1kcm9wIEFMTCBcCisgICAgICAgIC0tc2VjdXJpdHktb3B0IG5vLW5ldy1wcml2aWxlZ2VzOnRydWUgLS1jcHVzZXQtY3B1cyAiJG1hbmFnZW1lbnRfY3B1c2V0IiBcCisgICAgICAgIC0tbWVtb3J5ICIkU0NPUkVSX01FTU9SWV9MSU1JVCIgLS1tZW1vcnktc3dhcCAiJFNDT1JFUl9NRU1PUllfTElNSVQiIC0tcGlkcy1saW1pdCAiJFNDT1JFUl9QSURTX0xJTUlUIiBcCisgICAgICAgIC0tZW50cnlwb2ludCAvb3B0L3VybmV0d29yay9iaW4vc2ltLWxhdGVuY3kgIiR7c3ViZXZhbHVhdGlvbl9kb2NrZXJfYXJnc1tAXX0iICIkYmFzZV9pbWFnZV9pZCIgXAorICAgICAgICBzY29yZS1wb2xpY3kgLS1nMi12b2x1bWUtcG9saWN5ICIkZzJfdm9sdW1lX3BvbGljeSIgIiR7Y292ZXJhZ2VfcG9saWN5X2FyZ3NbQF19IikiIHx8IGRpZSAicHJpc3RpbmUgaW1hZ2UgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBmcm96ZW4gc2NvcmluZyBwb2xpY3kiCisgICAganEgLWUgLS1hcmcgcG9saWN5ICIkZzJfdm9sdW1lX3BvbGljeSIgLS1hcmcgdmVyc2lvbiAiJHNjb3Jlcl92ZXJzaW9uIiAtLWFyZ2pzb24gY292ZXJhZ2UgIiR3b3JrX2NvdmVyYWdlX3BvbGljeSIgXAorICAgICAgICAnLnNjb3JlX3NjaGVtYSA9PSAxIGFuZCAuZzJfdm9sdW1lX3BvbGljeSA9PSAkcG9saWN5IGFuZCAuc2NvcmVyX3ZlcnNpb24gPT0gJHZlcnNpb24gYW5kICgud29ya19jb3ZlcmFnZV9wb2xpY3kgLy8gbnVsbCkgPT0gJGNvdmVyYWdlJyBcCisgICAgICAgIDw8PCIkaW5zdHJ1bWVudF9wb2xpY3kiID4vZGV2L251bGwgfHwgZGllICJwcmlzdGluZSBzY29yaW5nIHBvbGljeSBpZGVudGl0eSBtaXNtYXRjaCIKK2ZpCisKKyMgRXZlcnkgYXR0ZW1wdCBnZXRzIGluZGVwZW5kZW50IGJhc2VsaW5lIGFuZCBjYW5kaWRhdGUgc291cmNlIGNoZWNrb3V0cy4gVGhleQorIyBhcmUgY29waWVkIGZyb20gdGhlIGF1dGhlbnRpY2F0ZWQgYmFzZSBpbWFnZSBpbnRvIHRoaXMgYXR0ZW1wdCdzIGJvdW5kZWQKKyMgdG1wZnMsIG5ldmVyIGZyb20gdGhlIEFQSS93b3JrZXIgcmVwb3NpdG9yeSB3b3JrdHJlZXMuIFRoZSBwcmVwYXJlciBjcmVhdGVzCisjIGEgbG9jYWwgc2ltLWxhdGVuY3kgYnJhbmNoIGF0IGVhY2ggc291cmNlLWxvY2sgY29tbWl0OyBvbmx5IHRoZSBjYW5kaWRhdGUKKyMgY2hlY2tvdXQgaXMgc3Vic2VxdWVudGx5IHBhdGNoZWQgYnkgdGhlIHRydXN0ZWQgYnVpbGRlci4KK2FjdGl2ZV9zb3VyY2Vfcm9vdD0iJChta3RlbXAgLWQgIiR3b3JrX2Rpci9ldmFsdWF0aW9uLXNvdXJjZXMuWFhYWFhYWFgiKSIKK2Jhc2VsaW5lX3NvdXJjZV9yb290PSIkYWN0aXZlX3NvdXJjZV9yb290L2Jhc2VsaW5lIgorY2FuZGlkYXRlX3NvdXJjZV9yb290PSIkYWN0aXZlX3NvdXJjZV9yb290L2NhbmRpZGF0ZSIKK2Jhc2VsaW5lX3NvdXJjZV9pZGVudGl0eT0iJCgkUFJFUEFSRV9FVkFMVUFUSU9OX1NPVVJDRSBcCisgICAgIiR7c291cmNlX21vZGVfYXJnc1tAXX0iIC0tYmFzZS1pbWFnZSAiJGJhc2VfaW1hZ2VfaWQiIC0tZGVzdGluYXRpb24gIiRiYXNlbGluZV9zb3VyY2Vfcm9vdCIpIiB8fAorICAgIGRpZSAiY291bGQgbm90IHByZXBhcmUgdGhlIHRlbXBvcmFyeSBiYXNlbGluZSBzb3VyY2UgY2hlY2tvdXQiCitjYW5kaWRhdGVfc291cmNlX2lkZW50aXR5PSIkKCRQUkVQQVJFX0VWQUxVQVRJT05fU09VUkNFIFwKKyAgICAiJHtzb3VyY2VfbW9kZV9hcmdzW0BdfSIgLS1iYXNlLWltYWdlICIkYmFzZV9pbWFnZV9pZCIgLS1kZXN0aW5hdGlvbiAiJGNhbmRpZGF0ZV9zb3VyY2Vfcm9vdCIpIiB8fAorICAgIGRpZSAiY291bGQgbm90IHByZXBhcmUgdGhlIHRlbXBvcmFyeSBjYW5kaWRhdGUgc291cmNlIGNoZWNrb3V0IgorY2FuZGlkYXRlX29yaWdpbmFsX3NvdXJjZV9pZGVudGl0eV9zaGEyNTY9IiQoc2hhMjU2X2ZpbGUgIiRjYW5kaWRhdGVfc291cmNlX3Jvb3QvLmV2YWx1YXRpb24tc291cmNlLmpzb24iKSIKK2luc3RhbGwgLW0gMDQwMCAiJGNhbmRpZGF0ZV9zb3VyY2Vfcm9vdC8uZXZhbHVhdGlvbi1zb3VyY2UuanNvbiIgIiR3b3JrX2Rpci9jYW5kaWRhdGUtb3JpZ2luYWwtc291cmNlLmpzb24iCitmb3IgcHJlcGFyZWRfaWRlbnRpdHkgaW4gIiRiYXNlbGluZV9zb3VyY2VfaWRlbnRpdHkiICIkY2FuZGlkYXRlX3NvdXJjZV9pZGVudGl0eSI7IGRvCisgICAgdmFsaWRhdGVfcHJlcGFyZWRfc291cmNlX2lkZW50aXR5ICIkcHJlcGFyZWRfaWRlbnRpdHkiIHx8IGRpZSAidGVtcG9yYXJ5IGV2YWx1YXRpb24gc291cmNlIGlkZW50aXR5IG9yIGltYWdlIGNhcGFiaWxpdHkgaXMgaW52YWxpZCIKK2RvbmUKK3NvdXJjZV9ldmlkZW5jZV9wYXRoPSIkd29ya19kaXIvZXZhbHVhdGlvbi1zb3VyY2VzLmpzb24iCit3cml0ZV9zb3VyY2VfZXZpZGVuY2UoKSB7CisgICAgbG9jYWwgY2xlYW51cF9jb21wbGV0ZT0iJDEiCisgICAgbG9jYWwgcGVuZGluZz0iJHtzb3VyY2VfZXZpZGVuY2VfcGF0aH0ubmV3IgorICAgIGpxIC1uUyBcCisgICAgICAgIC0tYXJnanNvbiBiYXNlbGluZSAiJChqcSAtYyAuICIkYmFzZWxpbmVfc291cmNlX3Jvb3QvLmV2YWx1YXRpb24tc291cmNlLmpzb24iKSIgXAorICAgICAgICAtLWFyZ2pzb24gY2FuZGlkYXRlICIkKGpxIC1jIC4gIiRjYW5kaWRhdGVfc291cmNlX3Jvb3QvLmV2YWx1YXRpb24tc291cmNlLmpzb24iKSIgXAorICAgICAgICAtLWFyZ2pzb24gY2xlYW51cF9jb21wbGV0ZSAiJGNsZWFudXBfY29tcGxldGUiIFwKKyAgICAgICAgJ3tzY2hlbWE6MSxraW5kOiJzaW0tbGF0ZW5jeS10ZW1wb3JhcnktZXZhbHVhdGlvbi1zb3VyY2VzIiwKKyAgICAgICAgICBvcmlnaW46ImF1dGhlbnRpY2F0ZWRfZXZhbHVhdG9yX2ltYWdlIixob3N0X3JlcG9zaXRvcmllc191c2VkOmZhbHNlLAorICAgICAgICAgIHJ1bnRpbWVfdGFyZ2V0OiIvd29ya3NwYWNlIixyZWFkX29ubHlfbW91bnQ6dHJ1ZSwKKyAgICAgICAgICBiYXNlbGluZTokYmFzZWxpbmUsY2FuZGlkYXRlOiRjYW5kaWRhdGUsCisgICAgICAgICAgY2xlYW51cF9jb21wbGV0ZTokY2xlYW51cF9jb21wbGV0ZX0nID4gIiRwZW5kaW5nIgorICAgIGNobW9kIDA0MDAgIiRwZW5kaW5nIgorICAgIG12IC1mIC0tICIkcGVuZGluZyIgIiRzb3VyY2VfZXZpZGVuY2VfcGF0aCIKK30KK3dyaXRlX3NvdXJjZV9ldmlkZW5jZSBmYWxzZQorCitrZXJuZWxfcmVsZWFzZT0iJCh1bmFtZSAtcikiCittaWNyb2NvZGVfcmV2aXNpb249IiQoYXdrIC1GOiAnJDEgfiAvXm1pY3JvY29kZS8ge2dzdWIoL1tbOnNwYWNlOl1dLywgIiIsICQyKTsgcHJpbnQgJDJ9JyAvcHJvYy9jcHVpbmZvIHwgc29ydCAtdSB8IHBhc3RlIC1zZCwgLSkiCitbIC1uICIkbWljcm9jb2RlX3JldmlzaW9uIiBdIHx8IGRpZSAibWljcm9jb2RlIGlkZW50aXR5IGlzIHVuYXZhaWxhYmxlIgoraGFyZHdhcmVfaWQ9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kuaGFyZHdhcmVfaWQnICIkcmVxdWVzdF9wYXRoIikiCitxdWFsaWZpY2F0aW9uX3NoYTI1Nj0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5ob3N0X3F1YWxpZmljYXRpb25fc2hhMjU2JyAiJHJlcXVlc3RfcGF0aCIpIgorW1sgIiRxdWFsaWZpY2F0aW9uX3NoYTI1NiIgPX4gXlswLTlhLWZdezY0fSQgXV0gfHwgZGllICJxdWFsaWZpY2F0aW9uIGRpZ2VzdCBpcyBpbnZhbGlkIgorCitkdXJhdGlvbl9tcz0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5kdXJhdGlvbl9tcycgIiRyZXF1ZXN0X3BhdGgiKSIKK3JlcXVlc3RfdGltZW91dF9tcz0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5yZXF1ZXN0X3RpbWVvdXRfbXMnICIkcmVxdWVzdF9wYXRoIikiCityYW1wX21zPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnJhbXBfbXMnICIkcmVxdWVzdF9wYXRoIikiCitwcmV3YXJtX21zPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnByZXdhcm1fbXMnICIkcmVxdWVzdF9wYXRoIikiCitzZXR0bGVfbXM9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kuc2V0dGxlX21zJyAiJHJlcXVlc3RfcGF0aCIpIgorY2xpZW50X3dhcm11cF90aW1lb3V0X21zPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LmNsaWVudF93YXJtdXBfdGltZW91dF9tcycgIiRyZXF1ZXN0X3BhdGgiKSIKK3BpcGVsaW5lX2ludGVydmFsX21zPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnBpcGVsaW5lX2ludGVydmFsX21zJyAiJHJlcXVlc3RfcGF0aCIpIgordGVzdF90aW1lb3V0X21zPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnRlc3RfdGltZW91dF9tcycgIiRyZXF1ZXN0X3BhdGgiKSIKK2Fubm91bmNlX3RpbWVvdXRfbXM9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kuYW5ub3VuY2VfdGltZW91dF9tcycgIiRyZXF1ZXN0X3BhdGgiKSIKK2ZsZWV0X3NoYXJkcz0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5mbGVldF9zaGFyZHMnICIkcmVxdWVzdF9wYXRoIikiCitleGNoYW5nZV9ob3N0cz0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5leGNoYW5nZV9ob3N0cycgIiRyZXF1ZXN0X3BhdGgiKSIKK3NpdGVfbGlzdGVuPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnNpdGVfbGlzdGVuJyAiJHJlcXVlc3RfcGF0aCIpIgorYXBpX3BvcnQ9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kuYXBpX3BvcnQnICIkcmVxdWVzdF9wYXRoIikiCitpbXBhaXJtZW50X2VuYWJsZWQ9IiQoanEgLXIgJy5ldmFsdWF0aW9uX3BvbGljeS5pbXBhaXJtZW50X2VuYWJsZWQnICIkcmVxdWVzdF9wYXRoIikiCisjIEpTT04gemVybyBpcyBudW1lcmljOyB0aGUgaW1tdXRhYmxlIG9mZmljaWFsIHJ1bm5lciByZXF1aXJlcyBkZWNpbWFsIHRleHQuCit0YWtlb3Zlcl9tYXJnaW49IiQoanEgLWVyIC0tYXJnanNvbiBzdGFnaW5nICIkc3RhZ2luZyIgJworICAgIC5ldmFsdWF0aW9uX3BvbGljeS50YWtlb3Zlcl9tYXJnaW4gfCBzZWxlY3QodHlwZSA9PSAibnVtYmVyIikgfAorICAgIGlmICRzdGFnaW5nIHRoZW4gc2VsZWN0KC4gPT0gMCkgfCAiMC4wIgorICAgIGVsc2Ugc2VsZWN0KC4gPiAwIGFuZCAuIDw9IDAuNSkgZW5kCisgICAgJyAiJHJlcXVlc3RfcGF0aCIpIiB8fCBkaWUgInRha2VvdmVyIG1hcmdpbiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwbGljaXQgZXZhbHVhdGlvbiBtb2RlIgorcXVldWVfbGltaXQ9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kucXVldWVfbGltaXQnICIkcmVxdWVzdF9wYXRoIikiCitzY29yZV90aW1lb3V0X3NlY29uZHM9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kuc2NvcmVfdGltZW91dF9zZWNvbmRzJyAiJHJlcXVlc3RfcGF0aCIpIgorZm9yIG51bWVyaWMgaW4gY2xpZW50X3dhcm11cF90aW1lb3V0X21zIGR1cmF0aW9uX21zIHJlcXVlc3RfdGltZW91dF9tcyBwaXBlbGluZV9pbnRlcnZhbF9tcyB0ZXN0X3RpbWVvdXRfbXMgYW5ub3VuY2VfdGltZW91dF9tcyBleGNoYW5nZV9ob3N0cyBhcGlfcG9ydCBzY29yZV90aW1lb3V0X3NlY29uZHM7IGRvCisgICAgW1sgIiR7IW51bWVyaWN9IiA9fiBeWzEtOV1bMC05XSokIF1dIHx8IGRpZSAiaW52YWxpZCBwb3NpdGl2ZSBwb2xpY3kgZmllbGQ6ICRudW1lcmljIgorZG9uZQorZm9yIG51bWVyaWMgaW4gcmFtcF9tcyBwcmV3YXJtX21zIHNldHRsZV9tcyBmbGVldF9zaGFyZHM7IGRvCisgICAgW1sgIiR7IW51bWVyaWN9IiA9fiBeWzAtOV0rJCBdXSB8fCBkaWUgImludmFsaWQgbm9ubmVnYXRpdmUgcG9saWN5IGZpZWxkOiAkbnVtZXJpYyIKK2RvbmUKK1sgIiRpbXBhaXJtZW50X2VuYWJsZWQiID0gdHJ1ZSBdIHx8IFsgIiRpbXBhaXJtZW50X2VuYWJsZWQiID0gZmFsc2UgXSB8fCBkaWUgImltcGFpcm1lbnQgcG9saWN5IGlzIGludmFsaWQiCitbICIkcXVldWVfbGltaXQiIC1lcSAwIF0gfHwgZGllICJxdWV1ZSBsaW1pdCBpcyBub3QgdGhlIGZyb3plbiB1bmJvdW5kZWQgc2VudGluZWwiCitpZiBbICIkaW1wYWlybWVudF9lbmFibGVkIiA9IHRydWUgXTsgdGhlbiBub19pbXBhaXI9bm87IGVsc2Ugbm9faW1wYWlyPXllczsgZmkKK3dhbGxfdGltZW91dF9zZWNvbmRzPSIkKAorICAgICIkVElNRU9VVF9CVURHRVQiIHN0YWdlIFwKKyAgICAgICAgIiRyYW1wX21zIiAiJHNldHRsZV9tcyIgIiRjbGllbnRfd2FybXVwX3RpbWVvdXRfbXMiICIkZHVyYXRpb25fbXMiICIkcmVxdWVzdF90aW1lb3V0X21zIgorKSIgfHwgZGllICJjb3VsZCBub3QgY2FsY3VsYXRlIHRoZSBzdGFnZSB0aW1lb3V0IGJ1ZGdldCIKK1sgIiRzY29yZV90aW1lb3V0X3NlY29uZHMiIC1lcSAxMDgwMCBdIHx8IGRpZSAic2NvcmUgdGltZW91dCBpcyBub3QgdGhlIGZyb3plbiB0aHJlZS1ob3VyIHN1Ym1pc3Npb24gbGltaXQiCisKK2NvbXBvc2Vfd2l0aCgpIHsKKyAgICBsb2NhbCBwcm9qZWN0PSIkMSIgZW52X2ZpbGU9IiQyIgorICAgIHNoaWZ0IDIKKyAgICBldmFsdWF0aW9uX2RvY2tlciBjb21wb3NlIC0tZW52LWZpbGUgIiRlbnZfZmlsZSIgLS1maWxlICIkQ09NUE9TRV9GSUxFIiBcCisgICAgICAgICIke3N1YmV2YWx1YXRpb25fY29tcG9zZV9hcmdzW0BdfSIgLS1wcm9qZWN0LW5hbWUgIiRwcm9qZWN0IiAiJEAiCit9CisKK25ld19zZWNyZXQoKSB7CisgICAgb3BlbnNzbCByYW5kIC1oZXggMzIKK30KKword3JpdGVfcnVubmVyX2VudigpIHsKKyAgICBsb2NhbCBwYXRoPSIkMSIgZXZhbHVhdGlvbl9pZD0iJDIiIGJ1aWxkX3NoYT0iJDMiIHNpbXVsYXRvcl9zaGE9IiQ0IiBpbWFnZV9pZD0iJDUiIGNhbmRpZGF0ZV9wYXRjaF9zaGE9IiQ2IgorICAgIGxvY2FsIHBlbmRpbmc9IiR7cGF0aH0ubmV3IgorICAgIFsgISAtZSAiJHBlbmRpbmciIF0gfHwgZGllICJwZW5kaW5nIHJ1bm5lciBlbnZpcm9ubWVudCBhbHJlYWR5IGV4aXN0cyIKKyAgICBwcmludGYgJyVzXG4nIFwKKyAgICAgICAgIkVWQUxVQVRJT05fREJfUEFTU1dPUkQ9JHN0YWdlX2RiX3Bhc3N3b3JkIiBcCisgICAgICAgICJFVkFMVUFUSU9OX1JFRElTX1BBU1NXT1JEPSRzdGFnZV9yZWRpc19wYXNzd29yZCIgXAorICAgICAgICAiQVBFWF9CQVNFX1NIQT0kYmFzZV9zaGEiIFwKKyAgICAgICAgIkFQRVhfQlVJTERfU0hBPSRidWlsZF9zaGEiIFwKKyAgICAgICAgJ0FQRVhfU0NPUkVSX0JJTj0vb3B0L3VybmV0d29yay9iaW4vc2ltLWxhdGVuY3knIFwKKyAgICAgICAgIkFQRVhfU0NPUkVSX1NIQTI1Nj0kc2ltdWxhdG9yX3NoYSIgXAorICAgICAgICAnQVBFWF9TSU1fQklOPS9vcHQvdXJuZXR3b3JrL2Jpbi9zaW0tbGF0ZW5jeScgXAorICAgICAgICAiQVBFWF9TSU1fU0hBMjU2PSRzaW11bGF0b3Jfc2hhIiBcCisgICAgICAgICdBUEVYX1BST1ZJREVSU19GSUxFPS9pbnB1dC9wcm92aWRlcnMueW1sJyBcCisgICAgICAgICJBUEVYX1BST1ZJREVSU19TSEEyNTY9JHByb3ZpZGVyc19zaGEyNTYiIFwKKyAgICAgICAgJ0FQRVhfQVJUSUZBQ1RfUk9PVD0vYXJ0aWZhY3RzJyBcCisgICAgICAgICJBUEVYX0VWQUxVQVRJT05fSUQ9JGV2YWx1YXRpb25faWQiIFwKKyAgICAgICAgIkFQRVhfRVBPQ0g9JHNvdXJjZV9lcG9jaCIgXAorICAgICAgICAiQVBFWF9BUElfSU1BR0VfRElHRVNUPSRpbWFnZV9pZCIgXAorICAgICAgICAiQVBFWF9IQVJEV0FSRV9JRD0kaGFyZHdhcmVfaWQiIFwKKyAgICAgICAgIkFQRVhfSE9TVF9RVUFMSUZJQ0FUSU9OX1NIQTI1Nj0kcXVhbGlmaWNhdGlvbl9zaGEyNTYiIFwKKyAgICAgICAgIkFQRVhfS0VSTkVMX1JFTEVBU0U9JGtlcm5lbF9yZWxlYXNlIiBcCisgICAgICAgICJBUEVYX01JQ1JPQ09ERV9SRVZJU0lPTj0kbWljcm9jb2RlX3JldmlzaW9uIiBcCisgICAgICAgICdBUEVYX1BBVENIX0ZJTEU9L29wdC91cm5ldHdvcmsvc3VibWlzc2lvbi9jYW5vbmljYWwucGF0Y2gnIFwKKyAgICAgICAgIkFQRVhfUEFUQ0hfU0hBMjU2PSRjYW5kaWRhdGVfcGF0Y2hfc2hhIiBcCisgICAgICAgICJBUEVYX0NQVV9DT1VOVD0kZXZhbHVhdGlvbl9jcHVfY291bnQiIFwKKyAgICAgICAgIkFQRVhfRFVSQVRJT049JHtkdXJhdGlvbl9tc31tcyIgXAorICAgICAgICAiQVBFWF9SRVFVRVNUX1RJTUVPVVQ9JHtyZXF1ZXN0X3RpbWVvdXRfbXN9bXMiIFwKKyAgICAgICAgIkFQRVhfUkFNUD0ke3JhbXBfbXN9bXMiIFwKKyAgICAgICAgIkFQRVhfUFJFV0FSTT0ke3ByZXdhcm1fbXN9bXMiIFwKKyAgICAgICAgIkFQRVhfU0VUVExFPSR7c2V0dGxlX21zfW1zIiBcCisgICAgICAgICJBUEVYX0NMSUVOVF9XQVJNVVBfVElNRU9VVD0ke2NsaWVudF93YXJtdXBfdGltZW91dF9tc31tcyIgXAorICAgICAgICAiQVBFWF9GTEVFVF9TSEFSRFM9JGZsZWV0X3NoYXJkcyIgXAorICAgICAgICAiQVBFWF9IT1NUUz0kZXhjaGFuZ2VfaG9zdHMiIFwKKyAgICAgICAgIkFQRVhfUElQRUxJTkVfSU5URVJWQUw9JHtwaXBlbGluZV9pbnRlcnZhbF9tc31tcyIgXAorICAgICAgICAiQVBFWF9URVNUX1RJTUVPVVQ9JHt0ZXN0X3RpbWVvdXRfbXN9bXMiIFwKKyAgICAgICAgIkFQRVhfQU5OT1VOQ0VfVElNRU9VVD0ke2Fubm91bmNlX3RpbWVvdXRfbXN9bXMiIFwKKyAgICAgICAgIkFQRVhfU0lURV9MSVNURU49JHNpdGVfbGlzdGVuIiBcCisgICAgICAgICJBUEVYX0FQSV9QT1JUPSRhcGlfcG9ydCIgXAorICAgICAgICAiQVBFWF9OT19JTVBBSVI9JG5vX2ltcGFpciIgXAorICAgICAgICAiQVBFWF9XQUxMX1RJTUVPVVQ9JHt3YWxsX3RpbWVvdXRfc2Vjb25kc31zIiBcCisgICAgICAgICdBUEVYX0tJTExfQUZURVI9MzBzJyBcCisgICAgICAgICdBUEVYX0NBTElCUkFUSU9OX0FDQ0VQVEVEPXllcycgXAorICAgICAgICA+ICIkcGVuZGluZyIKKyAgICBpZiBbIC1uICIkZzJfdm9sdW1lX3BvbGljeSIgXTsgdGhlbgorICAgICAgICBwcmludGYgJyVzXG4nICJBUEVYX0cyX1ZPTFVNRV9QT0xJQ1k9JGcyX3ZvbHVtZV9wb2xpY3kiID4+ICIkcGVuZGluZyIKKyAgICBmaQorICAgIGlmIFsgIiR3b3JrX2NvdmVyYWdlX3BvbGljeSIgIT0gbnVsbCBdOyB0aGVuCisgICAgICAgIHByaW50ZiAnJXNcbicgIkFQRVhfV09SS19DT1ZFUkFHRV9QT0xJQ1lfSlNPTj0kd29ya19jb3ZlcmFnZV9wb2xpY3kiID4+ICIkcGVuZGluZyIKKyAgICBmaQorICAgIGNobW9kIDA0MDAgIiRwZW5kaW5nIgorICAgIG12IC1mIC0tICIkcGVuZGluZyIgIiRwYXRoIgorfQorCit3cml0ZV9jb21wb3NlX2VudigpIHsKKyAgICBsb2NhbCBwYXRoPSIkMSIgcHJvamVjdD0iJDIiIHN0YWdlPSIkMyIgaW1hZ2U9IiQ0IiBydW5uZXJfZW52PSIkNSIgaW5wdXQ9IiQ2IiBvdXRwdXQ9IiQ3IiBjZ3JvdXBfcGFyZW50PSIkOCIgc291cmNlPSIkOSIKKyAgICBsb2NhbCBwZW5kaW5nPSIke3BhdGh9Lm5ldyIKKyAgICBbICEgLWUgIiRwZW5kaW5nIiBdIHx8IGRpZSAicGVuZGluZyBDb21wb3NlIGVudmlyb25tZW50IGFscmVhZHkgZXhpc3RzIgorICAgIHByaW50ZiAnJXNcbicgXAorICAgICAgICAiQ09NUE9TRV9QUk9KRUNUX05BTUU9JHByb2plY3QiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fSk9CX0lEPSRqb2JfaWQiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fUk9VTkRfSUQ9JHJvdW5kX2lkIiBcCisgICAgICAgICJFVkFMVUFUSU9OX1NUQUdFPSRzdGFnZSIgXAorICAgICAgICAnRVZBTFVBVElPTl9BQ1RJT049cnVuJyBcCisgICAgICAgICJFVkFMVUFUSU9OX0NHUk9VUF9QQVJFTlQ9JGNncm91cF9wYXJlbnQiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fQ1BVU0VUPSRjcHVzZXQiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fSU1BR0U9JGltYWdlIiBcCisgICAgICAgICJFVkFMVUFUT1JfQkFTRV9JTUFHRT0kYmFzZV9pbWFnZV9pZCIgXAorICAgICAgICAiRVZBTFVBVElPTl9FTlZfRklMRT0kcnVubmVyX2VudiIgXAorICAgICAgICAiRVZBTFVBVElPTl9TT1VSQ0VfRElSPSRzb3VyY2UiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fQ09ORklHX0xPQ0FMX0RJUj0kY29uZmlnX2xvY2FsX2RpcmVjdG9yeSIgXAorICAgICAgICAiRVZBTFVBVElPTl9WQVVMVF9MT0NBTF9ESVI9JHZhdWx0X2xvY2FsX2RpcmVjdG9yeSIgXAorICAgICAgICAiRVZBTFVBVElPTl9JTlBVVF9ESVI9JGlucHV0IiBcCisgICAgICAgICJFVkFMVUFUSU9OX09VVFBVVF9ESVI9JG91dHB1dCIgXAorICAgICAgICAiRVZBTFVBVElPTl9QT1NUR1JFU19JTklUPSRQT1NUR1JFU19JTklUIiBcCisgICAgICAgICJSVU5ORVJfTUVNT1JZX0xJTUlUPSRSVU5ORVJfTUVNT1JZX0xJTUlUIiBcCisgICAgICAgICJSVU5ORVJfUElEU19MSU1JVD0kUlVOTkVSX1BJRFNfTElNSVQiIFwKKyAgICAgICAgIlJVTk5FUl9UTVBfTElNSVQ9JFJVTk5FUl9UTVBfTElNSVQiIFwKKyAgICAgICAgIlJVTk5FUl9XT1JLX0xJTUlUPSRSVU5ORVJfV09SS19MSU1JVCIgXAorICAgICAgICAiTUlHUkFUT1JfTUVNT1JZX0xJTUlUPSRNSUdSQVRPUl9NRU1PUllfTElNSVQiIFwKKyAgICAgICAgIk1JR1JBVE9SX1BJRFNfTElNSVQ9JE1JR1JBVE9SX1BJRFNfTElNSVQiIFwKKyAgICAgICAgIk1JR1JBVE9SX1RNUF9MSU1JVD0kTUlHUkFUT1JfVE1QX0xJTUlUIiBcCisgICAgICAgICJQT1NUR1JFU19NRU1PUllfTElNSVQ9JFBPU1RHUkVTX01FTU9SWV9MSU1JVCIgXAorICAgICAgICAiUE9TVEdSRVNfUElEU19MSU1JVD0kUE9TVEdSRVNfUElEU19MSU1JVCIgXAorICAgICAgICAiUE9TVEdSRVNfREFUQV9MSU1JVD0kUE9TVEdSRVNfREFUQV9MSU1JVCIgXAorICAgICAgICAiUE9TVEdSRVNfTUFYX0NPTk5FQ1RJT05TPSRQT1NUR1JFU19NQVhfQ09OTkVDVElPTlMiIFwKKyAgICAgICAgIlBPU1RHUkVTX1NIQVJFRF9CVUZGRVJTPSRQT1NUR1JFU19TSEFSRURfQlVGRkVSUyIgXAorICAgICAgICAiUkVESVNfTUVNT1JZX0xJTUlUPSRSRURJU19NRU1PUllfTElNSVQiIFwKKyAgICAgICAgIlJFRElTX1BJRFNfTElNSVQ9JFJFRElTX1BJRFNfTElNSVQiIFwKKyAgICAgICAgIlJFRElTX0RBVEFfTElNSVQ9JFJFRElTX0RBVEFfTElNSVQiIFwKKyAgICAgICAgIlJFRElTX01BWF9DTElFTlRTPSRSRURJU19NQVhfQ0xJRU5UUyIgXAorICAgICAgICAiUkVESVNfVENQX0JBQ0tMT0c9JFJFRElTX1RDUF9CQUNLTE9HIiBcCisgICAgICAgICJTQ09SRVJfTUVNT1JZX0xJTUlUPSRTQ09SRVJfTUVNT1JZX0xJTUlUIiBcCisgICAgICAgICJTQ09SRVJfUElEU19MSU1JVD0kU0NPUkVSX1BJRFNfTElNSVQiIFwKKyAgICAgICAgIlNDT1JFUl9UTVBfTElNSVQ9JFNDT1JFUl9UTVBfTElNSVQiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fTk9GSUxFPSRFVkFMVUFUSU9OX05PRklMRSIgXAorICAgICAgICAnRVZBTFVBVElPTl9EQl9VU0VSPWJyaW5neW91cicgXAorICAgICAgICAiRVZBTFVBVElPTl9EQl9BRE1JTl9QQVNTV09SRD0kc3RhZ2VfZGJfYWRtaW5fcGFzc3dvcmQiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fREJfUEFTU1dPUkQ9JHN0YWdlX2RiX3Bhc3N3b3JkIiBcCisgICAgICAgICdFVkFMVUFUSU9OX0RCX05BTUU9YnJpbmd5b3VyJyBcCisgICAgICAgICJFVkFMVUFUSU9OX1JFRElTX1BBU1NXT1JEPSRzdGFnZV9yZWRpc19wYXNzd29yZCIgXAorICAgICAgICAnRVZBTFVBVElPTl9EQl9NSU5fQ09OTkVDVElPTlM9NCcgXAorICAgICAgICAnRVZBTFVBVElPTl9EQl9NQVhfQ09OTkVDVElPTlM9MzInIFwKKyAgICAgICAgJ0VWQUxVQVRJT05fUkVESVNfTUlOX0NPTk5FQ1RJT05TPTQnIFwKKyAgICAgICAgJ0VWQUxVQVRJT05fUkVESVNfTUFYX0NPTk5FQ1RJT05TPTMyJyBcCisgICAgICAgID4gIiRwZW5kaW5nIgorICAgIGlmIFtbICIke3N1YmV2YWx1YXRpb25fc2NvcGVkOi1mYWxzZX0iID0gdHJ1ZSBdXTsgdGhlbgorICAgICAgICBwcmludGYgJyVzXG4nICJVUk5FVFdPUktfU1VCRVZBTFVBVElPTl9SVU5fSUQ9JHN1YmV2YWx1YXRpb25fcnVuX2lkIiA+PiAiJHBlbmRpbmciCisgICAgICAgIHByaW50ZiAnJXNcbicgIlVSTkVUV09SS19TVUJFVkFMVUFUSU9OX0JSSURHRV9OQU1FPSRVUk5FVFdPUktfU1VCRVZBTFVBVElPTl9CUklER0VfTkFNRSIgXAorICAgICAgICAgICAgIlVSTkVUV09SS19TVUJFVkFMVUFUSU9OX0NPUkVfUFJPRklMRT0kVVJORVRXT1JLX1NVQkVWQUxVQVRJT05fQ09SRV9QUk9GSUxFIiA+PiAiJHBlbmRpbmciCisgICAgZmkKKyAgICBjaG1vZCAwNDAwICIkcGVuZGluZyIKKyAgICBtdiAtZiAtLSAiJHBlbmRpbmciICIkcGF0aCIKK30KKwordmFsaWRhdGVfb3V0cHV0X3RyZWUoKSB7CisgICAgbG9jYWwgcm9vdD0iJDEiCisgICAgWyAteiAiJChldmFsdWF0aW9uX2ZpbGUgZmluZCAiJHJvb3QiIC1taW5kZXB0aCAxICEgLXR5cGUgZiAhIC10eXBlIGQgLXByaW50IC1xdWl0KSIgXSB8fAorICAgICAgICBkaWUgImNhbmRpZGF0ZSBvdXRwdXQgY29udGFpbnMgYSBub24tcmVndWxhciBlbnRyeSIKK30KKworIyBUaGUgYmFzZWxpbmUgaGFzIGFscmVhZHkgYmVlbiBzZWFsZWQgZm9yIHRoZSBjb250YWluZXIgdWlkIHdoZW4gdGhlIGNhbmRpZGF0ZQorIyBpcyBidWlsdC4gVHJ1c3Qgb25seSB0aGVzZSBhdXRoZW50aWNhdGVkIGF0dGVtcHQtbG9jYWwgcmVwb3NpdG9yaWVzIGZvciBlYWNoCisjIHJlYWQ7IG5ldmVyIHBlcnNpc3Qgc2FmZS5kaXJlY3Rvcnkgb3IgdHVybiBvZmYgR2l0J3Mgb3duZXJzaGlwIGNoZWNrIGdsb2JhbGx5LgorYXV0aGVudGljYXRlX3Byb3RlY3RlZF9zaW11bGF0b3JfdHJlZSgpIHsKKyAgICBsb2NhbCBiYXNlbGluZV90cmVlIGNhbmRpZGF0ZV90cmVlCisgICAgYmFzZWxpbmVfdHJlZT0iJChldmFsdWF0aW9uX2dpdCAtYyBzYWZlLmRpcmVjdG9yeT0gLWMgc2FmZS5kaXJlY3Rvcnk9IiRiYXNlbGluZV9zb3VyY2Vfcm9vdC9zZXJ2ZXIiIFwKKyAgICAgICAgLUMgIiRiYXNlbGluZV9zb3VyY2Vfcm9vdC9zZXJ2ZXIiIHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEOmNvbm5lY3Qvc2ltLWxhdGVuY3kpIiB8fAorICAgICAgICBkaWUgImNvdWxkIG5vdCByZWFkIHRoZSBiYXNlbGluZSBwcm90ZWN0ZWQgc2ltLWxhdGVuY3kgc291cmNlIHRyZWU6IEdpdCBpbnZvY2F0aW9uIGZhaWxlZCIKKyAgICBjYW5kaWRhdGVfdHJlZT0iJChldmFsdWF0aW9uX2dpdCAtYyBzYWZlLmRpcmVjdG9yeT0gLWMgc2FmZS5kaXJlY3Rvcnk9IiRjYW5kaWRhdGVfc291cmNlX3Jvb3Qvc2VydmVyIiBcCisgICAgICAgIC1DICIkY2FuZGlkYXRlX3NvdXJjZV9yb290L3NlcnZlciIgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQ6Y29ubmVjdC9zaW0tbGF0ZW5jeSkiIHx8CisgICAgICAgIGRpZSAiY291bGQgbm90IHJlYWQgdGhlIGNhbmRpZGF0ZSBwcm90ZWN0ZWQgc2ltLWxhdGVuY3kgc291cmNlIHRyZWU6IEdpdCBpbnZvY2F0aW9uIGZhaWxlZCIKKyAgICBbWyAiJGJhc2VsaW5lX3RyZWUiID1+IF5bMC05YS1mXXs0MH0kIF1dICYmIFtbICIkY2FuZGlkYXRlX3RyZWUiID1+IF5bMC05YS1mXXs0MH0kIF1dIHx8CisgICAgICAgIGRpZSAiY291bGQgbm90IGF1dGhlbnRpY2F0ZSB0aGUgcHJvdGVjdGVkIHNpbS1sYXRlbmN5IHNvdXJjZSB0cmVlOiBpbnZhbGlkIEdpdCBvYmplY3QgaWRlbnRpdHkiCisgICAgWyAiJGNhbmRpZGF0ZV90cmVlIiA9ICIkYmFzZWxpbmVfdHJlZSIgXSB8fAorICAgICAgICBkaWUgImNhbmRpZGF0ZSBjaGFuZ2VkIHRoZSBwcm90ZWN0ZWQgc2ltLWxhdGVuY3kgc291cmNlIHRyZWUiCisgICAgaWYgWyAiJHt3b3JrX2NvdmVyYWdlX3BvbGljeTotbnVsbH0iICE9IG51bGwgXTsgdGhlbgorICAgICAgICBsb2NhbCBkZXBlbmRlbmNpZXMgZGVwZW5kZW5jeSBiYXNlbGluZV9kZXBlbmRlbmN5IGNhbmRpZGF0ZV9kZXBlbmRlbmN5CisgICAgICAgIGRlcGVuZGVuY2llcz0iJChqcSAtZXIgJy5wYXRoc1tdJyA8PDwiJGNvdmVyYWdlX3Byb3RlY3RlZF9wYXRoc19qc29uIikiIHx8IGRpZSAidHJ1c3RlZCBjb3ZlcmFnZSBoZWxwZXIgY2Vuc3VzIGlzIGFic2VudCIKKyAgICAgICAgWyAtbiAiJGRlcGVuZGVuY2llcyIgXSB8fCBkaWUgInRydXN0ZWQgY292ZXJhZ2UgaGVscGVyIGNlbnN1cyBpcyBlbXB0eSIKKyAgICAgICAgd2hpbGUgSUZTPSByZWFkIC1yIGRlcGVuZGVuY3k7IGRvCisgICAgICAgICAgICBiYXNlbGluZV9kZXBlbmRlbmN5PSIkKGdpdCAtYyBzYWZlLmRpcmVjdG9yeT0gLWMgc2FmZS5kaXJlY3Rvcnk9IiRiYXNlbGluZV9zb3VyY2Vfcm9vdC9zZXJ2ZXIiIC1DICIkYmFzZWxpbmVfc291cmNlX3Jvb3Qvc2VydmVyIiAtLWxpdGVyYWwtcGF0aHNwZWNzIGxzLXRyZWUgSEVBRCAtLSAiJGRlcGVuZGVuY3kiKSIgfHwgZGllICJtaXNzaW5nIHRydXN0ZWQgY292ZXJhZ2UgZGVwZW5kZW5jeSIKKyAgICAgICAgICAgIGNhbmRpZGF0ZV9kZXBlbmRlbmN5PSIkKGdpdCAtYyBzYWZlLmRpcmVjdG9yeT0gLWMgc2FmZS5kaXJlY3Rvcnk9IiRjYW5kaWRhdGVfc291cmNlX3Jvb3Qvc2VydmVyIiAtQyAiJGNhbmRpZGF0ZV9zb3VyY2Vfcm9vdC9zZXJ2ZXIiIC0tbGl0ZXJhbC1wYXRoc3BlY3MgbHMtdHJlZSBIRUFEIC0tICIkZGVwZW5kZW5jeSIpIiB8fCBkaWUgIm1pc3NpbmcgY2FuZGlkYXRlIGNvdmVyYWdlIGRlcGVuZGVuY3kiCisgICAgICAgICAgICBbWyAiJGJhc2VsaW5lX2RlcGVuZGVuY3kiID1+IF4xMDAoNjQ0fDc1NSlcIGJsb2JcIFswLTlhLWZdezQwfSQnXHQnIF1dIHx8IGRpZSAiY292ZXJhZ2UgZGVwZW5kZW5jeSBpcyBub3QgYSBjb21taXR0ZWQgcmVndWxhciBHbyBmaWxlIgorICAgICAgICAgICAgWyAiJGJhc2VsaW5lX2RlcGVuZGVuY3kiID0gIiRjYW5kaWRhdGVfZGVwZW5kZW5jeSIgXSB8fCBkaWUgImNhbmRpZGF0ZSBjaGFuZ2VkIGEgdHJ1c3RlZCBjb3ZlcmFnZSBkZXBlbmRlbmN5IgorICAgICAgICBkb25lIDw8PCIkZGVwZW5kZW5jaWVzIgorICAgIGZpCit9CisKK3NlYWxfZXZhbHVhdGlvbl9zb3VyY2UoKSB7CisgICAgbG9jYWwgcm9vdD0iJDEiIGV4cGVjdGVkX3NlcnZlcj0iJDIiIGV4cGVjdGVkX3BhdGNoPSIkMyIKKyAgICBbICIkcm9vdCIgPSAiJGJhc2VsaW5lX3NvdXJjZV9yb290IiBdIHx8IFsgIiRyb290IiA9ICIkY2FuZGlkYXRlX3NvdXJjZV9yb290IiBdIHx8CisgICAgICAgIGRpZSAicmVmdXNpbmcgdG8gc2VhbCBhbiB1bmV4cGVjdGVkIHNvdXJjZSBkaXJlY3RvcnkiCisgICAgZm9yIHJlcG9zaXRvcnkgaW4gIiR7UkVQT1NJVE9SSUVTW0BdfSI7IGRvCisgICAgICAgIGxvY2FsIHJlcG9zaXRvcnlfcm9vdD0iJHJvb3QvJHJlcG9zaXRvcnkiCisgICAgICAgIGxvY2FsIGV4cGVjdGVkX2NvbW1pdCBhY3R1YWxfYnJhbmNoIGFjdHVhbF9jb21taXQgc291cmNlX3N0YXR1cworICAgICAgICBleHBlY3RlZF9jb21taXQ9IiQoanEgLWVyIC0tYXJnIHJlcG9zaXRvcnkgIiRyZXBvc2l0b3J5IiBcCisgICAgICAgICAgICAnLnJlcG9zaXRvcmllc1skcmVwb3NpdG9yeV0nICIkcm9vdC8uZXZhbHVhdGlvbi1zb3VyY2UuanNvbiIpIgorICAgICAgICBhY3R1YWxfYnJhbmNoPSIkKGV2YWx1YXRpb25fZ2l0IC1DICIkcmVwb3NpdG9yeV9yb290IiBzeW1ib2xpYy1yZWYgLS1xdWlldCAtLXNob3J0IEhFQUQpIiB8fAorICAgICAgICAgICAgZGllICJjb3VsZCBub3QgcmVhZCB0ZW1wb3JhcnkgJHJlcG9zaXRvcnkgc291cmNlIGJyYW5jaCIKKyAgICAgICAgYWN0dWFsX2NvbW1pdD0iJChldmFsdWF0aW9uX2dpdCAtQyAiJHJlcG9zaXRvcnlfcm9vdCIgcmV2LXBhcnNlIEhFQUQpIiB8fAorICAgICAgICAgICAgZGllICJjb3VsZCBub3QgcmVhZCB0ZW1wb3JhcnkgJHJlcG9zaXRvcnkgc291cmNlIGNvbW1pdCIKKyAgICAgICAgc291cmNlX3N0YXR1cz0iJChldmFsdWF0aW9uX2dpdCAtQyAiJHJlcG9zaXRvcnlfcm9vdCIgc3RhdHVzIC0tcG9yY2VsYWluPXYxIC0tdW50cmFja2VkLWZpbGVzPWFsbCkiIHx8CisgICAgICAgICAgICBkaWUgImNvdWxkIG5vdCBpbnNwZWN0IHRlbXBvcmFyeSAkcmVwb3NpdG9yeSBzb3VyY2Ugd29ya3RyZWUiCisgICAgICAgIFsgIiRhY3R1YWxfYnJhbmNoIiA9ICIkc291cmNlX2JyYW5jaCIgXSAmJiBbICIkYWN0dWFsX2NvbW1pdCIgPSAiJGV4cGVjdGVkX2NvbW1pdCIgXSAmJgorICAgICAgICAgICAgWyAteiAiJHNvdXJjZV9zdGF0dXMiIF0gfHwKKyAgICAgICAgICAgIGRpZSAidGVtcG9yYXJ5ICRyZXBvc2l0b3J5IHNvdXJjZSBjaGVja291dCBpcyBub3QgY2xlYW4gYW5kIGlkZW50aXR5LWJvdW5kIgorICAgIGRvbmUKKyAgICBsb2NhbCBzZXJ2ZXJfY29tbWl0IGFjdHVhbF9wYXRjaAorICAgIHNlcnZlcl9jb21taXQ9IiQoZXZhbHVhdGlvbl9naXQgLUMgIiRyb290L3NlcnZlciIgcmV2LXBhcnNlIEhFQUQpIiB8fAorICAgICAgICBkaWUgImNvdWxkIG5vdCByZWFkIHRlbXBvcmFyeSBzZXJ2ZXIgc291cmNlIGNvbW1pdCIKKyAgICBbICIkc2VydmVyX2NvbW1pdCIgPSAiJGV4cGVjdGVkX3NlcnZlciIgXSB8fAorICAgICAgICBkaWUgInRlbXBvcmFyeSBzZXJ2ZXIgc291cmNlIGNoZWNrb3V0IGhhcyB0aGUgd3JvbmcgY29tbWl0IgorICAgIGFjdHVhbF9wYXRjaD0iJChqcSAtZXIgJy5jYW5kaWRhdGVfcGF0Y2hfc2hhMjU2IC8vICIiJyAiJHJvb3QvLmV2YWx1YXRpb24tc291cmNlLmpzb24iKSIgfHwKKyAgICAgICAgZGllICJjb3VsZCBub3QgcmVhZCB0ZW1wb3Jhcnkgc291cmNlIHBhdGNoIGlkZW50aXR5IgorICAgIFsgIiRhY3R1YWxfcGF0Y2giID0gIiRleHBlY3RlZF9wYXRjaCIgXSB8fAorICAgICAgICBkaWUgInRlbXBvcmFyeSBzb3VyY2UgcGF0Y2ggaWRlbnRpdHkgbWlzbWF0Y2giCisKKyAgICAjIFByZXNlcnZlIHRyYWNrZWQgZXhlY3V0YWJsZSBiaXRzIHdoaWxlIG1ha2luZyBib3RoIHRoZSBiaW5kIGl0c2VsZiBhbmQKKyAgICAjIHRoZSB1bmRlcmx5aW5nIGhvc3QgdHJlZSBub24td3JpdGFibGUuIFRoZSBEb2NrZXIgYmluZCBhZGRzIGEgc2Vjb25kLAorICAgICMgaW5kZXBlbmRlbnRseSBpbnNwZWN0ZWQgcmVhZC1vbmx5IGJvdW5kYXJ5LgorICAgIGV2YWx1YXRpb25fZmlsZSBmaW5kICIkcm9vdCIgLXR5cGUgZCAtZXhlYyBjaG1vZCAwNTU1IHt9ICsKKyAgICBldmFsdWF0aW9uX2ZpbGUgZmluZCAiJHJvb3QiIC10eXBlIGYgLXBlcm0gLzExMSAtZXhlYyBjaG1vZCAwNTU1IHt9ICsKKyAgICBldmFsdWF0aW9uX2ZpbGUgZmluZCAiJHJvb3QiIC10eXBlIGYgISAtcGVybSAvMTExIC1leGVjIGNobW9kIDA0NDQge30gKworICAgIGlmIFtbICIkc3ViZXZhbHVhdGlvbl9zY29wZWQiICE9IHRydWUgXV07IHRoZW4KKyAgICAgICAgc3VkbyAtbiBjaG93biAtUiAiJGNvbnRhaW5lcl9ob3N0X3VpZDokY29udGFpbmVyX2hvc3RfZ2lkIiAiJHJvb3QiCisgICAgZmkKK30KKworcmVtb3ZlX2V2YWx1YXRpb25fc291cmNlcygpIHsKKyAgICBbIC1uICIke2FjdGl2ZV9zb3VyY2Vfcm9vdDotfSIgXSB8fCByZXR1cm4gMAorICAgIGNhc2UgIiRhY3RpdmVfc291cmNlX3Jvb3QiIGluCisgICAgICAgICIkd29ya19kaXIiL2V2YWx1YXRpb24tc291cmNlcy4qKSA7OworICAgICAgICAqKSBkaWUgInJlZnVzaW5nIHRvIHJlbW92ZSBhbiB1bmV4cGVjdGVkIHNvdXJjZSBkaXJlY3RvcnkiIDs7CisgICAgZXNhYworICAgIFsgIiQocmVhbHBhdGggLWUgIiQoZGlybmFtZSAiJGFjdGl2ZV9zb3VyY2Vfcm9vdCIpIikiID0gIiR3b3JrX2RpciIgXSB8fAorICAgICAgICBkaWUgInRlbXBvcmFyeSBzb3VyY2UgZGlyZWN0b3J5IGVzY2FwZWQgdGhlIGF0dGVtcHQgdG1wZnMiCisgICAgaWYgW1sgIiRzdWJldmFsdWF0aW9uX3Njb3BlZCIgPSB0cnVlIF1dOyB0aGVuCisgICAgICAgIGZpbmQgIiRhY3RpdmVfc291cmNlX3Jvb3QiIC10eXBlIGQgLWV4ZWMgY2htb2QgdStyd3gge30gKworICAgICAgICBybSAtcmYgLS0gIiRhY3RpdmVfc291cmNlX3Jvb3QiCisgICAgZWxzZQorICAgICAgICBzdWRvIC1uIHJtIC1yZiAtLSAiJGFjdGl2ZV9zb3VyY2Vfcm9vdCIKKyAgICBmaQorICAgIFsgISAtZSAiJGFjdGl2ZV9zb3VyY2Vfcm9vdCIgXSB8fCBkaWUgInRlbXBvcmFyeSBldmFsdWF0aW9uIHNvdXJjZXMgc3Vydml2ZWQgY2xlYW51cCIKKyAgICBhY3RpdmVfc291cmNlX3Jvb3Q9IiIKKyAgICBqcSAtUyAnLmNsZWFudXBfY29tcGxldGUgPSB0cnVlJyAiJHNvdXJjZV9ldmlkZW5jZV9wYXRoIiA+ICIkc291cmNlX2V2aWRlbmNlX3BhdGgubmV3IgorICAgIGNobW9kIDA0MDAgIiRzb3VyY2VfZXZpZGVuY2VfcGF0aC5uZXciCisgICAgbXYgLWYgLS0gIiRzb3VyY2VfZXZpZGVuY2VfcGF0aC5uZXciICIkc291cmNlX2V2aWRlbmNlX3BhdGgiCit9CisKK3BlcnNpc3RfZXZpZGVuY2VfdHJlZSgpIHsKKyAgICBpZiBbWyAiJHN1YmV2YWx1YXRpb25fc2NvcGVkIiAhPSB0cnVlIF1dOyB0aGVuCisgICAgICAgIHN1ZG8gLW4gY2hvd24gLVIgIiR3b3JrZXJfdWlkOiR3b3JrZXJfZ2lkIiAiJHdvcmtfZGlyIgorICAgIGZpCisgICAgZmluZCAiJHdvcmtfZGlyIiAtdHlwZSBkIC1leGVjIGNobW9kIHUrcnd4LGdvLXJ3eCB7fSArCisgICAgZmluZCAiJHdvcmtfZGlyIiAtdHlwZSBmIC1leGVjIGNobW9kIDA0MDAge30gKworICAgIHZhbGlkYXRlX291dHB1dF90cmVlICIkd29ya19kaXIiCisgICAgbG9jYWwgcnVudGltZV93b3JrX2Rpcj0iJHdvcmtfZGlyIgorICAgIHdvcmtfZGlyPSIkYXJ0aWZhY3RfZGlyL2V2aWRlbmNlIgorICAgIFsgISAtZSAiJHdvcmtfZGlyIiBdIHx8IGRpZSAicmV0YWluZWQgZXZpZGVuY2UgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzIgorICAgIGluc3RhbGwgLWQgLW0gMDcwMCAiJHdvcmtfZGlyIgorICAgIGNwIC1hICIkcnVudGltZV93b3JrX2Rpci8uIiAiJHdvcmtfZGlyLyIKKyAgICBzeW5jICIkd29ya19kaXIiCisgICAgaWYgW1sgIiRzdWJldmFsdWF0aW9uX3Njb3BlZCIgPSB0cnVlIF1dOyB0aGVuCisgICAgICAgIGV2YWx1YXRpb25faG9zdCB1bm1vdW50LWV2aWRlbmNlCisgICAgZWxzZQorICAgICAgICBzdWRvIC1uIHVtb3VudCAiJHJ1bnRpbWVfd29ya19kaXIiCisgICAgZmkKKyAgICBhY3RpdmVfd29ya19tb3VudD0iIgorICAgIHJtZGlyICIkcnVudGltZV93b3JrX2RpciIKKyAgICB2YWxpZGF0ZV9vdXRwdXRfdHJlZSAiJHdvcmtfZGlyIgorICAgIGZpbmQgIiR3b3JrX2RpciIgLXR5cGUgZiAtZXhlYyBjaG1vZCAwNDAwIHt9ICsKKyAgICBmaW5kICIkd29ya19kaXIiIC10eXBlIGQgLWV4ZWMgY2htb2QgMDUwMCB7fSArCit9CisKK3dyaXRlX2V2aWRlbmNlX21hbmlmZXN0KCkgeworICAgIGV2aWRlbmNlX21hbmlmZXN0PSIkYXJ0aWZhY3RfZGlyL2V2aWRlbmNlLW1hbmlmZXN0Lmpzb24iCisgICAgbG9jYWwgZXZpZGVuY2VfbGluZXM9IiRhcnRpZmFjdF9kaXIvLmV2aWRlbmNlLWxpbmVzIgorICAgIHdoaWxlIElGUz0gcmVhZCAtciAtZCAnJyBwYXRoOyBkbworICAgICAgICBsb2NhbCByZWxhdGl2ZT0iJHtwYXRoIyIkYXJ0aWZhY3RfZGlyLyJ9IgorICAgICAgICBwcmludGYgJyVzXHQlc1x0JXNcbicgIiRyZWxhdGl2ZSIgIiQoc2hhMjU2X2ZpbGUgIiRwYXRoIikiICIkKGZpbGVfYnl0ZXMgIiRwYXRoIikiCisgICAgZG9uZSA8IDwoZmluZCAiJHdvcmtfZGlyIiAtdHlwZSBmIC1wcmludDAgfCBzb3J0IC16KSA+ICIkZXZpZGVuY2VfbGluZXMiCisgICAganEgLVJuIC0tYXJnIGpvYl9pZCAiJGpvYl9pZCIgLS1hcmcgcm91bmRfaWQgIiRyb3VuZF9pZCIgXAorICAgICAgICAnW2lucHV0cyB8IHNwbGl0KCJcdCIpIHwge3BhdGg6LlswXSxzaGEyNTY6LlsxXSxieXRlczooLlsyXXx0b251bWJlcil9XSB8CisgICAgICAgICB7c2NoZW1hOjEsa2luZDoic2ltLWxhdGVuY3ktZXZpZGVuY2UtbWFuaWZlc3QiLGpvYl9pZDokam9iX2lkLAorICAgICAgICAgIHJvdW5kX2lkOiRyb3VuZF9pZCxhcnRpZmFjdHM6Ln0nIDwgIiRldmlkZW5jZV9saW5lcyIgPiAiJGV2aWRlbmNlX21hbmlmZXN0IgorICAgIHJtIC1mIC0tICIkZXZpZGVuY2VfbGluZXMiCisgICAgY2htb2QgMDQwMCAiJGV2aWRlbmNlX21hbmlmZXN0IgorfQorCitlbWl0X2NhbmRpZGF0ZV9idWlsZF9mYWlsdXJlKCkgeworICAgIGxvY2FsIGJ1aWxkX2xvZz0iJDEiCisgICAgd3JpdGVfZXZhbHVhdGlvbl9wcm9ncmVzcyBmYWlsZWQgIiRyZXBsaWNhdGVzIiAwCisgICAgaWYgWyAtZiAiJGJ1aWxkX2xvZyIgXSAmJiBbICIkTUFYX0JVSUxEX0xPR19CWVRFUyIgLWx0ICIkKGZpbGVfYnl0ZXMgIiRidWlsZF9sb2ciKSIgXTsgdGhlbgorICAgICAgICB0YWlsIC1jICIkTUFYX0JVSUxEX0xPR19CWVRFUyIgIiRidWlsZF9sb2ciID4gIiRidWlsZF9sb2cudGFpbCIKKyAgICAgICAgbXYgIiRidWlsZF9sb2cudGFpbCIgIiRidWlsZF9sb2ciCisgICAgZmkKKyAgICBybSAtZiAtLSAiJHdvcmtfZGlyL2NhbmRpZGF0ZS1idWlsZC5qc29uIgorICAgIFsgLXogIiQoZXZhbHVhdGlvbl9kb2NrZXIgcHMgLWFxIC0tZmlsdGVyICJsYWJlbD1jb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLmpvYi1pZD0kam9iX2lkIiAiJHtzdWJldmFsdWF0aW9uX2NsZWFudXBfZmlsdGVyX2FyZ3NbQF19IikiIF0gfHwKKyAgICAgICAgZGllICJjYW5kaWRhdGUgYnVpbGQgZmFpbHVyZSBsZWZ0IGpvYiBjb250YWluZXJzIgorICAgIFsgLXogIiQoZXZhbHVhdGlvbl9kb2NrZXIgbmV0d29yayBscyAtcSAtLWZpbHRlciAibGFiZWw9Y29tLnVybmV0d29yay5jb21wZXRpdGlvbi5qb2ItaWQ9JGpvYl9pZCIgIiR7c3ViZXZhbHVhdGlvbl9jbGVhbnVwX2ZpbHRlcl9hcmdzW0BdfSIpIiBdIHx8CisgICAgICAgIGRpZSAiY2FuZGlkYXRlIGJ1aWxkIGZhaWx1cmUgbGVmdCBqb2IgbmV0d29ya3MiCisgICAgcmVtb3ZlX2V2YWx1YXRpb25fc291cmNlcworCisgICAgbG9jYWwgc3VibWlzc2lvbl9lcnJvcj0iJGFydGlmYWN0X2Rpci9zdWJtaXNzaW9uLWVycm9yLmpzb24iCisgICAganEgLW4gLS1hcmcgam9iX2lkICIkam9iX2lkIiAtLWFyZyByb3VuZF9pZCAiJHJvdW5kX2lkIiBcCisgICAgICAgIC0tYXJnIHBhdGNoX3NoYTI1NiAiJHBhdGNoX3NoYTI1NiIgXAorICAgICAgICAne3NjaGVtYToxLGtpbmQ6InN1Ym1pc3Npb24iLGNvZGU6ImNhbmRpZGF0ZV9idWlsZF9mYWlsZWQiLAorICAgICAgICAgIG1lc3NhZ2U6ImNhbmRpZGF0ZSBkaWQgbm90IHBhc3MgdGhlIGZyb3plbiBvZmZsaW5lIGJ1aWxkIiwKKyAgICAgICAgICByZXRyaWFibGU6ZmFsc2Usam9iX2lkOiRqb2JfaWQscm91bmRfaWQ6JHJvdW5kX2lkLAorICAgICAgICAgIHBhdGNoX3NoYTI1NjokcGF0Y2hfc2hhMjU2fScgPiAiJHN1Ym1pc3Npb25fZXJyb3IiCisgICAgY2htb2QgMDQwMCAiJHN1Ym1pc3Npb25fZXJyb3IiCisKKyAgICBwZXJzaXN0X2V2aWRlbmNlX3RyZWUKKyAgICB3cml0ZV9ldmlkZW5jZV9tYW5pZmVzdAorICAgIGxvY2FsIGNvbXBsZXRlX3BhdGg9IiRhcnRpZmFjdF9kaXIvZXZhbHVhdGlvbi5jb21wbGV0ZS5qc29uIgorICAgIGpxIC1uIC0tYXJnIGpvYl9pZCAiJGpvYl9pZCIgLS1hcmcgcm91bmRfaWQgIiRyb3VuZF9pZCIgLS1hcmdqc29uIGF0dGVtcHQgIiRhdHRlbXB0IiBcCisgICAgICAgIC0tYXJnIGJhc2VfaW1hZ2VfaWQgIiRiYXNlX2ltYWdlX2lkIiAtLWFyZyBwYXRjaF9zaGEyNTYgIiRwYXRjaF9zaGEyNTYiIFwKKyAgICAgICAgLS1hcmcgcHJvdmlkZXJzX3NoYTI1NiAiJHByb3ZpZGVyc19zaGEyNTYiIFwKKyAgICAgICAgLS1hcmcgYmFzZWxpbmVfc2hhMjU2ICIkYmFzZWxpbmVfc2hhMjU2IiBcCisgICAgICAgIC0tYXJnIHN1Ym1pc3Npb25fZXJyb3Jfc2hhMjU2ICIkKHNoYTI1Nl9maWxlICIkc3VibWlzc2lvbl9lcnJvciIpIiBcCisgICAgICAgIC0tYXJnIGV2aWRlbmNlX21hbmlmZXN0X3NoYTI1NiAiJChzaGEyNTZfZmlsZSAiJGV2aWRlbmNlX21hbmlmZXN0IikiIFwKKyAgICAgICAgJ3tzY2hlbWE6MSxraW5kOiJzaW0tbGF0ZW5jeS13b3JrZXItZXZhbHVhdGlvbi1jb21wbGV0ZSIsam9iX2lkOiRqb2JfaWQsCisgICAgICAgICAgcm91bmRfaWQ6JHJvdW5kX2lkLGF0dGVtcHQ6JGF0dGVtcHQsYmFzZV9pbWFnZV9pZDokYmFzZV9pbWFnZV9pZCwKKyAgICAgICAgICBjYW5kaWRhdGVfaW1hZ2VfaWQ6bnVsbCxwYXRjaF9zaGEyNTY6JHBhdGNoX3NoYTI1NiwKKyAgICAgICAgICBwcm92aWRlcnNfc2hhMjU2OiRwcm92aWRlcnNfc2hhMjU2LGNsZWFudXBfY29tcGxldGU6dHJ1ZSwKKyAgICAgICAgICB0ZXJtaW5hbF9lcnJvcjoiY2FuZGlkYXRlX2J1aWxkX2ZhaWxlZCIsCisgICAgICAgICAgYXJ0aWZhY3RzOntiYXNlbGluZTokYmFzZWxpbmVfc2hhMjU2LHN1Ym1pc3Npb25fZXJyb3I6JHN1Ym1pc3Npb25fZXJyb3Jfc2hhMjU2LAorICAgICAgICAgICAgZXZpZGVuY2VfbWFuaWZlc3Q6JGV2aWRlbmNlX21hbmlmZXN0X3NoYTI1Nn19JyA+ICIkY29tcGxldGVfcGF0aCIKKyAgICBjaG1vZCAwNDAwICIkY29tcGxldGVfcGF0aCIKKyAgICBzeW5jIC1kICIkYXJ0aWZhY3RfZGlyL2Jhc2VsaW5lLmpzb24iICIkc3VibWlzc2lvbl9lcnJvciIgIiRldmlkZW5jZV9tYW5pZmVzdCIgIiRjb21wbGV0ZV9wYXRoIgorICAgIHN5bmMgIiRhcnRpZmFjdF9kaXIiCisKKyAgICBsb2NhbCBhcnRpZmFjdF9yZWNvcmRzPSgpCisgICAgbG9jYWwgcmVsYXRpdmUgcGF0aAorICAgIGZvciByZWxhdGl2ZSBpbiBiYXNlbGluZS5qc29uIHN1Ym1pc3Npb24tZXJyb3IuanNvbiBldmFsdWF0aW9uLXByb2dyZXNzLmpzb24gZXZhbHVhdGlvbi5jb21wbGV0ZS5qc29uIGV2aWRlbmNlLW1hbmlmZXN0Lmpzb247IGRvCisgICAgICAgIHBhdGg9IiRhcnRpZmFjdF9kaXIvJHJlbGF0aXZlIgorICAgICAgICBhcnRpZmFjdF9yZWNvcmRzKz0oIiQoanEgLWNuIC0tYXJnIHBhdGggIiRyZWxhdGl2ZSIgLS1hcmcgc2hhMjU2ICIkKHNoYTI1Nl9maWxlICIkcGF0aCIpIiBcCisgICAgICAgICAgICAtLWFyZ2pzb24gYnl0ZXMgIiQoZmlsZV9ieXRlcyAiJHBhdGgiKSIgJ3twYXRoOiRwYXRoLHNoYTI1Njokc2hhMjU2LGJ5dGVzOiRieXRlc30nKSIpCisgICAgZG9uZQorICAgIGxvY2FsIGFydGlmYWN0c19qc29uCisgICAgYXJ0aWZhY3RzX2pzb249IiQocHJpbnRmICclc1xuJyAiJHthcnRpZmFjdF9yZWNvcmRzW0BdfSIgfCBqcSAtcyAnLicpIgorICAgIGxvY2FsIHNlY3VyaXR5X2pzb24KKyAgICBzZWN1cml0eV9qc29uPSIkKGpxIC1jbiBcCisgICAgICAgICd7dGVtcGxhdGVfZGF0YWJhc2VfcmVzZXQ6ZmFsc2UscmVkaXNfcmVzZXQ6ZmFsc2UsY2dyb3VwX2NvbnRhaW5lZDpmYWxzZSwKKyAgICAgICAgICByZXNvdXJjZV9saW1pdHM6ZmFsc2UsbWFuYWdlbWVudF9jcHVfcmVzZXJ2ZWQ6dHJ1ZSwKKyAgICAgICAgICBtYW5hZ2VtZW50X21lbW9yeV9yZXNlcnZlZDp0cnVlLGRlZmF1bHRfZGVueV9uZXR3b3JrOnRydWUsb2ZmbGluZV9idWlsZDp0cnVlLAorICAgICAgICAgIG9mZmxpbmVfYnVpbGRfcmVzb3VyY2VfbGltaXRzOnRydWUsCisgICAgICAgICAgbm9fcHJvZHVjdGlvbl9zZWNyZXRzOnRydWUsc3RydWN0dXJhbF9wYXRjaF9jaGVjazp0cnVlLAorICAgICAgICAgIGFjY291bnRpbmdfY29tcGxldGU6ZmFsc2UscmVzb3VyY2VfcmVwb3J0X2NvbXBsZXRlOmZhbHNlLAorICAgICAgICAgIGNsZWFudXBfY29tcGxldGU6dHJ1ZSxpbW11dGFibGVfcmVwb3J0czp0cnVlLGNncm91cF9pZDoiIiwKKyAgICAgICAgICB0ZW1wbGF0ZV9kYXRhYmFzZV9pZDoiIixyZWRpc19nZW5lcmF0aW9uX2lkOiIifScpIgorICAgIGxvY2FsIGV2YWxfZXJyb3JfanNvbgorICAgIGV2YWxfZXJyb3JfanNvbj0iJChqcSAne2tpbmQsY29kZSxtZXNzYWdlLHJldHJpYWJsZX0nICIkc3VibWlzc2lvbl9lcnJvciIpIgorICAgIGxvY2FsIHJlc3VsdF90bXA9IiRhcnRpZmFjdF9kaXIvLndvcmtlci1yZXN1bHQudG1wIgorICAgIGpxIC1uIC0tYXJnIGpvYl9pZCAiJGpvYl9pZCIgLS1hcmdqc29uIGV2YWxfZXJyb3IgIiRldmFsX2Vycm9yX2pzb24iIFwKKyAgICAgICAgLS1hcmdqc29uIHNlY3VyaXR5ICIkc2VjdXJpdHlfanNvbiIgLS1hcmdqc29uIGFydGlmYWN0cyAiJGFydGlmYWN0c19qc29uIiBcCisgICAgICAgICd7c2NoZW1hOjEsam9iX2lkOiRqb2JfaWQsc2NvcmU6bnVsbCxldmFsX2Vycm9yOiRldmFsX2Vycm9yLAorICAgICAgICAgIHNlY3VyaXR5OiRzZWN1cml0eSxhcnRpZmFjdHM6JGFydGlmYWN0c30nID4gIiRyZXN1bHRfdG1wIgorICAgIHN5bmMgLWQgIiRyZXN1bHRfdG1wIgorICAgIFsgISAtZSAiJHJlc3VsdF9wYXRoIiBdIHx8IGRpZSAid29ya2VyIHJlc3VsdCBwYXRoIGFwcGVhcmVkIGR1cmluZyBldmFsdWF0aW9uIgorICAgIG12ICIkcmVzdWx0X3RtcCIgIiRyZXN1bHRfcGF0aCIKKyAgICBjaG1vZCAwNDAwICIkcmVzdWx0X3BhdGgiCisgICAgc3luYyAtZCAiJHJlc3VsdF9wYXRoIgorICAgIHN5bmMgIiRhcnRpZmFjdF9kaXIiCisgICAgbG9nICJ0ZXJtaW5hbCBzdWJtaXNzaW9uIGJ1aWxkIGZhaWx1cmU6IGpvYj0kam9iX2lkIgorfQorCitjb250YWluZXJfY2dyb3VwKCkgeworICAgIGxvY2FsIGNvbnRhaW5lcl9pZD0iJDEiIHBpZCByZWwKKyAgICBpZiBbWyAiJHN1YmV2YWx1YXRpb25fc2NvcGVkIiA9IHRydWUgXV07IHRoZW4KKyAgICAgICAgcmVsPSIkKGV2YWx1YXRpb25faG9zdCB2ZXJpZnktaWQtbWFwICIkY29udGFpbmVyX2lkIiB8IGpxIC1lciAnLmNncm91cF9wYXRoJykiIHx8IHJldHVybgorICAgICAgICBbWyAiJHJlbCIgPSAvKiAmJiAiJHJlbCIgIT0gKi4uKiAmJiAiJHJlbCIgIT0gKiQnXG4nKiAmJiAiJHJlbCIgIT0gKiQnXHInKiBdXSB8fCByZXR1cm4gMQorICAgICAgICBbIC1kICIvc3lzL2ZzL2Nncm91cCRyZWwiIF0gfHwgcmV0dXJuIDEKKyAgICAgICAgcHJpbnRmICclcycgIiRyZWwiCisgICAgICAgIHJldHVybgorICAgIGZpCisgICAgcGlkPSIkKGV2YWx1YXRpb25fZG9ja2VyIGluc3BlY3QgLS1mb3JtYXQgJ3t7LlN0YXRlLlBpZH19JyAiJGNvbnRhaW5lcl9pZCIpIgorICAgIFtbICIkcGlkIiA9fiBeWzEtOV1bMC05XSokIF1dIHx8IHJldHVybiAxCisgICAgcmVsPSIkKHN1ZG8gLW4gYXdrIC1GOiAnJDEgPT0gIjAiIHtwcmludCAkM30nICIvcHJvYy8kcGlkL2Nncm91cCIpIgorICAgIFsgLW4gIiRyZWwiIF0gJiYgWyAtZCAiL3N5cy9mcy9jZ3JvdXAkcmVsIiBdIHx8IHJldHVybiAxCisgICAgcHJpbnRmICclcycgIiRyZWwiCit9CisKK3JlYWRfY2dyb3VwX3VzYWdlX3VzZWMoKSB7CisgICAgYXdrICckMSA9PSAidXNhZ2VfdXNlYyIge3ByaW50ICQyfScgIi9zeXMvZnMvY2dyb3VwJDEvY3B1LnN0YXQiCit9CisKK3JlYWRfY2dyb3VwX3BlYWsoKSB7CisgICAgbG9jYWwgdmFsdWUKKyAgICB2YWx1ZT0iJCg8Ii9zeXMvZnMvY2dyb3VwJDEvbWVtb3J5LnBlYWsiKSIKKyAgICBbWyAiJHZhbHVlIiA9fiBeWzAtOV0rJCBdXSB8fCByZXR1cm4gMQorICAgIHByaW50ZiAnJXMnICIkdmFsdWUiCit9CisKK3JlYWRfY2dyb3VwX29vbV9raWxscygpIHsKKyAgICBhd2sgJyQxID09ICJvb21fa2lsbCIge3ByaW50ICQyOyBmb3VuZD0xfSBFTkQge2lmICghZm91bmQpIGV4aXQgMX0nIFwKKyAgICAgICAgIi9zeXMvZnMvY2dyb3VwJDEvbWVtb3J5LmV2ZW50cyIKK30KKworc2FtcGxlX2Nncm91cF9jb3VudGVycygpIHsKKyAgICBsb2NhbCB0YXJnZXQ9IiQxIgorICAgIHNoaWZ0CisgICAgbG9jYWwgcmVsIHVzYWdlIHBlYWsgb29tIGNwdV91c2VjIHBlYWtfYnl0ZXMgb29tX2tpbGxzIHZhbGlkIHNhbXBsZV90bXAKKyAgICBzYW1wbGVfdG1wPSIkdGFyZ2V0Lm5ldyIKKyAgICB3aGlsZSA6OyBkbworICAgICAgICBjcHVfdXNlYz0wCisgICAgICAgIHBlYWtfYnl0ZXM9MAorICAgICAgICBvb21fa2lsbHM9MAorICAgICAgICB2YWxpZD10cnVlCisgICAgICAgIGZvciByZWwgaW4gIiRAIjsgZG8KKyAgICAgICAgICAgIGlmICEgdXNhZ2U9IiQocmVhZF9jZ3JvdXBfdXNhZ2VfdXNlYyAiJHJlbCIgMj4vZGV2L251bGwpIjsgdGhlbgorICAgICAgICAgICAgICAgIHZhbGlkPWZhbHNlCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICBpZiAhIHBlYWs9IiQocmVhZF9jZ3JvdXBfcGVhayAiJHJlbCIgMj4vZGV2L251bGwpIjsgdGhlbgorICAgICAgICAgICAgICAgIHZhbGlkPWZhbHNlCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICBpZiAhIG9vbT0iJChyZWFkX2Nncm91cF9vb21fa2lsbHMgIiRyZWwiIDI+L2Rldi9udWxsKSI7IHRoZW4KKyAgICAgICAgICAgICAgICB2YWxpZD1mYWxzZQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgaWYgW1sgISAiJHVzYWdlIiA9fiBeWzAtOV0rJCBdXSB8fCBbWyAhICIkcGVhayIgPX4gXlswLTldKyQgXV0gfHwgW1sgISAiJG9vbSIgPX4gXlswLTldKyQgXV07IHRoZW4KKyAgICAgICAgICAgICAgICB2YWxpZD1mYWxzZQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgY3B1X3VzZWM9JCgoY3B1X3VzZWMgKyB1c2FnZSkpCisgICAgICAgICAgICBwZWFrX2J5dGVzPSQoKHBlYWtfYnl0ZXMgKyBwZWFrKSkKKyAgICAgICAgICAgIG9vbV9raWxscz0kKChvb21fa2lsbHMgKyBvb20pKQorICAgICAgICBkb25lCisgICAgICAgIGlmIFsgIiR2YWxpZCIgPSB0cnVlIF07IHRoZW4KKyAgICAgICAgICAgIHByaW50ZiAnJXMgJXMgJXNcbicgIiRjcHVfdXNlYyIgIiRwZWFrX2J5dGVzIiAiJG9vbV9raWxscyIgPiAiJHNhbXBsZV90bXAiCisgICAgICAgICAgICBtdiAiJHNhbXBsZV90bXAiICIkdGFyZ2V0IgorICAgICAgICBmaQorICAgICAgICBzbGVlcCAwLjEKKyAgICBkb25lCit9CisKKyMgRG9ja2VyIGluc3BlY3Rpb24gY2FuIGNvbnRhaW4gY3JlZGVudGlhbHMgYW5kIGJpbmQtc291cmNlIHBhdGhzLiBQZXJzaXN0CisjIG9ubHkgdGhpcyBhbGxvd2xpc3QsIGJlZm9yZSBhbnkgcG9saWN5IGZhaWx1cmUgb3IgY2xlYW51cCBjYW4gZGlzY2FyZCBpdC4KK3dyaXRlX2NvbnRhaW5lcl9pbnNwZWN0aW9uKCkgeworICAgIGxvY2FsIHBhdGg9IiQxIiBwZW5kaW5nPSIkMS5uZXciCisgICAganEgJ1suW10gfCB7CisgICAgICAgICAgaWQ6LklkLG5hbWU6Lk5hbWUsaW1hZ2VfaWQ6LkltYWdlLAorICAgICAgICAgIGNvbmZpZzp7aW1hZ2U6LkNvbmZpZy5JbWFnZSx1c2VyOi5Db25maWcuVXNlcixsYWJlbHM6LkNvbmZpZy5MYWJlbHN9LAorICAgICAgICAgIGhvc3RfY29uZmlnOntyZWFkb25seV9yb290ZnM6Lkhvc3RDb25maWcuUmVhZG9ubHlSb290ZnMsCisgICAgICAgICAgICBtZW1vcnk6Lkhvc3RDb25maWcuTWVtb3J5LG1lbW9yeV9zd2FwOi5Ib3N0Q29uZmlnLk1lbW9yeVN3YXAsCisgICAgICAgICAgICBwaWRzX2xpbWl0Oi5Ib3N0Q29uZmlnLlBpZHNMaW1pdCxjZ3JvdXBfcGFyZW50Oi5Ib3N0Q29uZmlnLkNncm91cFBhcmVudCwKKyAgICAgICAgICAgIGNwdXNldF9jcHVzOi5Ib3N0Q29uZmlnLkNwdXNldENwdXMsY2FwX2Ryb3A6Lkhvc3RDb25maWcuQ2FwRHJvcCwKKyAgICAgICAgICAgIHNlY3VyaXR5X29wdDouSG9zdENvbmZpZy5TZWN1cml0eU9wdCxuZXR3b3JrX21vZGU6Lkhvc3RDb25maWcuTmV0d29ya01vZGUsCisgICAgICAgICAgICBpcHY2X2FsbF9kaXNhYmxlZDouSG9zdENvbmZpZy5TeXNjdGxzWyJuZXQuaXB2Ni5jb25mLmFsbC5kaXNhYmxlX2lwdjYiXSwKKyAgICAgICAgICAgIGlwdjZfZGVmYXVsdF9kaXNhYmxlZDouSG9zdENvbmZpZy5TeXNjdGxzWyJuZXQuaXB2Ni5jb25mLmRlZmF1bHQuZGlzYWJsZV9pcHY2Il19LAorICAgICAgICAgIG1vdW50czpbLk1vdW50c1tdPyB8IHt0eXBlOi5UeXBlLGRlc3RpbmF0aW9uOi5EZXN0aW5hdGlvbixydzouUld9XSwKKyAgICAgICAgICBzdGF0ZTp7c3RhdHVzOi5TdGF0ZS5TdGF0dXMsZXhpdF9jb2RlOi5TdGF0ZS5FeGl0Q29kZSwKKyAgICAgICAgICAgIG9vbV9raWxsZWQ6LlN0YXRlLk9PTUtpbGxlZCxzdGFydGVkX2F0Oi5TdGF0ZS5TdGFydGVkQXQsCisgICAgICAgICAgICBmaW5pc2hlZF9hdDouU3RhdGUuRmluaXNoZWRBdCxydW5uaW5nOi5TdGF0ZS5SdW5uaW5nLAorICAgICAgICAgICAgZGVhZDouU3RhdGUuRGVhZCxyZXN0YXJ0aW5nOi5TdGF0ZS5SZXN0YXJ0aW5nLHBhdXNlZDouU3RhdGUuUGF1c2VkLAorICAgICAgICAgICAgcmVzdGFydF9jb3VudDouUmVzdGFydENvdW50LGhlYWx0aF9zdGF0dXM6LlN0YXRlLkhlYWx0aC5TdGF0dXMsCisgICAgICAgICAgICBoZWFsdGhfZmFpbGluZ19zdHJlYWs6LlN0YXRlLkhlYWx0aC5GYWlsaW5nU3RyZWFrfX1dJyA+ICIkcGVuZGluZyIKKyAgICBjaG1vZCAwNDAwICIkcGVuZGluZyIKKyAgICBtdiAtZiAtLSAiJHBlbmRpbmciICIkcGF0aCIKK30KKworYmFzZWxpbmVfY3N2PSgpCitiYXNlbGluZV9zdGRlcnI9KCkKK2Jhc2VsaW5lX2FjY291bnRpbmc9KCkKK2Jhc2VsaW5lX3NhbXBsZXM9KCkKK2Jhc2VsaW5lX3Jlc291cmNlcz0oKQorYmFzZWxpbmVfbWFya2Vycz0oKQorYmFzZWxpbmVfbWFuaWZlc3RzPSgpCitjYW5kaWRhdGVfY3N2PSgpCitjYW5kaWRhdGVfc3RkZXJyPSgpCitjYW5kaWRhdGVfYWNjb3VudGluZz0oKQorY2FuZGlkYXRlX3NhbXBsZXM9KCkKK2NhbmRpZGF0ZV9yZXNvdXJjZXM9KCkKK2NhbmRpZGF0ZV9tYXJrZXJzPSgpCitjYW5kaWRhdGVfbWFuaWZlc3RzPSgpCitydW5fYWNjb3VudGluZ19yZWNvcmRzPSgpCitydW5fcmVzb3VyY2VfcmVjb3Jkcz0oKQorbWlncmF0aW9uX2hhc2hlcz0oKQorcmVkaXNfZ2VuZXJhdGlvbnM9KCkKK3Byb2dyZXNzX3JlY29yZHM9KCkKK3Byb2dyZXNzX3BhdGg9IiRhcnRpZmFjdF9kaXIvZXZhbHVhdGlvbi1wcm9ncmVzcy5qc29uIgorCitqb2luX2NzdigpIHsKKyAgICBsb2NhbCBJRlM9LAorICAgIHByaW50ZiAnJXMnICIkKiIKK30KKword3JpdGVfZXZhbHVhdGlvbl9wcm9ncmVzcygpIHsKKyAgICBsb2NhbCBwaGFzZT0iJDEiIGJhc2VsaW5lX2NvbXBsZXRlZD0iJDIiIGNhbmRpZGF0ZV9jb21wbGV0ZWQ9IiQzIgorICAgIGxvY2FsIHBlbmRpbmc9IiRwcm9ncmVzc19wYXRoLm5ldyIKKyAgICBwcmludGYgJyVzXG4nICIke3Byb2dyZXNzX3JlY29yZHNbQF19IiB8IGpxIC1zIFwKKyAgICAgICAgLS1hcmcgam9iX2lkICIkam9iX2lkIiAtLWFyZyByb3VuZF9pZCAiJHJvdW5kX2lkIiAtLWFyZyBwaGFzZSAiJHBoYXNlIiBcCisgICAgICAgIC0tYXJnanNvbiByZXBsaWNhdGVfY291bnQgIiRyZXBsaWNhdGVzIiBcCisgICAgICAgIC0tYXJnanNvbiBiYXNlbGluZV9jb21wbGV0ZWQgIiRiYXNlbGluZV9jb21wbGV0ZWQiIFwKKyAgICAgICAgLS1hcmdqc29uIGNhbmRpZGF0ZV9jb21wbGV0ZWQgIiRjYW5kaWRhdGVfY29tcGxldGVkIiBcCisgICAgICAgIC0tYXJnanNvbiB1cGRhdGVkX3VuaXhfbXMgIiQoZGF0ZSArJXMlM04pIiBcCisgICAgICAgICd7c2NoZW1hOjEsa2luZDoic2ltLWxhdGVuY3ktZXZhbHVhdGlvbi1wcm9ncmVzcyIsam9iX2lkOiRqb2JfaWQsCisgICAgICAgICAgcm91bmRfaWQ6JHJvdW5kX2lkLHBoYXNlOiRwaGFzZSxyZXBsaWNhdGVfY291bnQ6JHJlcGxpY2F0ZV9jb3VudCwKKyAgICAgICAgICBiYXNlbGluZV9jb21wbGV0ZWQ6JGJhc2VsaW5lX2NvbXBsZXRlZCwKKyAgICAgICAgICBjYW5kaWRhdGVfY29tcGxldGVkOiRjYW5kaWRhdGVfY29tcGxldGVkLAorICAgICAgICAgIHVwZGF0ZWRfdW5peF9tczokdXBkYXRlZF91bml4X21zLG1ldHJpY3M6Ln0nID4gIiRwZW5kaW5nIgorICAgIGNobW9kIDA0MDAgIiRwZW5kaW5nIgorICAgIG12IC1mIC0tICIkcGVuZGluZyIgIiRwcm9ncmVzc19wYXRoIgorICAgIHN5bmMgLWQgIiRwcm9ncmVzc19wYXRoIgorfQorCitydW5fbGl2ZV9jb21wYXJpc29uKCkgeworICAgIGxvY2FsIGluZGV4PSIkMSIgb3JkaW5hbCBjb21wYXJlX25hbWUgY29tcGFyZV9jZ3JvdXAgY29tcGFyaXNvbgorICAgIG9yZGluYWw9IiQocHJpbnRmICclMDJkJyAiJGluZGV4IikiCisgICAgY29tcGFyZV9uYW1lPSJ1cm5ldHdvcmstZXZhbC0ke2pvYl9pZC8vLS99LWxpdmUtJHtvcmRpbmFsfSIKKyAgICBjb21wYXJlX25hbWU9IiR7Y29tcGFyZV9uYW1lOjA6NjN9IgorICAgIGNvbXBhcmVfY2dyb3VwPSJ1cm5ldHdvcmstZXZhbHVhdGlvbi0ke2pvYl9pZC8vLS99LWxpdmUtJHtvcmRpbmFsfS5zbGljZSIKKyAgICBjb21wYXJlX2Nncm91cD0iJHtjb21wYXJlX2Nncm91cDowOjk1fS5zbGljZSIKKyAgICBjb21wYXJlX2Nncm91cD0iJHtjb21wYXJlX2Nncm91cC8uc2xpY2Uuc2xpY2UvLnNsaWNlfSIKKyAgICBpZiBbIC1uICIkcm91bmRfYmFzZWxpbmVfcGF0aCIgXTsgdGhlbgorICAgICAgICAjIE9mZmljaWFsIHNjb3JlIGNvbW1hbmRzIGFjY2VwdCByZXN1bHRzLmNzdiBhbmQgcmVzb2x2ZSBpdHMgcnVuLmpzb24KKyAgICAgICAgIyBzaWRlY2FyOyBjb21wYXJlIGJlbG93IGFjY2VwdHMgdGhlIG1hbmlmZXN0cyBkaXJlY3RseS4KKyAgICAgICAgY29tcGFyaXNvbj0iJChldmFsdWF0aW9uX2RvY2tlciBydW4gLS1ybSAtLW5hbWUgIiRjb21wYXJlX25hbWUiIFwKKyAgICAgICAgICAgIC0tbmV0d29yayBub25lIC0tcmVhZC1vbmx5IC0tdXNlciA2NTUzMjo2NTUzMiBcCisgICAgICAgICAgICAtLWNwdXNldC1jcHVzICIkY3B1c2V0IiBcCisgICAgICAgICAgICAtLW1lbW9yeSAiJFNDT1JFUl9NRU1PUllfQllURVMiIC0tbWVtb3J5LXN3YXAgIiRTQ09SRVJfTUVNT1JZX0JZVEVTIiBcCisgICAgICAgICAgICAtLXBpZHMtbGltaXQgIiRTQ09SRVJfUElEU19MSU1JVCIgLS1jZ3JvdXAtcGFyZW50ICIkY29tcGFyZV9jZ3JvdXAiIFwKKyAgICAgICAgICAgIC0tY2FwLWRyb3AgQUxMIC0tc2VjdXJpdHktb3B0IG5vLW5ldy1wcml2aWxlZ2VzOnRydWUgXAorICAgICAgICAgICAgLS1sYWJlbCAiY29tLnVybmV0d29yay5jb21wZXRpdGlvbi5qb2ItaWQ9JGpvYl9pZCIgXAorICAgICAgICAgICAgLS1sYWJlbCAnY29tLnVybmV0d29yay5jb21wZXRpdGlvbi5zdGFnZT1saXZlLXByb2dyZXNzJyBcCisgICAgICAgICAgICAtLWxhYmVsICJjb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLnJvdW5kLWlkPSRyb3VuZF9pZCIgXAorICAgICAgICAgICAgLS1tb3VudCAidHlwZT1iaW5kLHNyYz0kd29ya19kaXIvc2NvcmVyLWlucHV0LGRzdD0vYXJ0aWZhY3RzLHJlYWRvbmx5IiBcCisgICAgICAgICAgICAtLWVudHJ5cG9pbnQgL29wdC91cm5ldHdvcmsvYmluL3NpbS1sYXRlbmN5ICIke3N1YmV2YWx1YXRpb25fcnVuX2xhYmVsX2FyZ3NbQF19IiBcCisgICAgICAgICAgICAiJGJhc2VfaW1hZ2VfaWQiIHNjb3JlLXByb2dyZXNzIFwKKyAgICAgICAgICAgIC0tcnVuICIkKGpvaW5fY3N2ICIke2NhbmRpZGF0ZV9jc3ZbQF19IikiIFwKKyAgICAgICAgICAgIC0tYmFzZWxpbmUgL2FydGlmYWN0cy9iYXNlbGluZS5qc29uKSIgfHwgZGllICJjYW5kaWRhdGUtJG9yZGluYWwgbGl2ZSBjb21wYXJpc29uIGZhaWxlZCIKKyAgICBlbHNlCisgICAgICAgIGNvbXBhcmlzb249IiQoZXZhbHVhdGlvbl9kb2NrZXIgcnVuIC0tcm0gLS1uYW1lICIkY29tcGFyZV9uYW1lIiBcCisgICAgICAgICAgICAtLW5ldHdvcmsgbm9uZSAtLXJlYWQtb25seSAtLXVzZXIgNjU1MzI6NjU1MzIgXAorICAgICAgICAgICAgLS1jcHVzZXQtY3B1cyAiJGNwdXNldCIgXAorICAgICAgICAgICAgLS1tZW1vcnkgIiRTQ09SRVJfTUVNT1JZX0JZVEVTIiAtLW1lbW9yeS1zd2FwICIkU0NPUkVSX01FTU9SWV9CWVRFUyIgXAorICAgICAgICAgICAgLS1waWRzLWxpbWl0ICIkU0NPUkVSX1BJRFNfTElNSVQiIC0tY2dyb3VwLXBhcmVudCAiJGNvbXBhcmVfY2dyb3VwIiBcCisgICAgICAgICAgICAtLWNhcC1kcm9wIEFMTCAtLXNlY3VyaXR5LW9wdCBuby1uZXctcHJpdmlsZWdlczp0cnVlIFwKKyAgICAgICAgICAgIC0tbGFiZWwgImNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkPSRqb2JfaWQiIFwKKyAgICAgICAgICAgIC0tbGFiZWwgJ2NvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uc3RhZ2U9bGl2ZS1wcm9ncmVzcycgXAorICAgICAgICAgICAgLS1sYWJlbCAiY29tLnVybmV0d29yay5jb21wZXRpdGlvbi5yb3VuZC1pZD0kcm91bmRfaWQiIFwKKyAgICAgICAgICAgIC0tbW91bnQgInR5cGU9YmluZCxzcmM9JHdvcmtfZGlyL3Njb3Jlci1pbnB1dCxkc3Q9L2FydGlmYWN0cyxyZWFkb25seSIgXAorICAgICAgICAgICAgLS1lbnRyeXBvaW50IC9vcHQvdXJuZXR3b3JrL2Jpbi9zaW0tbGF0ZW5jeSAiJHtzdWJldmFsdWF0aW9uX3J1bl9sYWJlbF9hcmdzW0BdfSIgXAorICAgICAgICAgICAgIiRiYXNlX2ltYWdlX2lkIiBjb21wYXJlIFwKKyAgICAgICAgICAgIC0tYSAiJChqb2luX2NzdiAiJHtjYW5kaWRhdGVfbWFuaWZlc3RzW0BdfSIpIiBcCisgICAgICAgICAgICAtLWIgIiQoam9pbl9jc3YgIiR7YmFzZWxpbmVfbWFuaWZlc3RzW0BdfSIpIiBcCisgICAgICAgICAgICAtLXAgMC4wNSAtLWpzb24pIiB8fCBkaWUgImNhbmRpZGF0ZS0kb3JkaW5hbCBsaXZlIGNvbXBhcmlzb24gZmFpbGVkIgorICAgIGZpCisgICAganEgLWUgXAorICAgICAgICAnLmFscGhhID09IDAuMDUgYW5kICgubWV0cmljcyB8IHR5cGUgPT0gImFycmF5IikgYW5kCisgICAgICAgICAoWy5tZXRyaWNzW10gfCBzZWxlY3QoLm5hbWUgPT0gInR0ZmJfcDUwX21zIiBvcgorICAgICAgICAgICAgIC5uYW1lID09ICJ0dGZiX3A5NV9tcyIgb3IKKyAgICAgICAgICAgICAubmFtZSA9PSAidGhyb3VnaHB1dF9wNTBfYnl0ZXNfcGVyX3MiIG9yCisgICAgICAgICAgICAgLm5hbWUgPT0gInRocm91Z2hwdXRfcDk1X2J5dGVzX3Blcl9zIildIHwgbGVuZ3RoKSA9PSA0JyBcCisgICAgICAgIDw8PCIkY29tcGFyaXNvbiIgPi9kZXYvbnVsbCB8fCBkaWUgImNhbmRpZGF0ZS0kb3JkaW5hbCBsaXZlIGNvbXBhcmlzb24gaXMgaW52YWxpZCIKKyAgICBwcmludGYgJyVzJyAiJGNvbXBhcmlzb24iCit9CisKK3JlY29yZF9zdGFnZV9wcm9ncmVzcygpIHsKKyAgICBsb2NhbCByb2xlPSIkMSIgaW5kZXg9IiQyIiBydW5fbWFuaWZlc3Q9IiQzIgorICAgIGxvY2FsIGNvbXBhcmlzb25fanNvbj1udWxsIG1ldHJpYyBxdWFudGlsZSB2YWx1ZSBtZXRyaWNfY29tcGFyaXNvbgorICAgIGxvY2FsIHBfaW1wcm92ZW1lbnQgcF9yZWdyZXNzaW9uIHNpZ25pZmljYW5jZQorICAgIGlmIFsgIiRyb2xlIiA9IGNhbmRpZGF0ZSBdOyB0aGVuCisgICAgICAgIGNvbXBhcmlzb25fanNvbj0iJChydW5fbGl2ZV9jb21wYXJpc29uICIkaW5kZXgiKSIKKyAgICBmaQorICAgIGZvciBtZXRyaWMgaW4gXAorICAgICAgICB0dGZiX3A1MF9tcyB0dGZiX3A5NV9tcyBcCisgICAgICAgIHRocm91Z2hwdXRfcDUwX2J5dGVzX3Blcl9zIHRocm91Z2hwdXRfcDk1X2J5dGVzX3Blcl9zOyBkbworICAgICAgICB2YWx1ZT0iJChldmFsdWF0aW9uX2ZpbGUganEgLWVyIC0tYXJnIG1ldHJpYyAiJG1ldHJpYyIgXAorICAgICAgICAgICAgJy5tZXRyaWNzWyRtZXRyaWNdLnZhbHVlIHwKKyAgICAgICAgICAgICBzZWxlY3QodHlwZSA9PSAibnVtYmVyIiBhbmQgaXNmaW5pdGUgYW5kIC4gPj0gMCknIFwKKyAgICAgICAgICAgICIkcnVuX21hbmlmZXN0IikiIHx8IGRpZSAiJHJvbGUtJGluZGV4IGxpdmUgbWV0cmljICRtZXRyaWMgaXMgaW52YWxpZCIKKyAgICAgICAgY2FzZSAiJG1ldHJpYyIgaW4KKyAgICAgICAgICAgICpfcDUwXyopIHF1YW50aWxlPXA1MCA7OworICAgICAgICAgICAgKl9wOTVfKikgcXVhbnRpbGU9cDk1IDs7CisgICAgICAgICAgICAqKSBkaWUgInVuc3VwcG9ydGVkIGxpdmUgbWV0cmljICRtZXRyaWMiIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgaWYgWyAiJHJvbGUiID0gYmFzZWxpbmUgXTsgdGhlbgorICAgICAgICAgICAgcF9pbXByb3ZlbWVudD1udWxsCisgICAgICAgICAgICBwX3JlZ3Jlc3Npb249bnVsbAorICAgICAgICAgICAgc2lnbmlmaWNhbmNlPWJhc2VsaW5lCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1ldHJpY19jb21wYXJpc29uPSIkKGpxIC1lYyAtLWFyZyBtZXRyaWMgIiRtZXRyaWMiIFwKKyAgICAgICAgICAgICAgICAnLm1ldHJpY3NbXSB8IHNlbGVjdCgubmFtZSA9PSAkbWV0cmljKScgPDw8IiRjb21wYXJpc29uX2pzb24iKSIgfHwKKyAgICAgICAgICAgICAgICBkaWUgImNhbmRpZGF0ZS0kaW5kZXggY29tcGFyaXNvbiBvbWl0dGVkICRtZXRyaWMiCisgICAgICAgICAgICBwX2ltcHJvdmVtZW50PSIkKGpxIC1jICdpZiAudGVzdGFibGUgdGhlbiAoLnBfYSAvLyAwKSBlbHNlIG51bGwgZW5kJyBcCisgICAgICAgICAgICAgICAgPDw8IiRtZXRyaWNfY29tcGFyaXNvbiIpIgorICAgICAgICAgICAgcF9yZWdyZXNzaW9uPSIkKGpxIC1jICdpZiAudGVzdGFibGUgdGhlbiAoLnBfYiAvLyAwKSBlbHNlIG51bGwgZW5kJyBcCisgICAgICAgICAgICAgICAgPDw8IiRtZXRyaWNfY29tcGFyaXNvbiIpIgorICAgICAgICAgICAgc2lnbmlmaWNhbmNlPSIkKGpxIC1yIC0tYXJnanNvbiBhbHBoYSAwLjA1IFwKKyAgICAgICAgICAgICAgICAnaWYgLnRlc3RhYmxlICE9IHRydWUgdGhlbiAibm90X3Rlc3RhYmxlIgorICAgICAgICAgICAgICAgICBlbGlmICgucF9hIC8vIDApIDw9ICRhbHBoYSB0aGVuICJpbXByb3ZlZCIKKyAgICAgICAgICAgICAgICAgZWxpZiAoLnBfYiAvLyAwKSA8PSAkYWxwaGEgdGhlbiAicmVncmVzc2VkIgorICAgICAgICAgICAgICAgICBlbHNlICJub3Rfc2lnbmlmaWNhbnQiIGVuZCcgPDw8IiRtZXRyaWNfY29tcGFyaXNvbiIpIgorICAgICAgICBmaQorICAgICAgICBwcm9ncmVzc19yZWNvcmRzKz0oIiQoanEgLWNuIFwKKyAgICAgICAgICAgIC0tYXJnIHJvbGUgIiRyb2xlIiAtLWFyZ2pzb24gcmVwbGljYXRlICIkaW5kZXgiIFwKKyAgICAgICAgICAgIC0tYXJnIG1ldHJpYyAiJG1ldHJpYyIgLS1hcmcgcXVhbnRpbGUgIiRxdWFudGlsZSIgXAorICAgICAgICAgICAgLS1hcmdqc29uIHZhbHVlICIkdmFsdWUiIFwKKyAgICAgICAgICAgIC0tYXJnanNvbiBwX2ltcHJvdmVtZW50ICIkcF9pbXByb3ZlbWVudCIgXAorICAgICAgICAgICAgLS1hcmdqc29uIHBfcmVncmVzc2lvbiAiJHBfcmVncmVzc2lvbiIgXAorICAgICAgICAgICAgLS1hcmcgc2lnbmlmaWNhbmNlICIkc2lnbmlmaWNhbmNlIiBcCisgICAgICAgICAgICAne3JvbGU6JHJvbGUscmVwbGljYXRlOiRyZXBsaWNhdGUsbWV0cmljOiRtZXRyaWMsCisgICAgICAgICAgICAgIHF1YW50aWxlOiRxdWFudGlsZSx2YWx1ZTokdmFsdWUsCisgICAgICAgICAgICAgIHBfaW1wcm92ZW1lbnQ6JHBfaW1wcm92ZW1lbnQscF9yZWdyZXNzaW9uOiRwX3JlZ3Jlc3Npb24sCisgICAgICAgICAgICAgIHNpZ25pZmljYW5jZTokc2lnbmlmaWNhbmNlfScpIikKKyAgICBkb25lCisgICAgaWYgWyAiJHJvbGUiID0gYmFzZWxpbmUgXTsgdGhlbgorICAgICAgICB3cml0ZV9ldmFsdWF0aW9uX3Byb2dyZXNzIGJhc2VsaW5lICIkaW5kZXgiIDAKKyAgICBlbHNlCisgICAgICAgIHdyaXRlX2V2YWx1YXRpb25fcHJvZ3Jlc3MgY2FuZGlkYXRlICIkcmVwbGljYXRlcyIgIiRpbmRleCIKKyAgICBmaQorfQorCit3cml0ZV9ldmFsdWF0aW9uX3Byb2dyZXNzIHByZXBhcmluZyAwIDAKKworcnVuX3N0YWdlKCkgeworICAgIGxvY2FsIHJvbGU9IiQxIiBpbmRleD0iJDIiIGltYWdlPSIkMyIgYnVpbGRfc2hhPSIkNCIgc2ltdWxhdG9yX3NoYT0iJDUiIGNhbmRpZGF0ZV9wYXRjaF9zaGE9IiQ2IgorICAgIGxvY2FsIG9yZGluYWwgZXZhbHVhdGlvbl9pZCBzdGFnZV90b2tlbiBwcm9qZWN0IGNncm91cF9wYXJlbnQgc3RhZ2Vfcm9vdCBvdXRwdXQgcnVubmVyX2VudiBjb21wb3NlX2VudiBzb3VyY2UKKyAgICBvcmRpbmFsPSIkKHByaW50ZiAnJTAyZCcgIiRpbmRleCIpIgorICAgIGV2YWx1YXRpb25faWQ9IiR7cm9sZX0tJHtvcmRpbmFsfS0ke2pvYl9pZDowOjh9IgorICAgIHN0YWdlX3Rva2VuPSIke3JvbGV9LSR7b3JkaW5hbH0iCisgICAgcHJvamVjdD0idXJuZXR3b3JrLWV2YWwtJHthdHRlbXB0X3Rva2VufS0ke3N0YWdlX3Rva2VufSIKKyAgICBjZ3JvdXBfcGFyZW50PSJ1cm5ldHdvcmstZXZhbHVhdGlvbi0ke2F0dGVtcHRfdG9rZW59LSR7c3RhZ2VfdG9rZW59LnNsaWNlIgorICAgIHN0YWdlX3Jvb3Q9IiR3b3JrX2Rpci9ydW5zLyRzdGFnZV90b2tlbiIKKyAgICBvdXRwdXQ9IiRzdGFnZV9yb290L291dHB1dCIKKyAgICBydW5uZXJfZW52PSIkc3RhZ2Vfcm9vdC9ydW5uZXIuZW52IgorICAgIGNvbXBvc2VfZW52PSIkc3RhZ2Vfcm9vdC9jb21wb3NlLmVudiIKKyAgICBpZiBbICIkcm9sZSIgPSBiYXNlbGluZSBdOyB0aGVuCisgICAgICAgIHNvdXJjZT0iJGJhc2VsaW5lX3NvdXJjZV9yb290IgorICAgIGVsc2UKKyAgICAgICAgc291cmNlPSIkY2FuZGlkYXRlX3NvdXJjZV9yb290IgorICAgIGZpCisgICAgaW5zdGFsbCAtZCAtbSAwNzAwICIkc3RhZ2Vfcm9vdCIgIiRvdXRwdXQiCisKKyAgICBzdGFnZV9kYl9hZG1pbl9wYXNzd29yZD0iJChuZXdfc2VjcmV0KSIKKyAgICBzdGFnZV9kYl9wYXNzd29yZD0iJChuZXdfc2VjcmV0KSIKKyAgICBzdGFnZV9yZWRpc19wYXNzd29yZD0iJChuZXdfc2VjcmV0KSIKKyAgICBhdXRoZW50aWNhdGVfbG9jYWxfbW91bnRzCisgICAgd3JpdGVfcnVubmVyX2VudiAiJHJ1bm5lcl9lbnYiICIkZXZhbHVhdGlvbl9pZCIgIiRidWlsZF9zaGEiICIkc2ltdWxhdG9yX3NoYSIgIiRpbWFnZSIgIiRjYW5kaWRhdGVfcGF0Y2hfc2hhIgorICAgIHdyaXRlX2NvbXBvc2VfZW52ICIkY29tcG9zZV9lbnYiICIkcHJvamVjdCIgIiRyb2xlIiAiJGltYWdlIiAiJHJ1bm5lcl9lbnYiIFwKKyAgICAgICAgIiR3b3JrX2Rpci9pbnB1dCIgIiRvdXRwdXQiICIkY2dyb3VwX3BhcmVudCIgIiRzb3VyY2UiCisgICAgaWYgW1sgIiRzdWJldmFsdWF0aW9uX3Njb3BlZCIgPSB0cnVlIF1dOyB0aGVuCisgICAgICAgIGV2YWx1YXRpb25faG9zdCBwcmVwYXJlLW91dHB1dCAiJG91dHB1dCIKKyAgICBlbHNlCisgICAgICAgIHN1ZG8gLW4gY2hvd24gLVIgIiRjb250YWluZXJfaG9zdF91aWQ6JGNvbnRhaW5lcl9ob3N0X2dpZCIgIiRvdXRwdXQiCisgICAgICAgIHN1ZG8gLW4gY2htb2QgMDcwMCAiJG91dHB1dCIKKyAgICBmaQorCisgICAgYWN0aXZlX3Byb2plY3Q9IiRwcm9qZWN0IgorICAgIGFjdGl2ZV9jb21wb3NlX2Vudj0iJGNvbXBvc2VfZW52IgorICAgIGNvbXBvc2Vfd2l0aCAiJHByb2plY3QiICIkY29tcG9zZV9lbnYiIC0tcHJvZmlsZSBydW4gY29uZmlnID4vZGV2L251bGwKKyAgICBjb21wb3NlX3dpdGggIiRwcm9qZWN0IiAiJGNvbXBvc2VfZW52IiAtLXByb2ZpbGUgcnVuIHVwIC0tZGV0YWNoIC0td2FpdCBwb3N0Z3JlcyByZWRpcyA+JjIKKyAgICAjIE9ubHkgdHJ1c3RlZCBiYWNraW5nIGltYWdlcyBoYXZlIHN0YXJ0ZWQuIFJlamVjdCBhIGhvc3QtYWRkcmVzc2VkIGJyaWRnZQorICAgICMgYmVmb3JlIG1pZ3JhdGlvbiwgcHJlZmxpZ2h0IG9yIGNhbmRpZGF0ZSBwYWNrYWdlIGluaXRpYWxpemF0aW9uIGNhbiBydW4uCisgICAgIiRORVRXT1JLX0JPVU5EQVJZIiAiJHtwcm9qZWN0fV9ldmFsdWF0aW9uIiA+ICIkc3RhZ2Vfcm9vdC9uZXR3b3JrLWJvdW5kYXJ5Lmpzb24iIHx8CisgICAgICAgIGRpZSAiJHN0YWdlX3Rva2VuIG5ldHdvcmsgYm91bmRhcnkgZmFpbGVkIGJlZm9yZSBydW5uZXIgYWRtaXNzaW9uIgorICAgIGxvY2FsIG1pZ3JhdGlvbl9qc29uIG1pZ3JhdGlvbl9wYXRoIG1pZ3JhdGlvbl9zaGEKKyAgICBtaWdyYXRpb25fanNvbj0iJChjb21wb3NlX3dpdGggIiRwcm9qZWN0IiAiJGNvbXBvc2VfZW52IiAtLXByb2ZpbGUgcnVuIHJ1biAtLXJtIC0tbm8tZGVwcyAtLW5vLXR0eSBtaWdyYXRlKSIKKyAgICBqcSAtZSAnLnNjaGVtYSA9PSAxIGFuZCAuZGF0YWJhc2VfdmVyc2lvbiA+IDAgYW5kIC5kYXRhYmFzZV92ZXJzaW9uID09IC5taWdyYXRpb25fY291bnQnIFwKKyAgICAgICAgPDw8IiRtaWdyYXRpb25fanNvbiIgPi9kZXYvbnVsbCB8fCBkaWUgIiRzdGFnZV90b2tlbiBtaWdyYXRpb24gZ2F0ZSBmYWlsZWQiCisgICAgbWlncmF0aW9uX3BhdGg9IiRzdGFnZV9yb290L21pZ3JhdGlvbi5qc29uIgorICAgIHByaW50ZiAnJXNcbicgIiRtaWdyYXRpb25fanNvbiIgPiAiJG1pZ3JhdGlvbl9wYXRoIgorICAgIG1pZ3JhdGlvbl9zaGE9IiQoc2hhMjU2X2ZpbGUgIiRtaWdyYXRpb25fcGF0aCIpIgorICAgIG1pZ3JhdGlvbl9oYXNoZXMrPSgiJG1pZ3JhdGlvbl9zaGEiKQorICAgIHJlZGlzX2dlbmVyYXRpb25zKz0oIiQobmV3X3NlY3JldCkiKQorCisgICAgY29tcG9zZV93aXRoICIkcHJvamVjdCIgIiRjb21wb3NlX2VudiIgLS1wcm9maWxlIHJ1biBydW4gLS1ybSAtLW5vLWRlcHMgLS1uby10dHkgcnVubmVyIHByZWZsaWdodCA+JjIKKyAgICBsb2NhbCBydW5uZXJfaWQ9IiIgcG9zdGdyZXNfaWQgcmVkaXNfaWQgcnVubmVyX2Nncm91cCBwb3N0Z3Jlc19jZ3JvdXAgcmVkaXNfY2dyb3VwCisgICAgbG9jYWwgaW5zcGVjdF9wYXRoPSIkc3RhZ2Vfcm9vdC9jb250YWluZXJzLmpzb24iIGluc3BlY3RfanNvbgorICAgIHBvc3RncmVzX2lkPSIkKGNvbXBvc2Vfd2l0aCAiJHByb2plY3QiICIkY29tcG9zZV9lbnYiIC0tcHJvZmlsZSBydW4gcHMgLS1hbGwgLS1xdWlldCBwb3N0Z3JlcykiCisgICAgcmVkaXNfaWQ9IiQoY29tcG9zZV93aXRoICIkcHJvamVjdCIgIiRjb21wb3NlX2VudiIgLS1wcm9maWxlIHJ1biBwcyAtLWFsbCAtLXF1aWV0IHJlZGlzKSIKKyAgICBbIC1uICIkcG9zdGdyZXNfaWQiIF0gJiYgWyAtbiAiJHJlZGlzX2lkIiBdIHx8IGRpZSAiJHN0YWdlX3Rva2VuIGJhY2tpbmcgY29udGFpbmVyIGlkZW50aXR5IG1pc3NpbmciCisgICAgaW5zcGVjdF9qc29uPSIkKGV2YWx1YXRpb25fZG9ja2VyIGluc3BlY3QgIiRwb3N0Z3Jlc19pZCIgIiRyZWRpc19pZCIpIgorICAgIHdyaXRlX2NvbnRhaW5lcl9pbnNwZWN0aW9uICIkaW5zcGVjdF9wYXRoIiA8PDwiJGluc3BlY3RfanNvbiIKKyAgICBwb3N0Z3Jlc19jZ3JvdXA9IiQoY29udGFpbmVyX2Nncm91cCAiJHBvc3RncmVzX2lkIikiIHx8IGRpZSAiJHN0YWdlX3Rva2VuIHBvc3RncmVzIGNncm91cCBtZW1iZXJzaGlwIHVuYXZhaWxhYmxlIgorICAgIHJlZGlzX2Nncm91cD0iJChjb250YWluZXJfY2dyb3VwICIkcmVkaXNfaWQiKSIgfHwgZGllICIkc3RhZ2VfdG9rZW4gcmVkaXMgY2dyb3VwIG1lbWJlcnNoaXAgdW5hdmFpbGFibGUiCisgICAgWyAiJHtwb3N0Z3Jlc19jZ3JvdXAlLyp9IiA9ICIke3JlZGlzX2Nncm91cCUvKn0iIF0gfHwgZGllICIkc3RhZ2VfdG9rZW4gYmFja2luZyBjZ3JvdXAgcGFyZW50cyBkaXNhZ3JlZSIKKyAgICBjYXNlICIkcG9zdGdyZXNfY2dyb3VwIiBpbgorICAgICAgICAqIi8kY2dyb3VwX3BhcmVudC8iKikgOzsKKyAgICAgICAgKikgZGllICIkc3RhZ2VfdG9rZW4gYmFja2luZyBjb250YWluZXIgZXNjYXBlZCB0aGUgZGVkaWNhdGVkIGNncm91cCBwYXJlbnQiIDs7CisgICAgZXNhYworICAgIGxvY2FsIHByZV9ydW5fb29tX2tpbGxzCisgICAgcHJlX3J1bl9vb21fa2lsbHM9IiQocmVhZF9jZ3JvdXBfb29tX2tpbGxzICIke3Bvc3RncmVzX2Nncm91cCUvKn0iKSIgfHwKKyAgICAgICAgZGllICIkc3RhZ2VfdG9rZW4gcHJlLXJ1biBtZW1vcnkgZXZlbnRzIHVuYXZhaWxhYmxlIgorICAgIFsgIiRwcmVfcnVuX29vbV9raWxscyIgPSAwIF0gfHwgZGllICIkc3RhZ2VfdG9rZW4gcHJlLXJ1biByZXNvdXJjZSBjb250YWlubWVudCBmYWlsdXJlIgorICAgIGNvbXBvc2Vfd2l0aCAiJHByb2plY3QiICIkY29tcG9zZV9lbnYiIC0tcHJvZmlsZSBydW4gdXAgLS1uby1kZXBzIC0tZGV0YWNoIHJ1bm5lciA+JjIKKyAgICBydW5uZXJfaWQ9IiQoY29tcG9zZV93aXRoICIkcHJvamVjdCIgIiRjb21wb3NlX2VudiIgLS1wcm9maWxlIHJ1biBwcyAtLWFsbCAtLXF1aWV0IHJ1bm5lcikiCisgICAgWyAtbiAiJHJ1bm5lcl9pZCIgXSAmJiBbIC1uICIkcG9zdGdyZXNfaWQiIF0gJiYgWyAtbiAiJHJlZGlzX2lkIiBdIHx8IGRpZSAiJHN0YWdlX3Rva2VuIGNvbnRhaW5lciBpZGVudGl0eSBtaXNzaW5nIgorICAgIGluc3BlY3RfanNvbj0iJChldmFsdWF0aW9uX2RvY2tlciBpbnNwZWN0ICIkcnVubmVyX2lkIiAiJHBvc3RncmVzX2lkIiAiJHJlZGlzX2lkIikiCisgICAgd3JpdGVfY29udGFpbmVyX2luc3BlY3Rpb24gIiRpbnNwZWN0X3BhdGgiIDw8PCIkaW5zcGVjdF9qc29uIgorICAgIGZvciBfIGluICQoc2VxIDEgMjAwKTsgZG8KKyAgICAgICAgcnVubmVyX2Nncm91cD0iJChjb250YWluZXJfY2dyb3VwICIkcnVubmVyX2lkIiAyPi9kZXYvbnVsbCB8fCB0cnVlKSIKKyAgICAgICAgcG9zdGdyZXNfY2dyb3VwPSIkKGNvbnRhaW5lcl9jZ3JvdXAgIiRwb3N0Z3Jlc19pZCIgMj4vZGV2L251bGwgfHwgdHJ1ZSkiCisgICAgICAgIHJlZGlzX2Nncm91cD0iJChjb250YWluZXJfY2dyb3VwICIkcmVkaXNfaWQiIDI+L2Rldi9udWxsIHx8IHRydWUpIgorICAgICAgICBbIC1uICIkcnVubmVyX2Nncm91cCIgXSAmJiBbIC1uICIkcG9zdGdyZXNfY2dyb3VwIiBdICYmIFsgLW4gIiRyZWRpc19jZ3JvdXAiIF0gJiYgYnJlYWsKKyAgICAgICAgIyBBIGZhc3QgY3Jhc2ggcmVtb3ZlcyBpdHMgbGl2ZSBjZ3JvdXAgYmVmb3JlIHRoZSBmaXJzdCBzYW1wbGUuIEl0cworICAgICAgICAjIGltbXV0YWJsZSBEb2NrZXIgaWRlbnRpdHkgYW5kIHRlcm1pbmFsIHN0YXRlIHJlbWFpbiBpbnNwZWN0YWJsZS4KKyAgICAgICAgWyAiJChldmFsdWF0aW9uX2RvY2tlciBpbnNwZWN0IC0tZm9ybWF0ICd7ey5TdGF0ZS5TdGF0dXN9fScgIiRydW5uZXJfaWQiKSIgIT0gZXhpdGVkIF0gfHwgYnJlYWsKKyAgICAgICAgc2xlZXAgMC4xCisgICAgZG9uZQorICAgIGxvY2FsIGNncm91cF9tZW1iZXJzaGlwX2F2YWlsYWJsZT1mYWxzZQorICAgIFsgLW4gIiRydW5uZXJfY2dyb3VwIiBdICYmIFsgLW4gIiRwb3N0Z3Jlc19jZ3JvdXAiIF0gJiYgWyAtbiAiJHJlZGlzX2Nncm91cCIgXSAmJiBjZ3JvdXBfbWVtYmVyc2hpcF9hdmFpbGFibGU9dHJ1ZQorICAgIGZvciByZWwgaW4gIiRydW5uZXJfY2dyb3VwIiAiJHBvc3RncmVzX2Nncm91cCIgIiRyZWRpc19jZ3JvdXAiOyBkbworICAgICAgICBjYXNlICIkcmVsIiBpbgorICAgICAgICAgICAgIiIpIDs7CisgICAgICAgICAgICAqIi8kY2dyb3VwX3BhcmVudC8iKikgOzsKKyAgICAgICAgICAgICopIGRpZSAiJHN0YWdlX3Rva2VuIGNvbnRhaW5lciBlc2NhcGVkIHRoZSBkZWRpY2F0ZWQgY2dyb3VwIHBhcmVudCIgOzsKKyAgICAgICAgZXNhYworICAgIGRvbmUKKworICAgIGxvY2FsIGV4aXRfY29kZSByZXNvdXJjZV9zYW1wbGUgc2FtcGxlcl9waWQ9IiIgY3B1X3VzZWMgcGVha19ieXRlcyBzYW1wbGVkX29vbV9raWxscz0wIHBhcmVudF9vb21fa2lsbHMKKyAgICByZXNvdXJjZV9zYW1wbGU9IiRzdGFnZV9yb290L3Jlc291cmNlLWNvdW50ZXJzLnR4dCIKKyAgICBpZiBbICIkY2dyb3VwX21lbWJlcnNoaXBfYXZhaWxhYmxlIiA9IHRydWUgXTsgdGhlbgorICAgICAgICBzYW1wbGVfY2dyb3VwX2NvdW50ZXJzICIkcmVzb3VyY2Vfc2FtcGxlIiAiJHJ1bm5lcl9jZ3JvdXAiICIkcG9zdGdyZXNfY2dyb3VwIiAiJHJlZGlzX2Nncm91cCIgJgorICAgICAgICBzYW1wbGVyX3BpZD0kIQorICAgICAgICBhY3RpdmVfc2FtcGxlcl9waWQ9IiRzYW1wbGVyX3BpZCIKKyAgICBmaQorICAgIGV4aXRfY29kZT0iJChldmFsdWF0aW9uX2RvY2tlciB3YWl0ICIkcnVubmVyX2lkIikiCisgICAgaWYgWyAtbiAiJHNhbXBsZXJfcGlkIiBdOyB0aGVuCisgICAgICAgIGtpbGwgIiRzYW1wbGVyX3BpZCIgPi9kZXYvbnVsbCAyPiYxIHx8IHRydWUKKyAgICAgICAgd2FpdCAiJHNhbXBsZXJfcGlkIiA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQorICAgIGZpCisgICAgYWN0aXZlX3NhbXBsZXJfcGlkPSIiCisgICAgZXZhbHVhdGlvbl9kb2NrZXIgbG9ncyAiJHJ1bm5lcl9pZCIgPiYyIHx8IHRydWUKKyAgICBpbnNwZWN0X2pzb249IiQoZXZhbHVhdGlvbl9kb2NrZXIgaW5zcGVjdCAiJHJ1bm5lcl9pZCIgIiRwb3N0Z3Jlc19pZCIgIiRyZWRpc19pZCIpIgorICAgIHdyaXRlX2NvbnRhaW5lcl9pbnNwZWN0aW9uICIkaW5zcGVjdF9wYXRoIiA8PDwiJGluc3BlY3RfanNvbiIKKyAgICBbWyAiJGV4aXRfY29kZSIgPX4gXigwfFsxLTldWzAtOV17MCwyfSkkIF1dICYmIFsgIiRleGl0X2NvZGUiIC1sZSAyNTUgXSB8fAorICAgICAgICBkaWUgIiRzdGFnZV90b2tlbiBydW5uZXIgZXhpdCBzdGF0dXMgaXMgaW52YWxpZCIKKyAgICBqcSAtZSAtLWFyZyBwYXJlbnQgIiRjZ3JvdXBfcGFyZW50IiAtLWFyZyBpbWFnZSAiJGltYWdlIiBcCisgICAgICAgIC0tYXJnIGNwdXNldCAiJGNwdXNldCIgXAorICAgICAgICAtLWFyZyBydW5uZXJfaWQgIiRydW5uZXJfaWQiIC0tYXJnIHBvc3RncmVzX2lkICIkcG9zdGdyZXNfaWQiIC0tYXJnIHJlZGlzX2lkICIkcmVkaXNfaWQiIFwKKyAgICAgICAgLS1hcmcgcHJvamVjdCAiJHByb2plY3QiIC0tYXJnIHJvbGUgIiRyb2xlIiAtLWFyZyBqb2JfaWQgIiRqb2JfaWQiIC0tYXJnIHJvdW5kX2lkICIkcm91bmRfaWQiIFwKKyAgICAgICAgLS1hcmdqc29uIGV4aXRfY29kZSAiJGV4aXRfY29kZSIgXAorICAgICAgICAtLWFyZyBjb25maWdfbG9jYWwgIiRjb25maWdfbG9jYWxfZGlyZWN0b3J5IiBcCisgICAgICAgIC0tYXJnIHZhdWx0X2xvY2FsICIkdmF1bHRfbG9jYWxfZGlyZWN0b3J5IiBcCisgICAgICAgIC0tYXJnIHNvdXJjZSAiJHNvdXJjZSIgXAorICAgICAgICAtLWFyZ2pzb24gcnVubmVyX21lbW9yeSAiJFJVTk5FUl9NRU1PUllfQllURVMiIFwKKyAgICAgICAgLS1hcmdqc29uIHJ1bm5lcl9waWRzICIkUlVOTkVSX1BJRFNfTElNSVQiIFwKKyAgICAgICAgLS1hcmdqc29uIHBvc3RncmVzX21lbW9yeSAiJFBPU1RHUkVTX01FTU9SWV9CWVRFUyIgXAorICAgICAgICAtLWFyZ2pzb24gcG9zdGdyZXNfcGlkcyAiJFBPU1RHUkVTX1BJRFNfTElNSVQiIFwKKyAgICAgICAgLS1hcmdqc29uIHJlZGlzX21lbW9yeSAiJFJFRElTX01FTU9SWV9CWVRFUyIgXAorICAgICAgICAtLWFyZ2pzb24gcmVkaXNfcGlkcyAiJFJFRElTX1BJRFNfTElNSVQiIFwKKyAgICAgICAgJ2xlbmd0aCA9PSAzIGFuZAorICAgICAgICAgKG1hcChzZWxlY3QoLk5hbWUgfCBlbmRzd2l0aCgiLXJ1bm5lci0xIikpKSB8IGxlbmd0aCA9PSAxKSBhbmQKKyAgICAgICAgIChtYXAoc2VsZWN0KC5OYW1lIHwgZW5kc3dpdGgoIi1ydW5uZXItMSIpKSlbMF0gfAorICAgICAgICAgIC5JZCA9PSAkcnVubmVyX2lkIGFuZCAuTmFtZSA9PSAoIi8iICsgJHByb2plY3QgKyAiLXJ1bm5lci0xIikgYW5kCisgICAgICAgICAgLkNvbmZpZy5JbWFnZSA9PSAkaW1hZ2UgYW5kIC5Db25maWcuVXNlciA9PSAiNjU1MzI6NjU1MzIiIGFuZAorICAgICAgICAgIC5Ib3N0Q29uZmlnLlJlYWRvbmx5Um9vdGZzID09IHRydWUgYW5kIC5Ib3N0Q29uZmlnLk1lbW9yeSA9PSAkcnVubmVyX21lbW9yeSBhbmQKKyAgICAgICAgICAuSG9zdENvbmZpZy5NZW1vcnlTd2FwID09ICRydW5uZXJfbWVtb3J5IGFuZCAuSG9zdENvbmZpZy5QaWRzTGltaXQgPT0gJHJ1bm5lcl9waWRzIGFuZAorICAgICAgICAgIC5Ib3N0Q29uZmlnLkNncm91cFBhcmVudCA9PSAkcGFyZW50IGFuZCAuU3RhdGUuU3RhdHVzID09ICJleGl0ZWQiIGFuZAorICAgICAgICAgIC5TdGF0ZS5SdW5uaW5nID09IGZhbHNlIGFuZCAuU3RhdGUuRXhpdENvZGUgPT0gJGV4aXRfY29kZSBhbmQKKyAgICAgICAgICAoLlN0YXRlLk9PTUtpbGxlZCA9PSBmYWxzZSBvciAoJHJvbGUgPT0gImNhbmRpZGF0ZSIgYW5kICRleGl0X2NvZGUgPiAwIGFuZCAuU3RhdGUuT09NS2lsbGVkID09IHRydWUpKSBhbmQKKyAgICAgICAgICAoLkhvc3RDb25maWcuQ2FwRHJvcCB8IGluZGV4KCJBTEwiKSAhPSBudWxsKSBhbmQKKyAgICAgICAgICAoLkhvc3RDb25maWcuU2VjdXJpdHlPcHQgfCBpbmRleCgibm8tbmV3LXByaXZpbGVnZXM6dHJ1ZSIpICE9IG51bGwpIGFuZAorICAgICAgICAgIChbLk1vdW50c1tdIHwgc2VsZWN0KC5EZXN0aW5hdGlvbiB8IHN0YXJ0c3dpdGgoIi9ydW50aW1lIikpXSB8IGxlbmd0aCA9PSAyKSBhbmQKKyAgICAgICAgICAoYW55KC5Nb3VudHNbXTsgLlR5cGUgPT0gImJpbmQiIGFuZCAuU291cmNlID09ICRjb25maWdfbG9jYWwgYW5kCisgICAgICAgICAgICAuRGVzdGluYXRpb24gPT0gIi9ydW50aW1lL2NvbmZpZy9sb2NhbCIgYW5kIC5SVyA9PSBmYWxzZSkpIGFuZAorICAgICAgICAgIChhbnkoLk1vdW50c1tdOyAuVHlwZSA9PSAiYmluZCIgYW5kIC5Tb3VyY2UgPT0gJHZhdWx0X2xvY2FsIGFuZAorICAgICAgICAgICAgLkRlc3RpbmF0aW9uID09ICIvcnVudGltZS92YXVsdC9sb2NhbCIgYW5kIC5SVyA9PSBmYWxzZSkpIGFuZAorICAgICAgICAgIChhbnkoLk1vdW50c1tdOyAuVHlwZSA9PSAiYmluZCIgYW5kIC5Tb3VyY2UgPT0gJHNvdXJjZSBhbmQKKyAgICAgICAgICAgIC5EZXN0aW5hdGlvbiA9PSAiL3dvcmtzcGFjZSIgYW5kIC5SVyA9PSBmYWxzZSkpKSBhbmQKKyAgICAgICAgIChtYXAoc2VsZWN0KC5OYW1lIHwgZW5kc3dpdGgoIi1wb3N0Z3Jlcy0xIikpKSB8IGxlbmd0aCA9PSAxKSBhbmQKKyAgICAgICAgIChtYXAoc2VsZWN0KC5OYW1lIHwgZW5kc3dpdGgoIi1wb3N0Z3Jlcy0xIikpKVswXSB8CisgICAgICAgICAgLklkID09ICRwb3N0Z3Jlc19pZCBhbmQgLk5hbWUgPT0gKCIvIiArICRwcm9qZWN0ICsgIi1wb3N0Z3Jlcy0xIikgYW5kCisgICAgICAgICAgLkNvbmZpZy5Vc2VyID09ICI5OTk6OTk5IiBhbmQgLkhvc3RDb25maWcuTWVtb3J5ID09ICRwb3N0Z3Jlc19tZW1vcnkgYW5kCisgICAgICAgICAgLkhvc3RDb25maWcuTWVtb3J5U3dhcCA9PSAkcG9zdGdyZXNfbWVtb3J5IGFuZCAuSG9zdENvbmZpZy5QaWRzTGltaXQgPT0gJHBvc3RncmVzX3BpZHMgYW5kCisgICAgICAgICAgLlN0YXRlLlN0YXR1cyA9PSAicnVubmluZyIgYW5kIC5TdGF0ZS5SdW5uaW5nID09IHRydWUgYW5kIC5TdGF0ZS5FeGl0Q29kZSA9PSAwIGFuZAorICAgICAgICAgIC5TdGF0ZS5PT01LaWxsZWQgPT0gZmFsc2UgYW5kCisgICAgICAgICAgLlN0YXRlLkhlYWx0aC5TdGF0dXMgPT0gImhlYWx0aHkiIGFuZCAuU3RhdGUuSGVhbHRoLkZhaWxpbmdTdHJlYWsgPT0gMCkgYW5kCisgICAgICAgICAobWFwKHNlbGVjdCguTmFtZSB8IGVuZHN3aXRoKCItcmVkaXMtMSIpKSkgfCBsZW5ndGggPT0gMSkgYW5kCisgICAgICAgICAobWFwKHNlbGVjdCguTmFtZSB8IGVuZHN3aXRoKCItcmVkaXMtMSIpKSlbMF0gfAorICAgICAgICAgIC5JZCA9PSAkcmVkaXNfaWQgYW5kIC5OYW1lID09ICgiLyIgKyAkcHJvamVjdCArICItcmVkaXMtMSIpIGFuZAorICAgICAgICAgIC5Db25maWcuVXNlciA9PSAiOTk5Ojk5OSIgYW5kIC5Ib3N0Q29uZmlnLk1lbW9yeSA9PSAkcmVkaXNfbWVtb3J5IGFuZAorICAgICAgICAgIC5Ib3N0Q29uZmlnLk1lbW9yeVN3YXAgPT0gJHJlZGlzX21lbW9yeSBhbmQgLkhvc3RDb25maWcuUGlkc0xpbWl0ID09ICRyZWRpc19waWRzIGFuZAorICAgICAgICAgIC5TdGF0ZS5TdGF0dXMgPT0gInJ1bm5pbmciIGFuZCAuU3RhdGUuUnVubmluZyA9PSB0cnVlIGFuZCAuU3RhdGUuRXhpdENvZGUgPT0gMCBhbmQKKyAgICAgICAgICAuU3RhdGUuT09NS2lsbGVkID09IGZhbHNlIGFuZAorICAgICAgICAgIC5TdGF0ZS5IZWFsdGguU3RhdHVzID09ICJoZWFsdGh5IiBhbmQgLlN0YXRlLkhlYWx0aC5GYWlsaW5nU3RyZWFrID09IDApIGFuZAorICAgICAgICAgKFsuW10gfCAuSG9zdENvbmZpZy5DZ3JvdXBQYXJlbnQgPT0gJHBhcmVudCBhbmQgLkhvc3RDb25maWcuUmVhZG9ubHlSb290ZnMgPT0gdHJ1ZSBhbmQKKyAgICAgICAgICAgLkhvc3RDb25maWcuQ3B1c2V0Q3B1cyA9PSAkY3B1c2V0IGFuZAorICAgICAgICAgICAuSG9zdENvbmZpZy5TeXNjdGxzWyJuZXQuaXB2Ni5jb25mLmFsbC5kaXNhYmxlX2lwdjYiXSA9PSAiMSIgYW5kCisgICAgICAgICAgIC5Ib3N0Q29uZmlnLlN5c2N0bHNbIm5ldC5pcHY2LmNvbmYuZGVmYXVsdC5kaXNhYmxlX2lwdjYiXSA9PSAiMSIgYW5kCisgICAgICAgICAgIC5SZXN0YXJ0Q291bnQgPT0gMCBhbmQgLkhvc3RDb25maWcuUmVzdGFydFBvbGljeS5OYW1lID09ICJubyIgYW5kCisgICAgICAgICAgIC5TdGF0ZS5EZWFkID09IGZhbHNlIGFuZCAuU3RhdGUuUGF1c2VkID09IGZhbHNlIGFuZAorICAgICAgICAgICAuU3RhdGUuUmVzdGFydGluZyA9PSBmYWxzZSBhbmQgLlN0YXRlLkVycm9yID09ICIiIGFuZAorICAgICAgICAgICAuQ29uZmlnLkxhYmVsc1siY29tLmRvY2tlci5jb21wb3NlLnByb2plY3QiXSA9PSAkcHJvamVjdCBhbmQKKyAgICAgICAgICAgLkNvbmZpZy5MYWJlbHNbImNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkIl0gPT0gJGpvYl9pZCBhbmQKKyAgICAgICAgICAgLkNvbmZpZy5MYWJlbHNbImNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24ucm91bmQtaWQiXSA9PSAkcm91bmRfaWQgYW5kCisgICAgICAgICAgIC5Db25maWcuTGFiZWxzWyJjb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLnN0YWdlIl0gPT0gJHJvbGUgYW5kCisgICAgICAgICAgICgoLkhvc3RDb25maWcuQ2FwRHJvcCAvLyBbXSkgfCBpbmRleCgiQUxMIikgIT0gbnVsbCkgYW5kCisgICAgICAgICAgICgoLkhvc3RDb25maWcuU2VjdXJpdHlPcHQgLy8gW10pIHwgaW5kZXgoIm5vLW5ldy1wcml2aWxlZ2VzOnRydWUiKSAhPSBudWxsKV0gfCBhbGwpJyBcCisgICAgICAgIDw8PCIkaW5zcGVjdF9qc29uIiA+L2Rldi9udWxsIHx8IGRpZSAiJHN0YWdlX3Rva2VuIGxpdmUgY29udGFpbmVyIHBvbGljeSBtaXNtYXRjaCIKKyAgICBsb2NhbCBuZXR3b3JrX2lkPSIke3Byb2plY3R9X2V2YWx1YXRpb24iCisgICAgIiRORVRXT1JLX0JPVU5EQVJZIiAiJG5ldHdvcmtfaWQiID4gIiRzdGFnZV9yb290L25ldHdvcmstYm91bmRhcnkucG9zdC5qc29uIiB8fAorICAgICAgICBkaWUgIiRzdGFnZV90b2tlbiBuZXR3b3JrIGlzIG5vdCBpc29sYXRlZCIKKworICAgIFsgLW4gIiRwb3N0Z3Jlc19jZ3JvdXAiIF0gJiYgWyAtbiAiJHJlZGlzX2Nncm91cCIgXSAmJgorICAgICAgICBbICIke3Bvc3RncmVzX2Nncm91cCUvKn0iID0gIiR7cmVkaXNfY2dyb3VwJS8qfSIgXSB8fCBkaWUgIiRzdGFnZV90b2tlbiBzZXJ2aWNlIGNncm91cCBtZW1iZXJzaGlwIHVuYXZhaWxhYmxlIgorICAgICMgVGhlIGRlZGljYXRlZCBwYXJlbnQgc3Vydml2ZXMgYSBmYXN0IHJ1bm5lciBleGl0IGFuZCByZWNvcmRzIGJhY2tlbmQtb25seQorICAgICMgT09NIGtpbGxzIGV2ZW4gd2hlbiBEb2NrZXIga2VlcHMgcmVwb3J0aW5nIGEgaGVhbHRoeSBjb250YWluZXIgaW5pdC4KKyAgICBwYXJlbnRfb29tX2tpbGxzPSIkKHJlYWRfY2dyb3VwX29vbV9raWxscyAiJHtwb3N0Z3Jlc19jZ3JvdXAlLyp9IikiIHx8CisgICAgICAgIGRpZSAiJHN0YWdlX3Rva2VuIHBhcmVudCBtZW1vcnkgZXZlbnRzIHVuYXZhaWxhYmxlIgorICAgIFtbICIkcGFyZW50X29vbV9raWxscyIgPX4gXlswLTldKyQgXV0gfHwgZGllICIkc3RhZ2VfdG9rZW4gcGFyZW50IG1lbW9yeSBldmVudHMgaW52YWxpZCIKKyAgICBpZiBbIC1zICIkcmVzb3VyY2Vfc2FtcGxlIiBdOyB0aGVuCisgICAgICAgIHJlYWQgLXIgY3B1X3VzZWMgcGVha19ieXRlcyBzYW1wbGVkX29vbV9raWxscyA8ICIkcmVzb3VyY2Vfc2FtcGxlIgorICAgICAgICBbWyAiJGNwdV91c2VjIiA9fiBeWzAtOV0rJCBdXSAmJiBbWyAiJHBlYWtfYnl0ZXMiID1+IF5bMC05XSskIF1dICYmCisgICAgICAgICAgICBbWyAiJHNhbXBsZWRfb29tX2tpbGxzIiA9fiBeWzAtOV0rJCBdXSB8fCBkaWUgIiRzdGFnZV90b2tlbiByZXNvdXJjZSBjb3VudGVyIHNhbXBsZSBpbnZhbGlkIgorICAgIGZpCisgICAgbG9jYWwgcG9zdGdyZXNfb29tX2tpbGxzIHJlZGlzX29vbV9raWxscworICAgIHBvc3RncmVzX29vbV9raWxscz0iJChyZWFkX2Nncm91cF9vb21fa2lsbHMgIiRwb3N0Z3Jlc19jZ3JvdXAiKSIgfHwgZGllICIkc3RhZ2VfdG9rZW4gcG9zdGdyZXMgbWVtb3J5IGV2ZW50cyB1bmF2YWlsYWJsZSIKKyAgICByZWRpc19vb21fa2lsbHM9IiQocmVhZF9jZ3JvdXBfb29tX2tpbGxzICIkcmVkaXNfY2dyb3VwIikiIHx8IGRpZSAiJHN0YWdlX3Rva2VuIHJlZGlzIG1lbW9yeSBldmVudHMgdW5hdmFpbGFibGUiCisgICAgW1sgIiRwb3N0Z3Jlc19vb21fa2lsbHMiID1+IF5bMC05XSskIF1dICYmIFtbICIkcmVkaXNfb29tX2tpbGxzIiA9fiBeWzAtOV0rJCBdXSB8fAorICAgICAgICBkaWUgIiRzdGFnZV90b2tlbiBiYWNraW5nIG1lbW9yeSBldmVudHMgaW52YWxpZCIKKyAgICBbICIkcGFyZW50X29vbV9raWxscyIgLWdlICIkKChwb3N0Z3Jlc19vb21fa2lsbHMgKyByZWRpc19vb21fa2lsbHMpKSIgXSAmJgorICAgICAgICBbICIkcGFyZW50X29vbV9raWxscyIgLWdlICIkc2FtcGxlZF9vb21fa2lsbHMiIF0gfHwgZGllICIkc3RhZ2VfdG9rZW4gbWVtb3J5IGV2ZW50IGF0dHJpYnV0aW9uIGluY29uc2lzdGVudCIKKyAgICBsb2NhbCByZXNvdXJjZV9zdGF0ZQorICAgIHJlc291cmNlX3N0YXRlPSIkKGpxIC0tYXJnIHBhcmVudCAiJGNncm91cF9wYXJlbnQiIC0tYXJnIGNwdXNldCAiJGNwdXNldCIgXAorICAgICAgICAtLWFyZ2pzb24gb29tX2tpbGxzICIkcGFyZW50X29vbV9raWxscyIgXAorICAgICAgICAtLWFyZ2pzb24gYmFja2luZ19vb21fa2lsbHMgIiQoKHBvc3RncmVzX29vbV9raWxscyArIHJlZGlzX29vbV9raWxscykpIiBcCisgICAgICAgICd7ZXhpdF9jb2RlOihtYXAoc2VsZWN0KC5OYW1lIHwgZW5kc3dpdGgoIi1ydW5uZXItMSIpKSlbMF0uU3RhdGUuRXhpdENvZGUpLAorICAgICAgICAgIG9vbV9raWxsZWQ6KGFueSguW107IC5TdGF0ZS5PT01LaWxsZWQgPT0gdHJ1ZSkgb3IgJG9vbV9raWxscyA+IDApLAorICAgICAgICAgIHJ1bm5lcl9vb21fa2lsbHM6KCRvb21fa2lsbHMgLSAkYmFja2luZ19vb21fa2lsbHMpLGJhY2tpbmdfb29tX2tpbGxzOiRiYWNraW5nX29vbV9raWxscywKKyAgICAgICAgICBydW5uZXJfb29tX2tpbGxlZDoobWFwKHNlbGVjdCguTmFtZSB8IGVuZHN3aXRoKCItcnVubmVyLTEiKSkpWzBdLlN0YXRlLk9PTUtpbGxlZCksCisgICAgICAgICAgaGFyZF9raWxsZWQ6YW55KC5bXTsgLlN0YXRlLkV4aXRDb2RlID09IDEzNyksCisgICAgICAgICAgbGltaXRfZXNjYXBlOmFueSguW107IC5Ib3N0Q29uZmlnLkNncm91cFBhcmVudCAhPSAkcGFyZW50IG9yIC5Ib3N0Q29uZmlnLkNwdXNldENwdXMgIT0gJGNwdXNldCl9JyBcCisgICAgICAgIDw8PCIkaW5zcGVjdF9qc29uIikiCisgICAgcHJpbnRmICclc1xuJyAiJHJlc291cmNlX3N0YXRlIiA+ICIkc3RhZ2Vfcm9vdC9jb250YWluZXItcmVzb3VyY2Utc3RhdGUuanNvbiIKKyAgICBjaG1vZCAwNDAwICIkc3RhZ2Vfcm9vdC9jb250YWluZXItcmVzb3VyY2Utc3RhdGUuanNvbiIKKyAgICB1bnNldCBpbnNwZWN0X2pzb24KKyAgICBqcSAtZSAnLmJhY2tpbmdfb29tX2tpbGxzID09IDAgYW5kIC5saW1pdF9lc2NhcGUgPT0gZmFsc2UgYW5kCisgICAgICAgICgucnVubmVyX29vbV9raWxsZWQgPT0gZmFsc2Ugb3IgLnJ1bm5lcl9vb21fa2lsbHMgPiAwKScgPDw8IiRyZXNvdXJjZV9zdGF0ZSIgPi9kZXYvbnVsbCB8fAorICAgICAgICBkaWUgIiRzdGFnZV90b2tlbiByZXNvdXJjZSBjb250YWlubWVudCBmYWlsdXJlIgorCisgICAgaWYgWyAiJGV4aXRfY29kZSIgLW5lIDAgXTsgdGhlbgorICAgICAgICBpZiBbICIkcm9sZSIgPSBjYW5kaWRhdGUgXTsgdGhlbgorICAgICAgICAgICAgIyBPbmx5IHRydXN0ZWQgaG9zdCBpbnNwZWN0aW9uIG1heSBwdWJsaXNoIHRoaXMgdGVybWluYWwgZmFpbHVyZTsKKyAgICAgICAgICAgICMgbm8gY2FuZGlkYXRlIG1vdW50IGNvbnRhaW5zIHRoZSBhdHRlbXB0LXJvb3Qgc2lkZWNhciBvciBpdHMgdGVtcC4KKyAgICAgICAgICAgIGxvY2FsIGZhaWx1cmVfcGF0aD0iJGFydGlmYWN0X2Rpci9ldmFsdWF0b3ItZmFpbHVyZS5qc29uIiBmYWlsdXJlX3RtcD0iJGFydGlmYWN0X2Rpci8uZXZhbHVhdG9yLWZhaWx1cmUuanNvbi5uZXciCisgICAgICAgICAgICBbICEgLWUgIiRmYWlsdXJlX3BhdGgiIF0gJiYgWyAhIC1MICIkZmFpbHVyZV9wYXRoIiBdICYmCisgICAgICAgICAgICAgICAgWyAhIC1lICIkZmFpbHVyZV90bXAiIF0gJiYgWyAhIC1MICIkZmFpbHVyZV90bXAiIF0gfHwgZGllICJzdGFnZSBmYWlsdXJlIHBhdGggYWxyZWFkeSBleGlzdHMiCisgICAgICAgICAgICBqcSAtbiAtLWFyZyBqb2JfaWQgIiRqb2JfaWQiIC0tYXJnIHJvdW5kX2lkICIkcm91bmRfaWQiIFwKKyAgICAgICAgICAgICAgICAtLWFyZ2pzb24gYXR0ZW1wdCAiJGF0dGVtcHQiIC0tYXJnanNvbiBleGl0X2NvZGUgIiRleGl0X2NvZGUiIFwKKyAgICAgICAgICAgICAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LXN0YWdlLWZhaWx1cmUiLGpvYl9pZDokam9iX2lkLHJvdW5kX2lkOiRyb3VuZF9pZCwKKyAgICAgICAgICAgICAgICAgIGF0dGVtcHQ6JGF0dGVtcHQscm9sZToiY2FuZGlkYXRlIixzdGFnZToicnVuIixleGl0X2NvZGU6JGV4aXRfY29kZSwKKyAgICAgICAgICAgICAgICAgIGVycm9yOntraW5kOiJzdWJtaXNzaW9uIixjb2RlOiJydW5fcHJvY2Vzc19mYWlsZWQiLAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiJjYW5kaWRhdGUgcnVubmVyIGV4aXRlZCB1bnN1Y2Nlc3NmdWxseSIscmV0cmlhYmxlOmZhbHNlfX0nID4gIiRmYWlsdXJlX3RtcCIKKyAgICAgICAgICAgIGNobW9kIDA0MDAgIiRmYWlsdXJlX3RtcCIKKyAgICAgICAgICAgIHN5bmMgLWQgIiRmYWlsdXJlX3RtcCIKKyAgICAgICAgICAgIG12IC0tICIkZmFpbHVyZV90bXAiICIkZmFpbHVyZV9wYXRoIgorICAgICAgICAgICAgc3luYyAiJGFydGlmYWN0X2RpciIKKyAgICAgICAgZmkKKyAgICAgICAgZGllICIkc3RhZ2VfdG9rZW4gcnVubmVyIGV4aXRlZCAkZXhpdF9jb2RlIgorICAgIGZpCisgICAgWyAiJGNncm91cF9tZW1iZXJzaGlwX2F2YWlsYWJsZSIgPSB0cnVlIF0gfHwgZGllICIkc3RhZ2VfdG9rZW4gY2dyb3VwIG1lbWJlcnNoaXAgdW5hdmFpbGFibGUiCisgICAgWyAtcyAiJHJlc291cmNlX3NhbXBsZSIgXSB8fCBkaWUgIiRzdGFnZV90b2tlbiByZXNvdXJjZSBjb3VudGVyIHNhbXBsZSBtaXNzaW5nIgorICAgIGpxIC1lICcub29tX2tpbGxlZCA9PSBmYWxzZSBhbmQgLmhhcmRfa2lsbGVkID09IGZhbHNlJyA8PDwiJHJlc291cmNlX3N0YXRlIiA+L2Rldi9udWxsIHx8CisgICAgICAgIGRpZSAiJHN0YWdlX3Rva2VuIHJlc291cmNlIGNvbnRhaW5tZW50IGZhaWx1cmUiCisgICAgcm0gLWYgLS0gIiRyZXNvdXJjZV9zYW1wbGUiCisKKyAgICBsb2NhbCBzdGFydGVkX2F0IGZpbmlzaGVkX2F0IHJlc291cmNlX3N0YXJ0X21zIHJlc291cmNlX2VuZF9tcworICAgIHN0YXJ0ZWRfYXQ9IiQoanEgLWVyICdtYXAoc2VsZWN0KC5uYW1lIHwgZW5kc3dpdGgoIi1ydW5uZXItMSIpKSlbMF0uc3RhdGUuc3RhcnRlZF9hdCcgIiRpbnNwZWN0X3BhdGgiKSIKKyAgICBmaW5pc2hlZF9hdD0iJChqcSAtZXIgJ21hcChzZWxlY3QoLm5hbWUgfCBlbmRzd2l0aCgiLXJ1bm5lci0xIikpKVswXS5zdGF0ZS5maW5pc2hlZF9hdCcgIiRpbnNwZWN0X3BhdGgiKSIKKyAgICByZXNvdXJjZV9zdGFydF9tcz0iJChkYXRlIC0tZGF0ZT0iJHN0YXJ0ZWRfYXQiICslcyUzTikiCisgICAgcmVzb3VyY2VfZW5kX21zPSIkKGRhdGUgLS1kYXRlPSIkZmluaXNoZWRfYXQiICslcyUzTikiCisKKyAgICAjIFJlc291cmNlIGNvdW50ZXJzIGFuZCB0aW1lc3RhbXBzIGhhdmUgYmVlbiBjYXB0dXJlZC4gUHJvc3BlY3RpdmUgb3V0cHV0CisgICAgIyBvd25lcnNoaXAgY2Fubm90IG1vdmUgdW50aWwgdGhlIHdob2xlIGNvaG9ydCBoYXMgc3RvcHBlZCBhbmQgam9pbmVkLgorICAgIGlmIFtbICIkc3ViZXZhbHVhdGlvbl9zY29wZWQiID0gdHJ1ZSBdXTsgdGhlbgorICAgICAgICBjb21wb3NlX3dpdGggIiRwcm9qZWN0IiAiJGNvbXBvc2VfZW52IiAtLXByb2ZpbGUgcnVuIGRvd24gLS12b2x1bWVzIC0tcmVtb3ZlLW9ycGhhbnMgPiYyCisgICAgICAgIGV2YWx1YXRpb25faG9zdCByZWNsYWltLW91dHB1dCAiJG91dHB1dCIKKyAgICBmaQorCisgICAgbG9jYWwgcnVuX2Rpcj0iJG91dHB1dC8kZXZhbHVhdGlvbl9pZCIKKyAgICBldmFsdWF0aW9uX2ZpbGUgdGVzdCAtcyAiJHJ1bl9kaXIvcnVuLmpzb24iIHx8IGRpZSAiJHN0YWdlX3Rva2VuIHJ1biBtYW5pZmVzdCBtaXNzaW5nIgorICAgIGV2YWx1YXRpb25fZmlsZSB0ZXN0IC1zICIkcnVuX2Rpci9hY2NvdW50aW5nLnNvdXJjZS5qc29uIiB8fCBkaWUgIiRzdGFnZV90b2tlbiBwcm92aWRlciBhY2NvdW50aW5nIHNvdXJjZSBtaXNzaW5nIgorICAgIGV2YWx1YXRpb25fZmlsZSBqcSAtZSAtLWFyZyBldmFsdWF0aW9uX2lkICIkZXZhbHVhdGlvbl9pZCIgXAorICAgICAgICAnLnNjaGVtYSA9PSAxIGFuZCAua2luZCA9PSAic2ltLWxhdGVuY3ktcHJvdmlkZXItYWNjb3VudGluZy1zb3VyY2UiIGFuZAorICAgICAgICAgLmV2YWx1YXRpb25faWQgPT0gJGV2YWx1YXRpb25faWQgYW5kIC5jb21wbGV0ZSA9PSB0cnVlIGFuZCAucHJvdmlkZXJfZWdyZXNzX2J5dGVzID49IDAnIFwKKyAgICAgICAgIiRydW5fZGlyL2FjY291bnRpbmcuc291cmNlLmpzb24iID4vZGV2L251bGwgfHwgZGllICIkc3RhZ2VfdG9rZW4gcHJvdmlkZXIgYWNjb3VudGluZyBzb3VyY2UgaW52YWxpZCIKKyAgICBsb2NhbCBhY2NvdW50aW5nX3RtcD0iJHN0YWdlX3Jvb3QvYWNjb3VudGluZy5qc29uIgorICAgIGV2YWx1YXRpb25fZmlsZSBqcSBcCisgICAgICAgICd7c2NoZW1hOjEsa2luZDoic2ltLWxhdGVuY3ktYWNjb3VudGluZyIsZXZhbHVhdGlvbl9pZDouZXZhbHVhdGlvbl9pZCwKKyAgICAgICAgICBjb21wbGV0ZTouY29tcGxldGUsbWVhc3VyZV9zdGFydF9tczoubWVhc3VyZV9zdGFydF9tcywKKyAgICAgICAgICBtZWFzdXJlX2VuZF9tczoubWVhc3VyZV9lbmRfbXMscHJvdmlkZXJfZWdyZXNzX2J5dGVzOi5wcm92aWRlcl9lZ3Jlc3NfYnl0ZXN9JyBcCisgICAgICAgICIkcnVuX2Rpci9hY2NvdW50aW5nLnNvdXJjZS5qc29uIiA+ICIkYWNjb3VudGluZ190bXAiCisgICAgZXZhbHVhdGlvbl9zZWFsZWRfY29weSAiJGNvbnRhaW5lcl9ob3N0X3VpZCIgIiRjb250YWluZXJfaG9zdF9naWQiIFwKKyAgICAgICAgIiRhY2NvdW50aW5nX3RtcCIgIiRydW5fZGlyL2FjY291bnRpbmcuanNvbiIKKyAgICBsb2NhbCByZXNvdXJjZV90bXA9IiRzdGFnZV9yb290L3Jlc291cmNlcy5qc29uIgorICAgIGpxIC1uIFwKKyAgICAgICAgLS1hcmcgZXZhbHVhdGlvbl9pZCAiJGV2YWx1YXRpb25faWQiIFwKKyAgICAgICAgLS1hcmcgY2dyb3VwX2lkICIkY2dyb3VwX3BhcmVudCIgXAorICAgICAgICAtLWFyZ2pzb24gbWVhc3VyZW1lbnRfc3RhcnRfbXMgIiRyZXNvdXJjZV9zdGFydF9tcyIgXAorICAgICAgICAtLWFyZ2pzb24gbWVhc3VyZW1lbnRfZW5kX21zICIkcmVzb3VyY2VfZW5kX21zIiBcCisgICAgICAgIC0tYXJnanNvbiBjcHVfc2Vjb25kcyAiJChhd2sgLXYgdmFsdWU9IiRjcHVfdXNlYyIgJ0JFR0lOIHtwcmludGYgIiUuNmYiLCB2YWx1ZSAvIDEwMDAwMDB9JykiIFwKKyAgICAgICAgLS1hcmdqc29uIHBlYWtfcnNzX2J5dGVzICIkcGVha19ieXRlcyIgXAorICAgICAgICAtLWFyZ2pzb24gcmVzb3VyY2Vfc3RhdGUgIiRyZXNvdXJjZV9zdGF0ZSIgXAorICAgICAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LXJlc291cmNlLXJlcG9ydCIsZXZhbHVhdGlvbl9pZDokZXZhbHVhdGlvbl9pZCwKKyAgICAgICAgICBjZ3JvdXBfaWQ6JGNncm91cF9pZCxtZWFzdXJlbWVudF9zdGFydF9tczokbWVhc3VyZW1lbnRfc3RhcnRfbXMsCisgICAgICAgICAgbWVhc3VyZW1lbnRfZW5kX21zOiRtZWFzdXJlbWVudF9lbmRfbXMsY29tcGxldGU6dHJ1ZSwKKyAgICAgICAgICBleGl0X2NvZGU6JHJlc291cmNlX3N0YXRlLmV4aXRfY29kZSxvb21fa2lsbGVkOiRyZXNvdXJjZV9zdGF0ZS5vb21fa2lsbGVkLAorICAgICAgICAgIGhhcmRfa2lsbGVkOiRyZXNvdXJjZV9zdGF0ZS5oYXJkX2tpbGxlZCxsaW1pdF9lc2NhcGU6JHJlc291cmNlX3N0YXRlLmxpbWl0X2VzY2FwZSwKKyAgICAgICAgICBtZWFzdXJlbWVudF9taXNzaW5nOmZhbHNlLGNwdV9zZWNvbmRzOiRjcHVfc2Vjb25kcywKKyAgICAgICAgICBwZWFrX3Jzc19ieXRlczokcGVha19yc3NfYnl0ZXN9JyA+ICIkcmVzb3VyY2VfdG1wIgorICAgIGV2YWx1YXRpb25fc2VhbGVkX2NvcHkgIiRjb250YWluZXJfaG9zdF91aWQiICIkY29udGFpbmVyX2hvc3RfZ2lkIiBcCisgICAgICAgICIkcmVzb3VyY2VfdG1wIiAiJHJ1bl9kaXIvcmVzb3VyY2VzLmpzb24iCisgICAgZXZhbHVhdGlvbl9maWxlIHN5bmMgLWQgIiRydW5fZGlyL2FjY291bnRpbmcuanNvbiIgIiRydW5fZGlyL3Jlc291cmNlcy5qc29uIgorICAgIHZhbGlkYXRlX291dHB1dF90cmVlICIkb3V0cHV0IgorCisgICAgbG9jYWwgc3RhdHNfcm9vdAorICAgIHN0YXRzX3Jvb3Q9IiQoZXZhbHVhdGlvbl9maWxlIGpxIC1lciAnLnN0YXRzX3Jvb3QnICIkcnVuX2Rpci9ydW4uanNvbiIpIgorICAgIGNhc2UgIiRzdGF0c19yb290IiBpbgorICAgICAgICAiL2FydGlmYWN0cy8kZXZhbHVhdGlvbl9pZC9zaXRlL3N0YXRzLyIqKSA7OworICAgICAgICAqKSBkaWUgIiRzdGFnZV90b2tlbiBzdGF0cyByb290IGlkZW50aXR5IG1pc21hdGNoIiA7OworICAgIGVzYWMKKyAgICBsb2NhbCBjc3Y9Ii9hcnRpZmFjdHMvJGV2YWx1YXRpb25faWQvcmVzdWx0cy5jc3YiCisgICAgbG9jYWwgc3RkZXJyPSIvYXJ0aWZhY3RzLyRldmFsdWF0aW9uX2lkL3N0ZGVyci5sb2ciCisgICAgbG9jYWwgYWNjb3VudGluZz0iL2FydGlmYWN0cy8kZXZhbHVhdGlvbl9pZC9hY2NvdW50aW5nLmpzb24iCisgICAgbG9jYWwgcmVzb3VyY2VzPSIvYXJ0aWZhY3RzLyRldmFsdWF0aW9uX2lkL3Jlc291cmNlcy5qc29uIgorICAgIGxvY2FsIG1hcmtlcj0iL2FydGlmYWN0cy8kZXZhbHVhdGlvbl9pZC9ydW4uY29tcGxldGUuanNvbiIKKyAgICBsb2NhbCBtYW5pZmVzdD0iL2FydGlmYWN0cy8kZXZhbHVhdGlvbl9pZC9ydW4uanNvbiIKKyAgICBpZiBbICIkcm9sZSIgPSBiYXNlbGluZSBdOyB0aGVuCisgICAgICAgIGJhc2VsaW5lX2Nzdis9KCIkY3N2IikKKyAgICAgICAgYmFzZWxpbmVfc3RkZXJyKz0oIiRzdGRlcnIiKQorICAgICAgICBiYXNlbGluZV9hY2NvdW50aW5nKz0oIiRhY2NvdW50aW5nIikKKyAgICAgICAgYmFzZWxpbmVfc2FtcGxlcys9KCIkc3RhdHNfcm9vdCIpCisgICAgICAgIGJhc2VsaW5lX3Jlc291cmNlcys9KCIkcmVzb3VyY2VzIikKKyAgICAgICAgYmFzZWxpbmVfbWFya2Vycys9KCIkbWFya2VyIikKKyAgICAgICAgYmFzZWxpbmVfbWFuaWZlc3RzKz0oIiRtYW5pZmVzdCIpCisgICAgZWxzZQorICAgICAgICBjYW5kaWRhdGVfY3N2Kz0oIiRjc3YiKQorICAgICAgICBjYW5kaWRhdGVfc3RkZXJyKz0oIiRzdGRlcnIiKQorICAgICAgICBjYW5kaWRhdGVfYWNjb3VudGluZys9KCIkYWNjb3VudGluZyIpCisgICAgICAgIGNhbmRpZGF0ZV9zYW1wbGVzKz0oIiRzdGF0c19yb290IikKKyAgICAgICAgY2FuZGlkYXRlX3Jlc291cmNlcys9KCIkcmVzb3VyY2VzIikKKyAgICAgICAgY2FuZGlkYXRlX21hcmtlcnMrPSgiJG1hcmtlciIpCisgICAgICAgIGNhbmRpZGF0ZV9tYW5pZmVzdHMrPSgiJG1hbmlmZXN0IikKKyAgICBmaQorICAgIGxvY2FsIHByb3ZpZGVyX2J5dGVzCisgICAgcHJvdmlkZXJfYnl0ZXM9IiQoZXZhbHVhdGlvbl9maWxlIGpxIC1lciAnLnByb3ZpZGVyX2VncmVzc19ieXRlcycgIiRydW5fZGlyL2FjY291bnRpbmcuanNvbiIpIgorICAgIHJ1bl9hY2NvdW50aW5nX3JlY29yZHMrPSgiJChqcSAtY24gLS1hcmcgZXZhbHVhdGlvbl9pZCAiJGV2YWx1YXRpb25faWQiIC0tYXJnIHJvbGUgIiRyb2xlIiBcCisgICAgICAgIC0tYXJnIHBhdGggIiRhY2NvdW50aW5nIiAtLWFyZyBzaGEyNTYgIiQoZXZhbHVhdGlvbl9maWxlIHNoYTI1NnN1bSAiJHJ1bl9kaXIvYWNjb3VudGluZy5qc29uIiB8IGF3ayAne3ByaW50ICQxfScpIiBcCisgICAgICAgIC0tYXJnanNvbiBieXRlcyAiJChldmFsdWF0aW9uX2ZpbGUgc3RhdCAtYyAnJXMnICIkcnVuX2Rpci9hY2NvdW50aW5nLmpzb24iKSIgXAorICAgICAgICAtLWFyZ2pzb24gcHJvdmlkZXJfZWdyZXNzX2J5dGVzICIkcHJvdmlkZXJfYnl0ZXMiIFwKKyAgICAgICAgJ3tldmFsdWF0aW9uX2lkOiRldmFsdWF0aW9uX2lkLHJvbGU6JHJvbGUscGF0aDokcGF0aCxzaGEyNTY6JHNoYTI1NixieXRlczokYnl0ZXMsCisgICAgICAgICAgcHJvdmlkZXJfZWdyZXNzX2J5dGVzOiRwcm92aWRlcl9lZ3Jlc3NfYnl0ZXN9JykiKQorICAgIHJ1bl9yZXNvdXJjZV9yZWNvcmRzKz0oIiQoanEgLWNuIC0tYXJnIGV2YWx1YXRpb25faWQgIiRldmFsdWF0aW9uX2lkIiAtLWFyZyByb2xlICIkcm9sZSIgXAorICAgICAgICAtLWFyZyBwYXRoICIkcmVzb3VyY2VzIiAtLWFyZyBzaGEyNTYgIiQoZXZhbHVhdGlvbl9maWxlIHNoYTI1NnN1bSAiJHJ1bl9kaXIvcmVzb3VyY2VzLmpzb24iIHwgYXdrICd7cHJpbnQgJDF9JykiIFwKKyAgICAgICAgLS1hcmdqc29uIGJ5dGVzICIkKGV2YWx1YXRpb25fZmlsZSBzdGF0IC1jICclcycgIiRydW5fZGlyL3Jlc291cmNlcy5qc29uIikiIFwKKyAgICAgICAgLS1hcmdqc29uIGNwdV9zZWNvbmRzICIkKGF3ayAtdiB2YWx1ZT0iJGNwdV91c2VjIiAnQkVHSU4ge3ByaW50ZiAiJS42ZiIsIHZhbHVlIC8gMTAwMDAwMH0nKSIgXAorICAgICAgICAtLWFyZ2pzb24gcGVha19yc3NfYnl0ZXMgIiRwZWFrX2J5dGVzIiBcCisgICAgICAgICd7ZXZhbHVhdGlvbl9pZDokZXZhbHVhdGlvbl9pZCxyb2xlOiRyb2xlLHBhdGg6JHBhdGgsc2hhMjU2OiRzaGEyNTYsYnl0ZXM6JGJ5dGVzLAorICAgICAgICAgIGNwdV9zZWNvbmRzOiRjcHVfc2Vjb25kcyxwZWFrX3Jzc19ieXRlczokcGVha19yc3NfYnl0ZXN9JykiKQorCisgICAgaWYgW1sgIiRzdWJldmFsdWF0aW9uX3Njb3BlZCIgIT0gdHJ1ZSBdXTsgdGhlbgorICAgICAgICBjb21wb3NlX3dpdGggIiRwcm9qZWN0IiAiJGNvbXBvc2VfZW52IiAtLXByb2ZpbGUgcnVuIGRvd24gLS12b2x1bWVzIC0tcmVtb3ZlLW9ycGhhbnMgPiYyCisgICAgZmkKKyAgICBbIC16ICIkKGV2YWx1YXRpb25fZG9ja2VyIHBzIC1hcSAtLWZpbHRlciAibGFiZWw9Y29tLnVybmV0d29yay5jb21wZXRpdGlvbi5qb2ItaWQ9JGpvYl9pZCIgXAorICAgICAgICAtLWZpbHRlciAibGFiZWw9Y29tLnVybmV0d29yay5jb21wZXRpdGlvbi5zdGFnZT0kcm9sZSIgIiR7c3ViZXZhbHVhdGlvbl9jbGVhbnVwX2ZpbHRlcl9hcmdzW0BdfSIpIiBdIHx8IGRpZSAiJHN0YWdlX3Rva2VuIGNsZWFudXAgbGVmdCBjb250YWluZXJzIgorICAgIGV2YWx1YXRpb25fZmlsZSBjcCAtYSAiJG91dHB1dC8uIiAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dC8iCisgICAgaWYgW1sgIiRzdWJldmFsdWF0aW9uX3Njb3BlZCIgPSB0cnVlIF1dOyB0aGVuCisgICAgICAgIGZpbmQgIiR3b3JrX2Rpci9zY29yZXItaW5wdXQiIC10eXBlIGQgLWV4ZWMgY2htb2QgMDU1NSB7fSArCisgICAgICAgIGZpbmQgIiR3b3JrX2Rpci9zY29yZXItaW5wdXQiIC10eXBlIGYgLWV4ZWMgY2htb2QgMDQ0NCB7fSArCisgICAgICAgIGNobW9kIDA3NTUgIiR3b3JrX2Rpci9zY29yZXItaW5wdXQiCisgICAgZmkKKyAgICB2YWxpZGF0ZV9vdXRwdXRfdHJlZSAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dCIKKyAgICByZWNvcmRfc3RhZ2VfcHJvZ3Jlc3MgIiRyb2xlIiAiJGluZGV4IiAiJHJ1bl9kaXIvcnVuLmpzb24iCisgICAgYXV0aGVudGljYXRlX2xvY2FsX21vdW50cworICAgIGFjdGl2ZV9wcm9qZWN0PSIiCisgICAgYWN0aXZlX2NvbXBvc2VfZW52PSIiCisgICAgcm0gLWYgLS0gIiRydW5uZXJfZW52IiAiJGNvbXBvc2VfZW52IiAiJGFjY291bnRpbmdfdG1wIiAiJHJlc291cmNlX3RtcCIKKyAgICBpZiBbWyAiJHN1YmV2YWx1YXRpb25fc2NvcGVkIiAhPSB0cnVlIF1dOyB0aGVuCisgICAgICAgIHN1ZG8gLW4gY2hvd24gLVIgIiR3b3JrZXJfdWlkOiR3b3JrZXJfZ2lkIiAiJHN0YWdlX3Jvb3QiCisgICAgZmkKKyAgICBsb2cgIiRzdGFnZV90b2tlbiBjb21wbGV0ZSIKK30KKworIyBCdWlsZCBzdWJtaXR0ZWQgY29kZSBvbmx5IGFmdGVyIHRoZSB0cnVzdGVkIHJvdW5kIGJhc2VsaW5lIGhhcyBiZWVuIG1lYXN1cmVkCisjIG9yIGF1dGhlbnRpY2F0ZWQuIEtlZXBpbmcgdGhpcyBhcyBhIGZ1bmN0aW9uIGxldHMgdGhlIGZpcnN0IHJvdW5kIGV2YWx1YXRpb24KKyMgZXN0YWJsaXNoIGl0cyBjb250cm9sIGJlZm9yZSBhbnkgdW50cnVzdGVkIGNvbXBpbGVyIHdvcmtsb2FkIGNhbiBwZXJ0dXJiIHRoZQorIyBob3N0IHVzZWQgdG8gbWVhc3VyZSB0aGF0IGNvbnRyb2wuCitidWlsZF9jYW5kaWRhdGUoKSB7Cit3cml0ZV9ldmFsdWF0aW9uX3Byb2dyZXNzIGJ1aWxkaW5nICIkcmVwbGljYXRlcyIgMAorbG9nICJidWlsZGluZyBhdXRoZW50aWNhdGVkIGNhbmRpZGF0ZSBpbWFnZSBvZmZsaW5lIgorY2FuZGlkYXRlX2J1aWxkX2pzb249IiR3b3JrX2Rpci9jYW5kaWRhdGUtYnVpbGQuanNvbiIKK2NhbmRpZGF0ZV9idWlsZF9sb2c9IiR3b3JrX2Rpci9jYW5kaWRhdGUtYnVpbGQubG9nIgorY2FuZGlkYXRlX2J1aWxkX3BpcGU9IiR3b3JrX2Rpci8uY2FuZGlkYXRlLWJ1aWxkLnBpcGUiCitta2ZpZm8gLW0gMDYwMCAiJGNhbmRpZGF0ZV9idWlsZF9waXBlIgoreyBoZWFkIC1jICIkTUFYX0JVSUxEX0xPR19CWVRFUyI7IGNhdCA+L2Rldi9udWxsOyB9IFwKKyAgICA8ICIkY2FuZGlkYXRlX2J1aWxkX3BpcGUiID4gIiRjYW5kaWRhdGVfYnVpbGRfbG9nIiAmCithY3RpdmVfYnVpbGRfbG9nX3BpZD0kIQorYWN0aXZlX2J1aWxkX2xvZ19waXBlPSIkY2FuZGlkYXRlX2J1aWxkX3BpcGUiCit0cmFwIC0gRVJSCitzZXQgK2UKKyRCVUlMRF9TVUJNSVNTSU9OICIke3NvdXJjZV9tb2RlX2FyZ3NbQF19IiAtLWFsbG93LWxvY2FsLWJhc2UgLS1iYXNlLWltYWdlICIkYmFzZV9idWlsZF9yZWYiIFwKKyAgICAtLXNvdXJjZS1yb290ICIkY2FuZGlkYXRlX3NvdXJjZV9yb290IiBcCisgICAgLS1wYXRjaCAiJHBhdGNoX3BhdGgiIC0tcG9saWN5ICIkcG9saWN5X3BhdGgiIFwKKyAgICA+ICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iIDI+ICIkY2FuZGlkYXRlX2J1aWxkX3BpcGUiCitjYW5kaWRhdGVfYnVpbGRfc3RhdHVzPSQ/Cit3YWl0ICIkYWN0aXZlX2J1aWxkX2xvZ19waWQiCitjYW5kaWRhdGVfYnVpbGRfbG9nX3N0YXR1cz0kPworYWN0aXZlX2J1aWxkX2xvZ19waWQ9IiIKK3JtIC1mIC0tICIkY2FuZGlkYXRlX2J1aWxkX3BpcGUiCithY3RpdmVfYnVpbGRfbG9nX3BpcGU9IiIKK3NldCAtZQordHJhcCAnb25fZXJyb3IgIiRMSU5FTk8iICIkPyInIEVSUgorWyAiJGNhbmRpZGF0ZV9idWlsZF9sb2dfc3RhdHVzIiAtZXEgMCBdIHx8IGRpZSAiYm91bmRlZCBjYW5kaWRhdGUgYnVpbGQgbG9nIGNhcHR1cmUgZmFpbGVkIgoraWYgWyAiJGNhbmRpZGF0ZV9idWlsZF9zdGF0dXMiIC1uZSAwIF07IHRoZW4KKyAgICBpZiBbICIkY2FuZGlkYXRlX2J1aWxkX3N0YXR1cyIgLWVxIDIgXSB8fAorICAgICAgICEgZXZhbHVhdGlvbl9kb2NrZXIgaW5mbyA+L2Rldi9udWxsIDI+JjEgfHwKKyAgICAgICAhIGV2YWx1YXRpb25fZG9ja2VyIGltYWdlIGluc3BlY3QgIiRiYXNlX2ltYWdlX2lkIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgICAgZGllICJjYW5kaWRhdGUgYnVpbGRlciBmYWlsZWQgYmVjYXVzZSBldmFsdWF0b3IgaW5mcmFzdHJ1Y3R1cmUgaXMgdW5hdmFpbGFibGUiCisgICAgZmkKKyAgICBlbWl0X2NhbmRpZGF0ZV9idWlsZF9mYWlsdXJlICIkY2FuZGlkYXRlX2J1aWxkX2xvZyIKKyAgICBleGl0IDAKK2ZpCitjaG1vZCAwNDAwICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iICIkY2FuZGlkYXRlX2J1aWxkX2xvZyIKK3JlYWRvbmx5IGNhbmRpZGF0ZV9idWlsZF9rZXlzPSdbImJhc2VfaW1hZ2VfaWQiLCJiYXNlX3NoYSIsImJ1aWxkZXJfc2hhMjU2IiwiY2FuZGlkYXRlX2NvbW1pdHMiLCJjYW5kaWRhdGVfY29tbWl0c19zaGEyNTYiLCJjYW5kaWRhdGVfc2hhIiwiaW1hZ2UiLCJpbWFnZV9pZCIsImltYWdlX2tleSIsIm9yaWdpbmFsX3NvdXJjZV9pZGVudGl0eV9zaGEyNTYiLCJwYXRjaF9zaGEyNTYiLCJwYXRjaF92YWxpZGF0b3Jfc2hhMjU2IiwicG9saWN5X3NoYTI1NiIsInNjaGVtYSJdJworanEgLWUgLS1hcmdqc29uIGNhbmRpZGF0ZV9idWlsZF9rZXlzICIkY2FuZGlkYXRlX2J1aWxkX2tleXMiIFwKKyAgICAtLWFyZ2pzb24gcmVwb3NpdG9yaWVzICIkcmVwb3NpdG9yeV9uYW1lc19qc29uIiBcCisgICAgJ3R5cGUgPT0gIm9iamVjdCIgYW5kIC5zY2hlbWEgPT0gMSBhbmQgKChrZXlzIHwgc29ydCkgPT0gJGNhbmRpZGF0ZV9idWlsZF9rZXlzKSBhbmQKKyAgICAgKC5pbWFnZSB8IHR5cGUgPT0gInN0cmluZyIgYW5kIGxlbmd0aCA+IDApIGFuZAorICAgICAoLmltYWdlX2lkIHwgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXnNoYTI1NjpbMC05YS1mXXs2NH0kIikpIGFuZAorICAgICAoLmJhc2VfaW1hZ2VfaWQgfCB0eXBlID09ICJzdHJpbmciIGFuZCB0ZXN0KCJec2hhMjU2OlswLTlhLWZdezY0fSQiKSkgYW5kCisgICAgICguYmFzZV9zaGEgfCB0eXBlID09ICJzdHJpbmciIGFuZCB0ZXN0KCJeWzAtOWEtZl17NDB9JCIpKSBhbmQKKyAgICAgKC5jYW5kaWRhdGVfc2hhIHwgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXlswLTlhLWZdezQwfSQiKSkgYW5kCisgICAgICgucGF0Y2hfc2hhMjU2IHwgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXlswLTlhLWZdezY0fSQiKSkgYW5kCisgICAgICgucG9saWN5X3NoYTI1NiB8IHR5cGUgPT0gInN0cmluZyIgYW5kIHRlc3QoIl5bMC05YS1mXXs2NH0kIikpIGFuZAorICAgICAoLmJ1aWxkZXJfc2hhMjU2IHwgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXlswLTlhLWZdezY0fSQiKSkgYW5kCisgICAgICgucGF0Y2hfdmFsaWRhdG9yX3NoYTI1NiB8IHR5cGUgPT0gInN0cmluZyIgYW5kIHRlc3QoIl5bMC05YS1mXXs2NH0kIikpIGFuZAorICAgICAoLmNhbmRpZGF0ZV9jb21taXRzX3NoYTI1NiB8IHR5cGUgPT0gInN0cmluZyIgYW5kIHRlc3QoIl5bMC05YS1mXXs2NH0kIikpIGFuZAorICAgICAoLm9yaWdpbmFsX3NvdXJjZV9pZGVudGl0eV9zaGEyNTYgfCB0eXBlID09ICJzdHJpbmciIGFuZCB0ZXN0KCJeWzAtOWEtZl17NjR9JCIpKSBhbmQKKyAgICAgKCguY2FuZGlkYXRlX2NvbW1pdHMgfCBrZXlzKSA9PSAoJHJlcG9zaXRvcmllcyB8IHNvcnQpKSBhbmQKKyAgICAgKC5jYW5kaWRhdGVfY29tbWl0cyB8IGFsbCguW107IHR5cGUgPT0gInN0cmluZyIgYW5kIHRlc3QoIl5bMC05YS1mXXs0MH0kIikpKSBhbmQKKyAgICAgKC5pbWFnZV9rZXkgfCB0eXBlID09ICJzdHJpbmciIGFuZCB0ZXN0KCJeWzAtOWEtZl17NjR9JCIpKScgXAorICAgICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iID4vZGV2L251bGwgfHwgZGllICJjYW5kaWRhdGUgYnVpbGQgcmVjb3JkIGlzIGludmFsaWQiCitjYW5kaWRhdGVfaW1hZ2VfaWQ9IiQoanEgLWVyICcuaW1hZ2VfaWQnICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iKSIKK2NhbmRpZGF0ZV9zaGE9IiQoanEgLWVyICcuY2FuZGlkYXRlX3NoYScgIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIpIgorWyAiJChqcSAtZXIgJy5iYXNlX2ltYWdlX2lkJyAiJGNhbmRpZGF0ZV9idWlsZF9qc29uIikiID0gIiRiYXNlX2ltYWdlX2lkIiBdIHx8IGRpZSAiY2FuZGlkYXRlIGJhc2UgaWRlbnRpdHkgbWlzbWF0Y2giCitbICIkKGpxIC1lciAnLmJhc2Vfc2hhJyAiJGNhbmRpZGF0ZV9idWlsZF9qc29uIikiID0gIiRiYXNlX3NoYSIgXSB8fCBkaWUgImNhbmRpZGF0ZSBiYXNlIFNIQSBtaXNtYXRjaCIKK1sgIiQoanEgLWVyICcucGF0Y2hfc2hhMjU2JyAiJGNhbmRpZGF0ZV9idWlsZF9qc29uIikiID0gIiRwYXRjaF9zaGEyNTYiIF0gfHwgZGllICJjYW5kaWRhdGUgcGF0Y2ggaWRlbnRpdHkgbWlzbWF0Y2giCitbICIkKGpxIC1lciAnLnBvbGljeV9zaGEyNTYnICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iKSIgPSAiJHBvbGljeV9zaGEyNTYiIF0gfHwgZGllICJjYW5kaWRhdGUgcG9saWN5IGlkZW50aXR5IG1pc21hdGNoIgorWyAiJChqcSAtZXIgJy5idWlsZGVyX3NoYTI1NicgIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIpIiA9ICIkYnVpbGRlcl9zaGEyNTYiIF0gfHwgZGllICJjYW5kaWRhdGUgYnVpbGRlciBpZGVudGl0eSBtaXNtYXRjaCIKK1sgIiQoanEgLWVyICcucGF0Y2hfdmFsaWRhdG9yX3NoYTI1NicgIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIpIiA9ICIkcGF0Y2hfdmFsaWRhdG9yX3NoYTI1NiIgXSB8fCBkaWUgImNhbmRpZGF0ZSBwYXRjaC12YWxpZGF0b3IgaWRlbnRpdHkgbWlzbWF0Y2giCitbICIkKGpxIC1lciAnLm9yaWdpbmFsX3NvdXJjZV9pZGVudGl0eV9zaGEyNTYnICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iKSIgPSAiJGNhbmRpZGF0ZV9vcmlnaW5hbF9zb3VyY2VfaWRlbnRpdHlfc2hhMjU2IiBdIHx8IGRpZSAiY2FuZGlkYXRlIG9yaWdpbmFsIHNvdXJjZSBpZGVudGl0eSBtaXNtYXRjaCIKK2NhbmRpZGF0ZV9jb21taXRzX2pzb249IiQoanEgLWNTICcuY2FuZGlkYXRlX2NvbW1pdHMnICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iKSIKK2NhbmRpZGF0ZV9jb21taXRzX3NoYTI1Nj0iJChqcSAtUyAnLmNhbmRpZGF0ZV9jb21taXRzJyAiJGNhbmRpZGF0ZV9idWlsZF9qc29uIiB8IHNoYTI1NnN1bSB8IGF3ayAne3ByaW50ICQxfScpIgorWyAiJChqcSAtZXIgJy5jYW5kaWRhdGVfY29tbWl0c19zaGEyNTYnICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iKSIgPSAiJGNhbmRpZGF0ZV9jb21taXRzX3NoYTI1NiIgXSB8fCBkaWUgImNhbmRpZGF0ZSBjb21taXQtbWFwIGRpZ2VzdCBtaXNtYXRjaCIKK2pxIC1lIC0tYXJnanNvbiBjb21taXRzICIkY2FuZGlkYXRlX2NvbW1pdHNfanNvbiIgJy5yZXBvc2l0b3JpZXMgPT0gJGNvbW1pdHMnIFwKKyAgICAiJGNhbmRpZGF0ZV9zb3VyY2Vfcm9vdC8uZXZhbHVhdGlvbi1zb3VyY2UuanNvbiIgPi9kZXYvbnVsbCB8fCBkaWUgInRlbXBvcmFyeSBjYW5kaWRhdGUgY29tbWl0IG1hcCBkb2VzIG5vdCBtYXRjaCBpdHMgaW1hZ2UiCitbICIkKGpxIC1lciAnLmltYWdlX2tleScgIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIpIiA9ICIkaW1hZ2Vfa2V5IiBdIHx8IGRpZSAiY2FuZGlkYXRlIGltYWdlIGtleSBtaXNtYXRjaCIKK1sgIiQoanEgLWVyICcucmVwb3NpdG9yaWVzLnNlcnZlcicgIiRjYW5kaWRhdGVfc291cmNlX3Jvb3QvLmV2YWx1YXRpb24tc291cmNlLmpzb24iKSIgPSAiJGNhbmRpZGF0ZV9zaGEiIF0gfHwKKyAgICBkaWUgInRlbXBvcmFyeSBjYW5kaWRhdGUgY2hlY2tvdXQgZG9lcyBub3QgbWF0Y2ggdGhlIGNhbmRpZGF0ZSBpbWFnZSIKK1sgIiQoanEgLWVyICcuY2FuZGlkYXRlX3BhdGNoX3NoYTI1NicgIiRjYW5kaWRhdGVfc291cmNlX3Jvb3QvLmV2YWx1YXRpb24tc291cmNlLmpzb24iKSIgPSAiJHBhdGNoX3NoYTI1NiIgXSB8fAorICAgIGRpZSAidGVtcG9yYXJ5IGNhbmRpZGF0ZSBjaGVja291dCBkb2VzIG5vdCBtYXRjaCB0aGUgY2Fub25pY2FsIHBhdGNoIgorWyAiJChldmFsdWF0aW9uX2RvY2tlciBpbWFnZSBpbnNwZWN0IC0tZm9ybWF0ICd7ey5JZH19JyAiJGNhbmRpZGF0ZV9pbWFnZV9pZCIpIiA9ICIkY2FuZGlkYXRlX2ltYWdlX2lkIiBdIHx8CisgICAgZGllICJjYW5kaWRhdGUgaW1hZ2UgaWQgaXMgdW5hdmFpbGFibGUgb3IgY2hhbmdlZCIKK2NhbmRpZGF0ZV9pZGVudGl0eT0iJChldmFsdWF0aW9uX2RvY2tlciBydW4gLS1ybSAtLW5ldHdvcmsgbm9uZSAtLXJlYWQtb25seSAtLWNhcC1kcm9wIEFMTCBcCisgICAgLS1zZWN1cml0eS1vcHQgbm8tbmV3LXByaXZpbGVnZXM6dHJ1ZSAtLW1vdW50ICJ0eXBlPWJpbmQsc3JjPSRjYW5kaWRhdGVfc291cmNlX3Jvb3QsZHN0PS93b3Jrc3BhY2UscmVhZG9ubHkiIFwKKyAgICAiJHtzdWJldmFsdWF0aW9uX3Byb2JlX2FyZ3NbQF19IiAiJHtzdWJldmFsdWF0aW9uX2RvY2tlcl9hcmdzW0BdfSIgIiRjYW5kaWRhdGVfaW1hZ2VfaWQiIGlkZW50aXR5KSIKK2NhbmRpZGF0ZV9zaW11bGF0b3Jfc2hhMjU2PSIkKGpxIC1lciAnLnNpbXVsYXRvcl9zaGEyNTYnIDw8PCIkY2FuZGlkYXRlX2lkZW50aXR5IikiCitqcSAtZSAtLWFyZyBiYXNlX3NoYSAiJGJhc2Vfc2hhIiAtLWFyZyBidWlsZF9zaGEgIiRjYW5kaWRhdGVfc2hhIiBcCisgICAgLS1hcmcgcGF0Y2hfc2hhICIkcGF0Y2hfc2hhMjU2IiAtLWFyZyBwb2xpY3lfc2hhICIkcG9saWN5X3NoYTI1NiIgXAorICAgIC0tYXJnIGJ1aWxkZXJfc2hhICIkYnVpbGRlcl9zaGEyNTYiIC0tYXJnIGltYWdlX2tleSAiJGltYWdlX2tleSIgXAorICAgIC0tYXJnIHBhdGNoX3ZhbGlkYXRvcl9zaGEyNTYgIiRwYXRjaF92YWxpZGF0b3Jfc2hhMjU2IiBcCisgICAgLS1hcmcgY2FuZGlkYXRlX2NvbW1pdHNfc2hhMjU2ICIkY2FuZGlkYXRlX2NvbW1pdHNfc2hhMjU2IiBcCisgICAgLS1hcmcgb3JpZ2luYWxfc291cmNlX2lkZW50aXR5X3NoYTI1NiAiJGNhbmRpZGF0ZV9vcmlnaW5hbF9zb3VyY2VfaWRlbnRpdHlfc2hhMjU2IiBcCisgICAgLS1hcmcgY2FuZGlkYXRlX3NvdXJjZV9pZGVudGl0eV9zaGEyNTYgIiQoc2hhMjU2X2ZpbGUgIiRjYW5kaWRhdGVfc291cmNlX3Jvb3QvLmV2YWx1YXRpb24tc291cmNlLmpzb24iKSIgXAorICAgIC0tYXJnanNvbiBjYW5kaWRhdGVfY29tbWl0cyAiJGNhbmRpZGF0ZV9jb21taXRzX2pzb24iIFwKKyAgICAnLnNjaGVtYSA9PSAxIGFuZCAuaW1hZ2Vfa2luZCA9PSAic3VibWlzc2lvbiIgYW5kIC5iYXNlX3NoYSA9PSAkYmFzZV9zaGEgYW5kCisgICAgIC5idWlsZF9zaGEgPT0gJGJ1aWxkX3NoYSBhbmQgLnBhdGNoX3NoYTI1NiA9PSAkcGF0Y2hfc2hhIGFuZAorICAgICAucG9saWN5X3NoYTI1NiA9PSAkcG9saWN5X3NoYSBhbmQgLmJ1aWxkZXJfc2hhMjU2ID09ICRidWlsZGVyX3NoYSBhbmQKKyAgICAgLmltYWdlX2tleSA9PSAkaW1hZ2Vfa2V5IGFuZCAoLnNpbXVsYXRvcl9zaGEyNTYgfCB0ZXN0KCJeWzAtOWEtZl17NjR9JCIpKSBhbmQKKyAgICAgLnBhdGNoX3ZhbGlkYXRvcl9zaGEyNTYgPT0gJHBhdGNoX3ZhbGlkYXRvcl9zaGEyNTYgYW5kCisgICAgIC5jYW5kaWRhdGVfY29tbWl0c19zaGEyNTYgPT0gJGNhbmRpZGF0ZV9jb21taXRzX3NoYTI1NiBhbmQKKyAgICAgLm9yaWdpbmFsX3NvdXJjZV9pZGVudGl0eV9zaGEyNTYgPT0gJG9yaWdpbmFsX3NvdXJjZV9pZGVudGl0eV9zaGEyNTYgYW5kCisgICAgIC5jYW5kaWRhdGVfc291cmNlX2lkZW50aXR5X3NoYTI1NiA9PSAkY2FuZGlkYXRlX3NvdXJjZV9pZGVudGl0eV9zaGEyNTYgYW5kCisgICAgIC5zb3VyY2VfbWF0ZXJpYWxpemF0aW9uID09ICJyZXF1aXJlZC1yZWFkb25seS1ydW4tc291cmNlL3YxIiBhbmQgLmJ1aWx0aW5fc291cmNlX2tpbmQgPT0gInByaXN0aW5lLWV2YWx1YXRvci1iYXNlIiBhbmQKKyAgICAgLmNhbmRpZGF0ZV9jb21taXRzID09ICRjYW5kaWRhdGVfY29tbWl0cyBhbmQKKyAgICAgKC5wYXRocyB8IHR5cGUgPT0gImFycmF5IiknIFwKKyAgICA8PDwiJGNhbmRpZGF0ZV9pZGVudGl0eSIgPi9kZXYvbnVsbCB8fCBkaWUgImNhbmRpZGF0ZSBpbWFnZSBpZGVudGl0eSBpcyBpbnZhbGlkIgorYXV0aGVudGljYXRlX3Byb3RlY3RlZF9zaW11bGF0b3JfdHJlZQord3JpdGVfc291cmNlX2V2aWRlbmNlIGZhbHNlCitzZWFsX2V2YWx1YXRpb25fc291cmNlICIkY2FuZGlkYXRlX3NvdXJjZV9yb290IiAiJGNhbmRpZGF0ZV9zaGEiICIkcGF0Y2hfc2hhMjU2IgorfQorCitzZWFsX2V2YWx1YXRpb25fc291cmNlICIkYmFzZWxpbmVfc291cmNlX3Jvb3QiICIkYmFzZV9zaGEiICIiCisKKyMgUmVmdXNlIHNvdXJjZS1wZXJjZW50L3JlcXVlc3QtZnJhY3Rpb24gbWlzbWF0Y2hlcyBiZWZvcmUgcGF5aW5nIGZvciBhbnkKKyMgYmFzZWxpbmUgcnVuLiBUaGUgcHJpc3RpbmUgaW1hZ2UgcGVyZm9ybXMgdGhpcyBtZXRhZGF0YS1vbmx5IGNoZWNrIG9mZmxpbmUuCitldmFsdWF0aW9uX2RvY2tlciBydW4gLS1ybSAtLW5ldHdvcmsgbm9uZSAtLXJlYWQtb25seSAtLWNhcC1kcm9wIEFMTCBcCisgICAgLS1zZWN1cml0eS1vcHQgbm8tbmV3LXByaXZpbGVnZXM6dHJ1ZSAtLWNwdXNldC1jcHVzICIkbWFuYWdlbWVudF9jcHVzZXQiIFwKKyAgICAtLW1lbW9yeSAiJFNDT1JFUl9NRU1PUllfTElNSVQiIC0tbWVtb3J5LXN3YXAgIiRTQ09SRVJfTUVNT1JZX0xJTUlUIiAtLXBpZHMtbGltaXQgIiRTQ09SRVJfUElEU19MSU1JVCIgXAorICAgIC0tZW52IEFQRVhfU0lNX0JJTj0vb3B0L3VybmV0d29yay9iaW4vc2ltLWxhdGVuY3kgXAorICAgIC0tZW52ICJBUEVYX1NJTV9TSEEyNTY9JGJhc2Vfc2ltdWxhdG9yX3NoYTI1NiIgXAorICAgIC0tZW52ICJBUEVYX0VQT0NIPSRzb3VyY2VfZXBvY2giIC0tZW52ICJBUEVYX1RBS0VPVkVSX01BUkdJTj0kdGFrZW92ZXJfbWFyZ2luIiBcCisgICAgLS1lbnYgIkFQRVhfRzJfVk9MVU1FX1BPTElDWT0kZzJfdm9sdW1lX3BvbGljeSIgXAorICAgIC0tZW52ICJBUEVYX1dPUktfQ09WRVJBR0VfUE9MSUNZX0pTT049JHdvcmtfY292ZXJhZ2VfcG9saWN5IiBcCisgICAgIiR7c3ViZXZhbHVhdGlvbl9kb2NrZXJfYXJnc1tAXX0iICIkYmFzZV9pbWFnZV9pZCIgbWFyZ2luLXByZWZsaWdodCA+JjIgfHwgZGllICJzb3VyY2UgZXBvY2ggdGFrZW92ZXIgbWFyZ2luIHByZWZsaWdodCBmYWlsZWQiCisKK2lmIFsgLW4gIiRyb3VuZF9iYXNlbGluZV9wYXRoIiBdOyB0aGVuCisgICAganEgLWUgLS1hcmcgcm91bmRfaWQgIiRyb3VuZF9pZCIgLS1hcmcgcHJvdmlkZXJzX3NoYTI1NiAiJHByb3ZpZGVyc19zaGEyNTYiIFwKKyAgICAgICAgLS1hcmcgc2NvcmVyX3ZlcnNpb24gIiRzY29yZXJfdmVyc2lvbiIgLS1hcmdqc29uIHJlcGxpY2F0ZXMgIiRyZXBsaWNhdGVzIiBcCisgICAgICAgIC0tYXJnIGcyX3ZvbHVtZV9wb2xpY3kgIiRnMl92b2x1bWVfcG9saWN5IiBcCisgICAgICAgIC0tYXJnanNvbiBjb3ZlcmFnZSAiJHdvcmtfY292ZXJhZ2VfcG9saWN5IiBcCisgICAgICAgIC0tYXJnanNvbiByZXF1ZXN0X3RpbWVvdXRfbXMgIiRyZXF1ZXN0X3RpbWVvdXRfbXMiIFwKKyAgICAgICAgLS1hcmdqc29uIHRha2VvdmVyX21hcmdpbiAiJHRha2VvdmVyX21hcmdpbiIgXAorICAgICAgICAnLnNjb3JlX3NjaGVtYSA9PSAxIGFuZCAua2luZCA9PSAic2ltLWxhdGVuY3ktc2NvcmUtYmFzZWxpbmUiIGFuZAorICAgICAgICAgLnNjb3Jlcl92ZXJzaW9uID09ICRzY29yZXJfdmVyc2lvbiBhbmQgLnJvdW5kX2lkID09ICRyb3VuZF9pZCBhbmQKKyAgICAgICAgICguZzJfdm9sdW1lX3BvbGljeSAvLyAiIikgPT0gJGcyX3ZvbHVtZV9wb2xpY3kgYW5kCisgICAgICAgICAoLndvcmtfY292ZXJhZ2VfcG9saWN5IC8vIG51bGwpID09ICRjb3ZlcmFnZSBhbmQKKyAgICAgICAgIC5jb25maWdfc2hhMjU2ID09ICRwcm92aWRlcnNfc2hhMjU2IGFuZAorICAgICAgICAgLnJlcXVlc3RfdGltZW91dF9tcyA9PSAkcmVxdWVzdF90aW1lb3V0X21zIGFuZAorICAgICAgICAgLnRha2VvdmVyX21hcmdpbiA9PSAkdGFrZW92ZXJfbWFyZ2luIGFuZAorICAgICAgICAgKC5yZXBsaWNhdGVzIHwgdHlwZSA9PSAiYXJyYXkiIGFuZCBsZW5ndGggPT0gJHJlcGxpY2F0ZXMpIGFuZAorICAgICAgICAgYWxsKC5yZXBsaWNhdGVzW107CisgICAgICAgICAgICgubGl2ZV9tZXRyaWNzIHwgdHlwZSA9PSAib2JqZWN0IiBhbmQKKyAgICAgICAgICAgIChrZXlzIHwgc29ydCkgPT0gWyJ0aHJvdWdocHV0X3A1MF9ieXRlc19wZXJfcyIsInRocm91Z2hwdXRfcDk1X2J5dGVzX3Blcl9zIiwidHRmYl9wNTBfbXMiLCJ0dGZiX3A5NV9tcyJdIGFuZAorICAgICAgICAgICAgYWxsKC5bXTsgLnZhbHVlID49IDAgYW5kIC5uID4gMCBhbmQgKC5ibG9ja19zZSAvLyAwKSA+PSAwKSkpJyBcCisgICAgICAgICIkcm91bmRfYmFzZWxpbmVfcGF0aCIgPi9kZXYvbnVsbCB8fCBkaWUgImZyb3plbiByb3VuZCBiYXNlbGluZSBjb250cmFjdCBtaXNtYXRjaCIKKyAgICBldmFsdWF0aW9uX3NlYWxlZF9jb3B5ICIkd29ya2VyX3VpZCIgIiR3b3JrZXJfZ2lkIiBcCisgICAgICAgICIkcm91bmRfYmFzZWxpbmVfcGF0aCIgIiRhcnRpZmFjdF9kaXIvYmFzZWxpbmUuanNvbiIKKyAgICBldmFsdWF0aW9uX3NlYWxlZF9jb3B5ICIkY29udGFpbmVyX2hvc3RfdWlkIiAiJGNvbnRhaW5lcl9ob3N0X2dpZCIgXAorICAgICAgICAiJGFydGlmYWN0X2Rpci9iYXNlbGluZS5qc29uIiAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dC9iYXNlbGluZS5qc29uIgorICAgIGJhc2VsaW5lX3NoYTI1Nj0iJChzaGEyNTZfZmlsZSAiJGFydGlmYWN0X2Rpci9iYXNlbGluZS5qc29uIikiCisgICAgWyAiJGJhc2VsaW5lX3NoYTI1NiIgPSAiJHJvdW5kX2Jhc2VsaW5lX3NoYTI1NiIgXSB8fCBkaWUgIm1hdGVyaWFsaXplZCByb3VuZCBiYXNlbGluZSBoYXNoIG1pc21hdGNoIgorICAgIHdoaWxlIElGUz0gcmVhZCAtciBwcm9ncmVzc19yZWNvcmQ7IGRvCisgICAgICAgIHByb2dyZXNzX3JlY29yZHMrPSgiJHByb2dyZXNzX3JlY29yZCIpCisgICAgZG9uZSA8IDwoanEgLWMgJworICAgICAgICAucmVwbGljYXRlcyB8IHRvX2VudHJpZXNbXSBhcyAkcmVwbGljYXRlIHwKKyAgICAgICAgJHJlcGxpY2F0ZS52YWx1ZS5saXZlX21ldHJpY3MgfCB0b19lbnRyaWVzW10gfAorICAgICAgICB7cm9sZToiYmFzZWxpbmUiLHJlcGxpY2F0ZTooJHJlcGxpY2F0ZS5rZXkgKyAxKSxtZXRyaWM6LmtleSwKKyAgICAgICAgIHF1YW50aWxlOihpZiAoLmtleSB8IGNvbnRhaW5zKCJfcDUwXyIpKSB0aGVuICJwNTAiIGVsc2UgInA5NSIgZW5kKSwKKyAgICAgICAgIHZhbHVlOi52YWx1ZS52YWx1ZSxwX2ltcHJvdmVtZW50Om51bGwscF9yZWdyZXNzaW9uOm51bGwsc2lnbmlmaWNhbmNlOiJiYXNlbGluZSJ9JyBcCisgICAgICAgICIkYXJ0aWZhY3RfZGlyL2Jhc2VsaW5lLmpzb24iKQorICAgIHdyaXRlX2V2YWx1YXRpb25fcHJvZ3Jlc3MgYmFzZWxpbmUgIiRyZXBsaWNhdGVzIiAwCitlbHNlCisgICAgZm9yICgoaSA9IDE7IGkgPD0gcmVwbGljYXRlczsgaSsrKSk7IGRvCisgICAgICAgIHJ1bl9zdGFnZSBiYXNlbGluZSAiJGkiICIkYmFzZV9pbWFnZV9pZCIgIiRiYXNlX3NoYSIgIiRiYXNlX3NpbXVsYXRvcl9zaGEyNTYiICIkRU1QVFlfUEFUQ0hfU0hBMjU2IgorICAgIGRvbmUKK2ZpCisKK3Njb3JlX3J1bm5lcl9lbnY9IiR3b3JrX2Rpci9zY29yZXIuZW52Igorc2NvcmVfY29tcG9zZV9lbnY9IiR3b3JrX2Rpci9zY29yZXItY29tcG9zZS5lbnYiCitpZiBbIC16ICIkcm91bmRfYmFzZWxpbmVfcGF0aCIgXTsgdGhlbgorc3RhZ2VfZGJfYWRtaW5fcGFzc3dvcmQ9IiQobmV3X3NlY3JldCkiCitzdGFnZV9kYl9wYXNzd29yZD0iJChuZXdfc2VjcmV0KSIKK3N0YWdlX3JlZGlzX3Bhc3N3b3JkPSIkKG5ld19zZWNyZXQpIgord3JpdGVfcnVubmVyX2VudiAiJHNjb3JlX3J1bm5lcl9lbnYiICJzY29yZS0ke2pvYl9pZDowOjh9IiAiJGJhc2Vfc2hhIiAiJGJhc2Vfc2ltdWxhdG9yX3NoYTI1NiIgIiRiYXNlX2ltYWdlX2lkIiAiJEVNUFRZX1BBVENIX1NIQTI1NiIKK3NlZCAtaSAnc3xeQVBFWF9QUk9WSURFUlNfRklMRT0uKnxBUEVYX1BST1ZJREVSU19GSUxFPS9hcnRpZmFjdHMvcHJvdmlkZXJzLnltbHwnICIkc2NvcmVfcnVubmVyX2VudiIKK2NobW9kIDA2MDAgIiRzY29yZV9ydW5uZXJfZW52IgorcHJpbnRmICclc1xuJyBcCisgICAgIkFQRVhfUk9VTkRfSUQ9JHJvdW5kX2lkIiBcCisgICAgIkFQRVhfVEFLRU9WRVJfTUFSR0lOPSR0YWtlb3Zlcl9tYXJnaW4iIFwKKyAgICAiQVBFWF9CQVNFTElORV9SVU5TPSQoam9pbl9jc3YgIiR7YmFzZWxpbmVfY3N2W0BdfSIpIiBcCisgICAgIkFQRVhfQkFTRUxJTkVfU1RERVJSPSQoam9pbl9jc3YgIiR7YmFzZWxpbmVfc3RkZXJyW0BdfSIpIiBcCisgICAgIkFQRVhfQkFTRUxJTkVfQUNDT1VOVElORz0kKGpvaW5fY3N2ICIke2Jhc2VsaW5lX2FjY291bnRpbmdbQF19IikiIFwKKyAgICAiQVBFWF9CQVNFTElORV9TQU1QTEVTPSQoam9pbl9jc3YgIiR7YmFzZWxpbmVfc2FtcGxlc1tAXX0iKSIgXAorICAgICJBUEVYX0JBU0VMSU5FX1JFU09VUkNFUz0kKGpvaW5fY3N2ICIke2Jhc2VsaW5lX3Jlc291cmNlc1tAXX0iKSIgXAorICAgICJBUEVYX0JBU0VMSU5FX01BUktFUlM9JChqb2luX2NzdiAiJHtiYXNlbGluZV9tYXJrZXJzW0BdfSIpIiBcCisgICAgJ0FQRVhfQkFTRUxJTkVfTUFOSUZFU1Q9L3Njb3JlLW91dHB1dC9iYXNlbGluZS5qc29uJyBcCisgICAgPj4gIiRzY29yZV9ydW5uZXJfZW52IgorY2htb2QgMDQwMCAiJHNjb3JlX3J1bm5lcl9lbnYiCisKK2Jhc2VsaW5lX3Njb3JlX291dHB1dD0iJHdvcmtfZGlyL2Jhc2VsaW5lLXNjb3JlLW91dHB1dCIKK2luc3RhbGwgLWQgLW0gMDcwMCAiJGJhc2VsaW5lX3Njb3JlX291dHB1dCIKK2lmIFtbICIkc3ViZXZhbHVhdGlvbl9zY29wZWQiID0gdHJ1ZSBdXTsgdGhlbgorICAgIGV2YWx1YXRpb25faG9zdCBwcmVwYXJlLW91dHB1dCAiJGJhc2VsaW5lX3Njb3JlX291dHB1dCIKK2Vsc2UKKyAgICBzdWRvIC1uIGNob3duICIkY29udGFpbmVyX2hvc3RfdWlkOiRjb250YWluZXJfaG9zdF9naWQiICIkYmFzZWxpbmVfc2NvcmVfb3V0cHV0IgorZmkKK3Njb3JlX3Byb2plY3Q9InVybmV0d29yay1ldmFsLSR7YXR0ZW1wdF90b2tlbn0tYmFzZWxpbmUtc2NvcmUiCitzY29yZV9jZ3JvdXBfcGFyZW50PSJ1cm5ldHdvcmstZXZhbHVhdGlvbi0ke2F0dGVtcHRfdG9rZW59LWJhc2VsaW5lLXNjb3JlLnNsaWNlIgord3JpdGVfY29tcG9zZV9lbnYgIiRzY29yZV9jb21wb3NlX2VudiIgIiRzY29yZV9wcm9qZWN0IiBzY29yZSAiJGJhc2VfaW1hZ2VfaWQiICIkc2NvcmVfcnVubmVyX2VudiIgXAorICAgICIkd29ya19kaXIvc2NvcmVyLWlucHV0IiAiJGJhc2VsaW5lX3Njb3JlX291dHB1dCIgIiRzY29yZV9jZ3JvdXBfcGFyZW50IiAiJGJhc2VsaW5lX3NvdXJjZV9yb290Igorc2VkIC1pICdzL15FVkFMVUFUSU9OX0FDVElPTj0uKi9FVkFMVUFUSU9OX0FDVElPTj1iYXNlbGluZS8nICIkc2NvcmVfY29tcG9zZV9lbnYiCithY3RpdmVfcHJvamVjdD0iJHNjb3JlX3Byb2plY3QiCithY3RpdmVfY29tcG9zZV9lbnY9IiRzY29yZV9jb21wb3NlX2VudiIKK2NvbXBvc2Vfd2l0aCAiJHNjb3JlX3Byb2plY3QiICIkc2NvcmVfY29tcG9zZV9lbnYiIC0tcHJvZmlsZSBzY29yZSB1cCAtLWRldGFjaCBzY29yZXIgPiYyCitzY29yZXJfaWQ9IiQoY29tcG9zZV93aXRoICIkc2NvcmVfcHJvamVjdCIgIiRzY29yZV9jb21wb3NlX2VudiIgLS1wcm9maWxlIHNjb3JlIHBzIC0tYWxsIC0tcXVpZXQgc2NvcmVyKSIKK1sgLW4gIiRzY29yZXJfaWQiIF0gfHwgZGllICJiYXNlbGluZSBzY29yZXIgY29udGFpbmVyIG1pc3NpbmciCitzY29yZXJfZXhpdD0iJChldmFsdWF0aW9uX2RvY2tlciB3YWl0ICIkc2NvcmVyX2lkIikiCitiYXNlbGluZV9zY29yZXJfbG9nPSIkd29ya19kaXIvYmFzZWxpbmUtc2NvcmVyLmxvZyIKK2V2YWx1YXRpb25fZG9ja2VyIGxvZ3MgIiRzY29yZXJfaWQiID4gIiRiYXNlbGluZV9zY29yZXJfbG9nIiAyPiYxIHx8IHRydWUKK2NhdCAiJGJhc2VsaW5lX3Njb3Jlcl9sb2ciID4mMgorY2htb2QgMDQwMCAiJGJhc2VsaW5lX3Njb3Jlcl9sb2ciCitbICIkc2NvcmVyX2V4aXQiIC1lcSAwIF0gfHwgZGllICJiYXNlbGluZSBzY29yZXIgZXhpdGVkICRzY29yZXJfZXhpdCIKK2V2YWx1YXRpb25fZG9ja2VyIGluc3BlY3QgIiRzY29yZXJfaWQiIHwganEgLWUgLS1hcmcgcGFyZW50ICIkc2NvcmVfY2dyb3VwX3BhcmVudCIgXAorICAgIC0tYXJnIGltYWdlICIkYmFzZV9pbWFnZV9pZCIgLS1hcmcgY3B1c2V0ICIkY3B1c2V0IiBcCisgICAgJy5bMF0uQ29uZmlnLlVzZXIgPT0gIjY1NTMyOjY1NTMyIiBhbmQgLlswXS5Ib3N0Q29uZmlnLlJlYWRvbmx5Um9vdGZzID09IHRydWUgYW5kCisgICAgIC5bMF0uSG9zdENvbmZpZy5OZXR3b3JrTW9kZSA9PSAibm9uZSIgYW5kIC5bMF0uSG9zdENvbmZpZy5NZW1vcnkgPT0gNDI5NDk2NzI5NiBhbmQKKyAgICAgLlswXS5Ib3N0Q29uZmlnLk1lbW9yeVN3YXAgPT0gNDI5NDk2NzI5NiBhbmQgLlswXS5Ib3N0Q29uZmlnLlBpZHNMaW1pdCA9PSAxMDI0IGFuZAorICAgICAuWzBdLkNvbmZpZy5JbWFnZSA9PSAkaW1hZ2UgYW5kIC5bMF0uSG9zdENvbmZpZy5DZ3JvdXBQYXJlbnQgPT0gJHBhcmVudCBhbmQKKyAgICAgLlswXS5Ib3N0Q29uZmlnLkNwdXNldENwdXMgPT0gJGNwdXNldCBhbmQKKyAgICAgKC5bMF0uSG9zdENvbmZpZy5DYXBEcm9wIHwgaW5kZXgoIkFMTCIpICE9IG51bGwpIGFuZAorICAgICAoLlswXS5Ib3N0Q29uZmlnLlNlY3VyaXR5T3B0IHwgaW5kZXgoIm5vLW5ldy1wcml2aWxlZ2VzOnRydWUiKSAhPSBudWxsKScgPi9kZXYvbnVsbCB8fAorICAgIGRpZSAiYmFzZWxpbmUgc2NvcmVyIGNvbnRhaW5tZW50IG1pc21hdGNoIgoraWYgW1sgIiRzdWJldmFsdWF0aW9uX3Njb3BlZCIgIT0gdHJ1ZSBdXTsgdGhlbgorICAgIGV2YWx1YXRpb25fZmlsZSB0ZXN0IC1zICIkYmFzZWxpbmVfc2NvcmVfb3V0cHV0L2Jhc2VsaW5lLmpzb24iIHx8IGRpZSAiYmFzZWxpbmUgbWFuaWZlc3QgbWlzc2luZyIKK2ZpCitjb21wb3NlX3dpdGggIiRzY29yZV9wcm9qZWN0IiAiJHNjb3JlX2NvbXBvc2VfZW52IiAtLXByb2ZpbGUgc2NvcmUgZG93biAtLXZvbHVtZXMgLS1yZW1vdmUtb3JwaGFucyA+JjIKK2lmIFtbICIkc3ViZXZhbHVhdGlvbl9zY29wZWQiID0gdHJ1ZSBdXTsgdGhlbgorICAgIGV2YWx1YXRpb25faG9zdCByZWNsYWltLW91dHB1dCAiJGJhc2VsaW5lX3Njb3JlX291dHB1dCIKKyAgICB0ZXN0IC1zICIkYmFzZWxpbmVfc2NvcmVfb3V0cHV0L2Jhc2VsaW5lLmpzb24iIHx8IGRpZSAiYmFzZWxpbmUgbWFuaWZlc3QgbWlzc2luZyIKK2ZpCithY3RpdmVfcHJvamVjdD0iIgorYWN0aXZlX2NvbXBvc2VfZW52PSIiCitldmFsdWF0aW9uX3NlYWxlZF9jb3B5ICIkd29ya2VyX3VpZCIgIiR3b3JrZXJfZ2lkIiBcCisgICAgIiRiYXNlbGluZV9zY29yZV9vdXRwdXQvYmFzZWxpbmUuanNvbiIgIiRhcnRpZmFjdF9kaXIvYmFzZWxpbmUuanNvbiIKK2V2YWx1YXRpb25fc2VhbGVkX2NvcHkgIiRjb250YWluZXJfaG9zdF91aWQiICIkY29udGFpbmVyX2hvc3RfZ2lkIiBcCisgICAgIiRhcnRpZmFjdF9kaXIvYmFzZWxpbmUuanNvbiIgIiR3b3JrX2Rpci9zY29yZXItaW5wdXQvYmFzZWxpbmUuanNvbiIKK2Jhc2VsaW5lX3NoYTI1Nj0iJChzaGEyNTZfZmlsZSAiJGFydGlmYWN0X2Rpci9iYXNlbGluZS5qc29uIikiCitmaQorCisjIE5vdGhpbmcgZnJvbSB0cnVzdGVkIGJhc2VsaW5lIHNjb3JpbmcgaXMgbmVlZGVkIHdoaWxlIGJ1aWxkaW5nIHRoZQorIyBzdWJtaXNzaW9uLiBSZW1vdmluZyB0aGUgZXBoZW1lcmFsIGVudmlyb25tZW50IGFsc28ga2VlcHMgaXRzIG9uZS10aW1lCisjIGJhY2tpbmctc2VydmljZSBjcmVkZW50aWFscyBvdXQgb2YgYSB0ZXJtaW5hbCBidWlsZC1mYWlsdXJlIGFyY2hpdmUuCitybSAtZiAtLSAiJHNjb3JlX3J1bm5lcl9lbnYiICIkc2NvcmVfY29tcG9zZV9lbnYiCitidWlsZF9jYW5kaWRhdGUKK2lmIFtbICIkc3ViZXZhbHVhdGlvbl9zY29wZWQiID0gdHJ1ZSBdXTsgdGhlbgorICAgIHN1YmV2YWx1YXRpb25fcmV0aXJlX2J1aWxkICIkd29ya19kaXIvYnVpbGQtcmV0aXJlbWVudC5qc29uIiB8fCBkaWUgImJ1aWxkIHJldGlyZW1lbnQgZGlkIG5vdCBwcm92ZSBpdHMgYm91bmRlZCBmcm96ZW4gbWVtb3J5IHBoYXNlIgorZmkKK2ZvciAoKGkgPSAxOyBpIDw9IHJlcGxpY2F0ZXM7IGkrKykpOyBkbworICAgIHJ1bl9zdGFnZSBjYW5kaWRhdGUgIiRpIiAiJGNhbmRpZGF0ZV9pbWFnZV9pZCIgIiRjYW5kaWRhdGVfc2hhIiAiJGNhbmRpZGF0ZV9zaW11bGF0b3Jfc2hhMjU2IiAiJHBhdGNoX3NoYTI1NiIKK2RvbmUKK3dyaXRlX2V2YWx1YXRpb25fcHJvZ3Jlc3Mgc2NvcmluZyAiJHJlcGxpY2F0ZXMiICIkcmVwbGljYXRlcyIKKworIyBSZWJ1aWxkIHRoZSBzY29yZXIgZW52aXJvbm1lbnQgZm9yIGNhbmRpZGF0ZSBzY29yaW5nOyBubyBiYXNlbGluZSBwYXRoIHdhcworIyBldmVyIG1vdW50ZWQgaW50byBhIGNhbmRpZGF0ZSBydW5uZXIuCitzdGFnZV9kYl9hZG1pbl9wYXNzd29yZD0iJChuZXdfc2VjcmV0KSIKK3N0YWdlX2RiX3Bhc3N3b3JkPSIkKG5ld19zZWNyZXQpIgorc3RhZ2VfcmVkaXNfcGFzc3dvcmQ9IiQobmV3X3NlY3JldCkiCitbICEgLWUgIiRzY29yZV9ydW5uZXJfZW52IiBdIHx8IGNobW9kIDA2MDAgIiRzY29yZV9ydW5uZXJfZW52Igord3JpdGVfcnVubmVyX2VudiAiJHNjb3JlX3J1bm5lcl9lbnYiICJzY29yZS0ke2pvYl9pZDowOjh9IiAiJGJhc2Vfc2hhIiAiJGJhc2Vfc2ltdWxhdG9yX3NoYTI1NiIgIiRiYXNlX2ltYWdlX2lkIiAiJEVNUFRZX1BBVENIX1NIQTI1NiIKK3NlZCAtaSAnc3xeQVBFWF9QUk9WSURFUlNfRklMRT0uKnxBUEVYX1BST1ZJREVSU19GSUxFPS9hcnRpZmFjdHMvcHJvdmlkZXJzLnltbHwnICIkc2NvcmVfcnVubmVyX2VudiIKK2NobW9kIDA2MDAgIiRzY29yZV9ydW5uZXJfZW52IgorcHJpbnRmICclc1xuJyBcCisgICAgJ0FQRVhfQkFTRUxJTkVfTUFOSUZFU1Q9L2FydGlmYWN0cy9iYXNlbGluZS5qc29uJyBcCisgICAgIkFQRVhfQkFTRUxJTkVfU0hBMjU2PSRiYXNlbGluZV9zaGEyNTYiIFwKKyAgICAiQVBFWF9DQU5ESURBVEVfUlVOUz0kKGpvaW5fY3N2ICIke2NhbmRpZGF0ZV9jc3ZbQF19IikiIFwKKyAgICAiQVBFWF9DQU5ESURBVEVfU1RERVJSPSQoam9pbl9jc3YgIiR7Y2FuZGlkYXRlX3N0ZGVycltAXX0iKSIgXAorICAgICJBUEVYX0NBTkRJREFURV9BQ0NPVU5USU5HPSQoam9pbl9jc3YgIiR7Y2FuZGlkYXRlX2FjY291bnRpbmdbQF19IikiIFwKKyAgICAiQVBFWF9DQU5ESURBVEVfU0FNUExFUz0kKGpvaW5fY3N2ICIke2NhbmRpZGF0ZV9zYW1wbGVzW0BdfSIpIiBcCisgICAgIkFQRVhfQ0FORElEQVRFX1JFU09VUkNFUz0kKGpvaW5fY3N2ICIke2NhbmRpZGF0ZV9yZXNvdXJjZXNbQF19IikiIFwKKyAgICAiQVBFWF9DQU5ESURBVEVfTUFSS0VSUz0kKGpvaW5fY3N2ICIke2NhbmRpZGF0ZV9tYXJrZXJzW0BdfSIpIiBcCisgICAgJ0FQRVhfU0NPUkVfT1VUUFVUPS9zY29yZS1vdXRwdXQvc2NvcmUuanNvbicgXAorICAgID4+ICIkc2NvcmVfcnVubmVyX2VudiIKK2NobW9kIDA0MDAgIiRzY29yZV9ydW5uZXJfZW52IgorCitjYW5kaWRhdGVfc2NvcmVfb3V0cHV0PSIkd29ya19kaXIvY2FuZGlkYXRlLXNjb3JlLW91dHB1dCIKK2luc3RhbGwgLWQgLW0gMDcwMCAiJGNhbmRpZGF0ZV9zY29yZV9vdXRwdXQiCitpZiBbWyAiJHN1YmV2YWx1YXRpb25fc2NvcGVkIiA9IHRydWUgXV07IHRoZW4KKyAgICBldmFsdWF0aW9uX2hvc3QgcHJlcGFyZS1vdXRwdXQgIiRjYW5kaWRhdGVfc2NvcmVfb3V0cHV0IgorZWxzZQorICAgIHN1ZG8gLW4gY2hvd24gIiRjb250YWluZXJfaG9zdF91aWQ6JGNvbnRhaW5lcl9ob3N0X2dpZCIgIiRjYW5kaWRhdGVfc2NvcmVfb3V0cHV0IgorZmkKK3Njb3JlX3Byb2plY3Q9InVybmV0d29yay1ldmFsLSR7YXR0ZW1wdF90b2tlbn0tY2FuZGlkYXRlLXNjb3JlIgorc2NvcmVfY2dyb3VwX3BhcmVudD0idXJuZXR3b3JrLWV2YWx1YXRpb24tJHthdHRlbXB0X3Rva2VufS1jYW5kaWRhdGUtc2NvcmUuc2xpY2UiCit3cml0ZV9jb21wb3NlX2VudiAiJHNjb3JlX2NvbXBvc2VfZW52IiAiJHNjb3JlX3Byb2plY3QiIHNjb3JlICIkYmFzZV9pbWFnZV9pZCIgIiRzY29yZV9ydW5uZXJfZW52IiBcCisgICAgIiR3b3JrX2Rpci9zY29yZXItaW5wdXQiICIkY2FuZGlkYXRlX3Njb3JlX291dHB1dCIgIiRzY29yZV9jZ3JvdXBfcGFyZW50IiAiJGJhc2VsaW5lX3NvdXJjZV9yb290Igorc2VkIC1pICdzL15FVkFMVUFUSU9OX0FDVElPTj0uKi9FVkFMVUFUSU9OX0FDVElPTj1zY29yZS8nICIkc2NvcmVfY29tcG9zZV9lbnYiCithY3RpdmVfcHJvamVjdD0iJHNjb3JlX3Byb2plY3QiCithY3RpdmVfY29tcG9zZV9lbnY9IiRzY29yZV9jb21wb3NlX2VudiIKK2NvbXBvc2Vfd2l0aCAiJHNjb3JlX3Byb2plY3QiICIkc2NvcmVfY29tcG9zZV9lbnYiIC0tcHJvZmlsZSBzY29yZSB1cCAtLWRldGFjaCBzY29yZXIgPiYyCitzY29yZXJfaWQ9IiQoY29tcG9zZV93aXRoICIkc2NvcmVfcHJvamVjdCIgIiRzY29yZV9jb21wb3NlX2VudiIgLS1wcm9maWxlIHNjb3JlIHBzIC0tYWxsIC0tcXVpZXQgc2NvcmVyKSIKK1sgLW4gIiRzY29yZXJfaWQiIF0gfHwgZGllICJjYW5kaWRhdGUgc2NvcmVyIGNvbnRhaW5lciBtaXNzaW5nIgorc2NvcmVyX2V4aXQ9IiQoZXZhbHVhdGlvbl9kb2NrZXIgd2FpdCAiJHNjb3Jlcl9pZCIpIgorY2FuZGlkYXRlX3Njb3Jlcl9sb2c9IiR3b3JrX2Rpci9jYW5kaWRhdGUtc2NvcmVyLmxvZyIKK2V2YWx1YXRpb25fZG9ja2VyIGxvZ3MgIiRzY29yZXJfaWQiID4gIiRjYW5kaWRhdGVfc2NvcmVyX2xvZyIgMj4mMSB8fCB0cnVlCitjYXQgIiRjYW5kaWRhdGVfc2NvcmVyX2xvZyIgPiYyCitjaG1vZCAwNDAwICIkY2FuZGlkYXRlX3Njb3Jlcl9sb2ciCitbICIkc2NvcmVyX2V4aXQiIC1lcSAwIF0gfHwgZGllICJjYW5kaWRhdGUgc2NvcmVyIGV4aXRlZCAkc2NvcmVyX2V4aXQiCitldmFsdWF0aW9uX2RvY2tlciBpbnNwZWN0ICIkc2NvcmVyX2lkIiB8IGpxIC1lIC0tYXJnIHBhcmVudCAiJHNjb3JlX2Nncm91cF9wYXJlbnQiIFwKKyAgICAtLWFyZyBpbWFnZSAiJGJhc2VfaW1hZ2VfaWQiIC0tYXJnIGNwdXNldCAiJGNwdXNldCIgXAorICAgICcuWzBdLkNvbmZpZy5Vc2VyID09ICI2NTUzMjo2NTUzMiIgYW5kIC5bMF0uSG9zdENvbmZpZy5SZWFkb25seVJvb3RmcyA9PSB0cnVlIGFuZAorICAgICAuWzBdLkhvc3RDb25maWcuTmV0d29ya01vZGUgPT0gIm5vbmUiIGFuZCAuWzBdLkhvc3RDb25maWcuTWVtb3J5ID09IDQyOTQ5NjcyOTYgYW5kCisgICAgIC5bMF0uSG9zdENvbmZpZy5NZW1vcnlTd2FwID09IDQyOTQ5NjcyOTYgYW5kIC5bMF0uSG9zdENvbmZpZy5QaWRzTGltaXQgPT0gMTAyNCBhbmQKKyAgICAgLlswXS5Db25maWcuSW1hZ2UgPT0gJGltYWdlIGFuZCAuWzBdLkhvc3RDb25maWcuQ2dyb3VwUGFyZW50ID09ICRwYXJlbnQgYW5kCisgICAgIC5bMF0uSG9zdENvbmZpZy5DcHVzZXRDcHVzID09ICRjcHVzZXQgYW5kCisgICAgICguWzBdLkhvc3RDb25maWcuQ2FwRHJvcCB8IGluZGV4KCJBTEwiKSAhPSBudWxsKSBhbmQKKyAgICAgKC5bMF0uSG9zdENvbmZpZy5TZWN1cml0eU9wdCB8IGluZGV4KCJuby1uZXctcHJpdmlsZWdlczp0cnVlIikgIT0gbnVsbCknID4vZGV2L251bGwgfHwKKyAgICBkaWUgImNhbmRpZGF0ZSBzY29yZXIgY29udGFpbm1lbnQgbWlzbWF0Y2giCitpZiBbWyAiJHN1YmV2YWx1YXRpb25fc2NvcGVkIiAhPSB0cnVlIF1dOyB0aGVuCisgICAgZXZhbHVhdGlvbl9maWxlIHRlc3QgLXMgIiRjYW5kaWRhdGVfc2NvcmVfb3V0cHV0L3Njb3JlLmpzb24iIHx8IGRpZSAic2NvcmUgb3V0cHV0IG1pc3NpbmciCitmaQorY29tcG9zZV93aXRoICIkc2NvcmVfcHJvamVjdCIgIiRzY29yZV9jb21wb3NlX2VudiIgLS1wcm9maWxlIHNjb3JlIGRvd24gLS12b2x1bWVzIC0tcmVtb3ZlLW9ycGhhbnMgPiYyCitpZiBbWyAiJHN1YmV2YWx1YXRpb25fc2NvcGVkIiA9IHRydWUgXV07IHRoZW4KKyAgICBldmFsdWF0aW9uX2hvc3QgcmVjbGFpbS1vdXRwdXQgIiRjYW5kaWRhdGVfc2NvcmVfb3V0cHV0IgorICAgIHRlc3QgLXMgIiRjYW5kaWRhdGVfc2NvcmVfb3V0cHV0L3Njb3JlLmpzb24iIHx8IGRpZSAic2NvcmUgb3V0cHV0IG1pc3NpbmciCitmaQorYWN0aXZlX3Byb2plY3Q9IiIKK2FjdGl2ZV9jb21wb3NlX2Vudj0iIgorZXZhbHVhdGlvbl9zZWFsZWRfY29weSAiJHdvcmtlcl91aWQiICIkd29ya2VyX2dpZCIgXAorICAgICIkY2FuZGlkYXRlX3Njb3JlX291dHB1dC9zY29yZS5qc29uIiAiJGFydGlmYWN0X2Rpci9zY29yZS5qc29uIgorCitwcmludGYgJyVzXG4nICIke3J1bl9hY2NvdW50aW5nX3JlY29yZHNbQF19IiB8IGpxIC1zIFwKKyAgICAtLWFyZyBqb2JfaWQgIiRqb2JfaWQiIC0tYXJnIHJvdW5kX2lkICIkcm91bmRfaWQiIFwKKyAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LWV2YWx1YXRpb24tYWNjb3VudGluZyIsam9iX2lkOiRqb2JfaWQsCisgICAgICByb3VuZF9pZDokcm91bmRfaWQsY29tcGxldGU6dHJ1ZSxydW5zOi59JyA+ICIkYXJ0aWZhY3RfZGlyL2FjY291bnRpbmcuanNvbiIKK3ByaW50ZiAnJXNcbicgIiR7cnVuX3Jlc291cmNlX3JlY29yZHNbQF19IiB8IGpxIC1zIFwKKyAgICAtLWFyZyBqb2JfaWQgIiRqb2JfaWQiIC0tYXJnIHJvdW5kX2lkICIkcm91bmRfaWQiIFwKKyAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LWV2YWx1YXRpb24tcmVzb3VyY2VzIixqb2JfaWQ6JGpvYl9pZCwKKyAgICAgIHJvdW5kX2lkOiRyb3VuZF9pZCxjb21wbGV0ZTp0cnVlLHJ1bnM6Ln0nID4gIiRhcnRpZmFjdF9kaXIvcmVzb3VyY2VzLmpzb24iCitjaG1vZCAwNDAwICIkYXJ0aWZhY3RfZGlyL2FjY291bnRpbmcuanNvbiIgIiRhcnRpZmFjdF9kaXIvcmVzb3VyY2VzLmpzb24iCisKK3JtIC1mIC0tICIkc2NvcmVfcnVubmVyX2VudiIgIiRzY29yZV9jb21wb3NlX2VudiIKK2F1dGhlbnRpY2F0ZV9sb2NhbF9tb3VudHMKK3JlbW92ZV9ldmFsdWF0aW9uX3NvdXJjZXMKK3BlcnNpc3RfZXZpZGVuY2VfdHJlZQord3JpdGVfZXZpZGVuY2VfbWFuaWZlc3QKKwordGVtcGxhdGVfZGF0YWJhc2VfaWQ9IiQocHJpbnRmICclc1xuJyAiJHttaWdyYXRpb25faGFzaGVzW0BdfSIgfCBzaGEyNTZzdW0gfCBhd2sgJ3twcmludCAkMX0nKSIKK3JlZGlzX2dlbmVyYXRpb25faWQ9IiQocHJpbnRmICclc1xuJyAiJHtyZWRpc19nZW5lcmF0aW9uc1tAXX0iIHwgc2hhMjU2c3VtIHwgYXdrICd7cHJpbnQgJDF9JykiCitbIC16ICIkKGV2YWx1YXRpb25fZG9ja2VyIHBzIC1hcSAtLWZpbHRlciAibGFiZWw9Y29tLnVybmV0d29yay5jb21wZXRpdGlvbi5qb2ItaWQ9JGpvYl9pZCIgIiR7c3ViZXZhbHVhdGlvbl9jbGVhbnVwX2ZpbHRlcl9hcmdzW0BdfSIpIiBdIHx8CisgICAgZGllICJmaW5hbCBjbGVhbnVwIGxlZnQgam9iIGNvbnRhaW5lcnMiCitbIC16ICIkKGV2YWx1YXRpb25fZG9ja2VyIG5ldHdvcmsgbHMgLXEgLS1maWx0ZXIgImxhYmVsPWNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkPSRqb2JfaWQiICIke3N1YmV2YWx1YXRpb25fY2xlYW51cF9maWx0ZXJfYXJnc1tAXX0iKSIgXSB8fAorICAgIGRpZSAiZmluYWwgY2xlYW51cCBsZWZ0IGpvYiBuZXR3b3JrcyIKK2NsZWFudXBfY29tcGxldGU9dHJ1ZQord3JpdGVfZXZhbHVhdGlvbl9wcm9ncmVzcyBjb21wbGV0ZSAiJHJlcGxpY2F0ZXMiICIkcmVwbGljYXRlcyIKKworY29tcGxldGVfcGF0aD0iJGFydGlmYWN0X2Rpci9ldmFsdWF0aW9uLmNvbXBsZXRlLmpzb24iCitqcSAtbiBcCisgICAgLS1hcmcgam9iX2lkICIkam9iX2lkIiAtLWFyZyByb3VuZF9pZCAiJHJvdW5kX2lkIiAtLWFyZ2pzb24gYXR0ZW1wdCAiJGF0dGVtcHQiIFwKKyAgICAtLWFyZyBiYXNlX2ltYWdlX2lkICIkYmFzZV9pbWFnZV9pZCIgLS1hcmcgY2FuZGlkYXRlX2ltYWdlX2lkICIkY2FuZGlkYXRlX2ltYWdlX2lkIiBcCisgICAgLS1hcmcgcGF0Y2hfc2hhMjU2ICIkcGF0Y2hfc2hhMjU2IiAtLWFyZyBwcm92aWRlcnNfc2hhMjU2ICIkcHJvdmlkZXJzX3NoYTI1NiIgXAorICAgIC0tYXJnIGFjY291bnRpbmdfc2hhMjU2ICIkKHNoYTI1Nl9maWxlICIkYXJ0aWZhY3RfZGlyL2FjY291bnRpbmcuanNvbiIpIiBcCisgICAgLS1hcmcgYmFzZWxpbmVfc2hhMjU2ICIkYmFzZWxpbmVfc2hhMjU2IiBcCisgICAgLS1hcmcgcmVzb3VyY2VzX3NoYTI1NiAiJChzaGEyNTZfZmlsZSAiJGFydGlmYWN0X2Rpci9yZXNvdXJjZXMuanNvbiIpIiBcCisgICAgLS1hcmcgc2NvcmVfc2hhMjU2ICIkKHNoYTI1Nl9maWxlICIkYXJ0aWZhY3RfZGlyL3Njb3JlLmpzb24iKSIgXAorICAgIC0tYXJnIGV2aWRlbmNlX21hbmlmZXN0X3NoYTI1NiAiJChzaGEyNTZfZmlsZSAiJGV2aWRlbmNlX21hbmlmZXN0IikiIFwKKyAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LXdvcmtlci1ldmFsdWF0aW9uLWNvbXBsZXRlIixqb2JfaWQ6JGpvYl9pZCwKKyAgICAgIHJvdW5kX2lkOiRyb3VuZF9pZCxhdHRlbXB0OiRhdHRlbXB0LGJhc2VfaW1hZ2VfaWQ6JGJhc2VfaW1hZ2VfaWQsCisgICAgICBjYW5kaWRhdGVfaW1hZ2VfaWQ6JGNhbmRpZGF0ZV9pbWFnZV9pZCxwYXRjaF9zaGEyNTY6JHBhdGNoX3NoYTI1NiwKKyAgICAgIHByb3ZpZGVyc19zaGEyNTY6JHByb3ZpZGVyc19zaGEyNTYsY2xlYW51cF9jb21wbGV0ZTp0cnVlLAorICAgICAgYXJ0aWZhY3RzOnthY2NvdW50aW5nOiRhY2NvdW50aW5nX3NoYTI1NixiYXNlbGluZTokYmFzZWxpbmVfc2hhMjU2LAorICAgICAgICByZXNvdXJjZXM6JHJlc291cmNlc19zaGEyNTYsc2NvcmU6JHNjb3JlX3NoYTI1NiwKKyAgICAgICAgZXZpZGVuY2VfbWFuaWZlc3Q6JGV2aWRlbmNlX21hbmlmZXN0X3NoYTI1Nn19JyA+ICIkY29tcGxldGVfcGF0aCIKK2NobW9kIDA0MDAgIiRjb21wbGV0ZV9wYXRoIgorc3luYyAtZCAiJGFydGlmYWN0X2Rpci9hY2NvdW50aW5nLmpzb24iICIkYXJ0aWZhY3RfZGlyL2Jhc2VsaW5lLmpzb24iIFwKKyAgICAiJGFydGlmYWN0X2Rpci9yZXNvdXJjZXMuanNvbiIgIiRhcnRpZmFjdF9kaXIvc2NvcmUuanNvbiIgIiRldmlkZW5jZV9tYW5pZmVzdCIgIiRjb21wbGV0ZV9wYXRoIgorc3luYyAiJGFydGlmYWN0X2RpciIKKworYXJ0aWZhY3RfcmVjb3Jkcz0oKQorZm9yIHJlbGF0aXZlIGluIGFjY291bnRpbmcuanNvbiBiYXNlbGluZS5qc29uIHJlc291cmNlcy5qc29uIHNjb3JlLmpzb24gZXZhbHVhdGlvbi1wcm9ncmVzcy5qc29uIGV2YWx1YXRpb24uY29tcGxldGUuanNvbiBldmlkZW5jZS1tYW5pZmVzdC5qc29uOyBkbworICAgIHBhdGg9IiRhcnRpZmFjdF9kaXIvJHJlbGF0aXZlIgorICAgIGFydGlmYWN0X3JlY29yZHMrPSgiJChqcSAtY24gLS1hcmcgcGF0aCAiJHJlbGF0aXZlIiAtLWFyZyBzaGEyNTYgIiQoc2hhMjU2X2ZpbGUgIiRwYXRoIikiIFwKKyAgICAgICAgLS1hcmdqc29uIGJ5dGVzICIkKGZpbGVfYnl0ZXMgIiRwYXRoIikiICd7cGF0aDokcGF0aCxzaGEyNTY6JHNoYTI1NixieXRlczokYnl0ZXN9JykiKQorZG9uZQorYXJ0aWZhY3RzX2pzb249IiQocHJpbnRmICclc1xuJyAiJHthcnRpZmFjdF9yZWNvcmRzW0BdfSIgfCBqcSAtcyAnLicpIgorc2VjdXJpdHlfanNvbj0iJChqcSAtY24gXAorICAgIC0tYXJnIGNncm91cF9pZCAidXJuZXR3b3JrLWV2YWx1YXRpb24tJHtqb2JfaWQvLy0vfS5zbGljZSIgXAorICAgIC0tYXJnIHRlbXBsYXRlX2RhdGFiYXNlX2lkICIkdGVtcGxhdGVfZGF0YWJhc2VfaWQiIFwKKyAgICAtLWFyZyByZWRpc19nZW5lcmF0aW9uX2lkICIkcmVkaXNfZ2VuZXJhdGlvbl9pZCIgXAorICAgICd7dGVtcGxhdGVfZGF0YWJhc2VfcmVzZXQ6dHJ1ZSxyZWRpc19yZXNldDp0cnVlLGNncm91cF9jb250YWluZWQ6dHJ1ZSwKKyAgICAgIHJlc291cmNlX2xpbWl0czp0cnVlLG1hbmFnZW1lbnRfY3B1X3Jlc2VydmVkOnRydWUsCisgICAgICBtYW5hZ2VtZW50X21lbW9yeV9yZXNlcnZlZDp0cnVlLGRlZmF1bHRfZGVueV9uZXR3b3JrOnRydWUsb2ZmbGluZV9idWlsZDp0cnVlLAorICAgICAgb2ZmbGluZV9idWlsZF9yZXNvdXJjZV9saW1pdHM6dHJ1ZSwKKyAgICAgIG5vX3Byb2R1Y3Rpb25fc2VjcmV0czp0cnVlLHN0cnVjdHVyYWxfcGF0Y2hfY2hlY2s6dHJ1ZSwKKyAgICAgIGFjY291bnRpbmdfY29tcGxldGU6dHJ1ZSxyZXNvdXJjZV9yZXBvcnRfY29tcGxldGU6dHJ1ZSwKKyAgICAgIGNsZWFudXBfY29tcGxldGU6dHJ1ZSxpbW11dGFibGVfcmVwb3J0czp0cnVlLGNncm91cF9pZDokY2dyb3VwX2lkLAorICAgICAgdGVtcGxhdGVfZGF0YWJhc2VfaWQ6JHRlbXBsYXRlX2RhdGFiYXNlX2lkLAorICAgICAgcmVkaXNfZ2VuZXJhdGlvbl9pZDokcmVkaXNfZ2VuZXJhdGlvbl9pZH0nKSIKKworaWYganEgLWUgJy5ldmFsX2Vycm9yID09IG51bGwnICIkYXJ0aWZhY3RfZGlyL3Njb3JlLmpzb24iID4vZGV2L251bGw7IHRoZW4KKyAgICBzY29yZV9qc29uPSIkKGpxIFwKKyAgICAgICAgJ3tzY29yZV9zY2hlbWEscmF3X3Njb3JlLG5vcm1hbGl6ZWRfc2NvcmUscGxhY2VhYmxlLAorICAgICAgICAgIHRha2VvdmVyX2VsaWdpYmxlOiguZGlhZ25vc3RpY3MuYmFzZWxpbmVfdGFrZW92ZXJfZWxpZ2libGUgLy8gZmFsc2UpLAorICAgICAgICAgIGdhdGVzLHNpZ25pZmljYW5jZSxkaWFnbm9zdGljc30nICIkYXJ0aWZhY3RfZGlyL3Njb3JlLmpzb24iKSIKKyAgICBldmFsX2Vycm9yX2pzb249bnVsbAorZWxzZQorICAgIHNjb3JlX2pzb249bnVsbAorICAgIGV2YWxfZXJyb3JfanNvbj0iJChqcSBcCisgICAgICAgICcuZXZhbF9lcnJvciB8IHtraW5kLGNvZGUsbWVzc2FnZSxyZXRyaWFibGU6KC5raW5kID09ICJpbmZyYXN0cnVjdHVyZSIgYW5kIC5jb2RlICE9ICJzY29yZV9yZXN1bHRfaW52YWxpZCIpfScgXAorICAgICAgICAiJGFydGlmYWN0X2Rpci9zY29yZS5qc29uIikiCitmaQorCityZXN1bHRfdG1wPSIkYXJ0aWZhY3RfZGlyLy53b3JrZXItcmVzdWx0LnRtcCIKK2pxIC1uIFwKKyAgICAtLWFyZyBqb2JfaWQgIiRqb2JfaWQiIFwKKyAgICAtLWFyZ2pzb24gc2NvcmUgIiRzY29yZV9qc29uIiBcCisgICAgLS1hcmdqc29uIGV2YWxfZXJyb3IgIiRldmFsX2Vycm9yX2pzb24iIFwKKyAgICAtLWFyZ2pzb24gc2VjdXJpdHkgIiRzZWN1cml0eV9qc29uIiBcCisgICAgLS1hcmdqc29uIGFydGlmYWN0cyAiJGFydGlmYWN0c19qc29uIiBcCisgICAgJ3tzY2hlbWE6MSxqb2JfaWQ6JGpvYl9pZCxzY29yZTokc2NvcmUsZXZhbF9lcnJvcjokZXZhbF9lcnJvciwKKyAgICAgIHNlY3VyaXR5OiRzZWN1cml0eSxhcnRpZmFjdHM6JGFydGlmYWN0c30nID4gIiRyZXN1bHRfdG1wIgorc3luYyAtZCAiJHJlc3VsdF90bXAiCitbICEgLWUgIiRyZXN1bHRfcGF0aCIgXSB8fCBkaWUgIndvcmtlciByZXN1bHQgcGF0aCBhcHBlYXJlZCBkdXJpbmcgZXZhbHVhdGlvbiIKK212ICIkcmVzdWx0X3RtcCIgIiRyZXN1bHRfcGF0aCIKK2NobW9kIDA0MDAgIiRyZXN1bHRfcGF0aCIKK3N5bmMgLWQgIiRyZXN1bHRfcGF0aCIKK3N5bmMgIiRhcnRpZmFjdF9kaXIiCitsb2cgImV2YWx1YXRpb24gY29tcGxldGU6IGpvYj0kam9iX2lkIGNhbmRpZGF0ZT0kY2FuZGlkYXRlX3NoYSIKZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvZXZhbHVhdG9yL2NvbnRhaW5lci9ldmFsdWF0b3Itd29yay1jb3ZlcmFnZS5zaCBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvZXZhbHVhdG9yL2NvbnRhaW5lci9ldmFsdWF0b3Itd29yay1jb3ZlcmFnZS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTI5MTFjNTAxNDkxODljZTAyYjdjNGRiZTgxNzdjNGZhMjkxNzk3Ci0tLSAvZGV2L251bGwKKysrIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9ldmFsdWF0b3IvY29udGFpbmVyL2V2YWx1YXRvci13b3JrLWNvdmVyYWdlLnNoCkBAIC0wLDAgKzEsMTk3MSBAQAorIyEvdXNyL2Jpbi9lbnYgYmFzaAorCisjIFByb3NwZWN0aXZlIG9mZmVyZWQtd29yayBldmFsdWF0b3I6IHByb3RvY29sIHYxLCBzY29yZXIgdjMsIG5ldyBiYXNlbGluZSBvbmx5LgorIyBTdWJtaXNzaW9uIGJ5dGVzIGNob29zZSBvbmx5IHRoZSBjYW5vbmljYWwgcGF0Y2guIEV2ZXJ5IGltYWdlLCBjb21tYW5kLAorIyByZXNvdXJjZSBjZWlsaW5nLCBtb3VudCwgYW5kIGFydGlmYWN0IG5hbWUgYmVsb3cgaXMgZXZhbHVhdG9yLW93bmVkLgorCitzZXQgLUVldW8gcGlwZWZhaWwKK3VtYXNrIDA3NworZXhwb3J0IExBTkc9QyBMQ19BTEw9QworCityZWFkb25seSBTQ1JJUFRfRElSPSIkKGNkICIkKGRpcm5hbWUgIiR7QkFTSF9TT1VSQ0VbMF19IikiICYmIHB3ZCAtUCkiCityZWFkb25seSBDT01QT1NFX0ZJTEU9IiRTQ1JJUFRfRElSL2NvbXBvc2UueW1sIgorcmVhZG9ubHkgQlVJTERfU1VCTUlTU0lPTj0iJFNDUklQVF9ESVIvYnVpbGQtc3VibWlzc2lvbi5zaCIKK3JlYWRvbmx5IFBSRVBBUkVfRVZBTFVBVElPTl9TT1VSQ0U9IiRTQ1JJUFRfRElSL3ByZXBhcmUtZXZhbHVhdGlvbi1zb3VyY2Uuc2giCityZWFkb25seSBSRVNPVVJDRV9CT1VOREFSWT0iJFNDUklQVF9ESVIvcmVzb3VyY2UtYm91bmRhcnkuc2giCityZWFkb25seSBORVRXT1JLX0JPVU5EQVJZPSIkU0NSSVBUX0RJUi9uZXR3b3JrLWJvdW5kYXJ5LnNoIgorcmVhZG9ubHkgRE9DS0VSX0lEX01BUD0iJFNDUklQVF9ESVIvZG9ja2VyLWlkLW1hcC5zaCIKK3JlYWRvbmx5IEhBU0hfTE9DQUxfTU9VTlQ9IiRTQ1JJUFRfRElSL2hhc2gtbG9jYWwtbW91bnQuc2giCityZWFkb25seSBSRVRBSU5fRkFJTFVSRV9FVklERU5DRT0iJFNDUklQVF9ESVIvcmV0YWluLWZhaWx1cmUtZXZpZGVuY2Uuc2giCityZWFkb25seSBQT1NUR1JFU19JTklUPSIkU0NSSVBUX0RJUi9wb3N0Z3Jlcy1pbml0LnNoIgorcmVhZG9ubHkgVElNRU9VVF9CVURHRVQ9IiRTQ1JJUFRfRElSL3RpbWVvdXQtYnVkZ2V0LnNoIgorcmVhZG9ubHkgRU1QVFlfUEFUQ0hfU0hBMjU2PWUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUKK3JlYWRvbmx5IE1BWF9SRVFVRVNUX0JZVEVTPSQoKDIgKiAxMDI0ICogMTAyNCkpCityZWFkb25seSBNQVhfUFJPVklERVJTX0JZVEVTPSQoKDEwMjQgKiAxMDI0ICogMTAyNCkpCityZWFkb25seSBNQVhfQlVJTERfTE9HX0JZVEVTPSQoKDQgKiAxMDI0ICogMTAyNCkpCityZWFkb25seSBFVklERU5DRV9XT1JLX0xJTUlUPTVnCityZWFkb25seSBFVklERU5DRV9XT1JLX0JZVEVTPTUzNjg3MDkxMjAKKworIyBTZWFzb24tZnJvemVuIGNvbnRhaW5lciBjZWlsaW5ncy4gSG9zdCBxdWFsaWZpY2F0aW9uIHZlcmlmaWVzIHRoYXQgdGhlaXIgc3VtCisjIHBsdXMgdGhlIGhvc3QgcmVzZXJ2ZSBmaXRzIHRoZSBwaHlzaWNhbCBib3guCityZWFkb25seSBSVU5ORVJfTUVNT1JZX0xJTUlUPTcyZworcmVhZG9ubHkgUlVOTkVSX01FTU9SWV9CWVRFUz03NzMwOTQxMTMyOAorcmVhZG9ubHkgUlVOTkVSX1BJRFNfTElNSVQ9NjU1MzYKK3JlYWRvbmx5IFJVTk5FUl9UTVBfTElNSVQ9MmcKK3JlYWRvbmx5IFJVTk5FUl9XT1JLX0xJTUlUPThnCityZWFkb25seSBNSUdSQVRPUl9NRU1PUllfTElNSVQ9NGcKK3JlYWRvbmx5IE1JR1JBVE9SX1BJRFNfTElNSVQ9NDA5NgorcmVhZG9ubHkgTUlHUkFUT1JfVE1QX0xJTUlUPTFnCityZWFkb25seSBQT1NUR1JFU19NRU1PUllfTElNSVQ9MTZnCityZWFkb25seSBQT1NUR1JFU19NRU1PUllfQllURVM9MTcxNzk4NjkxODQKK3JlYWRvbmx5IFBPU1RHUkVTX1BJRFNfTElNSVQ9NDA5NgorcmVhZG9ubHkgUE9TVEdSRVNfREFUQV9MSU1JVD0xMmcKK3JlYWRvbmx5IFBPU1RHUkVTX01BWF9DT05ORUNUSU9OUz01MTIKK3JlYWRvbmx5IFBPU1RHUkVTX1NIQVJFRF9CVUZGRVJTPTJHQgorcmVhZG9ubHkgUkVESVNfTUVNT1JZX0xJTUlUPThnCityZWFkb25seSBSRURJU19NRU1PUllfQllURVM9ODU4OTkzNDU5MgorcmVhZG9ubHkgUkVESVNfUElEU19MSU1JVD00MDk2CityZWFkb25seSBSRURJU19EQVRBX0xJTUlUPTZnCityZWFkb25seSBSRURJU19NQVhfQ0xJRU5UUz0zMjc2OAorcmVhZG9ubHkgUkVESVNfVENQX0JBQ0tMT0c9NjU1MzUKK3JlYWRvbmx5IFNDT1JFUl9NRU1PUllfTElNSVQ9NGcKK3JlYWRvbmx5IFNDT1JFUl9NRU1PUllfQllURVM9NDI5NDk2NzI5NgorcmVhZG9ubHkgU0NPUkVSX1BJRFNfTElNSVQ9MTAyNAorcmVhZG9ubHkgU0NPUkVSX1RNUF9MSU1JVD0xZworcmVhZG9ubHkgRVZBTFVBVElPTl9OT0ZJTEU9MTA0ODU3NgorcmVhZG9ubHkgQUNUSVZFX0VWQUxVQVRJT05fTUVNT1JZX0JZVEVTPTEwMzA3OTIxNTEwNAorcmVhZG9ubHkgTUlOSU1VTV9NQU5BR0VNRU5UX01FTU9SWV9SRVNFUlZFX0JZVEVTPTI1NzY5ODAzNzc2CisKK3JlcXVlc3RfcGF0aD0iIgorcmVzdWx0X3BhdGg9IiIKK2FydGlmYWN0X2Rpcj0iIgord29ya19kaXI9IiIKK2FjdGl2ZV9wcm9qZWN0PSIiCithY3RpdmVfY29tcG9zZV9lbnY9IiIKK2FjdGl2ZV9zYW1wbGVyX3BpZD0iIgorYWN0aXZlX3dvcmtfbW91bnQ9IiIKK2FjdGl2ZV9idWlsZF9sb2dfcGlkPSIiCithY3RpdmVfYnVpbGRfbG9nX3BpcGU9IiIKK2FjdGl2ZV9zb3VyY2Vfcm9vdD0iIgorY2xlYW51cF9jb21wbGV0ZT1mYWxzZQorZmFpbHVyZV9saW5lPTAKK3dvcmtlcl91aWQ9IiQoaWQgLXUpIgord29ya2VyX2dpZD0iJChpZCAtZykiCisKK2xvZygpIHsgcHJpbnRmICdbY29tcGV0aXRpb24tZXZhbHVhdG9yXSAlc1xuJyAiJCoiID4mMjsgfQorZGllKCkgeworICAgIGZhaWx1cmVfbGluZT0iJHtCQVNIX0xJTkVOT1swXTotMH0iCisgICAgbG9nICJFUlJPUjogJCoiCisgICAgZXhpdCAxCit9CityZXF1aXJlX2NvbW1hbmQoKSB7IGNvbW1hbmQgLXYgIiQxIiA+L2Rldi9udWxsIDI+JjEgfHwgZGllICJyZXF1aXJlZCBjb21tYW5kIG1pc3Npbmc6ICQxIjsgfQorc2hhMjU2X2ZpbGUoKSB7IHNoYTI1NnN1bSAiJDEiIHwgYXdrICd7cHJpbnQgJDF9JzsgfQorZmlsZV9ieXRlcygpIHsgc3RhdCAtYyAnJXMnICIkMSI7IH0KKworIyBUaGUgY2FsbGVyIGlzIGFscmVhZHkgdHJ1c3RlZDsgYXV0aGVudGljYXRlIHRoZSBmaXhlZCBoZWxwZXIgYmVmb3JlIGV4ZWN1dGluZworIyBpdCBzbyBhIHdyaXRhYmxlIGhlbHBlciBjYW5ub3QgZ3JhbnQgaXRzZWxmIHJlbGVhc2UgYXV0aG9yaXR5IGFmdGVyIGxhdW5jaC4KK3N1Ym1pc3Npb25fYnVpbGRlcl9pZGVudGl0eSgpIHsKKyAgICBsb2NhbCBjdXJyZW50PSIkU0NSSVBUX0RJUi9zdWJtaXNzaW9uLWJ1aWxkZXItaWRlbnRpdHkuc2giIG93bmVyIHBlcm1pc3Npb25zCisgICAgW1sgLWYgIiRjdXJyZW50IiAmJiAteCAiJGN1cnJlbnQiICYmICEgLUwgIiRjdXJyZW50IiBdXSB8fCByZXR1cm4gMQorICAgIHdoaWxlIDo7IGRvCisgICAgICAgIFtbICEgLUwgIiRjdXJyZW50IiBdXSB8fCByZXR1cm4gMQorICAgICAgICBvd25lcj0iJChzdGF0IC1jICV1ICIkY3VycmVudCIpIiB8fCByZXR1cm4gMQorICAgICAgICBwZXJtaXNzaW9ucz0iJChzdGF0IC1jICVhICIkY3VycmVudCIpIiB8fCByZXR1cm4gMQorICAgICAgICBbWyAiJG93bmVyIiA9PSAwICYmICIkcGVybWlzc2lvbnMiID1+IF5bMC03XXszLDR9JCBdXSB8fCByZXR1cm4gMQorICAgICAgICAoKCAoOCMkcGVybWlzc2lvbnMgJiA4IzAyMikgPT0gMCApKSB8fCByZXR1cm4gMQorICAgICAgICBbWyAiJGN1cnJlbnQiICE9IC8gXV0gfHwgYnJlYWsKKyAgICAgICAgY3VycmVudD0iJChkaXJuYW1lICIkY3VycmVudCIpIgorICAgICAgICBbWyAtZCAiJGN1cnJlbnQiIF1dIHx8IHJldHVybiAxCisgICAgZG9uZQorICAgICIkU0NSSVBUX0RJUi9zdWJtaXNzaW9uLWJ1aWxkZXItaWRlbnRpdHkuc2giCit9CisKKyMgUmVmdXNlIG1pc21hdGNoZWQgaW1hZ2UgY2FwYWJpbGl0eSBiZWZvcmUgYW55IGJhc2VsaW5lIGNvbnRyb2wgcnVucy4gVGhlCisjIHByZXBhcmVyIGF1dGhlbnRpY2F0ZWQgdGhpcyBvcHRpb25hbCBmaWVsZCBhZ2FpbnN0IHRoZSByYXcgaW1hZ2Ugc291cmNlIGxvY2suCit2YWxpZGF0ZV9wcmVwYXJlZF9zb3VyY2VfaWRlbnRpdHkoKSB7CisgICAganEgLWUgLS1hcmcgYmFzZV9pbWFnZV9pZCAiJGJhc2VfaW1hZ2VfaWQiIC0tYXJnIGJhc2Vfc2hhICIkYmFzZV9zaGEiIFwKKyAgICAgICAgLS1hcmdqc29uIHNvdXJjZV9lcG9jaCAiJHNvdXJjZV9lcG9jaCIgLS1hcmcgcGF0aF9iYXNlICIkcGF0Y2hfcGF0aF9iYXNlIiBcCisgICAgICAgIC0tYXJnanNvbiBzdGFnaW5nICIkc3RhZ2luZyIgLS1hcmcgYnJhbmNoICIkc291cmNlX2JyYW5jaCIgXAorICAgICAgICAnLnNjaGVtYSA9PSAxIGFuZCAua2luZCA9PSAic2ltLWxhdGVuY3ktZXZhbHVhdGlvbi1zb3VyY2UiIGFuZAorICAgICAgICAgLnRlbXBvcmFyeSA9PSB0cnVlIGFuZCAuYmFzZV9pbWFnZV9pZCA9PSAkYmFzZV9pbWFnZV9pZCBhbmQKKyAgICAgICAgIC5iYXNlX3NoYSA9PSAkYmFzZV9zaGEgYW5kIC5zb3VyY2VfZXBvY2ggPT0gJHNvdXJjZV9lcG9jaCBhbmQKKyAgICAgICAgIC5icmFuY2ggPT0gJGJyYW5jaCBhbmQgKCguc3RhZ2luZyAvLyBmYWxzZSkgPT0gJHN0YWdpbmcpIGFuZCAuY2FuZGlkYXRlX3BhdGNoX3NoYTI1NiA9PSBudWxsIGFuZAorICAgICAgICAgKCguY2FuZGlkYXRlX3BhdGhfYmFzZSAvLyAiIikgPT0gIiIgb3IgLmNhbmRpZGF0ZV9wYXRoX2Jhc2UgPT0gIm1vbm9fcm9vdF92MSIpIGFuZAorICAgICAgICAgKCRwYXRoX2Jhc2UgPT0gIiIgb3IgKCRwYXRoX2Jhc2UgPT0gIm1vbm9fcm9vdF92MSIgYW5kIC5jYW5kaWRhdGVfcGF0aF9iYXNlID09ICRwYXRoX2Jhc2UpKScgXAorICAgICAgICA8PDwiJDEiID4vZGV2L251bGwKK30KKworIyBMZWdhY3kgcmVxdWVzdHMgcmV0YWluIHRoZWlyIGV4YWN0IHRocmVlLWtleSBwb2xpY3kuIEEgYnJvYWQgcG9saWN5IG11c3QKKyMgZXhwbGljaXRseSBzZWxlY3QgdGhlIG9uZSBxdWFsaWZpZWQgcmVwb3NpdG9yeS1yZWxhdGl2ZSBwYXRoIGNvbnZlbnRpb24uCit2YWxpZGF0ZV93b3JrZXJfcmVxdWVzdF9zY2hlbWEoKSB7CisgICAgbG9jYWwgcmVxdWVzdF9rZXlzPSdbImFwaV9pbWFnZV9kaWdlc3QiLCJhcnRpZmFjdF9kaXJlY3RvcnkiLCJhdHRlbXB0IiwiYmFzZV9zaGEiLCJjb21wZXRpdGlvbl9pZCIsImNvbmZpZ19sb2NhbF9kaXJlY3RvcnkiLCJldmFsdWF0aW9uX3BvbGljeSIsImV2YWx1YXRvcl9pbWFnZV9kaWdlc3QiLCJqb2JfaWQiLCJwYXRjaF9wYXRoIiwicGF0Y2hfcG9saWN5IiwicGF0Y2hfc2hhMjU2IiwicHJvdmlkZXJzX3BhdGgiLCJwcm92aWRlcnNfc2hhMjU2Iiwicm91bmRfYmFzZWxpbmVfcGF0aCIsInJvdW5kX2Jhc2VsaW5lX3NoYTI1NiIsInJvdW5kX2lkIiwicm91bmRfc2VlZF9oZXgiLCJzY2hlbWEiLCJzY29yZXJfdmVyc2lvbiIsInNvdXJjZV9lcG9jaCIsInZhdWx0X2xvY2FsX2RpcmVjdG9yeSIsIndvcmtlcl9pbWFnZV9kaWdlc3QiXScKKyAgICBsb2NhbCBwYXRjaF9wb2xpY3lfa2V5cz0nWyJhbGxvd2VkX3BhdGhzIiwiZm9yYmlkZGVuX3BhdGhzIiwibWF4X3BhdGNoX2J5dGVzIl0nCisgICAgbG9jYWwgZXZhbHVhdGlvbl9wb2xpY3lfa2V5cz0nWyJhbm5vdW5jZV90aW1lb3V0X21zIiwiYXBpX3BvcnQiLCJhcnJpdmFsc19wZXJfbWludXRlIiwiY2xpZW50X3Bvb2xfc2l6ZSIsImNsaWVudF93YXJtdXBfdGltZW91dF9tcyIsImNvbmZpZ19sb2NhbF9zaGEyNTYiLCJkdXJhdGlvbl9tcyIsImV4Y2hhbmdlX2hvc3RzIiwiZmxlZXRfc2hhcmRzIiwiaGFyZHdhcmVfaWQiLCJob3N0X3F1YWxpZmljYXRpb25fc2hhMjU2IiwiaW1wYWlybWVudF9lbmFibGVkIiwicGlwZWxpbmVfaW50ZXJ2YWxfbXMiLCJwcmV3YXJtX21zIiwicHJvdmlkZXJfY291bnQiLCJxdWFsaXR5X3dpbmRvd19zaXplIiwicXVldWVfbGltaXQiLCJyYW1wX21zIiwicmVwbGljYXRlcyIsInJlcXVlc3RfdGltZW91dF9tcyIsInNjb3JlX3RpbWVvdXRfc2Vjb25kcyIsInNjb3Jlcl9zaGEyNTYiLCJzZXR0bGVfbXMiLCJzaW11bGF0b3Jfc2hhMjU2Iiwic2l0ZV9saXN0ZW4iLCJ0YWtlb3Zlcl9tYXJnaW4iLCJ0ZXN0X3RpbWVvdXRfbXMiLCJ2YXVsdF9sb2NhbF9zaGEyNTYiXScKKyAgICBqcSAtZSBcCisgICAgICAgIC0tYXJnanNvbiByZXF1ZXN0X2tleXMgIiRyZXF1ZXN0X2tleXMiIFwKKyAgICAgICAgLS1hcmdqc29uIHBhdGNoX3BvbGljeV9rZXlzICIkcGF0Y2hfcG9saWN5X2tleXMiIFwKKyAgICAgICAgLS1hcmdqc29uIGV2YWx1YXRpb25fcG9saWN5X2tleXMgIiRldmFsdWF0aW9uX3BvbGljeV9rZXlzIiBcCisgICAgICAgICd0eXBlID09ICJvYmplY3QiIGFuZCAoLnNjaGVtYSA9PSAxKSBhbmQKKyAgICAgICAgICgoa2V5cyAtIFsic3RhZ2luZyJdIHwgc29ydCkgPT0gJHJlcXVlc3Rfa2V5cykgYW5kCisgICAgICAgICAoKGhhcygic3RhZ2luZyIpIHwgbm90KSBvciAoLnN0YWdpbmcgfCB0eXBlID09ICJib29sZWFuIikpIGFuZAorICAgICAgICAgKGlmIC5zdGFnaW5nID09IHRydWUgdGhlbiAuZXZhbHVhdGlvbl9wb2xpY3kudGFrZW92ZXJfbWFyZ2luID09IDAgYW5kICguZXZhbHVhdGlvbl9wb2xpY3kgfCBoYXMoIndvcmtfY292ZXJhZ2VfcG9saWN5IikgfCBub3QpIGVsc2UgdHJ1ZSBlbmQpIGFuZAorICAgICAgICAgKC5wYXRjaF9wb2xpY3kgfCB0eXBlID09ICJvYmplY3QiIGFuZAorICAgICAgICAgICAoaWYgaGFzKCJwYXRoX2Jhc2UiKSB0aGVuCisgICAgICAgICAgICAgICgoa2V5cyB8IHNvcnQpID09ICgkcGF0Y2hfcG9saWN5X2tleXMgKyBbInBhdGhfYmFzZSJdIHwgc29ydCkpIGFuZAorICAgICAgICAgICAgICAucGF0aF9iYXNlID09ICJtb25vX3Jvb3RfdjEiCisgICAgICAgICAgICBlbHNlIChrZXlzIHwgc29ydCkgPT0gJHBhdGNoX3BvbGljeV9rZXlzIGVuZCkpIGFuZAorICAgICAgICAgKC5ldmFsdWF0aW9uX3BvbGljeSB8IHR5cGUgPT0gIm9iamVjdCIgYW5kCisgICAgICAgICAgICgoa2V5cyB8IHNvcnQpID09ICgkZXZhbHVhdGlvbl9wb2xpY3lfa2V5cyArIChpZiBoYXMoImcyX3ZvbHVtZV9wb2xpY3kiKSB0aGVuIFsiZzJfdm9sdW1lX3BvbGljeSJdIGVsc2UgW10gZW5kKSArIChpZiBoYXMoIndvcmtfY292ZXJhZ2VfcG9saWN5IikgdGhlbiBbIndvcmtfY292ZXJhZ2VfcG9saWN5Il0gZWxzZSBbXSBlbmQpIHwgc29ydCkpIGFuZAorICAgICAgICAgICAoKGhhcygiZzJfdm9sdW1lX3BvbGljeSIpIHwgbm90KSBvciAuZzJfdm9sdW1lX3BvbGljeSA9PSAibWluaW11bS13b3JrLzEiKSBhbmQKKyAgICAgICAgICAgKChoYXMoIndvcmtfY292ZXJhZ2VfcG9saWN5IikgfCBub3QpIG9yICguZzJfdm9sdW1lX3BvbGljeSA9PSAibWluaW11bS13b3JrLzEiIGFuZCAoLndvcmtfY292ZXJhZ2VfcG9saWN5IHwgdHlwZSA9PSAib2JqZWN0IiBhbmQgLmtpbmQgPT0gInNlZWRlZC1jcmF3bC1jb3ZlcmFnZS92MSIgYW5kCisgICAgICAgICAgICAgKGtleXMgfCBzb3J0KSA9PSBbImtpbmQiLCJtaW5pbXVtX2J5dGVfY292ZXJhZ2VfcmF0aW8iLCJtaW5pbXVtX3BhZ2VfY292ZXJhZ2VfcmF0aW8iXSBhbmQKKyAgICAgICAgICAgICBhbGwoLm1pbmltdW1fcGFnZV9jb3ZlcmFnZV9yYXRpbywubWluaW11bV9ieXRlX2NvdmVyYWdlX3JhdGlvOyB0eXBlID09ICJudW1iZXIiIGFuZCBpc2Zpbml0ZSBhbmQgLiA+IDAgYW5kIC4gPCAxKSkpKSkgYW5kCisgICAgICAgICAuc2NvcmVyX3ZlcnNpb24gPT0gKGlmIC5ldmFsdWF0aW9uX3BvbGljeS53b3JrX2NvdmVyYWdlX3BvbGljeSAhPSBudWxsIHRoZW4gInNpbS1sYXRlbmN5LXNjb3JlLzMiIGVsaWYgLmV2YWx1YXRpb25fcG9saWN5LmcyX3ZvbHVtZV9wb2xpY3kgPT0gIm1pbmltdW0td29yay8xIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuICJzaW0tbGF0ZW5jeS1zY29yZS8yIiBlbHNlICJzaW0tbGF0ZW5jeS1zY29yZS8xIiBlbmQpJyBcCisgICAgICAgICIkMSIgPi9kZXYvbnVsbAorfQorCisjIERlcml2ZSBoZWxwZXIgbmFtZXMgZnJvbSB0aGUgaW5kZXBlbmRlbnRseSBwaW5uZWQgaG9zdCB2YWxpZGF0b3IsIG5ldmVyCisjIGZyb20gY2FuZGlkYXRlIGNvZGUgb3IgYSBjYWxsZXItc2VsZWN0ZWQgcGF0aCBsaXN0LgorYXV0aGVudGljYXRlX3dvcmtfY292ZXJhZ2VfcGF0Y2hfcG9saWN5KCkgeworICAgIGxvY2FsIHJlcXVlc3Q9IiQxIiBjb3ZlcmFnZV9wcmVzZW50CisgICAgY292ZXJhZ2VfcHJvdGVjdGVkX3BhdGhzX2pzb249IiIKKyAgICBjb3ZlcmFnZV9wcmVzZW50PSIkKGpxIC1yICcuZXZhbHVhdGlvbl9wb2xpY3kgfCBpZiB0eXBlID09ICJvYmplY3QiIHRoZW4gaGFzKCJ3b3JrX2NvdmVyYWdlX3BvbGljeSIpIGVsc2UgZXJyb3IoImV2YWx1YXRpb24gcG9saWN5IGlzIG1pc3NpbmciKSBlbmQnICIkcmVxdWVzdCIpIiB8fCBkaWUgImZyb3plbiBldmFsdWF0aW9uIHBvbGljeSBpcyB1bnJlYWRhYmxlIgorICAgIGlmIFsgIiRjb3ZlcmFnZV9wcmVzZW50IiA9IGZhbHNlIF07IHRoZW4KKyAgICAgICAgcmV0dXJuIDAKKyAgICBmaQorICAgIFsgIiRjb3ZlcmFnZV9wcmVzZW50IiA9IHRydWUgXSB8fCBkaWUgImZyb3plbiBldmFsdWF0aW9uIHBvbGljeSBpcyBhbWJpZ3VvdXMiCisgICAgc3VibWlzc2lvbl9idWlsZGVyX2lkZW50aXR5ID4vZGV2L251bGwgfHwgZGllICJ0cnVzdGVkIGNvdmVyYWdlIHZhbGlkYXRvciBpZGVudGl0eSBpcyB1bmF2YWlsYWJsZSIKKyAgICBjb3ZlcmFnZV9wcm90ZWN0ZWRfcGF0aHNfanNvbj0iJCgiJFNDUklQVF9ESVIvY29tcGV0aXRpb25wYXRjaCIgLS13b3JrLWNvdmVyYWdlLXByb3RlY3RlZC1wYXRocykiIHx8CisgICAgICAgIGRpZSAidHJ1c3RlZCBjb3ZlcmFnZSBoZWxwZXIgY2Vuc3VzIGlzIHVuYXZhaWxhYmxlIgorICAgIGpxIC1lIC0tYXJnanNvbiBoZWxwZXJzICIkY292ZXJhZ2VfcHJvdGVjdGVkX3BhdGhzX2pzb24iICcKKyAgICAgICAgLiBhcyAkcmVxdWVzdCB8CisgICAgICAgIChpZiAoJHJlcXVlc3QucGF0Y2hfcG9saWN5LnBhdGhfYmFzZSAvLyAiIikgPT0gIm1vbm9fcm9vdF92MSIgdGhlbiAic2VydmVyLyIgZWxzZSAiIiBlbmQpIGFzICRwcmVmaXggfAorICAgICAgICAoJGhlbHBlcnMgfCB0eXBlID09ICJvYmplY3QiIGFuZCAoa2V5cyB8IHNvcnQpID09IFsia2luZCIsInBhdGhzIiwic2NoZW1hIl0gYW5kCisgICAgICAgICAuc2NoZW1hID09IDEgYW5kIC5raW5kID09ICJzZWVkZWQtY3Jhd2wtY292ZXJhZ2UtcHJvdGVjdGVkLWhlbHBlcnMvdjEiIGFuZAorICAgICAgICAgKC5wYXRocyB8IHR5cGUgPT0gImFycmF5IiBhbmQgbGVuZ3RoID09IDYgYW5kICh1bmlxdWUgfCBsZW5ndGggPT0gNikgYW5kCisgICAgICAgICAgYWxsKC5bXTsgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXihjb250cm9sbGVyfG1vZGVsKS9jb21wZXRpdGlvbl9bYS16MC05X10rWy5dZ28kIikpKSkgYW5kCisgICAgICAgICgkcmVxdWVzdC5ldmFsdWF0aW9uX3BvbGljeS5nMl92b2x1bWVfcG9saWN5ID09ICJtaW5pbXVtLXdvcmsvMSIpIGFuZAorICAgICAgICAoJHJlcXVlc3QuZXZhbHVhdGlvbl9wb2xpY3kud29ya19jb3ZlcmFnZV9wb2xpY3kgPT0KKyAgICAgICAgICB7a2luZDoic2VlZGVkLWNyYXdsLWNvdmVyYWdlL3YxIixtaW5pbXVtX3BhZ2VfY292ZXJhZ2VfcmF0aW86MC45NSxtaW5pbXVtX2J5dGVfY292ZXJhZ2VfcmF0aW86MC45NX0pIGFuZAorICAgICAgICBhbGwoJGhlbHBlcnMucGF0aHNbXTsgLiBhcyAkcGF0aCB8CisgICAgICAgICAgKCRyZXF1ZXN0LnBhdGNoX3BvbGljeS5mb3JiaWRkZW5fcGF0aHMgfCBpbmRleCgkcHJlZml4ICsgJHBhdGgpKSAhPSBudWxsKSBhbmQKKyAgICAgICAgKCRyZXF1ZXN0LnBhdGNoX3BvbGljeS5mb3JiaWRkZW5fcGF0aHMgfCBpbmRleCgkcHJlZml4ICsgImNvbm5lY3Qvc2ltLWxhdGVuY3kvKioiKSkgIT0gbnVsbAorICAgICcgIiRyZXF1ZXN0IiA+L2Rldi9udWxsIHx8IGRpZSAiZnJvemVuIGNvdmVyYWdlIHBhdGNoIHBvbGljeSBvbWl0cyBpdHMgZml4ZWQgdHJ1c3RlZCBoZWxwZXIgY2Vuc3VzIgorfQorCitsb2NhbF90cmVlX3NoYTI1NigpIHsKKyAgICAiJEhBU0hfTE9DQUxfTU9VTlQiICIkMSIKK30KKworYXV0aGVudGljYXRlX2xvY2FsX21vdW50cygpIHsKKyAgICBbICIkKGxvY2FsX3RyZWVfc2hhMjU2ICIkY29uZmlnX2xvY2FsX2RpcmVjdG9yeSIpIiA9ICIkY29uZmlnX2xvY2FsX3NoYTI1NiIgXSB8fAorICAgICAgICBkaWUgImRpcmVjdCBjb25maWcvbG9jYWwgY29udGVudCBkb2VzIG5vdCBtYXRjaCB0aGUgZnJvemVuIGRpZ2VzdCIKKyAgICBbICIkKGxvY2FsX3RyZWVfc2hhMjU2ICIkdmF1bHRfbG9jYWxfZGlyZWN0b3J5IikiID0gIiR2YXVsdF9sb2NhbF9zaGEyNTYiIF0gfHwKKyAgICAgICAgZGllICJkaXJlY3QgdmF1bHQvbG9jYWwgY29udGVudCBkb2VzIG5vdCBtYXRjaCB0aGUgZnJvemVuIGRpZ2VzdCIKK30KKworIyBUaGlzIGhvc3QgYWRtaXRzIG9uZSBldmFsdWF0b3IgYXR0ZW1wdCBhdCBhIHRpbWUuIEZhaWxlZCBjbGVhbnVwIG11c3QgYmxvY2sKKyMgdGhlIG5leHQgYWxsb2NhdGlvbiByYXRoZXIgdGhhbiBhY2N1bXVsYXRpbmcgY29udGFpbmVycyBvciBldmlkZW5jZSBjaGFyZ2VzLgorIyBJbnNwZWN0aW9uIG9ubHk6IHJlY292ZXJ5IG9mIGFueSBsZWZ0b3ZlciByZXNvdXJjZXMgcmVxdWlyZXMgdGhlIG9wZXJhdG9yLgorY2hlY2tfZXZhbHVhdG9yX3Jlc2lkdWFsX3Jlc291cmNlcygpIHsKKyAgICBsb2NhbCBjb250YWluZXJzIG5ldHdvcmtzIG1vdW50cyBmaWxlc3lzdGVtIHNvdXJjZQorICAgIGNvbnRhaW5lcnM9IiQoc3VkbyAtbiB0aW1lb3V0IC0tc2lnbmFsPVRFUk0gLS1raWxsLWFmdGVyPTFzIDNzIGRvY2tlciBwcyAtYXEgXAorICAgICAgICAtLWZpbHRlciBsYWJlbD1jb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLmpvYi1pZCkiIHx8IGRpZSAiY291bGQgbm90IGVudW1lcmF0ZSBwcmlvciBldmFsdWF0b3IgY29udGFpbmVycyIKKyAgICBbIC16ICIkY29udGFpbmVycyIgXSB8fCBkaWUgInByaW9yIGV2YWx1YXRvciBjb250YWluZXJzIHN0aWxsIGV4aXN0IgorICAgIG5ldHdvcmtzPSIkKHN1ZG8gLW4gdGltZW91dCAtLXNpZ25hbD1URVJNIC0ta2lsbC1hZnRlcj0xcyAzcyBkb2NrZXIgbmV0d29yayBscyAtcSBcCisgICAgICAgIC0tZmlsdGVyIGxhYmVsPWNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkKSIgfHwgZGllICJjb3VsZCBub3QgZW51bWVyYXRlIHByaW9yIGV2YWx1YXRvciBuZXR3b3JrcyIKKyAgICBbIC16ICIkbmV0d29ya3MiIF0gfHwgZGllICJwcmlvciBldmFsdWF0b3IgbmV0d29ya3Mgc3RpbGwgZXhpc3QiCisgICAgbW91bnRzPSIkKHRpbWVvdXQgLS1zaWduYWw9VEVSTSAtLWtpbGwtYWZ0ZXI9MXMgM3MgZmluZG1udCAtcm4gLW8gRlNUWVBFLFNPVVJDRSkiIHx8CisgICAgICAgIGRpZSAiY291bGQgbm90IGVudW1lcmF0ZSBwcmlvciBldmFsdWF0b3IgZXZpZGVuY2UgbW91bnRzIgorICAgIFsgLW4gIiRtb3VudHMiIF0gfHwgZGllICJob3N0IG1vdW50IGVudW1lcmF0aW9uIHdhcyBlbXB0eSIKKyAgICB3aGlsZSByZWFkIC1yIGZpbGVzeXN0ZW0gc291cmNlOyBkbworICAgICAgICBpZiBbICIkZmlsZXN5c3RlbSIgPSB0bXBmcyBdOyB0aGVuCisgICAgICAgICAgICBjYXNlICIkc291cmNlIiBpbgorICAgICAgICAgICAgICAgIHVybmV0d29yay1ldmlkZW5jZS0qKSBkaWUgInByaW9yIGV2YWx1YXRvciBldmlkZW5jZSBtb3VudCBzdGlsbCBleGlzdHMiIDs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgIGZpCisgICAgZG9uZSA8PDwiJG1vdW50cyIKK30KKworb25fZXJyb3IoKSB7CisgICAgbG9jYWwgbGluZT0iJDEiIHJjPSIkMiIKKyAgICBpZiBbICIkQkFTSF9TVUJTSEVMTCIgLWVxIDAgXTsgdGhlbgorICAgICAgICBmYWlsdXJlX2xpbmU9IiRsaW5lIgorICAgICAgICBsb2cgIkVSUk9SOiBldmFsdWF0b3IgY29tbWFuZCBmYWlsZWQgYXQgbGluZSAkbGluZSAoZXhpdCAkcmMpIgorICAgIGZpCisgICAgcmV0dXJuICIkcmMiCit9CisKK3VzYWdlKCkgeworICAgIHByaW50ZiAnJXNcbicgJ3VzYWdlOiBjb21wZXRpdGlvbi1ldmFsdWF0b3IgLS1yZXF1ZXN0IEFCU09MVVRFX1JFUVVFU1QgLS1yZXN1bHQgQUJTT0xVVEVfUkVTVUxUJworfQorCit3aGlsZSBbICIkIyIgLWd0IDAgXTsgZG8KKyAgICBjYXNlICIkMSIgaW4KKyAgICAgICAgLS1yZXF1ZXN0fC0tcmVzdWx0KQorICAgICAgICAgICAgWyAiJCMiIC1nZSAyIF0gfHwgeyB1c2FnZSA+JjI7IGV4aXQgMjsgfQorICAgICAgICAgICAgY2FzZSAiJDEiIGluCisgICAgICAgICAgICAgICAgLS1yZXF1ZXN0KSByZXF1ZXN0X3BhdGg9IiQyIiA7OworICAgICAgICAgICAgICAgIC0tcmVzdWx0KSByZXN1bHRfcGF0aD0iJDIiIDs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICBzaGlmdCAyCisgICAgICAgICAgICA7OworICAgICAgICAtaHwtLWhlbHApCisgICAgICAgICAgICB1c2FnZQorICAgICAgICAgICAgZXhpdCAwCisgICAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgICAgdXNhZ2UgPiYyCisgICAgICAgICAgICBleGl0IDIKKyAgICAgICAgICAgIDs7CisgICAgZXNhYworZG9uZQorCitjbGVhbnVwKCkgeworICAgIGxvY2FsIHJjPSQ/CisgICAgc2V0ICtlCisgICAgaWYgWyAtbiAiJHthY3RpdmVfYnVpbGRfbG9nX3BpZDotfSIgXTsgdGhlbgorICAgICAgICBraWxsICIkYWN0aXZlX2J1aWxkX2xvZ19waWQiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgICAgIHdhaXQgIiRhY3RpdmVfYnVpbGRfbG9nX3BpZCIgPi9kZXYvbnVsbCAyPiYxIHx8IHRydWUKKyAgICAgICAgYWN0aXZlX2J1aWxkX2xvZ19waWQ9IiIKKyAgICBmaQorICAgIGlmIFsgLW4gIiR7YWN0aXZlX2J1aWxkX2xvZ19waXBlOi19IiBdOyB0aGVuCisgICAgICAgIHJtIC1mIC0tICIkYWN0aXZlX2J1aWxkX2xvZ19waXBlIgorICAgICAgICBhY3RpdmVfYnVpbGRfbG9nX3BpcGU9IiIKKyAgICBmaQorICAgIGlmIFsgLW4gIiR7YWN0aXZlX3NhbXBsZXJfcGlkOi19IiBdOyB0aGVuCisgICAgICAgIGtpbGwgIiRhY3RpdmVfc2FtcGxlcl9waWQiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgICAgIHdhaXQgIiRhY3RpdmVfc2FtcGxlcl9waWQiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgICAgIGFjdGl2ZV9zYW1wbGVyX3BpZD0iIgorICAgIGZpCisgICAgaWYgWyAtbiAiJHthY3RpdmVfcHJvamVjdDotfSIgXSAmJiBbIC1uICIke2FjdGl2ZV9jb21wb3NlX2VudjotfSIgXSAmJiBbIC1mICIkYWN0aXZlX2NvbXBvc2VfZW52IiBdOyB0aGVuCisgICAgICAgIGNvbXBvc2Vfd2l0aCAiJGFjdGl2ZV9wcm9qZWN0IiAiJGFjdGl2ZV9jb21wb3NlX2VudiIgLS1wcm9maWxlIHJ1biAtLXByb2ZpbGUgc2NvcmUgXAorICAgICAgICAgICAgZG93biAtLXZvbHVtZXMgLS1yZW1vdmUtb3JwaGFucyA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQorICAgIGZpCisgICAgaWYgWyAtbiAiJHtqb2JfaWQ6LX0iIF07IHRoZW4KKyAgICAgICAgd2hpbGUgSUZTPSByZWFkIC1yIGNvbnRhaW5lcl9pZDsgZG8KKyAgICAgICAgICAgIFsgLW4gIiRjb250YWluZXJfaWQiIF0gJiYgc3VkbyAtbiBkb2NrZXIgcm0gLWYgIiRjb250YWluZXJfaWQiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgICAgIGRvbmUgPCA8KHN1ZG8gLW4gZG9ja2VyIHBzIC1hcSAtLWZpbHRlciAibGFiZWw9Y29tLnVybmV0d29yay5jb21wZXRpdGlvbi5qb2ItaWQ9JGpvYl9pZCIgMj4vZGV2L251bGwgfHwgdHJ1ZSkKKyAgICAgICAgd2hpbGUgSUZTPSByZWFkIC1yIG5ldHdvcmtfaWQ7IGRvCisgICAgICAgICAgICBbIC1uICIkbmV0d29ya19pZCIgXSAmJiBzdWRvIC1uIGRvY2tlciBuZXR3b3JrIHJtICIkbmV0d29ya19pZCIgPi9kZXYvbnVsbCAyPiYxIHx8IHRydWUKKyAgICAgICAgZG9uZSA8IDwoc3VkbyAtbiBkb2NrZXIgbmV0d29yayBscyAtcSAtLWZpbHRlciAibGFiZWw9Y29tLnVybmV0d29yay5jb21wZXRpdGlvbi5qb2ItaWQ9JGpvYl9pZCIgMj4vZGV2L251bGwgfHwgdHJ1ZSkKKyAgICBmaQorICAgIGlmIFsgLW4gIiR7YXJ0aWZhY3RfZGlyOi19IiBdICYmIFsgLWYgIiRhcnRpZmFjdF9kaXIvZXZhbHVhdG9yLWZhaWx1cmUuanNvbiIgXTsgdGhlbgorICAgICAgICBsb2NhbCByZXNpZHVhbF9jb250YWluZXJzIHJlc2lkdWFsX25ldHdvcmtzCisgICAgICAgIGlmIHJlc2lkdWFsX2NvbnRhaW5lcnM9IiQoc3VkbyAtbiB0aW1lb3V0IC0tc2lnbmFsPVRFUk0gLS1raWxsLWFmdGVyPTFzIDNzIGRvY2tlciBwcyAtYXEgXAorICAgICAgICAgICAgICAgLS1maWx0ZXIgImxhYmVsPWNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkPSRqb2JfaWQiKSIgJiYKKyAgICAgICAgICAgcmVzaWR1YWxfbmV0d29ya3M9IiQoc3VkbyAtbiB0aW1lb3V0IC0tc2lnbmFsPVRFUk0gLS1raWxsLWFmdGVyPTFzIDNzIGRvY2tlciBuZXR3b3JrIGxzIC1xIFwKKyAgICAgICAgICAgICAgIC0tZmlsdGVyICJsYWJlbD1jb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLmpvYi1pZD0kam9iX2lkIikiICYmCisgICAgICAgICAgIFsgLXogIiRyZXNpZHVhbF9jb250YWluZXJzIiBdICYmIFsgLXogIiRyZXNpZHVhbF9uZXR3b3JrcyIgXTsgdGhlbgorICAgICAgICAgICAgOgorICAgICAgICBlbHNlCisgICAgICAgICAgICAjIEEgY2FuZGlkYXRlIGZhaWx1cmUgY2Fubm90IGJlY29tZSB0ZXJtaW5hbCB3aGlsZSBmYWlsZWQgaG9zdAorICAgICAgICAgICAgIyBjbGVhbnVwIG1pZ2h0IGNvbnRhbWluYXRlIHRoZSBuZXh0IGF0dGVtcHQncyBtZWFzdXJlbWVudHMuCisgICAgICAgICAgICBybSAtZiAtLSAiJGFydGlmYWN0X2Rpci9ldmFsdWF0b3ItZmFpbHVyZS5qc29uIgorICAgICAgICAgICAgbG9nICJFUlJPUjogc3RhZ2UgZmFpbHVyZSBjbGFzc2lmaWNhdGlvbiBpbnZhbGlkYXRlZCBieSBpbmNvbXBsZXRlIGNsZWFudXAiCisgICAgICAgIGZpCisgICAgZmkKKyAgICBpZiBbICIkcmMiIC1uZSAwIF0gJiYgWyAtbiAiJHthY3RpdmVfd29ya19tb3VudDotfSIgXSAmJgorICAgICAgIFsgIiRhY3RpdmVfd29ya19tb3VudCIgPSAiJHthcnRpZmFjdF9kaXI6LX0vLmV2aWRlbmNlLXJ1bnRpbWUiIF0gJiYKKyAgICAgICBtb3VudHBvaW50IC1xICIkYWN0aXZlX3dvcmtfbW91bnQiICYmIFsgLXggIiRSRVRBSU5fRkFJTFVSRV9FVklERU5DRSIgXTsgdGhlbgorICAgICAgICBpZiBlbnYgXAorICAgICAgICAgICAgRkFJTFVSRV9KT0JfSUQ9IiR7am9iX2lkOi19IiBcCisgICAgICAgICAgICBGQUlMVVJFX1JPVU5EX0lEPSIke3JvdW5kX2lkOi19IiBcCisgICAgICAgICAgICBGQUlMVVJFX0FUVEVNUFQ9IiR7YXR0ZW1wdDotfSIgXAorICAgICAgICAgICAgRkFJTFVSRV9FWElUX0NPREU9IiRyYyIgXAorICAgICAgICAgICAgRkFJTFVSRV9FVkFMVUFUT1JfTElORT0iJGZhaWx1cmVfbGluZSIgXAorICAgICAgICAgICAgIiRSRVRBSU5fRkFJTFVSRV9FVklERU5DRSIgXAorICAgICAgICAgICAgICAgICIkYWN0aXZlX3dvcmtfbW91bnQiICIkYXJ0aWZhY3RfZGlyL2ZhaWxlZC1ldmlkZW5jZSI7IHRoZW4KKyAgICAgICAgICAgIGxvZyAicmV0YWluZWQgc2FuaXRpemVkIGZhaWx1cmUgZXZpZGVuY2U6ICRhcnRpZmFjdF9kaXIvZmFpbGVkLWV2aWRlbmNlIgorICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2cgIkVSUk9SOiBjb3VsZCBub3QgcmV0YWluIHNhbml0aXplZCBmYWlsdXJlIGV2aWRlbmNlIgorICAgICAgICBmaQorICAgIGZpCisgICAgbG9jYWwgd29ya19jbGVhbnVwX2NvbXBsZXRlPXRydWUKKyAgICBpZiBbIC1uICIke2FjdGl2ZV93b3JrX21vdW50Oi19IiBdICYmIG1vdW50cG9pbnQgLXEgIiRhY3RpdmVfd29ya19tb3VudCI7IHRoZW4KKyAgICAgICAgc3VkbyAtbiB0aW1lb3V0IC0tc2lnbmFsPVRFUk0gLS1raWxsLWFmdGVyPTFzIDNzIHVtb3VudCAiJGFjdGl2ZV93b3JrX21vdW50IiA+L2Rldi9udWxsIDI+JjEgfHwKKyAgICAgICAgICAgIHdvcmtfY2xlYW51cF9jb21wbGV0ZT1mYWxzZQorICAgIGZpCisgICAgaWYgWyAtbiAiJHthY3RpdmVfd29ya19tb3VudDotfSIgXSAmJiBbIC1kICIkYWN0aXZlX3dvcmtfbW91bnQiIF07IHRoZW4KKyAgICAgICAgcm1kaXIgIiRhY3RpdmVfd29ya19tb3VudCIgPi9kZXYvbnVsbCAyPiYxIHx8IHdvcmtfY2xlYW51cF9jb21wbGV0ZT1mYWxzZQorICAgIGZpCisgICAgaWYgWyAiJHdvcmtfY2xlYW51cF9jb21wbGV0ZSIgIT0gdHJ1ZSBdOyB0aGVuCisgICAgICAgIFsgLXogIiR7YXJ0aWZhY3RfZGlyOi19IiBdIHx8IHJtIC1mIC0tICIkYXJ0aWZhY3RfZGlyL2V2YWx1YXRvci1mYWlsdXJlLmpzb24iCisgICAgICAgIGxvZyAiRVJST1I6IHN0YWdlIGZhaWx1cmUgY2xhc3NpZmljYXRpb24gaW52YWxpZGF0ZWQgYnkgaW5jb21wbGV0ZSBldmlkZW5jZSB0bXBmcyBjbGVhbnVwIgorICAgIGZpCisgICAgaWYgWyAtbiAiJHthcnRpZmFjdF9kaXI6LX0iIF0gJiYgWyAtZCAiJGFydGlmYWN0X2RpciIgXTsgdGhlbgorICAgICAgICBzdWRvIC1uIGNob3duIC1SICIkd29ya2VyX3VpZDokd29ya2VyX2dpZCIgIiRhcnRpZmFjdF9kaXIiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgICAgZmkKKyAgICBleGl0ICIkcmMiCit9Cit0cmFwICdvbl9lcnJvciAiJExJTkVOTyIgIiQ/IicgRVJSCit0cmFwIGNsZWFudXAgRVhJVAordHJhcCAnZXhpdCAxMzAnIElOVAordHJhcCAnZXhpdCAxNDMnIFRFUk0KKworZm9yIGNvbW1hbmQgaW4gYXdrIGNhdCBjcCBkYXRlIGRmIGZpbmQgZmluZG1udCBnaXQgaGVhZCBpbnN0YWxsIGpxIG1rZmlmbyBtb3VudCBtb3VudHBvaW50IG9wZW5zc2wgcmVhbHBhdGggc2VkIHNoYTI1NnN1bSBzb3J0IHN0YXQgc3VkbyBzeW5jIHRhaWwgdGFza3NldCB0aW1lb3V0IHVtb3VudDsgZG8KKyAgICByZXF1aXJlX2NvbW1hbmQgIiRjb21tYW5kIgorZG9uZQorY2hlY2tfZXZhbHVhdG9yX3Jlc2lkdWFsX3Jlc291cmNlcworc3VkbyAtbiBkb2NrZXIgaW5mbyA+L2Rldi9udWxsCitbIC14ICIkQlVJTERfU1VCTUlTU0lPTiIgXSB8fCBkaWUgInRydXN0ZWQgc3VibWlzc2lvbiBidWlsZGVyIGlzIG5vdCBleGVjdXRhYmxlIgorWyAteCAiJFBSRVBBUkVfRVZBTFVBVElPTl9TT1VSQ0UiIF0gfHwgZGllICJ0cnVzdGVkIGV2YWx1YXRpb24gc291cmNlIHByZXBhcmVyIGlzIG5vdCBleGVjdXRhYmxlIgorWyAteCAiJFJFU09VUkNFX0JPVU5EQVJZIiBdIHx8IGRpZSAidHJ1c3RlZCByZXNvdXJjZSBib3VuZGFyeSBpcyBub3QgZXhlY3V0YWJsZSIKK1sgLXggIiRORVRXT1JLX0JPVU5EQVJZIiBdIHx8IGRpZSAidHJ1c3RlZCBuZXR3b3JrIGJvdW5kYXJ5IGlzIG5vdCBleGVjdXRhYmxlIgorWyAteCAiJERPQ0tFUl9JRF9NQVAiIF0gfHwgZGllICJ0cnVzdGVkIERvY2tlciBpZC1tYXAgcmVzb2x2ZXIgaXMgbm90IGV4ZWN1dGFibGUiCitbIC14ICIkSEFTSF9MT0NBTF9NT1VOVCIgXSB8fCBkaWUgInRydXN0ZWQgbG9jYWwtbW91bnQgZGlnZXN0IGhlbHBlciBpcyBub3QgZXhlY3V0YWJsZSIKK1sgLXggIiRSRVRBSU5fRkFJTFVSRV9FVklERU5DRSIgXSB8fCBkaWUgInRydXN0ZWQgZmFpbHVyZSBldmlkZW5jZSByZXRhaW5lciBpcyBub3QgZXhlY3V0YWJsZSIKK1sgLWYgIiRQT1NUR1JFU19JTklUIiBdIHx8IGRpZSAidHJ1c3RlZCBQb3N0Z3JlU1FMIGluaXRpYWxpemVyIGlzIG1pc3NpbmciCitbIC14ICIkVElNRU9VVF9CVURHRVQiIF0gfHwgZGllICJ0cnVzdGVkIHRpbWVvdXQtYnVkZ2V0IGNhbGN1bGF0b3IgaXMgbm90IGV4ZWN1dGFibGUiCitbIC1mICIkQ09NUE9TRV9GSUxFIiBdIHx8IGRpZSAidHJ1c3RlZCBDb21wb3NlIGRlZmluaXRpb24gaXMgbWlzc2luZyIKKworW1sgIiRyZXF1ZXN0X3BhdGgiID0gLyogJiYgIiRyZXN1bHRfcGF0aCIgPSAvKiBdXSB8fCBkaWUgInJlcXVlc3QgYW5kIHJlc3VsdCBwYXRocyBtdXN0IGJlIGFic29sdXRlIgorWyAtZiAiJHJlcXVlc3RfcGF0aCIgXSAmJiBbICEgLUwgIiRyZXF1ZXN0X3BhdGgiIF0gfHwgZGllICJyZXF1ZXN0IG11c3QgYmUgYSByZWd1bGFyIG5vbi1zeW1saW5rIGZpbGUiCitbICEgLWUgIiRyZXN1bHRfcGF0aCIgXSB8fCBkaWUgInJlc3VsdCBwYXRoIGFscmVhZHkgZXhpc3RzIgorWyAiJChmaWxlX2J5dGVzICIkcmVxdWVzdF9wYXRoIikiIC1sZSAiJE1BWF9SRVFVRVNUX0JZVEVTIiBdIHx8IGRpZSAicmVxdWVzdCBpcyBvdmVyc2l6ZWQiCityZXF1ZXN0X3BhdGg9IiQocmVhbHBhdGggLWUgIiRyZXF1ZXN0X3BhdGgiKSIKK2FydGlmYWN0X2Rpcj0iJChkaXJuYW1lICIkcmVxdWVzdF9wYXRoIikiCitbICIkcmVzdWx0X3BhdGgiID0gIiRhcnRpZmFjdF9kaXIvd29ya2VyLXJlc3VsdC5qc29uIiBdIHx8IGRpZSAicmVzdWx0IHBhdGggaXMgb3V0c2lkZSB0aGUgYXR0ZW1wdCBkaXJlY3RvcnkiCisKK3ZhbGlkYXRlX3dvcmtlcl9yZXF1ZXN0X3NjaGVtYSAiJHJlcXVlc3RfcGF0aCIgfHwgZGllICJyZXF1ZXN0IHNjaGVtYSBvciBmaWVsZHMgYXJlIGludmFsaWQiCithdXRoZW50aWNhdGVfd29ya19jb3ZlcmFnZV9wYXRjaF9wb2xpY3kgIiRyZXF1ZXN0X3BhdGgiCisKK2pvYl9pZD0iJChqcSAtZXIgJy5qb2JfaWQnICIkcmVxdWVzdF9wYXRoIikiCitzdGFnaW5nPSIkKGpxIC1yICcuc3RhZ2luZyAvLyBmYWxzZScgIiRyZXF1ZXN0X3BhdGgiKSIKK3NvdXJjZV9icmFuY2g9c2ltLWxhdGVuY3kKK3NvdXJjZV9tb2RlX2FyZ3M9KCkKK2lmIFsgIiRzdGFnaW5nIiA9IHRydWUgXTsgdGhlbgorICAgIHNvdXJjZV9icmFuY2g9c2ltLWxhdGVuY3ktc3RhZ2luZworICAgIHNvdXJjZV9tb2RlX2FyZ3M9KC0tc3RhZ2luZykKK2ZpCitSRVBPU0lUT1JJRVM9KHNlcnZlciBjb25uZWN0IHNkayBwcm94eSBnbG9nIGdvaWRlbnRpY29ucyB1c2Vyd2lyZWd1YXJkIHNuIHdhcnAgZ3Zpc29yKQorcmVhZG9ubHkgUkVQT1NJVE9SSUVTCityZXBvc2l0b3J5X25hbWVzX2pzb249IiQocHJpbnRmICclc1xuJyAiJHtSRVBPU0lUT1JJRVNbQF19IiB8IGpxIC1Sc2MgJ3NwbGl0KCJcbiIpWzotMV0nKSIKK3JvdW5kX2lkPSIkKGpxIC1lciAnLnJvdW5kX2lkJyAiJHJlcXVlc3RfcGF0aCIpIgorc291cmNlX2Vwb2NoPSIkKGpxIC1lciAnLnNvdXJjZV9lcG9jaCcgIiRyZXF1ZXN0X3BhdGgiKSIKK2F0dGVtcHQ9IiQoanEgLWVyICcuYXR0ZW1wdCcgIiRyZXF1ZXN0X3BhdGgiKSIKK2NvbXBldGl0aW9uX2lkPSIkKGpxIC1lciAnLmNvbXBldGl0aW9uX2lkJyAiJHJlcXVlc3RfcGF0aCIpIgorYmFzZV9zaGE9IiQoanEgLWVyICcuYmFzZV9zaGEnICIkcmVxdWVzdF9wYXRoIikiCitiYXNlX2ltYWdlPSIkKGpxIC1lciAnLmV2YWx1YXRvcl9pbWFnZV9kaWdlc3QnICIkcmVxdWVzdF9wYXRoIikiCithcGlfY29udHJvbF9pbWFnZT0iJChqcSAtZXIgJy5hcGlfaW1hZ2VfZGlnZXN0JyAiJHJlcXVlc3RfcGF0aCIpIgord29ya2VyX2NvbnRyb2xfaW1hZ2U9IiQoanEgLWVyICcud29ya2VyX2ltYWdlX2RpZ2VzdCcgIiRyZXF1ZXN0X3BhdGgiKSIKK3Njb3Jlcl92ZXJzaW9uPSIkKGpxIC1lciAnLnNjb3Jlcl92ZXJzaW9uJyAiJHJlcXVlc3RfcGF0aCIpIgorZzJfdm9sdW1lX3BvbGljeT0iJChqcSAtciAnLmV2YWx1YXRpb25fcG9saWN5LmcyX3ZvbHVtZV9wb2xpY3kgLy8gIiInICIkcmVxdWVzdF9wYXRoIikiCit3b3JrX2NvdmVyYWdlX3BvbGljeT0iJChqcSAtYyAnLmV2YWx1YXRpb25fcG9saWN5LndvcmtfY292ZXJhZ2VfcG9saWN5IC8vIG51bGwnICIkcmVxdWVzdF9wYXRoIikiCitjb3ZlcmFnZV9wb2xpY3lfYXJncz0oKQoraWYgWyAiJHdvcmtfY292ZXJhZ2VfcG9saWN5IiAhPSBudWxsIF07IHRoZW4gY292ZXJhZ2VfcG9saWN5X2FyZ3M9KC0td29yay1jb3ZlcmFnZS1wb2xpY3kgIiQoanEgLWVyICcua2luZCcgPDw8IiR3b3JrX2NvdmVyYWdlX3BvbGljeSIpIik7IGZpCitwcm92aWRlcnNfcGF0aD0iJChqcSAtZXIgJy5wcm92aWRlcnNfcGF0aCcgIiRyZXF1ZXN0X3BhdGgiKSIKK3Byb3ZpZGVyc19zaGEyNTY9IiQoanEgLWVyICcucHJvdmlkZXJzX3NoYTI1NicgIiRyZXF1ZXN0X3BhdGgiKSIKK3JvdW5kX2Jhc2VsaW5lX3BhdGg9IiQoanEgLWVyICcucm91bmRfYmFzZWxpbmVfcGF0aCcgIiRyZXF1ZXN0X3BhdGgiKSIKK3JvdW5kX2Jhc2VsaW5lX3NoYTI1Nj0iJChqcSAtZXIgJy5yb3VuZF9iYXNlbGluZV9zaGEyNTYnICIkcmVxdWVzdF9wYXRoIikiCitwYXRjaF9wYXRoPSIkKGpxIC1lciAnLnBhdGNoX3BhdGgnICIkcmVxdWVzdF9wYXRoIikiCitwYXRjaF9zaGEyNTY9IiQoanEgLWVyICcucGF0Y2hfc2hhMjU2JyAiJHJlcXVlc3RfcGF0aCIpIgorcmVxdWVzdF9hcnRpZmFjdF9kaXI9IiQoanEgLWVyICcuYXJ0aWZhY3RfZGlyZWN0b3J5JyAiJHJlcXVlc3RfcGF0aCIpIgorY29uZmlnX2xvY2FsX2RpcmVjdG9yeT0iJChqcSAtZXIgJy5jb25maWdfbG9jYWxfZGlyZWN0b3J5JyAiJHJlcXVlc3RfcGF0aCIpIgordmF1bHRfbG9jYWxfZGlyZWN0b3J5PSIkKGpxIC1lciAnLnZhdWx0X2xvY2FsX2RpcmVjdG9yeScgIiRyZXF1ZXN0X3BhdGgiKSIKK2NvbmZpZ19sb2NhbF9zaGEyNTY9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kuY29uZmlnX2xvY2FsX3NoYTI1NicgIiRyZXF1ZXN0X3BhdGgiKSIKK3ZhdWx0X2xvY2FsX3NoYTI1Nj0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS52YXVsdF9sb2NhbF9zaGEyNTYnICIkcmVxdWVzdF9wYXRoIikiCityZXBsaWNhdGVzPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnJlcGxpY2F0ZXMnICIkcmVxdWVzdF9wYXRoIikiCisKK1tbICIkam9iX2lkIiA9fiBeWzAtOWEtZi1dezM2fSQgXV0gfHwgZGllICJqb2IgaWQgaXMgaW52YWxpZCIKK1tbICIkcm91bmRfaWQiID1+IF5bMC05YS1mLV17MzZ9JCBdXSB8fCBkaWUgInJvdW5kIGlkIGlzIGludmFsaWQiCitbWyAiJHNvdXJjZV9lcG9jaCIgPX4gXlswLTZdJCBdXSB8fCBkaWUgInNvdXJjZSBlcG9jaCBpcyBpbnZhbGlkIgorW1sgIiRhdHRlbXB0IiA9fiBeWzEtOV1bMC05XSokIF1dIHx8IGRpZSAiYXR0ZW1wdCBpcyBpbnZhbGlkIgorIyBBIHN5c3RlbWQgc2xpY2UgbWF5IHJldGFpbiBjb3VudGVycyBhZnRlciBpdHMgbGFzdCBEb2NrZXIgY2hpbGQgZGlzYXBwZWFycy4KKyMgSW5jbHVkZSB0aGUgYXV0aGVudGljYXRlZCByZXRyeSBpZGVudGl0eSB3aXRob3V0IHRydW5jYXRpbmcgc3RhZ2Ugc3VmZml4ZXMuCithdHRlbXB0X3Rva2VuPSIkKHByaW50ZiAnJXM6JXMnICIkam9iX2lkIiAiJGF0dGVtcHQiIHwgc2hhMjU2c3VtIHwgYXdrICd7cHJpbnQgc3Vic3RyKCQxLCAxLCAzMil9JykiCitbWyAiJGNvbXBldGl0aW9uX2lkIiA9fiBeW0EtWmEtejAtOS5fLV17MSwxMjh9JCBdXSB8fCBkaWUgImNvbXBldGl0aW9uIGlkIGlzIGludmFsaWQiCitbWyAiJGJhc2Vfc2hhIiA9fiBeWzAtOWEtZl17NDB9JCBdXSB8fCBkaWUgImJhc2UgU0hBIGlzIGludmFsaWQiCitbWyAiJGJhc2VfaW1hZ2UiID1+IF5zaGEyNTY6WzAtOWEtZl17NjR9JCBdXSB8fCBkaWUgImJhc2UgaW1hZ2UgaWQgaXMgaW52YWxpZCIKK1tbICIkYXBpX2NvbnRyb2xfaW1hZ2UiID1+IF5zaGEyNTY6WzAtOWEtZl17NjR9JCBdXSB8fCBkaWUgIkFQSSBjb250cm9sIGltYWdlIGlkIGlzIGludmFsaWQiCitbWyAiJHdvcmtlcl9jb250cm9sX2ltYWdlIiA9fiBec2hhMjU2OlswLTlhLWZdezY0fSQgXV0gfHwgZGllICJ3b3JrZXIgY29udHJvbCBpbWFnZSBpZCBpcyBpbnZhbGlkIgorY2FzZSAiJGcyX3ZvbHVtZV9wb2xpY3k6JHNjb3Jlcl92ZXJzaW9uIiBpbgorICAgIG1pbmltdW0td29yay8xOnNpbS1sYXRlbmN5LXNjb3JlLzMpIDs7CisgICAgKikgZGllICJzY29yZXIgdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCBmcm96ZW4gZzIgdm9sdW1lIHBvbGljeSIgOzsKK2VzYWMKK1tbICIkcHJvdmlkZXJzX3NoYTI1NiIgPX4gXlswLTlhLWZdezY0fSQgXV0gfHwgZGllICJwcm92aWRlcnMgU0hBLTI1NiBpcyBpbnZhbGlkIgorW1sgIiRwYXRjaF9zaGEyNTYiID1+IF5bMC05YS1mXXs2NH0kIF1dIHx8IGRpZSAicGF0Y2ggU0hBLTI1NiBpcyBpbnZhbGlkIgorW1sgIiRjb25maWdfbG9jYWxfc2hhMjU2IiA9fiBeWzAtOWEtZl17NjR9JCBdXSB8fCBkaWUgImNvbmZpZy9sb2NhbCBTSEEtMjU2IGlzIGludmFsaWQiCitbWyAiJHZhdWx0X2xvY2FsX3NoYTI1NiIgPX4gXlswLTlhLWZdezY0fSQgXV0gfHwgZGllICJ2YXVsdC9sb2NhbCBTSEEtMjU2IGlzIGludmFsaWQiCitbWyAiJHJlcGxpY2F0ZXMiID1+IF5bMTM1NzldJCBdXSB8fCBkaWUgInJlcGxpY2F0ZSBjb3VudCBtdXN0IGJlIG9kZCBhbmQgaW4gMS4uOSIKK1sgIiRyZXF1ZXN0X2FydGlmYWN0X2RpciIgPSAiJGFydGlmYWN0X2RpciIgXSB8fCBkaWUgInJlcXVlc3QgYXJ0aWZhY3QgZGlyZWN0b3J5IGlkZW50aXR5IG1pc21hdGNoIgorWyAiJHBhdGNoX3BhdGgiID0gIiRhcnRpZmFjdF9kaXIvY2Fub25pY2FsLnBhdGNoIiBdIHx8IGRpZSAicGF0Y2ggcGF0aCBpZGVudGl0eSBtaXNtYXRjaCIKK1sgLWYgIiRwYXRjaF9wYXRoIiBdICYmIFsgISAtTCAiJHBhdGNoX3BhdGgiIF0gfHwgZGllICJjYW5vbmljYWwgcGF0Y2ggaXMgbWlzc2luZyBvciB1bnNhZmUiCitbICIkKHNoYTI1Nl9maWxlICIkcGF0Y2hfcGF0aCIpIiA9ICIkcGF0Y2hfc2hhMjU2IiBdIHx8IGRpZSAiY2Fub25pY2FsIHBhdGNoIGhhc2ggbWlzbWF0Y2giCitbIC1mICIkcHJvdmlkZXJzX3BhdGgiIF0gJiYgWyAhIC1MICIkcHJvdmlkZXJzX3BhdGgiIF0gfHwgZGllICJwcm92aWRlcnMgZmlsZSBpcyBtaXNzaW5nIG9yIHVuc2FmZSIKK1sgIiQoZmlsZV9ieXRlcyAiJHByb3ZpZGVyc19wYXRoIikiIC1sZSAiJE1BWF9QUk9WSURFUlNfQllURVMiIF0gfHwgZGllICJwcm92aWRlcnMgZmlsZSBpcyBvdmVyc2l6ZWQiCitbICIkKHNoYTI1Nl9maWxlICIkcHJvdmlkZXJzX3BhdGgiKSIgPSAiJHByb3ZpZGVyc19zaGEyNTYiIF0gfHwgZGllICJwcm92aWRlcnMgZmlsZSBoYXNoIG1pc21hdGNoIgoraWYgWyAtbiAiJHJvdW5kX2Jhc2VsaW5lX3BhdGgiIF0gfHwgWyAtbiAiJHJvdW5kX2Jhc2VsaW5lX3NoYTI1NiIgXTsgdGhlbgorICAgIFsgIiRyb3VuZF9iYXNlbGluZV9wYXRoIiA9ICIkYXJ0aWZhY3RfZGlyL3JvdW5kLWJhc2VsaW5lLmpzb24iIF0gfHwKKyAgICAgICAgZGllICJyb3VuZCBiYXNlbGluZSBwYXRoIGlkZW50aXR5IG1pc21hdGNoIgorICAgIFtbICIkcm91bmRfYmFzZWxpbmVfc2hhMjU2IiA9fiBeWzAtOWEtZl17NjR9JCBdXSB8fCBkaWUgInJvdW5kIGJhc2VsaW5lIFNIQS0yNTYgaXMgaW52YWxpZCIKKyAgICBbIC1mICIkcm91bmRfYmFzZWxpbmVfcGF0aCIgXSAmJiBbICEgLUwgIiRyb3VuZF9iYXNlbGluZV9wYXRoIiBdIHx8CisgICAgICAgIGRpZSAicm91bmQgYmFzZWxpbmUgaXMgbWlzc2luZyBvciB1bnNhZmUiCisgICAgWyAiJChmaWxlX2J5dGVzICIkcm91bmRfYmFzZWxpbmVfcGF0aCIpIiAtbGUgIiRNQVhfUkVRVUVTVF9CWVRFUyIgXSB8fCBkaWUgInJvdW5kIGJhc2VsaW5lIGlzIG92ZXJzaXplZCIKKyAgICBbICIkKHNoYTI1Nl9maWxlICIkcm91bmRfYmFzZWxpbmVfcGF0aCIpIiA9ICIkcm91bmRfYmFzZWxpbmVfc2hhMjU2IiBdIHx8CisgICAgICAgIGRpZSAicm91bmQgYmFzZWxpbmUgaGFzaCBtaXNtYXRjaCIKK2ZpCitqcSAtZSAnLnJvdW5kX3NlZWRfaGV4IHwgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXlswLTlhLWZdezY0fSQiKScgIiRyZXF1ZXN0X3BhdGgiID4vZGV2L251bGwgfHwKKyAgICBkaWUgImhpZGRlbiByb3VuZCBzZWVkIGlzIG1hbGZvcm1lZCIKKworZm9yIGxvY2FsX2RpcmVjdG9yeSBpbiAiJGNvbmZpZ19sb2NhbF9kaXJlY3RvcnkiICIkdmF1bHRfbG9jYWxfZGlyZWN0b3J5IjsgZG8KKyAgICBbWyAiJGxvY2FsX2RpcmVjdG9yeSIgPSAvKiBdXSB8fCBkaWUgImRpcmVjdCBsb2NhbCBtb3VudCBwYXRoIG11c3QgYmUgYWJzb2x1dGUiCisgICAgWyAiJGxvY2FsX2RpcmVjdG9yeSIgPSAiJChyZWFscGF0aCAtZSAiJGxvY2FsX2RpcmVjdG9yeSIpIiBdIHx8CisgICAgICAgIGRpZSAiZGlyZWN0IGxvY2FsIG1vdW50IHBhdGggaXMgbm90IGNhbm9uaWNhbCIKK2RvbmUKK1sgIiR7Y29uZmlnX2xvY2FsX2RpcmVjdG9yeSMjKi99IiA9IGxvY2FsIF0gJiYKKyAgICBbICIke2NvbmZpZ19sb2NhbF9kaXJlY3RvcnklLyp9IiAhPSAiJGNvbmZpZ19sb2NhbF9kaXJlY3RvcnkiIF0gJiYKKyAgICBbICIke2NvbmZpZ19sb2NhbF9kaXJlY3RvcnklLyp9IiA9ICIke2NvbmZpZ19sb2NhbF9kaXJlY3RvcnklL2NvbmZpZy9sb2NhbH0vY29uZmlnIiBdIHx8CisgICAgZGllICJjb25maWcgbW91bnQgaXMgbm90IHRoZSBleGFjdCBjb25maWcvbG9jYWwgbGVhZiIKK1sgIiR7dmF1bHRfbG9jYWxfZGlyZWN0b3J5IyMqL30iID0gbG9jYWwgXSAmJgorICAgIFsgIiR7dmF1bHRfbG9jYWxfZGlyZWN0b3J5JS8qfSIgIT0gIiR2YXVsdF9sb2NhbF9kaXJlY3RvcnkiIF0gJiYKKyAgICBbICIke3ZhdWx0X2xvY2FsX2RpcmVjdG9yeSUvKn0iID0gIiR7dmF1bHRfbG9jYWxfZGlyZWN0b3J5JS92YXVsdC9sb2NhbH0vdmF1bHQiIF0gfHwKKyAgICBkaWUgInZhdWx0IG1vdW50IGlzIG5vdCB0aGUgZXhhY3QgdmF1bHQvbG9jYWwgbGVhZiIKK2F1dGhlbnRpY2F0ZV9sb2NhbF9tb3VudHMKKworcmVzb3VyY2VfYm91bmRhcnlfanNvbj0iJCgkUkVTT1VSQ0VfQk9VTkRBUlkpIiB8fCBkaWUgImhvc3QgcmVzb3VyY2UgYm91bmRhcnkgaXMgaW52YWxpZCIKK2pxIC1lIFwKKyAgICAtLWFyZyBydW5uZXJfbWVtb3J5X2xpbWl0ICIkUlVOTkVSX01FTU9SWV9MSU1JVCIgXAorICAgIC0tYXJnanNvbiBydW5uZXJfbWVtb3J5X2J5dGVzICIkUlVOTkVSX01FTU9SWV9CWVRFUyIgXAorICAgIC0tYXJnanNvbiBwb3N0Z3Jlc19tZW1vcnlfYnl0ZXMgIiRQT1NUR1JFU19NRU1PUllfQllURVMiIFwKKyAgICAtLWFyZ2pzb24gcmVkaXNfbWVtb3J5X2J5dGVzICIkUkVESVNfTUVNT1JZX0JZVEVTIiBcCisgICAgLS1hcmdqc29uIGFjdGl2ZV9tZW1vcnlfYnl0ZXMgIiRBQ1RJVkVfRVZBTFVBVElPTl9NRU1PUllfQllURVMiIFwKKyAgICAtLWFyZ2pzb24gZXZpZGVuY2VfbWVtb3J5X2J5dGVzICIkRVZJREVOQ0VfV09SS19CWVRFUyIgXAorICAgIC0tYXJnanNvbiByZXNlcnZlX2J5dGVzICIkTUlOSU1VTV9NQU5BR0VNRU5UX01FTU9SWV9SRVNFUlZFX0JZVEVTIiBcCisgICAgJy5zY2hlbWEgPT0gMSBhbmQgLmtpbmQgPT0gInNpbS1sYXRlbmN5LXJlc291cmNlLWJvdW5kYXJ5IiBhbmQKKyAgICAgLmV2YWx1YXRpb25fcGh5c2ljYWxfY29yZV9jb3VudCA9PSAxMCBhbmQKKyAgICAgLm1hbmFnZW1lbnRfcGh5c2ljYWxfY29yZV9jb3VudCA9PSAyIGFuZAorICAgICAuZXZhbHVhdGlvbl9jcHVzZXQgIT0gIiIgYW5kIC5tYW5hZ2VtZW50X2NwdXNldCAhPSAiIiBhbmQKKyAgICAgLmRpc2pvaW50X2NwdV9zZXRzID09IHRydWUgYW5kIC5tZW1vcnlfY2FwYWNpdHlfcGFzc2VkID09IHRydWUgYW5kCisgICAgIC5ydW5uZXJfbWVtb3J5X2xpbWl0ID09ICRydW5uZXJfbWVtb3J5X2xpbWl0IGFuZAorICAgICAucnVubmVyX21lbW9yeV9saW1pdF9ieXRlcyA9PSAkcnVubmVyX21lbW9yeV9ieXRlcyBhbmQKKyAgICAgLnBvc3RncmVzX21lbW9yeV9saW1pdF9ieXRlcyA9PSAkcG9zdGdyZXNfbWVtb3J5X2J5dGVzIGFuZAorICAgICAucmVkaXNfbWVtb3J5X2xpbWl0X2J5dGVzID09ICRyZWRpc19tZW1vcnlfYnl0ZXMgYW5kCisgICAgIC5hY3RpdmVfbWVtb3J5X2xpbWl0X2J5dGVzID09ICRhY3RpdmVfbWVtb3J5X2J5dGVzIGFuZAorICAgICAuZXZpZGVuY2VfbWVtb3J5X2xpbWl0X2J5dGVzID09ICRldmlkZW5jZV9tZW1vcnlfYnl0ZXMgYW5kCisgICAgIC50b3RhbF9ldmFsdWF0aW9uX21lbW9yeV9saW1pdF9ieXRlcyA9PSAoJGFjdGl2ZV9tZW1vcnlfYnl0ZXMgKyAkZXZpZGVuY2VfbWVtb3J5X2J5dGVzKSBhbmQKKyAgICAgLmNhcGFjaXR5X3Jlc2VydmVfYnl0ZXMgPT0gKC5ob3N0X21lbW9yeV9ieXRlcyAtIC50b3RhbF9ldmFsdWF0aW9uX21lbW9yeV9saW1pdF9ieXRlcykgYW5kCisgICAgIC5taW5pbXVtX21hbmFnZW1lbnRfbWVtb3J5X3Jlc2VydmVfYnl0ZXMgPT0gJHJlc2VydmVfYnl0ZXMgYW5kCisgICAgIC5jYXBhY2l0eV9yZXNlcnZlX2J5dGVzID49ICRyZXNlcnZlX2J5dGVzJyBcCisgICAgPDw8IiRyZXNvdXJjZV9ib3VuZGFyeV9qc29uIiA+L2Rldi9udWxsIHx8IGRpZSAicmVzb3VyY2UgYm91bmRhcnkgZG9lcyBub3QgbWF0Y2ggdGhlIGZyb3plbiBldmFsdWF0b3IgcG9saWN5IgorY3B1c2V0PSIkKGpxIC1lciAnLmV2YWx1YXRpb25fY3B1c2V0JyA8PDwiJHJlc291cmNlX2JvdW5kYXJ5X2pzb24iKSIKK21hbmFnZW1lbnRfY3B1c2V0PSIkKGpxIC1lciAnLm1hbmFnZW1lbnRfY3B1c2V0JyA8PDwiJHJlc291cmNlX2JvdW5kYXJ5X2pzb24iKSIKK2V2YWx1YXRpb25fY3B1X2NvdW50PSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcGh5c2ljYWxfY29yZV9jb3VudCcgPDw8IiRyZXNvdXJjZV9ib3VuZGFyeV9qc29uIikiCitleHBlY3RlZF9tYW5hZ2VtZW50X2FmZmluaXR5PSIkKHRhc2tzZXQgLWMgIiRtYW5hZ2VtZW50X2NwdXNldCIgYXdrIC1GOiBcCisgICAgJyQxID09ICJDcHVzX2FsbG93ZWRfbGlzdCIge2dzdWIoL1tbOnNwYWNlOl1dLywgIiIsICQyKTsgcHJpbnQgJDJ9JyAvcHJvYy9zZWxmL3N0YXR1cykiCitpZiBbICIke0NPTVBFVElUSU9OX01BTkFHRU1FTlRfQ1BVU0VUX0FQUExJRUQ6LX0iICE9ICIkbWFuYWdlbWVudF9jcHVzZXQiIF07IHRoZW4KKyAgICBleGVjIGVudiBDT01QRVRJVElPTl9NQU5BR0VNRU5UX0NQVVNFVF9BUFBMSUVEPSIkbWFuYWdlbWVudF9jcHVzZXQiIFwKKyAgICAgICAgdGFza3NldCAtYyAiJG1hbmFnZW1lbnRfY3B1c2V0IiAiJChyZWFscGF0aCAtZSAiJDAiKSIgXAorICAgICAgICAtLXJlcXVlc3QgIiRyZXF1ZXN0X3BhdGgiIC0tcmVzdWx0ICIkcmVzdWx0X3BhdGgiCitmaQorYWN0dWFsX21hbmFnZW1lbnRfYWZmaW5pdHk9IiQoYXdrIC1GOiBcCisgICAgJyQxID09ICJDcHVzX2FsbG93ZWRfbGlzdCIge2dzdWIoL1tbOnNwYWNlOl1dLywgIiIsICQyKTsgcHJpbnQgJDJ9JyAvcHJvYy9zZWxmL3N0YXR1cykiCitbICIkYWN0dWFsX21hbmFnZW1lbnRfYWZmaW5pdHkiID0gIiRleHBlY3RlZF9tYW5hZ2VtZW50X2FmZmluaXR5IiBdIHx8CisgICAgZGllICJldmFsdWF0b3Igd29ya2VyIGlzIG5vdCBjb25maW5lZCB0byB0aGUgZGVkaWNhdGVkIG1hbmFnZW1lbnQgQ1BVcyIKKword29ya19kaXI9IiRhcnRpZmFjdF9kaXIvLmV2aWRlbmNlLXJ1bnRpbWUiCitbICEgLWUgIiR3b3JrX2RpciIgXSB8fCBkaWUgInJ1bnRpbWUgZXZpZGVuY2UgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzIgoraW5zdGFsbCAtZCAtbSAwNzAwICIkd29ya19kaXIiCitzdWRvIC1uIG1vdW50IC10IHRtcGZzIFwKKyAgICAtbyAic2l6ZT0kRVZJREVOQ0VfV09SS19MSU1JVCxtb2RlPTA3MDAsdWlkPSR3b3JrZXJfdWlkLGdpZD0kd29ya2VyX2dpZCxub3N1aWQsbm9kZXYsbm9leGVjIiBcCisgICAgInVybmV0d29yay1ldmlkZW5jZS0ke2pvYl9pZC8vLS99LSRhdHRlbXB0IiAiJHdvcmtfZGlyIgorYWN0aXZlX3dvcmtfbW91bnQ9IiR3b3JrX2RpciIKK1sgIiQoc3RhdCAtZiAtYyAnJVQnICIkd29ya19kaXIiKSIgPSB0bXBmcyBdIHx8IGRpZSAicnVudGltZSBldmlkZW5jZSBmaWxlc3lzdGVtIGlzIG5vdCB0bXBmcyIKK3dvcmtfY2FwYWNpdHk9IiQoZGYgLUIxIC0tb3V0cHV0PXNpemUgIiR3b3JrX2RpciIgfCBhd2sgJ05SID09IDIge3ByaW50ICQxfScpIgorWyAiJHdvcmtfY2FwYWNpdHkiID0gIiRFVklERU5DRV9XT1JLX0JZVEVTIiBdIHx8IGRpZSAicnVudGltZSBldmlkZW5jZSBieXRlIGxpbWl0IGlzIG5vdCBmcm96ZW4iCit3b3JrX21vdW50X29wdGlvbnM9IiQoZmluZG1udCAtbiAtbyBPUFRJT05TIC0tdGFyZ2V0ICIkd29ya19kaXIiKSIKK2ZvciByZXF1aXJlZF9vcHRpb24gaW4gbm9zdWlkIG5vZGV2IG5vZXhlYzsgZG8KKyAgICBjYXNlICIsJHdvcmtfbW91bnRfb3B0aW9ucywiIGluCisgICAgICAgICoiLCRyZXF1aXJlZF9vcHRpb24sIiopIDs7CisgICAgICAgICopIGRpZSAicnVudGltZSBldmlkZW5jZSBtb3VudCBpcyBtaXNzaW5nICRyZXF1aXJlZF9vcHRpb24iIDs7CisgICAgZXNhYworZG9uZQoraW5zdGFsbCAtZCAtbSAwNzAwICIkd29ya19kaXIvaW5wdXQiICIkd29ya19kaXIvcnVucyIgXAorICAgICIkd29ya19kaXIvc2NvcmVyLWlucHV0IiAiJHdvcmtfZGlyL3Njb3JlLW91dHB1dCIKK2pxIC1uIC0tYXJnIGZpbGVzeXN0ZW0gdG1wZnMgLS1hcmcgbW91bnRfb3B0aW9ucyAiJHdvcmtfbW91bnRfb3B0aW9ucyIgXAorICAgIC0tYXJnanNvbiBsaW1pdF9ieXRlcyAiJEVWSURFTkNFX1dPUktfQllURVMiIFwKKyAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LWV2aWRlbmNlLXF1b3RhIixmaWxlc3lzdGVtOiRmaWxlc3lzdGVtLAorICAgICAgbW91bnRfb3B0aW9uczokbW91bnRfb3B0aW9ucyxsaW1pdF9ieXRlczokbGltaXRfYnl0ZXMsaGFyZF9saW1pdDp0cnVlfScgXAorICAgID4gIiR3b3JrX2Rpci9ldmlkZW5jZS1xdW90YS5qc29uIgorY2htb2QgMDQwMCAiJHdvcmtfZGlyL2V2aWRlbmNlLXF1b3RhLmpzb24iCittYWtlX2xvY2FsX21vdW50X2V2aWRlbmNlKCkgeworICAgIGpxIC1uIC0tYXJnIGNvbmZpZ19sb2NhbF9zaGEyNTYgIiRjb25maWdfbG9jYWxfc2hhMjU2IiBcCisgICAgICAgIC0tYXJnIHZhdWx0X2xvY2FsX3NoYTI1NiAiJHZhdWx0X2xvY2FsX3NoYTI1NiIgXAorICAgICAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LWxvY2FsLW1vdW50cyIsZGlyZWN0X2JpbmQ6dHJ1ZSwKKyAgICAgICAgICByZWFkX29ubHk6dHJ1ZSxwYXJlbnRfbW91bnRzOmZhbHNlLGFsbF9tYWluX3NpdGVfYWJzZW50OnRydWUsCisgICAgICAgICAgY29uZmlnOnt0YXJnZXQ6Ii9ydW50aW1lL2NvbmZpZy9sb2NhbCIsc2hhMjU2OiRjb25maWdfbG9jYWxfc2hhMjU2fSwKKyAgICAgICAgICB2YXVsdDp7dGFyZ2V0OiIvcnVudGltZS92YXVsdC9sb2NhbCIsc2hhMjU2OiR2YXVsdF9sb2NhbF9zaGEyNTZ9fScgXAorICAgICAgICA+ICIkd29ya19kaXIvbG9jYWwtbW91bnRzLmpzb24iCisgICAgY2htb2QgMDQwMCAiJHdvcmtfZGlyL2xvY2FsLW1vdW50cy5qc29uIgorfQorbWFrZV9sb2NhbF9tb3VudF9ldmlkZW5jZQorcHJpbnRmICclc1xuJyAiJHJlc291cmNlX2JvdW5kYXJ5X2pzb24iID4gIiR3b3JrX2Rpci9yZXNvdXJjZS1ib3VuZGFyeS5qc29uIgorY2htb2QgMDQwMCAiJHdvcmtfZGlyL3Jlc291cmNlLWJvdW5kYXJ5Lmpzb24iCitwb2xpY3lfcGF0aD0iJHdvcmtfZGlyL3BvbGljeS5qc29uIgoranEgLVMgJy5wYXRjaF9wb2xpY3knICIkcmVxdWVzdF9wYXRoIiA+ICIkcG9saWN5X3BhdGgiCitjaG1vZCAwNDAwICIkcG9saWN5X3BhdGgiCitwb2xpY3lfc2hhMjU2PSIkKHNoYTI1Nl9maWxlICIkcG9saWN5X3BhdGgiKSIKK3BhdGNoX3BhdGhfYmFzZT0iJChqcSAtZXIgJy5wYXRoX2Jhc2UgLy8gIiInICIkcG9saWN5X3BhdGgiKSIKK2Nhc2UgIiRwYXRjaF9wYXRoX2Jhc2UiIGluCisgICAgJyd8bW9ub19yb290X3YxKSA7OworICAgICopIGRpZSAidW5zdXBwb3J0ZWQgZnJvemVuIHBhdGNoIHBhdGggYmFzZSIgOzsKK2VzYWMKK2J1aWxkZXJfaWRlbnRpdHk9IiQoc3VibWlzc2lvbl9idWlsZGVyX2lkZW50aXR5KSIgfHwgZGllICJ0cnVzdGVkIGJ1aWxkZXIgcmVsZWFzZSBpZGVudGl0eSBpcyB1bmF2YWlsYWJsZSIKK2J1aWxkZXJfc2hhMjU2PSIkKGpxIC1lciAnLmJ1aWxkZXJfc2hhMjU2IHwgc2VsZWN0KHRlc3QoIl5bMC05YS1mXXs2NH0kIikpJyA8PDwiJGJ1aWxkZXJfaWRlbnRpdHkiKSIKK3BhdGNoX3ZhbGlkYXRvcl9zaGEyNTY9IiQoanEgLWVyICcucGF0Y2hfdmFsaWRhdG9yX3NoYTI1NiB8IHNlbGVjdCh0ZXN0KCJeWzAtOWEtZl17NjR9JCIpKScgPDw8IiRidWlsZGVyX2lkZW50aXR5IikiCitwcmludGYgJyVzXG4nICIkYnVpbGRlcl9pZGVudGl0eSIgPiAiJHdvcmtfZGlyL2J1aWxkZXItaWRlbnRpdHkuanNvbiIKK2NobW9kIDA0MDAgIiR3b3JrX2Rpci9idWlsZGVyLWlkZW50aXR5Lmpzb24iCitiYXNlX2ltYWdlX2lkPSIkKHN1ZG8gLW4gZG9ja2VyIGltYWdlIGluc3BlY3QgLS1mb3JtYXQgJ3t7LklkfX0nICIkYmFzZV9pbWFnZSIpIiB8fCBkaWUgImJhc2UgaW1hZ2UgaXMgdW5hdmFpbGFibGUgb2ZmbGluZSIKK1sgIiRiYXNlX2ltYWdlX2lkIiA9ICIkYmFzZV9pbWFnZSIgXSB8fCBkaWUgImJhc2UgaW1hZ2UgaWQgZG9lcyBub3QgbWF0Y2ggZnJvemVuIGRpZ2VzdCIKK2RvY2tlcl9pZF9tYXBfanNvbj0iJCgkRE9DS0VSX0lEX01BUCAtLWltYWdlICIkYmFzZV9pbWFnZV9pZCIgLS11aWQgNjU1MzIgLS1naWQgNjU1MzIpIiB8fAorICAgIGRpZSAiY291bGQgbm90IHJlc29sdmUgdGhlIGxpdmUgRG9ja2VyIHVzZXItbmFtZXNwYWNlIG1hcCIKK2pxIC1lIC0tYXJnIGltYWdlX2lkICIkYmFzZV9pbWFnZV9pZCIgXAorICAgICcuc2NoZW1hID09IDEgYW5kIC5raW5kID09ICJzaW0tbGF0ZW5jeS1kb2NrZXItaWQtbWFwIiBhbmQKKyAgICAgLmltYWdlX2lkID09ICRpbWFnZV9pZCBhbmQgLmNvbnRhaW5lcl91aWQgPT0gNjU1MzIgYW5kIC5jb250YWluZXJfZ2lkID09IDY1NTMyIGFuZAorICAgICAoLmhvc3RfdWlkIHwgdHlwZSA9PSAibnVtYmVyIiBhbmQgLiA+PSAwKSBhbmQKKyAgICAgKC5ob3N0X2dpZCB8IHR5cGUgPT0gIm51bWJlciIgYW5kIC4gPj0gMCkgYW5kCisgICAgICgucm9vdF9ob3N0X3VpZCB8IHR5cGUgPT0gIm51bWJlciIgYW5kIC4gPj0gMCkgYW5kCisgICAgICgucm9vdF9ob3N0X2dpZCB8IHR5cGUgPT0gIm51bWJlciIgYW5kIC4gPj0gMCkgYW5kCisgICAgICgudWlkX21hcF9zaGEyNTYgfCB0ZXN0KCJeWzAtOWEtZl17NjR9JCIpKSBhbmQKKyAgICAgKC5naWRfbWFwX3NoYTI1NiB8IHRlc3QoIl5bMC05YS1mXXs2NH0kIikpIGFuZAorICAgICAoLnJlbWFwcGVkIHwgdHlwZSA9PSAiYm9vbGVhbiIpIGFuZCAoLmRhZW1vbl9zZWN1cml0eV9vcHRpb25zIHwgdHlwZSA9PSAiYXJyYXkiKScgXAorICAgIDw8PCIkZG9ja2VyX2lkX21hcF9qc29uIiA+L2Rldi9udWxsIHx8IGRpZSAiRG9ja2VyIGlkLW1hcCBldmlkZW5jZSBpcyBpbnZhbGlkIgorY29udGFpbmVyX2hvc3RfdWlkPSIkKGpxIC1lciAnLmhvc3RfdWlkJyA8PDwiJGRvY2tlcl9pZF9tYXBfanNvbiIpIgorY29udGFpbmVyX2hvc3RfZ2lkPSIkKGpxIC1lciAnLmhvc3RfZ2lkJyA8PDwiJGRvY2tlcl9pZF9tYXBfanNvbiIpIgorcHJpbnRmICclc1xuJyAiJGRvY2tlcl9pZF9tYXBfanNvbiIgPiAiJHdvcmtfZGlyL2RvY2tlci1pZC1tYXAuanNvbiIKK2NobW9kIDA0MDAgIiR3b3JrX2Rpci9kb2NrZXItaWQtbWFwLmpzb24iCitzdWRvIC1uIGluc3RhbGwgLW8gIiRjb250YWluZXJfaG9zdF91aWQiIC1nICIkY29udGFpbmVyX2hvc3RfZ2lkIiAtbSAwNDAwIFwKKyAgICAiJHByb3ZpZGVyc19wYXRoIiAiJHdvcmtfZGlyL2lucHV0L3Byb3ZpZGVycy55bWwiCitzdWRvIC1uIGluc3RhbGwgLW8gIiRjb250YWluZXJfaG9zdF91aWQiIC1nICIkY29udGFpbmVyX2hvc3RfZ2lkIiAtbSAwNDAwIFwKKyAgICAiJHByb3ZpZGVyc19wYXRoIiAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dC9wcm92aWRlcnMueW1sIgorc3VkbyAtbiBjaG93biAiJGNvbnRhaW5lcl9ob3N0X3VpZDokY29udGFpbmVyX2hvc3RfZ2lkIiAiJHdvcmtfZGlyL2lucHV0IiAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dCIKK3N1ZG8gLW4gY2htb2QgMDUwMCAiJHdvcmtfZGlyL2lucHV0IiAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dCIKKworYmFzZV9idWlsZF9yZWY9InVybmV0d29yay9zaW0tbGF0ZW5jeS1ldmFsdWF0b3ItYmFzZS1pZDoke2Jhc2VfaW1hZ2VfaWQjc2hhMjU2On0iCitpZiBzdWRvIC1uIGRvY2tlciBpbWFnZSBpbnNwZWN0ICIkYmFzZV9idWlsZF9yZWYiID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgIFsgIiQoc3VkbyAtbiBkb2NrZXIgaW1hZ2UgaW5zcGVjdCAtLWZvcm1hdCAne3suSWR9fScgIiRiYXNlX2J1aWxkX3JlZiIpIiA9ICIkYmFzZV9pbWFnZV9pZCIgXSB8fAorICAgICAgICBkaWUgImRhZW1vbi1sb2NhbCBiYXNlIGFsaWFzIHBvaW50cyBhdCB0aGUgd3JvbmcgaW1hZ2UiCitlbHNlCisgICAgc3VkbyAtbiBkb2NrZXIgaW1hZ2UgdGFnICIkYmFzZV9pbWFnZV9pZCIgIiRiYXNlX2J1aWxkX3JlZiIKK2ZpCitpbWFnZV9rZXk9IiQocHJpbnRmICclc1wwMDAlc1wwMDAlc1wwMDAlcycgXAorICAgICIkYmFzZV9pbWFnZV9pZCIgIiRwYXRjaF9zaGEyNTYiICIkcG9saWN5X3NoYTI1NiIgIiRidWlsZGVyX3NoYTI1NiIgfCBzaGEyNTZzdW0gfCBhd2sgJ3twcmludCAkMX0nKSIKK2Jhc2VfaWRlbnRpdHk9IiQoc3VkbyAtbiBkb2NrZXIgcnVuIC0tcm0gLS1uZXR3b3JrIG5vbmUgLS1yZWFkLW9ubHkgLS1jYXAtZHJvcCBBTEwgXAorICAgIC0tc2VjdXJpdHktb3B0IG5vLW5ldy1wcml2aWxlZ2VzOnRydWUgIiRiYXNlX2ltYWdlX2lkIiBpZGVudGl0eSkiCitqcSAtZSAtLWFyZyBiYXNlX3NoYSAiJGJhc2Vfc2hhIiAtLWFyZyBlbXB0eV9wYXRjaCAiJEVNUFRZX1BBVENIX1NIQTI1NiIgLS1hcmdqc29uIHNvdXJjZV9lcG9jaCAiJHNvdXJjZV9lcG9jaCIgXAorICAgICcuc2NoZW1hID09IDEgYW5kIC5pbWFnZV9raW5kID09ICJldmFsdWF0b3ItYmFzZSIgYW5kCisgICAgIC5iYXNlX3NoYSA9PSAkYmFzZV9zaGEgYW5kIC5idWlsZF9zaGEgPT0gJGJhc2Vfc2hhIGFuZAorICAgICAuc291cmNlX2Vwb2NoID09ICRzb3VyY2VfZXBvY2ggYW5kCisgICAgIC5wYXRjaF9zaGEyNTYgPT0gJGVtcHR5X3BhdGNoIGFuZCAoLnNpbXVsYXRvcl9zaGEyNTYgfCB0ZXN0KCJeWzAtOWEtZl17NjR9JCIpKScgXAorICAgIDw8PCIkYmFzZV9pZGVudGl0eSIgPi9kZXYvbnVsbCB8fCBkaWUgImJhc2UgaW1hZ2UgaWRlbnRpdHkgaXMgaW52YWxpZCIKK2Jhc2Vfc2ltdWxhdG9yX3NoYTI1Nj0iJChqcSAtZXIgJy5zaW11bGF0b3Jfc2hhMjU2JyA8PDwiJGJhc2VfaWRlbnRpdHkiKSIKK3BvbGljeV9zY29yZXJfc2hhMjU2PSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnNjb3Jlcl9zaGEyNTYnICIkcmVxdWVzdF9wYXRoIikiCitwb2xpY3lfc2ltdWxhdG9yX3NoYTI1Nj0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5zaW11bGF0b3Jfc2hhMjU2JyAiJHJlcXVlc3RfcGF0aCIpIgorWyAiJHBvbGljeV9zY29yZXJfc2hhMjU2IiA9ICIkYmFzZV9zaW11bGF0b3Jfc2hhMjU2IiBdIHx8IGRpZSAiZnJvemVuIHNjb3JlciBkaWdlc3QgZG9lcyBub3QgbWF0Y2ggcHJpc3RpbmUgaW1hZ2UiCitbICIkcG9saWN5X3NpbXVsYXRvcl9zaGEyNTYiID0gIiRiYXNlX3NpbXVsYXRvcl9zaGEyNTYiIF0gfHwgZGllICJmcm96ZW4gc2ltdWxhdG9yIGRpZ2VzdCBkb2VzIG5vdCBtYXRjaCBwcmlzdGluZSBpbWFnZSIKK2lmIFsgLW4gIiRnMl92b2x1bWVfcG9saWN5IiBdOyB0aGVuCisgICAgaW5zdHJ1bWVudF9wb2xpY3k9IiQoc3VkbyAtbiBkb2NrZXIgcnVuIC0tcm0gLS1uZXR3b3JrIG5vbmUgLS1yZWFkLW9ubHkgLS1jYXAtZHJvcCBBTEwgXAorICAgICAgICAtLXNlY3VyaXR5LW9wdCBuby1uZXctcHJpdmlsZWdlczp0cnVlIC0tY3B1c2V0LWNwdXMgIiRtYW5hZ2VtZW50X2NwdXNldCIgXAorICAgICAgICAtLW1lbW9yeSAiJFNDT1JFUl9NRU1PUllfTElNSVQiIC0tbWVtb3J5LXN3YXAgIiRTQ09SRVJfTUVNT1JZX0xJTUlUIiAtLXBpZHMtbGltaXQgIiRTQ09SRVJfUElEU19MSU1JVCIgXAorICAgICAgICAtLWVudHJ5cG9pbnQgL29wdC91cm5ldHdvcmsvYmluL3NpbS1sYXRlbmN5ICIkYmFzZV9pbWFnZV9pZCIgXAorICAgICAgICBzY29yZS1wb2xpY3kgLS1nMi12b2x1bWUtcG9saWN5ICIkZzJfdm9sdW1lX3BvbGljeSIgIiR7Y292ZXJhZ2VfcG9saWN5X2FyZ3NbQF19IikiIHx8IGRpZSAicHJpc3RpbmUgaW1hZ2UgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBmcm96ZW4gc2NvcmluZyBwb2xpY3kiCisgICAganEgLWUgLS1hcmcgcG9saWN5ICIkZzJfdm9sdW1lX3BvbGljeSIgLS1hcmcgdmVyc2lvbiAiJHNjb3Jlcl92ZXJzaW9uIiAtLWFyZ2pzb24gY292ZXJhZ2UgIiR3b3JrX2NvdmVyYWdlX3BvbGljeSIgXAorICAgICAgICAnLnNjb3JlX3NjaGVtYSA9PSAxIGFuZCAuZzJfdm9sdW1lX3BvbGljeSA9PSAkcG9saWN5IGFuZCAuc2NvcmVyX3ZlcnNpb24gPT0gJHZlcnNpb24gYW5kICgud29ya19jb3ZlcmFnZV9wb2xpY3kgLy8gbnVsbCkgPT0gJGNvdmVyYWdlJyBcCisgICAgICAgIDw8PCIkaW5zdHJ1bWVudF9wb2xpY3kiID4vZGV2L251bGwgfHwgZGllICJwcmlzdGluZSBzY29yaW5nIHBvbGljeSBpZGVudGl0eSBtaXNtYXRjaCIKK2ZpCisKKyMgRXZlcnkgYXR0ZW1wdCBnZXRzIGluZGVwZW5kZW50IGJhc2VsaW5lIGFuZCBjYW5kaWRhdGUgc291cmNlIGNoZWNrb3V0cy4gVGhleQorIyBhcmUgY29waWVkIGZyb20gdGhlIGF1dGhlbnRpY2F0ZWQgYmFzZSBpbWFnZSBpbnRvIHRoaXMgYXR0ZW1wdCdzIGJvdW5kZWQKKyMgdG1wZnMsIG5ldmVyIGZyb20gdGhlIEFQSS93b3JrZXIgcmVwb3NpdG9yeSB3b3JrdHJlZXMuIFRoZSBwcmVwYXJlciBjcmVhdGVzCisjIGEgbG9jYWwgc2ltLWxhdGVuY3kgYnJhbmNoIGF0IGVhY2ggc291cmNlLWxvY2sgY29tbWl0OyBvbmx5IHRoZSBjYW5kaWRhdGUKKyMgY2hlY2tvdXQgaXMgc3Vic2VxdWVudGx5IHBhdGNoZWQgYnkgdGhlIHRydXN0ZWQgYnVpbGRlci4KK2FjdGl2ZV9zb3VyY2Vfcm9vdD0iJChta3RlbXAgLWQgIiR3b3JrX2Rpci9ldmFsdWF0aW9uLXNvdXJjZXMuWFhYWFhYWFgiKSIKK2Jhc2VsaW5lX3NvdXJjZV9yb290PSIkYWN0aXZlX3NvdXJjZV9yb290L2Jhc2VsaW5lIgorY2FuZGlkYXRlX3NvdXJjZV9yb290PSIkYWN0aXZlX3NvdXJjZV9yb290L2NhbmRpZGF0ZSIKK2Jhc2VsaW5lX3NvdXJjZV9pZGVudGl0eT0iJCgkUFJFUEFSRV9FVkFMVUFUSU9OX1NPVVJDRSBcCisgICAgIiR7c291cmNlX21vZGVfYXJnc1tAXX0iIC0tYmFzZS1pbWFnZSAiJGJhc2VfaW1hZ2VfaWQiIC0tZGVzdGluYXRpb24gIiRiYXNlbGluZV9zb3VyY2Vfcm9vdCIpIiB8fAorICAgIGRpZSAiY291bGQgbm90IHByZXBhcmUgdGhlIHRlbXBvcmFyeSBiYXNlbGluZSBzb3VyY2UgY2hlY2tvdXQiCitjYW5kaWRhdGVfc291cmNlX2lkZW50aXR5PSIkKCRQUkVQQVJFX0VWQUxVQVRJT05fU09VUkNFIFwKKyAgICAiJHtzb3VyY2VfbW9kZV9hcmdzW0BdfSIgLS1iYXNlLWltYWdlICIkYmFzZV9pbWFnZV9pZCIgLS1kZXN0aW5hdGlvbiAiJGNhbmRpZGF0ZV9zb3VyY2Vfcm9vdCIpIiB8fAorICAgIGRpZSAiY291bGQgbm90IHByZXBhcmUgdGhlIHRlbXBvcmFyeSBjYW5kaWRhdGUgc291cmNlIGNoZWNrb3V0IgorY2FuZGlkYXRlX29yaWdpbmFsX3NvdXJjZV9pZGVudGl0eV9zaGEyNTY9IiQoc2hhMjU2X2ZpbGUgIiRjYW5kaWRhdGVfc291cmNlX3Jvb3QvLmV2YWx1YXRpb24tc291cmNlLmpzb24iKSIKK2luc3RhbGwgLW0gMDQwMCAiJGNhbmRpZGF0ZV9zb3VyY2Vfcm9vdC8uZXZhbHVhdGlvbi1zb3VyY2UuanNvbiIgIiR3b3JrX2Rpci9jYW5kaWRhdGUtb3JpZ2luYWwtc291cmNlLmpzb24iCitmb3IgcHJlcGFyZWRfaWRlbnRpdHkgaW4gIiRiYXNlbGluZV9zb3VyY2VfaWRlbnRpdHkiICIkY2FuZGlkYXRlX3NvdXJjZV9pZGVudGl0eSI7IGRvCisgICAgdmFsaWRhdGVfcHJlcGFyZWRfc291cmNlX2lkZW50aXR5ICIkcHJlcGFyZWRfaWRlbnRpdHkiIHx8IGRpZSAidGVtcG9yYXJ5IGV2YWx1YXRpb24gc291cmNlIGlkZW50aXR5IG9yIGltYWdlIGNhcGFiaWxpdHkgaXMgaW52YWxpZCIKK2RvbmUKK3NvdXJjZV9ldmlkZW5jZV9wYXRoPSIkd29ya19kaXIvZXZhbHVhdGlvbi1zb3VyY2VzLmpzb24iCit3cml0ZV9zb3VyY2VfZXZpZGVuY2UoKSB7CisgICAgbG9jYWwgY2xlYW51cF9jb21wbGV0ZT0iJDEiCisgICAgbG9jYWwgcGVuZGluZz0iJHtzb3VyY2VfZXZpZGVuY2VfcGF0aH0ubmV3IgorICAgIGpxIC1uUyBcCisgICAgICAgIC0tYXJnanNvbiBiYXNlbGluZSAiJChqcSAtYyAuICIkYmFzZWxpbmVfc291cmNlX3Jvb3QvLmV2YWx1YXRpb24tc291cmNlLmpzb24iKSIgXAorICAgICAgICAtLWFyZ2pzb24gY2FuZGlkYXRlICIkKGpxIC1jIC4gIiRjYW5kaWRhdGVfc291cmNlX3Jvb3QvLmV2YWx1YXRpb24tc291cmNlLmpzb24iKSIgXAorICAgICAgICAtLWFyZ2pzb24gY2xlYW51cF9jb21wbGV0ZSAiJGNsZWFudXBfY29tcGxldGUiIFwKKyAgICAgICAgJ3tzY2hlbWE6MSxraW5kOiJzaW0tbGF0ZW5jeS10ZW1wb3JhcnktZXZhbHVhdGlvbi1zb3VyY2VzIiwKKyAgICAgICAgICBvcmlnaW46ImF1dGhlbnRpY2F0ZWRfZXZhbHVhdG9yX2ltYWdlIixob3N0X3JlcG9zaXRvcmllc191c2VkOmZhbHNlLAorICAgICAgICAgIHJ1bnRpbWVfdGFyZ2V0OiIvd29ya3NwYWNlIixyZWFkX29ubHlfbW91bnQ6dHJ1ZSwKKyAgICAgICAgICBiYXNlbGluZTokYmFzZWxpbmUsY2FuZGlkYXRlOiRjYW5kaWRhdGUsCisgICAgICAgICAgY2xlYW51cF9jb21wbGV0ZTokY2xlYW51cF9jb21wbGV0ZX0nID4gIiRwZW5kaW5nIgorICAgIGNobW9kIDA0MDAgIiRwZW5kaW5nIgorICAgIG12IC1mIC0tICIkcGVuZGluZyIgIiRzb3VyY2VfZXZpZGVuY2VfcGF0aCIKK30KK3dyaXRlX3NvdXJjZV9ldmlkZW5jZSBmYWxzZQorCitrZXJuZWxfcmVsZWFzZT0iJCh1bmFtZSAtcikiCittaWNyb2NvZGVfcmV2aXNpb249IiQoYXdrIC1GOiAnJDEgfiAvXm1pY3JvY29kZS8ge2dzdWIoL1tbOnNwYWNlOl1dLywgIiIsICQyKTsgcHJpbnQgJDJ9JyAvcHJvYy9jcHVpbmZvIHwgc29ydCAtdSB8IHBhc3RlIC1zZCwgLSkiCitbIC1uICIkbWljcm9jb2RlX3JldmlzaW9uIiBdIHx8IGRpZSAibWljcm9jb2RlIGlkZW50aXR5IGlzIHVuYXZhaWxhYmxlIgoraGFyZHdhcmVfaWQ9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kuaGFyZHdhcmVfaWQnICIkcmVxdWVzdF9wYXRoIikiCitxdWFsaWZpY2F0aW9uX3NoYTI1Nj0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5ob3N0X3F1YWxpZmljYXRpb25fc2hhMjU2JyAiJHJlcXVlc3RfcGF0aCIpIgorW1sgIiRxdWFsaWZpY2F0aW9uX3NoYTI1NiIgPX4gXlswLTlhLWZdezY0fSQgXV0gfHwgZGllICJxdWFsaWZpY2F0aW9uIGRpZ2VzdCBpcyBpbnZhbGlkIgorCitkdXJhdGlvbl9tcz0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5kdXJhdGlvbl9tcycgIiRyZXF1ZXN0X3BhdGgiKSIKK3JlcXVlc3RfdGltZW91dF9tcz0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5yZXF1ZXN0X3RpbWVvdXRfbXMnICIkcmVxdWVzdF9wYXRoIikiCityYW1wX21zPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnJhbXBfbXMnICIkcmVxdWVzdF9wYXRoIikiCitwcmV3YXJtX21zPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnByZXdhcm1fbXMnICIkcmVxdWVzdF9wYXRoIikiCitzZXR0bGVfbXM9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kuc2V0dGxlX21zJyAiJHJlcXVlc3RfcGF0aCIpIgorY2xpZW50X3dhcm11cF90aW1lb3V0X21zPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LmNsaWVudF93YXJtdXBfdGltZW91dF9tcycgIiRyZXF1ZXN0X3BhdGgiKSIKK3BpcGVsaW5lX2ludGVydmFsX21zPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnBpcGVsaW5lX2ludGVydmFsX21zJyAiJHJlcXVlc3RfcGF0aCIpIgordGVzdF90aW1lb3V0X21zPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnRlc3RfdGltZW91dF9tcycgIiRyZXF1ZXN0X3BhdGgiKSIKK2Fubm91bmNlX3RpbWVvdXRfbXM9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kuYW5ub3VuY2VfdGltZW91dF9tcycgIiRyZXF1ZXN0X3BhdGgiKSIKK2ZsZWV0X3NoYXJkcz0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5mbGVldF9zaGFyZHMnICIkcmVxdWVzdF9wYXRoIikiCitleGNoYW5nZV9ob3N0cz0iJChqcSAtZXIgJy5ldmFsdWF0aW9uX3BvbGljeS5leGNoYW5nZV9ob3N0cycgIiRyZXF1ZXN0X3BhdGgiKSIKK3NpdGVfbGlzdGVuPSIkKGpxIC1lciAnLmV2YWx1YXRpb25fcG9saWN5LnNpdGVfbGlzdGVuJyAiJHJlcXVlc3RfcGF0aCIpIgorYXBpX3BvcnQ9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kuYXBpX3BvcnQnICIkcmVxdWVzdF9wYXRoIikiCitpbXBhaXJtZW50X2VuYWJsZWQ9IiQoanEgLXIgJy5ldmFsdWF0aW9uX3BvbGljeS5pbXBhaXJtZW50X2VuYWJsZWQnICIkcmVxdWVzdF9wYXRoIikiCisjIEpTT04gemVybyBpcyBudW1lcmljOyB0aGUgaW1tdXRhYmxlIG9mZmljaWFsIHJ1bm5lciByZXF1aXJlcyBkZWNpbWFsIHRleHQuCit0YWtlb3Zlcl9tYXJnaW49IiQoanEgLWVyIC0tYXJnanNvbiBzdGFnaW5nICIkc3RhZ2luZyIgJworICAgIC5ldmFsdWF0aW9uX3BvbGljeS50YWtlb3Zlcl9tYXJnaW4gfCBzZWxlY3QodHlwZSA9PSAibnVtYmVyIikgfAorICAgIGlmICRzdGFnaW5nIHRoZW4gc2VsZWN0KC4gPT0gMCkgfCAiMC4wIgorICAgIGVsc2Ugc2VsZWN0KC4gPiAwIGFuZCAuIDw9IDAuNSkgZW5kCisgICAgJyAiJHJlcXVlc3RfcGF0aCIpIiB8fCBkaWUgInRha2VvdmVyIG1hcmdpbiBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwbGljaXQgZXZhbHVhdGlvbiBtb2RlIgorcXVldWVfbGltaXQ9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kucXVldWVfbGltaXQnICIkcmVxdWVzdF9wYXRoIikiCitzY29yZV90aW1lb3V0X3NlY29uZHM9IiQoanEgLWVyICcuZXZhbHVhdGlvbl9wb2xpY3kuc2NvcmVfdGltZW91dF9zZWNvbmRzJyAiJHJlcXVlc3RfcGF0aCIpIgorZm9yIG51bWVyaWMgaW4gY2xpZW50X3dhcm11cF90aW1lb3V0X21zIGR1cmF0aW9uX21zIHJlcXVlc3RfdGltZW91dF9tcyBwaXBlbGluZV9pbnRlcnZhbF9tcyB0ZXN0X3RpbWVvdXRfbXMgYW5ub3VuY2VfdGltZW91dF9tcyBleGNoYW5nZV9ob3N0cyBhcGlfcG9ydCBzY29yZV90aW1lb3V0X3NlY29uZHM7IGRvCisgICAgW1sgIiR7IW51bWVyaWN9IiA9fiBeWzEtOV1bMC05XSokIF1dIHx8IGRpZSAiaW52YWxpZCBwb3NpdGl2ZSBwb2xpY3kgZmllbGQ6ICRudW1lcmljIgorZG9uZQorZm9yIG51bWVyaWMgaW4gcmFtcF9tcyBwcmV3YXJtX21zIHNldHRsZV9tcyBmbGVldF9zaGFyZHM7IGRvCisgICAgW1sgIiR7IW51bWVyaWN9IiA9fiBeWzAtOV0rJCBdXSB8fCBkaWUgImludmFsaWQgbm9ubmVnYXRpdmUgcG9saWN5IGZpZWxkOiAkbnVtZXJpYyIKK2RvbmUKK1sgIiRpbXBhaXJtZW50X2VuYWJsZWQiID0gdHJ1ZSBdIHx8IFsgIiRpbXBhaXJtZW50X2VuYWJsZWQiID0gZmFsc2UgXSB8fCBkaWUgImltcGFpcm1lbnQgcG9saWN5IGlzIGludmFsaWQiCitbICIkcXVldWVfbGltaXQiIC1lcSAwIF0gfHwgZGllICJxdWV1ZSBsaW1pdCBpcyBub3QgdGhlIGZyb3plbiB1bmJvdW5kZWQgc2VudGluZWwiCitpZiBbICIkaW1wYWlybWVudF9lbmFibGVkIiA9IHRydWUgXTsgdGhlbiBub19pbXBhaXI9bm87IGVsc2Ugbm9faW1wYWlyPXllczsgZmkKK3dhbGxfdGltZW91dF9zZWNvbmRzPSIkKAorICAgICIkVElNRU9VVF9CVURHRVQiIHN0YWdlIFwKKyAgICAgICAgIiRyYW1wX21zIiAiJHNldHRsZV9tcyIgIiRjbGllbnRfd2FybXVwX3RpbWVvdXRfbXMiICIkZHVyYXRpb25fbXMiICIkcmVxdWVzdF90aW1lb3V0X21zIgorKSIgfHwgZGllICJjb3VsZCBub3QgY2FsY3VsYXRlIHRoZSBzdGFnZSB0aW1lb3V0IGJ1ZGdldCIKK1sgIiRzY29yZV90aW1lb3V0X3NlY29uZHMiIC1lcSAxMDgwMCBdIHx8IGRpZSAic2NvcmUgdGltZW91dCBpcyBub3QgdGhlIGZyb3plbiB0aHJlZS1ob3VyIHN1Ym1pc3Npb24gbGltaXQiCisKK2NvbXBvc2Vfd2l0aCgpIHsKKyAgICBsb2NhbCBwcm9qZWN0PSIkMSIgZW52X2ZpbGU9IiQyIgorICAgIHNoaWZ0IDIKKyAgICBzdWRvIC1uIGRvY2tlciBjb21wb3NlIC0tZW52LWZpbGUgIiRlbnZfZmlsZSIgLS1maWxlICIkQ09NUE9TRV9GSUxFIiBcCisgICAgICAgIC0tcHJvamVjdC1uYW1lICIkcHJvamVjdCIgIiRAIgorfQorCituZXdfc2VjcmV0KCkgeworICAgIG9wZW5zc2wgcmFuZCAtaGV4IDMyCit9CisKK3dyaXRlX3J1bm5lcl9lbnYoKSB7CisgICAgbG9jYWwgcGF0aD0iJDEiIGV2YWx1YXRpb25faWQ9IiQyIiBidWlsZF9zaGE9IiQzIiBzaW11bGF0b3Jfc2hhPSIkNCIgaW1hZ2VfaWQ9IiQ1IiBjYW5kaWRhdGVfcGF0Y2hfc2hhPSIkNiIKKyAgICBsb2NhbCBwZW5kaW5nPSIke3BhdGh9Lm5ldyIKKyAgICBbICEgLWUgIiRwZW5kaW5nIiBdIHx8IGRpZSAicGVuZGluZyBydW5uZXIgZW52aXJvbm1lbnQgYWxyZWFkeSBleGlzdHMiCisgICAgcHJpbnRmICclc1xuJyBcCisgICAgICAgICJFVkFMVUFUSU9OX0RCX1BBU1NXT1JEPSRzdGFnZV9kYl9wYXNzd29yZCIgXAorICAgICAgICAiRVZBTFVBVElPTl9SRURJU19QQVNTV09SRD0kc3RhZ2VfcmVkaXNfcGFzc3dvcmQiIFwKKyAgICAgICAgIkFQRVhfQkFTRV9TSEE9JGJhc2Vfc2hhIiBcCisgICAgICAgICJBUEVYX0JVSUxEX1NIQT0kYnVpbGRfc2hhIiBcCisgICAgICAgICdBUEVYX1NDT1JFUl9CSU49L29wdC91cm5ldHdvcmsvYmluL3NpbS1sYXRlbmN5JyBcCisgICAgICAgICJBUEVYX1NDT1JFUl9TSEEyNTY9JHNpbXVsYXRvcl9zaGEiIFwKKyAgICAgICAgJ0FQRVhfU0lNX0JJTj0vb3B0L3VybmV0d29yay9iaW4vc2ltLWxhdGVuY3knIFwKKyAgICAgICAgIkFQRVhfU0lNX1NIQTI1Nj0kc2ltdWxhdG9yX3NoYSIgXAorICAgICAgICAnQVBFWF9QUk9WSURFUlNfRklMRT0vaW5wdXQvcHJvdmlkZXJzLnltbCcgXAorICAgICAgICAiQVBFWF9QUk9WSURFUlNfU0hBMjU2PSRwcm92aWRlcnNfc2hhMjU2IiBcCisgICAgICAgICdBUEVYX0FSVElGQUNUX1JPT1Q9L2FydGlmYWN0cycgXAorICAgICAgICAiQVBFWF9FVkFMVUFUSU9OX0lEPSRldmFsdWF0aW9uX2lkIiBcCisgICAgICAgICJBUEVYX0VQT0NIPSRzb3VyY2VfZXBvY2giIFwKKyAgICAgICAgIkFQRVhfQVBJX0lNQUdFX0RJR0VTVD0kaW1hZ2VfaWQiIFwKKyAgICAgICAgIkFQRVhfSEFSRFdBUkVfSUQ9JGhhcmR3YXJlX2lkIiBcCisgICAgICAgICJBUEVYX0hPU1RfUVVBTElGSUNBVElPTl9TSEEyNTY9JHF1YWxpZmljYXRpb25fc2hhMjU2IiBcCisgICAgICAgICJBUEVYX0tFUk5FTF9SRUxFQVNFPSRrZXJuZWxfcmVsZWFzZSIgXAorICAgICAgICAiQVBFWF9NSUNST0NPREVfUkVWSVNJT049JG1pY3JvY29kZV9yZXZpc2lvbiIgXAorICAgICAgICAnQVBFWF9QQVRDSF9GSUxFPS9vcHQvdXJuZXR3b3JrL3N1Ym1pc3Npb24vY2Fub25pY2FsLnBhdGNoJyBcCisgICAgICAgICJBUEVYX1BBVENIX1NIQTI1Nj0kY2FuZGlkYXRlX3BhdGNoX3NoYSIgXAorICAgICAgICAiQVBFWF9DUFVfQ09VTlQ9JGV2YWx1YXRpb25fY3B1X2NvdW50IiBcCisgICAgICAgICJBUEVYX0RVUkFUSU9OPSR7ZHVyYXRpb25fbXN9bXMiIFwKKyAgICAgICAgIkFQRVhfUkVRVUVTVF9USU1FT1VUPSR7cmVxdWVzdF90aW1lb3V0X21zfW1zIiBcCisgICAgICAgICJBUEVYX1JBTVA9JHtyYW1wX21zfW1zIiBcCisgICAgICAgICJBUEVYX1BSRVdBUk09JHtwcmV3YXJtX21zfW1zIiBcCisgICAgICAgICJBUEVYX1NFVFRMRT0ke3NldHRsZV9tc31tcyIgXAorICAgICAgICAiQVBFWF9DTElFTlRfV0FSTVVQX1RJTUVPVVQ9JHtjbGllbnRfd2FybXVwX3RpbWVvdXRfbXN9bXMiIFwKKyAgICAgICAgIkFQRVhfRkxFRVRfU0hBUkRTPSRmbGVldF9zaGFyZHMiIFwKKyAgICAgICAgIkFQRVhfSE9TVFM9JGV4Y2hhbmdlX2hvc3RzIiBcCisgICAgICAgICJBUEVYX1BJUEVMSU5FX0lOVEVSVkFMPSR7cGlwZWxpbmVfaW50ZXJ2YWxfbXN9bXMiIFwKKyAgICAgICAgIkFQRVhfVEVTVF9USU1FT1VUPSR7dGVzdF90aW1lb3V0X21zfW1zIiBcCisgICAgICAgICJBUEVYX0FOTk9VTkNFX1RJTUVPVVQ9JHthbm5vdW5jZV90aW1lb3V0X21zfW1zIiBcCisgICAgICAgICJBUEVYX1NJVEVfTElTVEVOPSRzaXRlX2xpc3RlbiIgXAorICAgICAgICAiQVBFWF9BUElfUE9SVD0kYXBpX3BvcnQiIFwKKyAgICAgICAgIkFQRVhfTk9fSU1QQUlSPSRub19pbXBhaXIiIFwKKyAgICAgICAgIkFQRVhfV0FMTF9USU1FT1VUPSR7d2FsbF90aW1lb3V0X3NlY29uZHN9cyIgXAorICAgICAgICAnQVBFWF9LSUxMX0FGVEVSPTMwcycgXAorICAgICAgICAnQVBFWF9DQUxJQlJBVElPTl9BQ0NFUFRFRD15ZXMnIFwKKyAgICAgICAgPiAiJHBlbmRpbmciCisgICAgaWYgWyAtbiAiJGcyX3ZvbHVtZV9wb2xpY3kiIF07IHRoZW4KKyAgICAgICAgcHJpbnRmICclc1xuJyAiQVBFWF9HMl9WT0xVTUVfUE9MSUNZPSRnMl92b2x1bWVfcG9saWN5IiA+PiAiJHBlbmRpbmciCisgICAgZmkKKyAgICBpZiBbICIkd29ya19jb3ZlcmFnZV9wb2xpY3kiICE9IG51bGwgXTsgdGhlbgorICAgICAgICBwcmludGYgJyVzXG4nICJBUEVYX1dPUktfQ09WRVJBR0VfUE9MSUNZX0pTT049JHdvcmtfY292ZXJhZ2VfcG9saWN5IiA+PiAiJHBlbmRpbmciCisgICAgZmkKKyAgICBjaG1vZCAwNDAwICIkcGVuZGluZyIKKyAgICBtdiAtZiAtLSAiJHBlbmRpbmciICIkcGF0aCIKK30KKword3JpdGVfY29tcG9zZV9lbnYoKSB7CisgICAgbG9jYWwgcGF0aD0iJDEiIHByb2plY3Q9IiQyIiBzdGFnZT0iJDMiIGltYWdlPSIkNCIgcnVubmVyX2Vudj0iJDUiIGlucHV0PSIkNiIgb3V0cHV0PSIkNyIgY2dyb3VwX3BhcmVudD0iJDgiIHNvdXJjZT0iJDkiCisgICAgbG9jYWwgcGVuZGluZz0iJHtwYXRofS5uZXciCisgICAgWyAhIC1lICIkcGVuZGluZyIgXSB8fCBkaWUgInBlbmRpbmcgQ29tcG9zZSBlbnZpcm9ubWVudCBhbHJlYWR5IGV4aXN0cyIKKyAgICBwcmludGYgJyVzXG4nIFwKKyAgICAgICAgIkNPTVBPU0VfUFJPSkVDVF9OQU1FPSRwcm9qZWN0IiBcCisgICAgICAgICJFVkFMVUFUSU9OX0pPQl9JRD0kam9iX2lkIiBcCisgICAgICAgICJFVkFMVUFUSU9OX1JPVU5EX0lEPSRyb3VuZF9pZCIgXAorICAgICAgICAiRVZBTFVBVElPTl9TVEFHRT0kc3RhZ2UiIFwKKyAgICAgICAgJ0VWQUxVQVRJT05fQUNUSU9OPXJ1bicgXAorICAgICAgICAiRVZBTFVBVElPTl9DR1JPVVBfUEFSRU5UPSRjZ3JvdXBfcGFyZW50IiBcCisgICAgICAgICJFVkFMVUFUSU9OX0NQVVNFVD0kY3B1c2V0IiBcCisgICAgICAgICJFVkFMVUFUSU9OX0lNQUdFPSRpbWFnZSIgXAorICAgICAgICAiRVZBTFVBVE9SX0JBU0VfSU1BR0U9JGJhc2VfaW1hZ2VfaWQiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fRU5WX0ZJTEU9JHJ1bm5lcl9lbnYiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fU09VUkNFX0RJUj0kc291cmNlIiBcCisgICAgICAgICJFVkFMVUFUSU9OX0NPTkZJR19MT0NBTF9ESVI9JGNvbmZpZ19sb2NhbF9kaXJlY3RvcnkiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fVkFVTFRfTE9DQUxfRElSPSR2YXVsdF9sb2NhbF9kaXJlY3RvcnkiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fSU5QVVRfRElSPSRpbnB1dCIgXAorICAgICAgICAiRVZBTFVBVElPTl9PVVRQVVRfRElSPSRvdXRwdXQiIFwKKyAgICAgICAgIkVWQUxVQVRJT05fUE9TVEdSRVNfSU5JVD0kUE9TVEdSRVNfSU5JVCIgXAorICAgICAgICAiUlVOTkVSX01FTU9SWV9MSU1JVD0kUlVOTkVSX01FTU9SWV9MSU1JVCIgXAorICAgICAgICAiUlVOTkVSX1BJRFNfTElNSVQ9JFJVTk5FUl9QSURTX0xJTUlUIiBcCisgICAgICAgICJSVU5ORVJfVE1QX0xJTUlUPSRSVU5ORVJfVE1QX0xJTUlUIiBcCisgICAgICAgICJSVU5ORVJfV09SS19MSU1JVD0kUlVOTkVSX1dPUktfTElNSVQiIFwKKyAgICAgICAgIk1JR1JBVE9SX01FTU9SWV9MSU1JVD0kTUlHUkFUT1JfTUVNT1JZX0xJTUlUIiBcCisgICAgICAgICJNSUdSQVRPUl9QSURTX0xJTUlUPSRNSUdSQVRPUl9QSURTX0xJTUlUIiBcCisgICAgICAgICJNSUdSQVRPUl9UTVBfTElNSVQ9JE1JR1JBVE9SX1RNUF9MSU1JVCIgXAorICAgICAgICAiUE9TVEdSRVNfTUVNT1JZX0xJTUlUPSRQT1NUR1JFU19NRU1PUllfTElNSVQiIFwKKyAgICAgICAgIlBPU1RHUkVTX1BJRFNfTElNSVQ9JFBPU1RHUkVTX1BJRFNfTElNSVQiIFwKKyAgICAgICAgIlBPU1RHUkVTX0RBVEFfTElNSVQ9JFBPU1RHUkVTX0RBVEFfTElNSVQiIFwKKyAgICAgICAgIlBPU1RHUkVTX01BWF9DT05ORUNUSU9OUz0kUE9TVEdSRVNfTUFYX0NPTk5FQ1RJT05TIiBcCisgICAgICAgICJQT1NUR1JFU19TSEFSRURfQlVGRkVSUz0kUE9TVEdSRVNfU0hBUkVEX0JVRkZFUlMiIFwKKyAgICAgICAgIlJFRElTX01FTU9SWV9MSU1JVD0kUkVESVNfTUVNT1JZX0xJTUlUIiBcCisgICAgICAgICJSRURJU19QSURTX0xJTUlUPSRSRURJU19QSURTX0xJTUlUIiBcCisgICAgICAgICJSRURJU19EQVRBX0xJTUlUPSRSRURJU19EQVRBX0xJTUlUIiBcCisgICAgICAgICJSRURJU19NQVhfQ0xJRU5UUz0kUkVESVNfTUFYX0NMSUVOVFMiIFwKKyAgICAgICAgIlJFRElTX1RDUF9CQUNLTE9HPSRSRURJU19UQ1BfQkFDS0xPRyIgXAorICAgICAgICAiU0NPUkVSX01FTU9SWV9MSU1JVD0kU0NPUkVSX01FTU9SWV9MSU1JVCIgXAorICAgICAgICAiU0NPUkVSX1BJRFNfTElNSVQ9JFNDT1JFUl9QSURTX0xJTUlUIiBcCisgICAgICAgICJTQ09SRVJfVE1QX0xJTUlUPSRTQ09SRVJfVE1QX0xJTUlUIiBcCisgICAgICAgICJFVkFMVUFUSU9OX05PRklMRT0kRVZBTFVBVElPTl9OT0ZJTEUiIFwKKyAgICAgICAgJ0VWQUxVQVRJT05fREJfVVNFUj1icmluZ3lvdXInIFwKKyAgICAgICAgIkVWQUxVQVRJT05fREJfQURNSU5fUEFTU1dPUkQ9JHN0YWdlX2RiX2FkbWluX3Bhc3N3b3JkIiBcCisgICAgICAgICJFVkFMVUFUSU9OX0RCX1BBU1NXT1JEPSRzdGFnZV9kYl9wYXNzd29yZCIgXAorICAgICAgICAnRVZBTFVBVElPTl9EQl9OQU1FPWJyaW5neW91cicgXAorICAgICAgICAiRVZBTFVBVElPTl9SRURJU19QQVNTV09SRD0kc3RhZ2VfcmVkaXNfcGFzc3dvcmQiIFwKKyAgICAgICAgJ0VWQUxVQVRJT05fREJfTUlOX0NPTk5FQ1RJT05TPTQnIFwKKyAgICAgICAgJ0VWQUxVQVRJT05fREJfTUFYX0NPTk5FQ1RJT05TPTMyJyBcCisgICAgICAgICdFVkFMVUFUSU9OX1JFRElTX01JTl9DT05ORUNUSU9OUz00JyBcCisgICAgICAgICdFVkFMVUFUSU9OX1JFRElTX01BWF9DT05ORUNUSU9OUz0zMicgXAorICAgICAgICA+ICIkcGVuZGluZyIKKyAgICBjaG1vZCAwNDAwICIkcGVuZGluZyIKKyAgICBtdiAtZiAtLSAiJHBlbmRpbmciICIkcGF0aCIKK30KKwordmFsaWRhdGVfb3V0cHV0X3RyZWUoKSB7CisgICAgbG9jYWwgcm9vdD0iJDEiCisgICAgWyAteiAiJChzdWRvIC1uIGZpbmQgIiRyb290IiAtbWluZGVwdGggMSAhIC10eXBlIGYgISAtdHlwZSBkIC1wcmludCAtcXVpdCkiIF0gfHwKKyAgICAgICAgZGllICJjYW5kaWRhdGUgb3V0cHV0IGNvbnRhaW5zIGEgbm9uLXJlZ3VsYXIgZW50cnkiCit9CisKKyMgVGhlIGJhc2VsaW5lIGhhcyBhbHJlYWR5IGJlZW4gc2VhbGVkIGZvciB0aGUgY29udGFpbmVyIHVpZCB3aGVuIHRoZSBjYW5kaWRhdGUKKyMgaXMgYnVpbHQuIFRydXN0IG9ubHkgdGhlc2UgYXV0aGVudGljYXRlZCBhdHRlbXB0LWxvY2FsIHJlcG9zaXRvcmllcyBmb3IgZWFjaAorIyByZWFkOyBuZXZlciBwZXJzaXN0IHNhZmUuZGlyZWN0b3J5IG9yIHR1cm4gb2ZmIEdpdCdzIG93bmVyc2hpcCBjaGVjayBnbG9iYWxseS4KK2F1dGhlbnRpY2F0ZV9wcm90ZWN0ZWRfc2ltdWxhdG9yX3RyZWUoKSB7CisgICAgbG9jYWwgYmFzZWxpbmVfdHJlZSBjYW5kaWRhdGVfdHJlZQorICAgIGJhc2VsaW5lX3RyZWU9IiQoZ2l0IC1jIHNhZmUuZGlyZWN0b3J5PSAtYyBzYWZlLmRpcmVjdG9yeT0iJGJhc2VsaW5lX3NvdXJjZV9yb290L3NlcnZlciIgXAorICAgICAgICAtQyAiJGJhc2VsaW5lX3NvdXJjZV9yb290L3NlcnZlciIgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQ6Y29ubmVjdC9zaW0tbGF0ZW5jeSkiIHx8CisgICAgICAgIGRpZSAiY291bGQgbm90IHJlYWQgdGhlIGJhc2VsaW5lIHByb3RlY3RlZCBzaW0tbGF0ZW5jeSBzb3VyY2UgdHJlZTogR2l0IGludm9jYXRpb24gZmFpbGVkIgorICAgIGNhbmRpZGF0ZV90cmVlPSIkKGdpdCAtYyBzYWZlLmRpcmVjdG9yeT0gLWMgc2FmZS5kaXJlY3Rvcnk9IiRjYW5kaWRhdGVfc291cmNlX3Jvb3Qvc2VydmVyIiBcCisgICAgICAgIC1DICIkY2FuZGlkYXRlX3NvdXJjZV9yb290L3NlcnZlciIgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQ6Y29ubmVjdC9zaW0tbGF0ZW5jeSkiIHx8CisgICAgICAgIGRpZSAiY291bGQgbm90IHJlYWQgdGhlIGNhbmRpZGF0ZSBwcm90ZWN0ZWQgc2ltLWxhdGVuY3kgc291cmNlIHRyZWU6IEdpdCBpbnZvY2F0aW9uIGZhaWxlZCIKKyAgICBbWyAiJGJhc2VsaW5lX3RyZWUiID1+IF5bMC05YS1mXXs0MH0kIF1dICYmIFtbICIkY2FuZGlkYXRlX3RyZWUiID1+IF5bMC05YS1mXXs0MH0kIF1dIHx8CisgICAgICAgIGRpZSAiY291bGQgbm90IGF1dGhlbnRpY2F0ZSB0aGUgcHJvdGVjdGVkIHNpbS1sYXRlbmN5IHNvdXJjZSB0cmVlOiBpbnZhbGlkIEdpdCBvYmplY3QgaWRlbnRpdHkiCisgICAgWyAiJGNhbmRpZGF0ZV90cmVlIiA9ICIkYmFzZWxpbmVfdHJlZSIgXSB8fAorICAgICAgICBkaWUgImNhbmRpZGF0ZSBjaGFuZ2VkIHRoZSBwcm90ZWN0ZWQgc2ltLWxhdGVuY3kgc291cmNlIHRyZWUiCisgICAgaWYgWyAiJHt3b3JrX2NvdmVyYWdlX3BvbGljeTotbnVsbH0iICE9IG51bGwgXTsgdGhlbgorICAgICAgICBsb2NhbCBkZXBlbmRlbmNpZXMgZGVwZW5kZW5jeSBiYXNlbGluZV9kZXBlbmRlbmN5IGNhbmRpZGF0ZV9kZXBlbmRlbmN5CisgICAgICAgIGRlcGVuZGVuY2llcz0iJChqcSAtZXIgJy5wYXRoc1tdJyA8PDwiJGNvdmVyYWdlX3Byb3RlY3RlZF9wYXRoc19qc29uIikiIHx8IGRpZSAidHJ1c3RlZCBjb3ZlcmFnZSBoZWxwZXIgY2Vuc3VzIGlzIGFic2VudCIKKyAgICAgICAgWyAtbiAiJGRlcGVuZGVuY2llcyIgXSB8fCBkaWUgInRydXN0ZWQgY292ZXJhZ2UgaGVscGVyIGNlbnN1cyBpcyBlbXB0eSIKKyAgICAgICAgd2hpbGUgSUZTPSByZWFkIC1yIGRlcGVuZGVuY3k7IGRvCisgICAgICAgICAgICBiYXNlbGluZV9kZXBlbmRlbmN5PSIkKGdpdCAtYyBzYWZlLmRpcmVjdG9yeT0gLWMgc2FmZS5kaXJlY3Rvcnk9IiRiYXNlbGluZV9zb3VyY2Vfcm9vdC9zZXJ2ZXIiIC1DICIkYmFzZWxpbmVfc291cmNlX3Jvb3Qvc2VydmVyIiAtLWxpdGVyYWwtcGF0aHNwZWNzIGxzLXRyZWUgSEVBRCAtLSAiJGRlcGVuZGVuY3kiKSIgfHwgZGllICJtaXNzaW5nIHRydXN0ZWQgY292ZXJhZ2UgZGVwZW5kZW5jeSIKKyAgICAgICAgICAgIGNhbmRpZGF0ZV9kZXBlbmRlbmN5PSIkKGdpdCAtYyBzYWZlLmRpcmVjdG9yeT0gLWMgc2FmZS5kaXJlY3Rvcnk9IiRjYW5kaWRhdGVfc291cmNlX3Jvb3Qvc2VydmVyIiAtQyAiJGNhbmRpZGF0ZV9zb3VyY2Vfcm9vdC9zZXJ2ZXIiIC0tbGl0ZXJhbC1wYXRoc3BlY3MgbHMtdHJlZSBIRUFEIC0tICIkZGVwZW5kZW5jeSIpIiB8fCBkaWUgIm1pc3NpbmcgY2FuZGlkYXRlIGNvdmVyYWdlIGRlcGVuZGVuY3kiCisgICAgICAgICAgICBbWyAiJGJhc2VsaW5lX2RlcGVuZGVuY3kiID1+IF4xMDAoNjQ0fDc1NSlcIGJsb2JcIFswLTlhLWZdezQwfSQnXHQnIF1dIHx8IGRpZSAiY292ZXJhZ2UgZGVwZW5kZW5jeSBpcyBub3QgYSBjb21taXR0ZWQgcmVndWxhciBHbyBmaWxlIgorICAgICAgICAgICAgWyAiJGJhc2VsaW5lX2RlcGVuZGVuY3kiID0gIiRjYW5kaWRhdGVfZGVwZW5kZW5jeSIgXSB8fCBkaWUgImNhbmRpZGF0ZSBjaGFuZ2VkIGEgdHJ1c3RlZCBjb3ZlcmFnZSBkZXBlbmRlbmN5IgorICAgICAgICBkb25lIDw8PCIkZGVwZW5kZW5jaWVzIgorICAgIGZpCit9CisKK3NlYWxfZXZhbHVhdGlvbl9zb3VyY2UoKSB7CisgICAgbG9jYWwgcm9vdD0iJDEiIGV4cGVjdGVkX3NlcnZlcj0iJDIiIGV4cGVjdGVkX3BhdGNoPSIkMyIKKyAgICBbICIkcm9vdCIgPSAiJGJhc2VsaW5lX3NvdXJjZV9yb290IiBdIHx8IFsgIiRyb290IiA9ICIkY2FuZGlkYXRlX3NvdXJjZV9yb290IiBdIHx8CisgICAgICAgIGRpZSAicmVmdXNpbmcgdG8gc2VhbCBhbiB1bmV4cGVjdGVkIHNvdXJjZSBkaXJlY3RvcnkiCisgICAgZm9yIHJlcG9zaXRvcnkgaW4gIiR7UkVQT1NJVE9SSUVTW0BdfSI7IGRvCisgICAgICAgIGxvY2FsIHJlcG9zaXRvcnlfcm9vdD0iJHJvb3QvJHJlcG9zaXRvcnkiCisgICAgICAgIGxvY2FsIGV4cGVjdGVkX2NvbW1pdCBhY3R1YWxfYnJhbmNoIGFjdHVhbF9jb21taXQgc291cmNlX3N0YXR1cworICAgICAgICBleHBlY3RlZF9jb21taXQ9IiQoanEgLWVyIC0tYXJnIHJlcG9zaXRvcnkgIiRyZXBvc2l0b3J5IiBcCisgICAgICAgICAgICAnLnJlcG9zaXRvcmllc1skcmVwb3NpdG9yeV0nICIkcm9vdC8uZXZhbHVhdGlvbi1zb3VyY2UuanNvbiIpIgorICAgICAgICBhY3R1YWxfYnJhbmNoPSIkKGdpdCAtQyAiJHJlcG9zaXRvcnlfcm9vdCIgc3ltYm9saWMtcmVmIC0tcXVpZXQgLS1zaG9ydCBIRUFEKSIgfHwKKyAgICAgICAgICAgIGRpZSAiY291bGQgbm90IHJlYWQgdGVtcG9yYXJ5ICRyZXBvc2l0b3J5IHNvdXJjZSBicmFuY2giCisgICAgICAgIGFjdHVhbF9jb21taXQ9IiQoZ2l0IC1DICIkcmVwb3NpdG9yeV9yb290IiByZXYtcGFyc2UgSEVBRCkiIHx8CisgICAgICAgICAgICBkaWUgImNvdWxkIG5vdCByZWFkIHRlbXBvcmFyeSAkcmVwb3NpdG9yeSBzb3VyY2UgY29tbWl0IgorICAgICAgICBzb3VyY2Vfc3RhdHVzPSIkKGdpdCAtQyAiJHJlcG9zaXRvcnlfcm9vdCIgc3RhdHVzIC0tcG9yY2VsYWluPXYxIC0tdW50cmFja2VkLWZpbGVzPWFsbCkiIHx8CisgICAgICAgICAgICBkaWUgImNvdWxkIG5vdCBpbnNwZWN0IHRlbXBvcmFyeSAkcmVwb3NpdG9yeSBzb3VyY2Ugd29ya3RyZWUiCisgICAgICAgIFsgIiRhY3R1YWxfYnJhbmNoIiA9ICIkc291cmNlX2JyYW5jaCIgXSAmJiBbICIkYWN0dWFsX2NvbW1pdCIgPSAiJGV4cGVjdGVkX2NvbW1pdCIgXSAmJgorICAgICAgICAgICAgWyAteiAiJHNvdXJjZV9zdGF0dXMiIF0gfHwKKyAgICAgICAgICAgIGRpZSAidGVtcG9yYXJ5ICRyZXBvc2l0b3J5IHNvdXJjZSBjaGVja291dCBpcyBub3QgY2xlYW4gYW5kIGlkZW50aXR5LWJvdW5kIgorICAgIGRvbmUKKyAgICBsb2NhbCBzZXJ2ZXJfY29tbWl0IGFjdHVhbF9wYXRjaAorICAgIHNlcnZlcl9jb21taXQ9IiQoZ2l0IC1DICIkcm9vdC9zZXJ2ZXIiIHJldi1wYXJzZSBIRUFEKSIgfHwKKyAgICAgICAgZGllICJjb3VsZCBub3QgcmVhZCB0ZW1wb3Jhcnkgc2VydmVyIHNvdXJjZSBjb21taXQiCisgICAgWyAiJHNlcnZlcl9jb21taXQiID0gIiRleHBlY3RlZF9zZXJ2ZXIiIF0gfHwKKyAgICAgICAgZGllICJ0ZW1wb3Jhcnkgc2VydmVyIHNvdXJjZSBjaGVja291dCBoYXMgdGhlIHdyb25nIGNvbW1pdCIKKyAgICBhY3R1YWxfcGF0Y2g9IiQoanEgLWVyICcuY2FuZGlkYXRlX3BhdGNoX3NoYTI1NiAvLyAiIicgIiRyb290Ly5ldmFsdWF0aW9uLXNvdXJjZS5qc29uIikiIHx8CisgICAgICAgIGRpZSAiY291bGQgbm90IHJlYWQgdGVtcG9yYXJ5IHNvdXJjZSBwYXRjaCBpZGVudGl0eSIKKyAgICBbICIkYWN0dWFsX3BhdGNoIiA9ICIkZXhwZWN0ZWRfcGF0Y2giIF0gfHwKKyAgICAgICAgZGllICJ0ZW1wb3Jhcnkgc291cmNlIHBhdGNoIGlkZW50aXR5IG1pc21hdGNoIgorCisgICAgIyBQcmVzZXJ2ZSB0cmFja2VkIGV4ZWN1dGFibGUgYml0cyB3aGlsZSBtYWtpbmcgYm90aCB0aGUgYmluZCBpdHNlbGYgYW5kCisgICAgIyB0aGUgdW5kZXJseWluZyBob3N0IHRyZWUgbm9uLXdyaXRhYmxlLiBUaGUgRG9ja2VyIGJpbmQgYWRkcyBhIHNlY29uZCwKKyAgICAjIGluZGVwZW5kZW50bHkgaW5zcGVjdGVkIHJlYWQtb25seSBib3VuZGFyeS4KKyAgICBzdWRvIC1uIGZpbmQgIiRyb290IiAtdHlwZSBkIC1leGVjIGNobW9kIDA1NTUge30gKworICAgIHN1ZG8gLW4gZmluZCAiJHJvb3QiIC10eXBlIGYgLXBlcm0gLzExMSAtZXhlYyBjaG1vZCAwNTU1IHt9ICsKKyAgICBzdWRvIC1uIGZpbmQgIiRyb290IiAtdHlwZSBmICEgLXBlcm0gLzExMSAtZXhlYyBjaG1vZCAwNDQ0IHt9ICsKKyAgICBzdWRvIC1uIGNob3duIC1SICIkY29udGFpbmVyX2hvc3RfdWlkOiRjb250YWluZXJfaG9zdF9naWQiICIkcm9vdCIKK30KKworcmVtb3ZlX2V2YWx1YXRpb25fc291cmNlcygpIHsKKyAgICBbIC1uICIke2FjdGl2ZV9zb3VyY2Vfcm9vdDotfSIgXSB8fCByZXR1cm4gMAorICAgIGNhc2UgIiRhY3RpdmVfc291cmNlX3Jvb3QiIGluCisgICAgICAgICIkd29ya19kaXIiL2V2YWx1YXRpb24tc291cmNlcy4qKSA7OworICAgICAgICAqKSBkaWUgInJlZnVzaW5nIHRvIHJlbW92ZSBhbiB1bmV4cGVjdGVkIHNvdXJjZSBkaXJlY3RvcnkiIDs7CisgICAgZXNhYworICAgIFsgIiQocmVhbHBhdGggLWUgIiQoZGlybmFtZSAiJGFjdGl2ZV9zb3VyY2Vfcm9vdCIpIikiID0gIiR3b3JrX2RpciIgXSB8fAorICAgICAgICBkaWUgInRlbXBvcmFyeSBzb3VyY2UgZGlyZWN0b3J5IGVzY2FwZWQgdGhlIGF0dGVtcHQgdG1wZnMiCisgICAgc3VkbyAtbiBybSAtcmYgLS0gIiRhY3RpdmVfc291cmNlX3Jvb3QiCisgICAgWyAhIC1lICIkYWN0aXZlX3NvdXJjZV9yb290IiBdIHx8IGRpZSAidGVtcG9yYXJ5IGV2YWx1YXRpb24gc291cmNlcyBzdXJ2aXZlZCBjbGVhbnVwIgorICAgIGFjdGl2ZV9zb3VyY2Vfcm9vdD0iIgorICAgIGpxIC1TICcuY2xlYW51cF9jb21wbGV0ZSA9IHRydWUnICIkc291cmNlX2V2aWRlbmNlX3BhdGgiID4gIiRzb3VyY2VfZXZpZGVuY2VfcGF0aC5uZXciCisgICAgY2htb2QgMDQwMCAiJHNvdXJjZV9ldmlkZW5jZV9wYXRoLm5ldyIKKyAgICBtdiAtZiAtLSAiJHNvdXJjZV9ldmlkZW5jZV9wYXRoLm5ldyIgIiRzb3VyY2VfZXZpZGVuY2VfcGF0aCIKK30KKworcGVyc2lzdF9ldmlkZW5jZV90cmVlKCkgeworICAgIHN1ZG8gLW4gY2hvd24gLVIgIiR3b3JrZXJfdWlkOiR3b3JrZXJfZ2lkIiAiJHdvcmtfZGlyIgorICAgIGZpbmQgIiR3b3JrX2RpciIgLXR5cGUgZCAtZXhlYyBjaG1vZCB1K3J3eCxnby1yd3gge30gKworICAgIGZpbmQgIiR3b3JrX2RpciIgLXR5cGUgZiAtZXhlYyBjaG1vZCAwNDAwIHt9ICsKKyAgICB2YWxpZGF0ZV9vdXRwdXRfdHJlZSAiJHdvcmtfZGlyIgorICAgIGxvY2FsIHJ1bnRpbWVfd29ya19kaXI9IiR3b3JrX2RpciIKKyAgICB3b3JrX2Rpcj0iJGFydGlmYWN0X2Rpci9ldmlkZW5jZSIKKyAgICBbICEgLWUgIiR3b3JrX2RpciIgXSB8fCBkaWUgInJldGFpbmVkIGV2aWRlbmNlIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyIKKyAgICBpbnN0YWxsIC1kIC1tIDA3MDAgIiR3b3JrX2RpciIKKyAgICBjcCAtYSAiJHJ1bnRpbWVfd29ya19kaXIvLiIgIiR3b3JrX2Rpci8iCisgICAgc3luYyAiJHdvcmtfZGlyIgorICAgIHN1ZG8gLW4gdW1vdW50ICIkcnVudGltZV93b3JrX2RpciIKKyAgICBhY3RpdmVfd29ya19tb3VudD0iIgorICAgIHJtZGlyICIkcnVudGltZV93b3JrX2RpciIKKyAgICB2YWxpZGF0ZV9vdXRwdXRfdHJlZSAiJHdvcmtfZGlyIgorICAgIGZpbmQgIiR3b3JrX2RpciIgLXR5cGUgZiAtZXhlYyBjaG1vZCAwNDAwIHt9ICsKKyAgICBmaW5kICIkd29ya19kaXIiIC10eXBlIGQgLWV4ZWMgY2htb2QgMDUwMCB7fSArCit9CisKK3dyaXRlX2V2aWRlbmNlX21hbmlmZXN0KCkgeworICAgIGV2aWRlbmNlX21hbmlmZXN0PSIkYXJ0aWZhY3RfZGlyL2V2aWRlbmNlLW1hbmlmZXN0Lmpzb24iCisgICAgbG9jYWwgZXZpZGVuY2VfbGluZXM9IiRhcnRpZmFjdF9kaXIvLmV2aWRlbmNlLWxpbmVzIgorICAgIHdoaWxlIElGUz0gcmVhZCAtciAtZCAnJyBwYXRoOyBkbworICAgICAgICBsb2NhbCByZWxhdGl2ZT0iJHtwYXRoIyIkYXJ0aWZhY3RfZGlyLyJ9IgorICAgICAgICBwcmludGYgJyVzXHQlc1x0JXNcbicgIiRyZWxhdGl2ZSIgIiQoc2hhMjU2X2ZpbGUgIiRwYXRoIikiICIkKGZpbGVfYnl0ZXMgIiRwYXRoIikiCisgICAgZG9uZSA8IDwoZmluZCAiJHdvcmtfZGlyIiAtdHlwZSBmIC1wcmludDAgfCBzb3J0IC16KSA+ICIkZXZpZGVuY2VfbGluZXMiCisgICAganEgLVJuIC0tYXJnIGpvYl9pZCAiJGpvYl9pZCIgLS1hcmcgcm91bmRfaWQgIiRyb3VuZF9pZCIgXAorICAgICAgICAnW2lucHV0cyB8IHNwbGl0KCJcdCIpIHwge3BhdGg6LlswXSxzaGEyNTY6LlsxXSxieXRlczooLlsyXXx0b251bWJlcil9XSB8CisgICAgICAgICB7c2NoZW1hOjEsa2luZDoic2ltLWxhdGVuY3ktZXZpZGVuY2UtbWFuaWZlc3QiLGpvYl9pZDokam9iX2lkLAorICAgICAgICAgIHJvdW5kX2lkOiRyb3VuZF9pZCxhcnRpZmFjdHM6Ln0nIDwgIiRldmlkZW5jZV9saW5lcyIgPiAiJGV2aWRlbmNlX21hbmlmZXN0IgorICAgIHJtIC1mIC0tICIkZXZpZGVuY2VfbGluZXMiCisgICAgY2htb2QgMDQwMCAiJGV2aWRlbmNlX21hbmlmZXN0IgorfQorCitlbWl0X2NhbmRpZGF0ZV9idWlsZF9mYWlsdXJlKCkgeworICAgIGxvY2FsIGJ1aWxkX2xvZz0iJDEiCisgICAgd3JpdGVfZXZhbHVhdGlvbl9wcm9ncmVzcyBmYWlsZWQgIiRyZXBsaWNhdGVzIiAwCisgICAgaWYgWyAtZiAiJGJ1aWxkX2xvZyIgXSAmJiBbICIkTUFYX0JVSUxEX0xPR19CWVRFUyIgLWx0ICIkKGZpbGVfYnl0ZXMgIiRidWlsZF9sb2ciKSIgXTsgdGhlbgorICAgICAgICB0YWlsIC1jICIkTUFYX0JVSUxEX0xPR19CWVRFUyIgIiRidWlsZF9sb2ciID4gIiRidWlsZF9sb2cudGFpbCIKKyAgICAgICAgbXYgIiRidWlsZF9sb2cudGFpbCIgIiRidWlsZF9sb2ciCisgICAgZmkKKyAgICBybSAtZiAtLSAiJHdvcmtfZGlyL2NhbmRpZGF0ZS1idWlsZC5qc29uIgorICAgIFsgLXogIiQoc3VkbyAtbiBkb2NrZXIgcHMgLWFxIC0tZmlsdGVyICJsYWJlbD1jb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLmpvYi1pZD0kam9iX2lkIikiIF0gfHwKKyAgICAgICAgZGllICJjYW5kaWRhdGUgYnVpbGQgZmFpbHVyZSBsZWZ0IGpvYiBjb250YWluZXJzIgorICAgIFsgLXogIiQoc3VkbyAtbiBkb2NrZXIgbmV0d29yayBscyAtcSAtLWZpbHRlciAibGFiZWw9Y29tLnVybmV0d29yay5jb21wZXRpdGlvbi5qb2ItaWQ9JGpvYl9pZCIpIiBdIHx8CisgICAgICAgIGRpZSAiY2FuZGlkYXRlIGJ1aWxkIGZhaWx1cmUgbGVmdCBqb2IgbmV0d29ya3MiCisgICAgcmVtb3ZlX2V2YWx1YXRpb25fc291cmNlcworCisgICAgbG9jYWwgc3VibWlzc2lvbl9lcnJvcj0iJGFydGlmYWN0X2Rpci9zdWJtaXNzaW9uLWVycm9yLmpzb24iCisgICAganEgLW4gLS1hcmcgam9iX2lkICIkam9iX2lkIiAtLWFyZyByb3VuZF9pZCAiJHJvdW5kX2lkIiBcCisgICAgICAgIC0tYXJnIHBhdGNoX3NoYTI1NiAiJHBhdGNoX3NoYTI1NiIgXAorICAgICAgICAne3NjaGVtYToxLGtpbmQ6InN1Ym1pc3Npb24iLGNvZGU6ImNhbmRpZGF0ZV9idWlsZF9mYWlsZWQiLAorICAgICAgICAgIG1lc3NhZ2U6ImNhbmRpZGF0ZSBkaWQgbm90IHBhc3MgdGhlIGZyb3plbiBvZmZsaW5lIGJ1aWxkIiwKKyAgICAgICAgICByZXRyaWFibGU6ZmFsc2Usam9iX2lkOiRqb2JfaWQscm91bmRfaWQ6JHJvdW5kX2lkLAorICAgICAgICAgIHBhdGNoX3NoYTI1NjokcGF0Y2hfc2hhMjU2fScgPiAiJHN1Ym1pc3Npb25fZXJyb3IiCisgICAgY2htb2QgMDQwMCAiJHN1Ym1pc3Npb25fZXJyb3IiCisKKyAgICBwZXJzaXN0X2V2aWRlbmNlX3RyZWUKKyAgICB3cml0ZV9ldmlkZW5jZV9tYW5pZmVzdAorICAgIGxvY2FsIGNvbXBsZXRlX3BhdGg9IiRhcnRpZmFjdF9kaXIvZXZhbHVhdGlvbi5jb21wbGV0ZS5qc29uIgorICAgIGpxIC1uIC0tYXJnIGpvYl9pZCAiJGpvYl9pZCIgLS1hcmcgcm91bmRfaWQgIiRyb3VuZF9pZCIgLS1hcmdqc29uIGF0dGVtcHQgIiRhdHRlbXB0IiBcCisgICAgICAgIC0tYXJnIGJhc2VfaW1hZ2VfaWQgIiRiYXNlX2ltYWdlX2lkIiAtLWFyZyBwYXRjaF9zaGEyNTYgIiRwYXRjaF9zaGEyNTYiIFwKKyAgICAgICAgLS1hcmcgcHJvdmlkZXJzX3NoYTI1NiAiJHByb3ZpZGVyc19zaGEyNTYiIFwKKyAgICAgICAgLS1hcmcgYmFzZWxpbmVfc2hhMjU2ICIkYmFzZWxpbmVfc2hhMjU2IiBcCisgICAgICAgIC0tYXJnIHN1Ym1pc3Npb25fZXJyb3Jfc2hhMjU2ICIkKHNoYTI1Nl9maWxlICIkc3VibWlzc2lvbl9lcnJvciIpIiBcCisgICAgICAgIC0tYXJnIGV2aWRlbmNlX21hbmlmZXN0X3NoYTI1NiAiJChzaGEyNTZfZmlsZSAiJGV2aWRlbmNlX21hbmlmZXN0IikiIFwKKyAgICAgICAgJ3tzY2hlbWE6MSxraW5kOiJzaW0tbGF0ZW5jeS13b3JrZXItZXZhbHVhdGlvbi1jb21wbGV0ZSIsam9iX2lkOiRqb2JfaWQsCisgICAgICAgICAgcm91bmRfaWQ6JHJvdW5kX2lkLGF0dGVtcHQ6JGF0dGVtcHQsYmFzZV9pbWFnZV9pZDokYmFzZV9pbWFnZV9pZCwKKyAgICAgICAgICBjYW5kaWRhdGVfaW1hZ2VfaWQ6bnVsbCxwYXRjaF9zaGEyNTY6JHBhdGNoX3NoYTI1NiwKKyAgICAgICAgICBwcm92aWRlcnNfc2hhMjU2OiRwcm92aWRlcnNfc2hhMjU2LGNsZWFudXBfY29tcGxldGU6dHJ1ZSwKKyAgICAgICAgICB0ZXJtaW5hbF9lcnJvcjoiY2FuZGlkYXRlX2J1aWxkX2ZhaWxlZCIsCisgICAgICAgICAgYXJ0aWZhY3RzOntiYXNlbGluZTokYmFzZWxpbmVfc2hhMjU2LHN1Ym1pc3Npb25fZXJyb3I6JHN1Ym1pc3Npb25fZXJyb3Jfc2hhMjU2LAorICAgICAgICAgICAgZXZpZGVuY2VfbWFuaWZlc3Q6JGV2aWRlbmNlX21hbmlmZXN0X3NoYTI1Nn19JyA+ICIkY29tcGxldGVfcGF0aCIKKyAgICBjaG1vZCAwNDAwICIkY29tcGxldGVfcGF0aCIKKyAgICBzeW5jIC1kICIkYXJ0aWZhY3RfZGlyL2Jhc2VsaW5lLmpzb24iICIkc3VibWlzc2lvbl9lcnJvciIgIiRldmlkZW5jZV9tYW5pZmVzdCIgIiRjb21wbGV0ZV9wYXRoIgorICAgIHN5bmMgIiRhcnRpZmFjdF9kaXIiCisKKyAgICBsb2NhbCBhcnRpZmFjdF9yZWNvcmRzPSgpCisgICAgbG9jYWwgcmVsYXRpdmUgcGF0aAorICAgIGZvciByZWxhdGl2ZSBpbiBiYXNlbGluZS5qc29uIHN1Ym1pc3Npb24tZXJyb3IuanNvbiBldmFsdWF0aW9uLXByb2dyZXNzLmpzb24gZXZhbHVhdGlvbi5jb21wbGV0ZS5qc29uIGV2aWRlbmNlLW1hbmlmZXN0Lmpzb247IGRvCisgICAgICAgIHBhdGg9IiRhcnRpZmFjdF9kaXIvJHJlbGF0aXZlIgorICAgICAgICBhcnRpZmFjdF9yZWNvcmRzKz0oIiQoanEgLWNuIC0tYXJnIHBhdGggIiRyZWxhdGl2ZSIgLS1hcmcgc2hhMjU2ICIkKHNoYTI1Nl9maWxlICIkcGF0aCIpIiBcCisgICAgICAgICAgICAtLWFyZ2pzb24gYnl0ZXMgIiQoZmlsZV9ieXRlcyAiJHBhdGgiKSIgJ3twYXRoOiRwYXRoLHNoYTI1Njokc2hhMjU2LGJ5dGVzOiRieXRlc30nKSIpCisgICAgZG9uZQorICAgIGxvY2FsIGFydGlmYWN0c19qc29uCisgICAgYXJ0aWZhY3RzX2pzb249IiQocHJpbnRmICclc1xuJyAiJHthcnRpZmFjdF9yZWNvcmRzW0BdfSIgfCBqcSAtcyAnLicpIgorICAgIGxvY2FsIHNlY3VyaXR5X2pzb24KKyAgICBzZWN1cml0eV9qc29uPSIkKGpxIC1jbiBcCisgICAgICAgICd7dGVtcGxhdGVfZGF0YWJhc2VfcmVzZXQ6ZmFsc2UscmVkaXNfcmVzZXQ6ZmFsc2UsY2dyb3VwX2NvbnRhaW5lZDpmYWxzZSwKKyAgICAgICAgICByZXNvdXJjZV9saW1pdHM6ZmFsc2UsbWFuYWdlbWVudF9jcHVfcmVzZXJ2ZWQ6dHJ1ZSwKKyAgICAgICAgICBtYW5hZ2VtZW50X21lbW9yeV9yZXNlcnZlZDp0cnVlLGRlZmF1bHRfZGVueV9uZXR3b3JrOnRydWUsb2ZmbGluZV9idWlsZDp0cnVlLAorICAgICAgICAgIG9mZmxpbmVfYnVpbGRfcmVzb3VyY2VfbGltaXRzOnRydWUsCisgICAgICAgICAgbm9fcHJvZHVjdGlvbl9zZWNyZXRzOnRydWUsc3RydWN0dXJhbF9wYXRjaF9jaGVjazp0cnVlLAorICAgICAgICAgIGFjY291bnRpbmdfY29tcGxldGU6ZmFsc2UscmVzb3VyY2VfcmVwb3J0X2NvbXBsZXRlOmZhbHNlLAorICAgICAgICAgIGNsZWFudXBfY29tcGxldGU6dHJ1ZSxpbW11dGFibGVfcmVwb3J0czp0cnVlLGNncm91cF9pZDoiIiwKKyAgICAgICAgICB0ZW1wbGF0ZV9kYXRhYmFzZV9pZDoiIixyZWRpc19nZW5lcmF0aW9uX2lkOiIifScpIgorICAgIGxvY2FsIGV2YWxfZXJyb3JfanNvbgorICAgIGV2YWxfZXJyb3JfanNvbj0iJChqcSAne2tpbmQsY29kZSxtZXNzYWdlLHJldHJpYWJsZX0nICIkc3VibWlzc2lvbl9lcnJvciIpIgorICAgIGxvY2FsIHJlc3VsdF90bXA9IiRhcnRpZmFjdF9kaXIvLndvcmtlci1yZXN1bHQudG1wIgorICAgIGpxIC1uIC0tYXJnIGpvYl9pZCAiJGpvYl9pZCIgLS1hcmdqc29uIGV2YWxfZXJyb3IgIiRldmFsX2Vycm9yX2pzb24iIFwKKyAgICAgICAgLS1hcmdqc29uIHNlY3VyaXR5ICIkc2VjdXJpdHlfanNvbiIgLS1hcmdqc29uIGFydGlmYWN0cyAiJGFydGlmYWN0c19qc29uIiBcCisgICAgICAgICd7c2NoZW1hOjEsam9iX2lkOiRqb2JfaWQsc2NvcmU6bnVsbCxldmFsX2Vycm9yOiRldmFsX2Vycm9yLAorICAgICAgICAgIHNlY3VyaXR5OiRzZWN1cml0eSxhcnRpZmFjdHM6JGFydGlmYWN0c30nID4gIiRyZXN1bHRfdG1wIgorICAgIHN5bmMgLWQgIiRyZXN1bHRfdG1wIgorICAgIFsgISAtZSAiJHJlc3VsdF9wYXRoIiBdIHx8IGRpZSAid29ya2VyIHJlc3VsdCBwYXRoIGFwcGVhcmVkIGR1cmluZyBldmFsdWF0aW9uIgorICAgIG12ICIkcmVzdWx0X3RtcCIgIiRyZXN1bHRfcGF0aCIKKyAgICBjaG1vZCAwNDAwICIkcmVzdWx0X3BhdGgiCisgICAgc3luYyAtZCAiJHJlc3VsdF9wYXRoIgorICAgIHN5bmMgIiRhcnRpZmFjdF9kaXIiCisgICAgbG9nICJ0ZXJtaW5hbCBzdWJtaXNzaW9uIGJ1aWxkIGZhaWx1cmU6IGpvYj0kam9iX2lkIgorfQorCitjb250YWluZXJfY2dyb3VwKCkgeworICAgIGxvY2FsIGNvbnRhaW5lcl9pZD0iJDEiIHBpZCByZWwKKyAgICBwaWQ9IiQoc3VkbyAtbiBkb2NrZXIgaW5zcGVjdCAtLWZvcm1hdCAne3suU3RhdGUuUGlkfX0nICIkY29udGFpbmVyX2lkIikiCisgICAgW1sgIiRwaWQiID1+IF5bMS05XVswLTldKiQgXV0gfHwgcmV0dXJuIDEKKyAgICByZWw9IiQoc3VkbyAtbiBhd2sgLUY6ICckMSA9PSAiMCIge3ByaW50ICQzfScgIi9wcm9jLyRwaWQvY2dyb3VwIikiCisgICAgWyAtbiAiJHJlbCIgXSAmJiBbIC1kICIvc3lzL2ZzL2Nncm91cCRyZWwiIF0gfHwgcmV0dXJuIDEKKyAgICBwcmludGYgJyVzJyAiJHJlbCIKK30KKworcmVhZF9jZ3JvdXBfdXNhZ2VfdXNlYygpIHsKKyAgICBhd2sgJyQxID09ICJ1c2FnZV91c2VjIiB7cHJpbnQgJDJ9JyAiL3N5cy9mcy9jZ3JvdXAkMS9jcHUuc3RhdCIKK30KKworcmVhZF9jZ3JvdXBfcGVhaygpIHsKKyAgICBsb2NhbCB2YWx1ZQorICAgIHZhbHVlPSIkKDwiL3N5cy9mcy9jZ3JvdXAkMS9tZW1vcnkucGVhayIpIgorICAgIFtbICIkdmFsdWUiID1+IF5bMC05XSskIF1dIHx8IHJldHVybiAxCisgICAgcHJpbnRmICclcycgIiR2YWx1ZSIKK30KKworcmVhZF9jZ3JvdXBfb29tX2tpbGxzKCkgeworICAgIGF3ayAnJDEgPT0gIm9vbV9raWxsIiB7cHJpbnQgJDI7IGZvdW5kPTF9IEVORCB7aWYgKCFmb3VuZCkgZXhpdCAxfScgXAorICAgICAgICAiL3N5cy9mcy9jZ3JvdXAkMS9tZW1vcnkuZXZlbnRzIgorfQorCitzYW1wbGVfY2dyb3VwX2NvdW50ZXJzKCkgeworICAgIGxvY2FsIHRhcmdldD0iJDEiCisgICAgc2hpZnQKKyAgICBsb2NhbCByZWwgdXNhZ2UgcGVhayBvb20gY3B1X3VzZWMgcGVha19ieXRlcyBvb21fa2lsbHMgdmFsaWQgc2FtcGxlX3RtcAorICAgIHNhbXBsZV90bXA9IiR0YXJnZXQubmV3IgorICAgIHdoaWxlIDo7IGRvCisgICAgICAgIGNwdV91c2VjPTAKKyAgICAgICAgcGVha19ieXRlcz0wCisgICAgICAgIG9vbV9raWxscz0wCisgICAgICAgIHZhbGlkPXRydWUKKyAgICAgICAgZm9yIHJlbCBpbiAiJEAiOyBkbworICAgICAgICAgICAgaWYgISB1c2FnZT0iJChyZWFkX2Nncm91cF91c2FnZV91c2VjICIkcmVsIiAyPi9kZXYvbnVsbCkiOyB0aGVuCisgICAgICAgICAgICAgICAgdmFsaWQ9ZmFsc2UKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGlmICEgcGVhaz0iJChyZWFkX2Nncm91cF9wZWFrICIkcmVsIiAyPi9kZXYvbnVsbCkiOyB0aGVuCisgICAgICAgICAgICAgICAgdmFsaWQ9ZmFsc2UKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGlmICEgb29tPSIkKHJlYWRfY2dyb3VwX29vbV9raWxscyAiJHJlbCIgMj4vZGV2L251bGwpIjsgdGhlbgorICAgICAgICAgICAgICAgIHZhbGlkPWZhbHNlCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICBpZiBbWyAhICIkdXNhZ2UiID1+IF5bMC05XSskIF1dIHx8IFtbICEgIiRwZWFrIiA9fiBeWzAtOV0rJCBdXSB8fCBbWyAhICIkb29tIiA9fiBeWzAtOV0rJCBdXTsgdGhlbgorICAgICAgICAgICAgICAgIHZhbGlkPWZhbHNlCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICBjcHVfdXNlYz0kKChjcHVfdXNlYyArIHVzYWdlKSkKKyAgICAgICAgICAgIHBlYWtfYnl0ZXM9JCgocGVha19ieXRlcyArIHBlYWspKQorICAgICAgICAgICAgb29tX2tpbGxzPSQoKG9vbV9raWxscyArIG9vbSkpCisgICAgICAgIGRvbmUKKyAgICAgICAgaWYgWyAiJHZhbGlkIiA9IHRydWUgXTsgdGhlbgorICAgICAgICAgICAgcHJpbnRmICclcyAlcyAlc1xuJyAiJGNwdV91c2VjIiAiJHBlYWtfYnl0ZXMiICIkb29tX2tpbGxzIiA+ICIkc2FtcGxlX3RtcCIKKyAgICAgICAgICAgIG12ICIkc2FtcGxlX3RtcCIgIiR0YXJnZXQiCisgICAgICAgIGZpCisgICAgICAgIHNsZWVwIDAuMQorICAgIGRvbmUKK30KKworIyBEb2NrZXIgaW5zcGVjdGlvbiBjYW4gY29udGFpbiBjcmVkZW50aWFscyBhbmQgYmluZC1zb3VyY2UgcGF0aHMuIFBlcnNpc3QKKyMgb25seSB0aGlzIGFsbG93bGlzdCwgYmVmb3JlIGFueSBwb2xpY3kgZmFpbHVyZSBvciBjbGVhbnVwIGNhbiBkaXNjYXJkIGl0Lgord3JpdGVfY29udGFpbmVyX2luc3BlY3Rpb24oKSB7CisgICAgbG9jYWwgcGF0aD0iJDEiIHBlbmRpbmc9IiQxLm5ldyIKKyAgICBqcSAnWy5bXSB8IHsKKyAgICAgICAgICBpZDouSWQsbmFtZTouTmFtZSxpbWFnZV9pZDouSW1hZ2UsCisgICAgICAgICAgY29uZmlnOntpbWFnZTouQ29uZmlnLkltYWdlLHVzZXI6LkNvbmZpZy5Vc2VyLGxhYmVsczouQ29uZmlnLkxhYmVsc30sCisgICAgICAgICAgaG9zdF9jb25maWc6e3JlYWRvbmx5X3Jvb3RmczouSG9zdENvbmZpZy5SZWFkb25seVJvb3RmcywKKyAgICAgICAgICAgIG1lbW9yeTouSG9zdENvbmZpZy5NZW1vcnksbWVtb3J5X3N3YXA6Lkhvc3RDb25maWcuTWVtb3J5U3dhcCwKKyAgICAgICAgICAgIHBpZHNfbGltaXQ6Lkhvc3RDb25maWcuUGlkc0xpbWl0LGNncm91cF9wYXJlbnQ6Lkhvc3RDb25maWcuQ2dyb3VwUGFyZW50LAorICAgICAgICAgICAgY3B1c2V0X2NwdXM6Lkhvc3RDb25maWcuQ3B1c2V0Q3B1cyxjYXBfZHJvcDouSG9zdENvbmZpZy5DYXBEcm9wLAorICAgICAgICAgICAgc2VjdXJpdHlfb3B0Oi5Ib3N0Q29uZmlnLlNlY3VyaXR5T3B0LG5ldHdvcmtfbW9kZTouSG9zdENvbmZpZy5OZXR3b3JrTW9kZSwKKyAgICAgICAgICAgIGlwdjZfYWxsX2Rpc2FibGVkOi5Ib3N0Q29uZmlnLlN5c2N0bHNbIm5ldC5pcHY2LmNvbmYuYWxsLmRpc2FibGVfaXB2NiJdLAorICAgICAgICAgICAgaXB2Nl9kZWZhdWx0X2Rpc2FibGVkOi5Ib3N0Q29uZmlnLlN5c2N0bHNbIm5ldC5pcHY2LmNvbmYuZGVmYXVsdC5kaXNhYmxlX2lwdjYiXX0sCisgICAgICAgICAgbW91bnRzOlsuTW91bnRzW10/IHwge3R5cGU6LlR5cGUsZGVzdGluYXRpb246LkRlc3RpbmF0aW9uLHJ3Oi5SV31dLAorICAgICAgICAgIHN0YXRlOntzdGF0dXM6LlN0YXRlLlN0YXR1cyxleGl0X2NvZGU6LlN0YXRlLkV4aXRDb2RlLAorICAgICAgICAgICAgb29tX2tpbGxlZDouU3RhdGUuT09NS2lsbGVkLHN0YXJ0ZWRfYXQ6LlN0YXRlLlN0YXJ0ZWRBdCwKKyAgICAgICAgICAgIGZpbmlzaGVkX2F0Oi5TdGF0ZS5GaW5pc2hlZEF0LHJ1bm5pbmc6LlN0YXRlLlJ1bm5pbmcsCisgICAgICAgICAgICBkZWFkOi5TdGF0ZS5EZWFkLHJlc3RhcnRpbmc6LlN0YXRlLlJlc3RhcnRpbmcscGF1c2VkOi5TdGF0ZS5QYXVzZWQsCisgICAgICAgICAgICByZXN0YXJ0X2NvdW50Oi5SZXN0YXJ0Q291bnQsaGVhbHRoX3N0YXR1czouU3RhdGUuSGVhbHRoLlN0YXR1cywKKyAgICAgICAgICAgIGhlYWx0aF9mYWlsaW5nX3N0cmVhazouU3RhdGUuSGVhbHRoLkZhaWxpbmdTdHJlYWt9fV0nID4gIiRwZW5kaW5nIgorICAgIGNobW9kIDA0MDAgIiRwZW5kaW5nIgorICAgIG12IC1mIC0tICIkcGVuZGluZyIgIiRwYXRoIgorfQorCitiYXNlbGluZV9jc3Y9KCkKK2Jhc2VsaW5lX3N0ZGVycj0oKQorYmFzZWxpbmVfYWNjb3VudGluZz0oKQorYmFzZWxpbmVfc2FtcGxlcz0oKQorYmFzZWxpbmVfcmVzb3VyY2VzPSgpCitiYXNlbGluZV9tYXJrZXJzPSgpCitiYXNlbGluZV9tYW5pZmVzdHM9KCkKK2NhbmRpZGF0ZV9jc3Y9KCkKK2NhbmRpZGF0ZV9zdGRlcnI9KCkKK2NhbmRpZGF0ZV9hY2NvdW50aW5nPSgpCitjYW5kaWRhdGVfc2FtcGxlcz0oKQorY2FuZGlkYXRlX3Jlc291cmNlcz0oKQorY2FuZGlkYXRlX21hcmtlcnM9KCkKK2NhbmRpZGF0ZV9tYW5pZmVzdHM9KCkKK3J1bl9hY2NvdW50aW5nX3JlY29yZHM9KCkKK3J1bl9yZXNvdXJjZV9yZWNvcmRzPSgpCittaWdyYXRpb25faGFzaGVzPSgpCityZWRpc19nZW5lcmF0aW9ucz0oKQorcHJvZ3Jlc3NfcmVjb3Jkcz0oKQorcHJvZ3Jlc3NfcGF0aD0iJGFydGlmYWN0X2Rpci9ldmFsdWF0aW9uLXByb2dyZXNzLmpzb24iCisKK2pvaW5fY3N2KCkgeworICAgIGxvY2FsIElGUz0sCisgICAgcHJpbnRmICclcycgIiQqIgorfQorCit3cml0ZV9ldmFsdWF0aW9uX3Byb2dyZXNzKCkgeworICAgIGxvY2FsIHBoYXNlPSIkMSIgYmFzZWxpbmVfY29tcGxldGVkPSIkMiIgY2FuZGlkYXRlX2NvbXBsZXRlZD0iJDMiCisgICAgbG9jYWwgcGVuZGluZz0iJHByb2dyZXNzX3BhdGgubmV3IgorICAgIHByaW50ZiAnJXNcbicgIiR7cHJvZ3Jlc3NfcmVjb3Jkc1tAXX0iIHwganEgLXMgXAorICAgICAgICAtLWFyZyBqb2JfaWQgIiRqb2JfaWQiIC0tYXJnIHJvdW5kX2lkICIkcm91bmRfaWQiIC0tYXJnIHBoYXNlICIkcGhhc2UiIFwKKyAgICAgICAgLS1hcmdqc29uIHJlcGxpY2F0ZV9jb3VudCAiJHJlcGxpY2F0ZXMiIFwKKyAgICAgICAgLS1hcmdqc29uIGJhc2VsaW5lX2NvbXBsZXRlZCAiJGJhc2VsaW5lX2NvbXBsZXRlZCIgXAorICAgICAgICAtLWFyZ2pzb24gY2FuZGlkYXRlX2NvbXBsZXRlZCAiJGNhbmRpZGF0ZV9jb21wbGV0ZWQiIFwKKyAgICAgICAgLS1hcmdqc29uIHVwZGF0ZWRfdW5peF9tcyAiJChkYXRlICslcyUzTikiIFwKKyAgICAgICAgJ3tzY2hlbWE6MSxraW5kOiJzaW0tbGF0ZW5jeS1ldmFsdWF0aW9uLXByb2dyZXNzIixqb2JfaWQ6JGpvYl9pZCwKKyAgICAgICAgICByb3VuZF9pZDokcm91bmRfaWQscGhhc2U6JHBoYXNlLHJlcGxpY2F0ZV9jb3VudDokcmVwbGljYXRlX2NvdW50LAorICAgICAgICAgIGJhc2VsaW5lX2NvbXBsZXRlZDokYmFzZWxpbmVfY29tcGxldGVkLAorICAgICAgICAgIGNhbmRpZGF0ZV9jb21wbGV0ZWQ6JGNhbmRpZGF0ZV9jb21wbGV0ZWQsCisgICAgICAgICAgdXBkYXRlZF91bml4X21zOiR1cGRhdGVkX3VuaXhfbXMsbWV0cmljczoufScgPiAiJHBlbmRpbmciCisgICAgY2htb2QgMDQwMCAiJHBlbmRpbmciCisgICAgbXYgLWYgLS0gIiRwZW5kaW5nIiAiJHByb2dyZXNzX3BhdGgiCisgICAgc3luYyAtZCAiJHByb2dyZXNzX3BhdGgiCit9CisKK3J1bl9saXZlX2NvbXBhcmlzb24oKSB7CisgICAgbG9jYWwgaW5kZXg9IiQxIiBvcmRpbmFsIGNvbXBhcmVfbmFtZSBjb21wYXJlX2Nncm91cCBjb21wYXJpc29uCisgICAgb3JkaW5hbD0iJChwcmludGYgJyUwMmQnICIkaW5kZXgiKSIKKyAgICBjb21wYXJlX25hbWU9InVybmV0d29yay1ldmFsLSR7am9iX2lkLy8tL30tbGl2ZS0ke29yZGluYWx9IgorICAgIGNvbXBhcmVfbmFtZT0iJHtjb21wYXJlX25hbWU6MDo2M30iCisgICAgY29tcGFyZV9jZ3JvdXA9InVybmV0d29yay1ldmFsdWF0aW9uLSR7am9iX2lkLy8tL30tbGl2ZS0ke29yZGluYWx9LnNsaWNlIgorICAgIGNvbXBhcmVfY2dyb3VwPSIke2NvbXBhcmVfY2dyb3VwOjA6OTV9LnNsaWNlIgorICAgIGNvbXBhcmVfY2dyb3VwPSIke2NvbXBhcmVfY2dyb3VwLy5zbGljZS5zbGljZS8uc2xpY2V9IgorICAgIGlmIFsgLW4gIiRyb3VuZF9iYXNlbGluZV9wYXRoIiBdOyB0aGVuCisgICAgICAgICMgT2ZmaWNpYWwgc2NvcmUgY29tbWFuZHMgYWNjZXB0IHJlc3VsdHMuY3N2IGFuZCByZXNvbHZlIGl0cyBydW4uanNvbgorICAgICAgICAjIHNpZGVjYXI7IGNvbXBhcmUgYmVsb3cgYWNjZXB0cyB0aGUgbWFuaWZlc3RzIGRpcmVjdGx5LgorICAgICAgICBjb21wYXJpc29uPSIkKHN1ZG8gLW4gZG9ja2VyIHJ1biAtLXJtIC0tbmFtZSAiJGNvbXBhcmVfbmFtZSIgXAorICAgICAgICAgICAgLS1uZXR3b3JrIG5vbmUgLS1yZWFkLW9ubHkgLS11c2VyIDY1NTMyOjY1NTMyIFwKKyAgICAgICAgICAgIC0tY3B1c2V0LWNwdXMgIiRjcHVzZXQiIFwKKyAgICAgICAgICAgIC0tbWVtb3J5ICIkU0NPUkVSX01FTU9SWV9CWVRFUyIgLS1tZW1vcnktc3dhcCAiJFNDT1JFUl9NRU1PUllfQllURVMiIFwKKyAgICAgICAgICAgIC0tcGlkcy1saW1pdCAiJFNDT1JFUl9QSURTX0xJTUlUIiAtLWNncm91cC1wYXJlbnQgIiRjb21wYXJlX2Nncm91cCIgXAorICAgICAgICAgICAgLS1jYXAtZHJvcCBBTEwgLS1zZWN1cml0eS1vcHQgbm8tbmV3LXByaXZpbGVnZXM6dHJ1ZSBcCisgICAgICAgICAgICAtLWxhYmVsICJjb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLmpvYi1pZD0kam9iX2lkIiBcCisgICAgICAgICAgICAtLWxhYmVsICdjb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLnN0YWdlPWxpdmUtcHJvZ3Jlc3MnIFwKKyAgICAgICAgICAgIC0tbGFiZWwgImNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24ucm91bmQtaWQ9JHJvdW5kX2lkIiBcCisgICAgICAgICAgICAtLW1vdW50ICJ0eXBlPWJpbmQsc3JjPSR3b3JrX2Rpci9zY29yZXItaW5wdXQsZHN0PS9hcnRpZmFjdHMscmVhZG9ubHkiIFwKKyAgICAgICAgICAgIC0tZW50cnlwb2ludCAvb3B0L3VybmV0d29yay9iaW4vc2ltLWxhdGVuY3kgXAorICAgICAgICAgICAgIiRiYXNlX2ltYWdlX2lkIiBzY29yZS1wcm9ncmVzcyBcCisgICAgICAgICAgICAtLXJ1biAiJChqb2luX2NzdiAiJHtjYW5kaWRhdGVfY3N2W0BdfSIpIiBcCisgICAgICAgICAgICAtLWJhc2VsaW5lIC9hcnRpZmFjdHMvYmFzZWxpbmUuanNvbikiIHx8IGRpZSAiY2FuZGlkYXRlLSRvcmRpbmFsIGxpdmUgY29tcGFyaXNvbiBmYWlsZWQiCisgICAgZWxzZQorICAgICAgICBjb21wYXJpc29uPSIkKHN1ZG8gLW4gZG9ja2VyIHJ1biAtLXJtIC0tbmFtZSAiJGNvbXBhcmVfbmFtZSIgXAorICAgICAgICAgICAgLS1uZXR3b3JrIG5vbmUgLS1yZWFkLW9ubHkgLS11c2VyIDY1NTMyOjY1NTMyIFwKKyAgICAgICAgICAgIC0tY3B1c2V0LWNwdXMgIiRjcHVzZXQiIFwKKyAgICAgICAgICAgIC0tbWVtb3J5ICIkU0NPUkVSX01FTU9SWV9CWVRFUyIgLS1tZW1vcnktc3dhcCAiJFNDT1JFUl9NRU1PUllfQllURVMiIFwKKyAgICAgICAgICAgIC0tcGlkcy1saW1pdCAiJFNDT1JFUl9QSURTX0xJTUlUIiAtLWNncm91cC1wYXJlbnQgIiRjb21wYXJlX2Nncm91cCIgXAorICAgICAgICAgICAgLS1jYXAtZHJvcCBBTEwgLS1zZWN1cml0eS1vcHQgbm8tbmV3LXByaXZpbGVnZXM6dHJ1ZSBcCisgICAgICAgICAgICAtLWxhYmVsICJjb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLmpvYi1pZD0kam9iX2lkIiBcCisgICAgICAgICAgICAtLWxhYmVsICdjb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLnN0YWdlPWxpdmUtcHJvZ3Jlc3MnIFwKKyAgICAgICAgICAgIC0tbGFiZWwgImNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24ucm91bmQtaWQ9JHJvdW5kX2lkIiBcCisgICAgICAgICAgICAtLW1vdW50ICJ0eXBlPWJpbmQsc3JjPSR3b3JrX2Rpci9zY29yZXItaW5wdXQsZHN0PS9hcnRpZmFjdHMscmVhZG9ubHkiIFwKKyAgICAgICAgICAgIC0tZW50cnlwb2ludCAvb3B0L3VybmV0d29yay9iaW4vc2ltLWxhdGVuY3kgXAorICAgICAgICAgICAgIiRiYXNlX2ltYWdlX2lkIiBjb21wYXJlIFwKKyAgICAgICAgICAgIC0tYSAiJChqb2luX2NzdiAiJHtjYW5kaWRhdGVfbWFuaWZlc3RzW0BdfSIpIiBcCisgICAgICAgICAgICAtLWIgIiQoam9pbl9jc3YgIiR7YmFzZWxpbmVfbWFuaWZlc3RzW0BdfSIpIiBcCisgICAgICAgICAgICAtLXAgMC4wNSAtLWpzb24pIiB8fCBkaWUgImNhbmRpZGF0ZS0kb3JkaW5hbCBsaXZlIGNvbXBhcmlzb24gZmFpbGVkIgorICAgIGZpCisgICAganEgLWUgXAorICAgICAgICAnLmFscGhhID09IDAuMDUgYW5kICgubWV0cmljcyB8IHR5cGUgPT0gImFycmF5IikgYW5kCisgICAgICAgICAoWy5tZXRyaWNzW10gfCBzZWxlY3QoLm5hbWUgPT0gInR0ZmJfcDUwX21zIiBvcgorICAgICAgICAgICAgIC5uYW1lID09ICJ0dGZiX3A5NV9tcyIgb3IKKyAgICAgICAgICAgICAubmFtZSA9PSAidGhyb3VnaHB1dF9wNTBfYnl0ZXNfcGVyX3MiIG9yCisgICAgICAgICAgICAgLm5hbWUgPT0gInRocm91Z2hwdXRfcDk1X2J5dGVzX3Blcl9zIildIHwgbGVuZ3RoKSA9PSA0JyBcCisgICAgICAgIDw8PCIkY29tcGFyaXNvbiIgPi9kZXYvbnVsbCB8fCBkaWUgImNhbmRpZGF0ZS0kb3JkaW5hbCBsaXZlIGNvbXBhcmlzb24gaXMgaW52YWxpZCIKKyAgICBwcmludGYgJyVzJyAiJGNvbXBhcmlzb24iCit9CisKK3JlY29yZF9zdGFnZV9wcm9ncmVzcygpIHsKKyAgICBsb2NhbCByb2xlPSIkMSIgaW5kZXg9IiQyIiBydW5fbWFuaWZlc3Q9IiQzIgorICAgIGxvY2FsIGNvbXBhcmlzb25fanNvbj1udWxsIG1ldHJpYyBxdWFudGlsZSB2YWx1ZSBtZXRyaWNfY29tcGFyaXNvbgorICAgIGxvY2FsIHBfaW1wcm92ZW1lbnQgcF9yZWdyZXNzaW9uIHNpZ25pZmljYW5jZQorICAgIGlmIFsgIiRyb2xlIiA9IGNhbmRpZGF0ZSBdOyB0aGVuCisgICAgICAgIGNvbXBhcmlzb25fanNvbj0iJChydW5fbGl2ZV9jb21wYXJpc29uICIkaW5kZXgiKSIKKyAgICBmaQorICAgIGZvciBtZXRyaWMgaW4gXAorICAgICAgICB0dGZiX3A1MF9tcyB0dGZiX3A5NV9tcyBcCisgICAgICAgIHRocm91Z2hwdXRfcDUwX2J5dGVzX3Blcl9zIHRocm91Z2hwdXRfcDk1X2J5dGVzX3Blcl9zOyBkbworICAgICAgICB2YWx1ZT0iJChzdWRvIC1uIGpxIC1lciAtLWFyZyBtZXRyaWMgIiRtZXRyaWMiIFwKKyAgICAgICAgICAgICcubWV0cmljc1skbWV0cmljXS52YWx1ZSB8CisgICAgICAgICAgICAgc2VsZWN0KHR5cGUgPT0gIm51bWJlciIgYW5kIGlzZmluaXRlIGFuZCAuID49IDApJyBcCisgICAgICAgICAgICAiJHJ1bl9tYW5pZmVzdCIpIiB8fCBkaWUgIiRyb2xlLSRpbmRleCBsaXZlIG1ldHJpYyAkbWV0cmljIGlzIGludmFsaWQiCisgICAgICAgIGNhc2UgIiRtZXRyaWMiIGluCisgICAgICAgICAgICAqX3A1MF8qKSBxdWFudGlsZT1wNTAgOzsKKyAgICAgICAgICAgICpfcDk1XyopIHF1YW50aWxlPXA5NSA7OworICAgICAgICAgICAgKikgZGllICJ1bnN1cHBvcnRlZCBsaXZlIG1ldHJpYyAkbWV0cmljIiA7OworICAgICAgICBlc2FjCisgICAgICAgIGlmIFsgIiRyb2xlIiA9IGJhc2VsaW5lIF07IHRoZW4KKyAgICAgICAgICAgIHBfaW1wcm92ZW1lbnQ9bnVsbAorICAgICAgICAgICAgcF9yZWdyZXNzaW9uPW51bGwKKyAgICAgICAgICAgIHNpZ25pZmljYW5jZT1iYXNlbGluZQorICAgICAgICBlbHNlCisgICAgICAgICAgICBtZXRyaWNfY29tcGFyaXNvbj0iJChqcSAtZWMgLS1hcmcgbWV0cmljICIkbWV0cmljIiBcCisgICAgICAgICAgICAgICAgJy5tZXRyaWNzW10gfCBzZWxlY3QoLm5hbWUgPT0gJG1ldHJpYyknIDw8PCIkY29tcGFyaXNvbl9qc29uIikiIHx8CisgICAgICAgICAgICAgICAgZGllICJjYW5kaWRhdGUtJGluZGV4IGNvbXBhcmlzb24gb21pdHRlZCAkbWV0cmljIgorICAgICAgICAgICAgcF9pbXByb3ZlbWVudD0iJChqcSAtYyAnaWYgLnRlc3RhYmxlIHRoZW4gKC5wX2EgLy8gMCkgZWxzZSBudWxsIGVuZCcgXAorICAgICAgICAgICAgICAgIDw8PCIkbWV0cmljX2NvbXBhcmlzb24iKSIKKyAgICAgICAgICAgIHBfcmVncmVzc2lvbj0iJChqcSAtYyAnaWYgLnRlc3RhYmxlIHRoZW4gKC5wX2IgLy8gMCkgZWxzZSBudWxsIGVuZCcgXAorICAgICAgICAgICAgICAgIDw8PCIkbWV0cmljX2NvbXBhcmlzb24iKSIKKyAgICAgICAgICAgIHNpZ25pZmljYW5jZT0iJChqcSAtciAtLWFyZ2pzb24gYWxwaGEgMC4wNSBcCisgICAgICAgICAgICAgICAgJ2lmIC50ZXN0YWJsZSAhPSB0cnVlIHRoZW4gIm5vdF90ZXN0YWJsZSIKKyAgICAgICAgICAgICAgICAgZWxpZiAoLnBfYSAvLyAwKSA8PSAkYWxwaGEgdGhlbiAiaW1wcm92ZWQiCisgICAgICAgICAgICAgICAgIGVsaWYgKC5wX2IgLy8gMCkgPD0gJGFscGhhIHRoZW4gInJlZ3Jlc3NlZCIKKyAgICAgICAgICAgICAgICAgZWxzZSAibm90X3NpZ25pZmljYW50IiBlbmQnIDw8PCIkbWV0cmljX2NvbXBhcmlzb24iKSIKKyAgICAgICAgZmkKKyAgICAgICAgcHJvZ3Jlc3NfcmVjb3Jkcys9KCIkKGpxIC1jbiBcCisgICAgICAgICAgICAtLWFyZyByb2xlICIkcm9sZSIgLS1hcmdqc29uIHJlcGxpY2F0ZSAiJGluZGV4IiBcCisgICAgICAgICAgICAtLWFyZyBtZXRyaWMgIiRtZXRyaWMiIC0tYXJnIHF1YW50aWxlICIkcXVhbnRpbGUiIFwKKyAgICAgICAgICAgIC0tYXJnanNvbiB2YWx1ZSAiJHZhbHVlIiBcCisgICAgICAgICAgICAtLWFyZ2pzb24gcF9pbXByb3ZlbWVudCAiJHBfaW1wcm92ZW1lbnQiIFwKKyAgICAgICAgICAgIC0tYXJnanNvbiBwX3JlZ3Jlc3Npb24gIiRwX3JlZ3Jlc3Npb24iIFwKKyAgICAgICAgICAgIC0tYXJnIHNpZ25pZmljYW5jZSAiJHNpZ25pZmljYW5jZSIgXAorICAgICAgICAgICAgJ3tyb2xlOiRyb2xlLHJlcGxpY2F0ZTokcmVwbGljYXRlLG1ldHJpYzokbWV0cmljLAorICAgICAgICAgICAgICBxdWFudGlsZTokcXVhbnRpbGUsdmFsdWU6JHZhbHVlLAorICAgICAgICAgICAgICBwX2ltcHJvdmVtZW50OiRwX2ltcHJvdmVtZW50LHBfcmVncmVzc2lvbjokcF9yZWdyZXNzaW9uLAorICAgICAgICAgICAgICBzaWduaWZpY2FuY2U6JHNpZ25pZmljYW5jZX0nKSIpCisgICAgZG9uZQorICAgIGlmIFsgIiRyb2xlIiA9IGJhc2VsaW5lIF07IHRoZW4KKyAgICAgICAgd3JpdGVfZXZhbHVhdGlvbl9wcm9ncmVzcyBiYXNlbGluZSAiJGluZGV4IiAwCisgICAgZWxzZQorICAgICAgICB3cml0ZV9ldmFsdWF0aW9uX3Byb2dyZXNzIGNhbmRpZGF0ZSAiJHJlcGxpY2F0ZXMiICIkaW5kZXgiCisgICAgZmkKK30KKword3JpdGVfZXZhbHVhdGlvbl9wcm9ncmVzcyBwcmVwYXJpbmcgMCAwCisKK3J1bl9zdGFnZSgpIHsKKyAgICBsb2NhbCByb2xlPSIkMSIgaW5kZXg9IiQyIiBpbWFnZT0iJDMiIGJ1aWxkX3NoYT0iJDQiIHNpbXVsYXRvcl9zaGE9IiQ1IiBjYW5kaWRhdGVfcGF0Y2hfc2hhPSIkNiIKKyAgICBsb2NhbCBvcmRpbmFsIGV2YWx1YXRpb25faWQgc3RhZ2VfdG9rZW4gcHJvamVjdCBjZ3JvdXBfcGFyZW50IHN0YWdlX3Jvb3Qgb3V0cHV0IHJ1bm5lcl9lbnYgY29tcG9zZV9lbnYgc291cmNlCisgICAgb3JkaW5hbD0iJChwcmludGYgJyUwMmQnICIkaW5kZXgiKSIKKyAgICBldmFsdWF0aW9uX2lkPSIke3JvbGV9LSR7b3JkaW5hbH0tJHtqb2JfaWQ6MDo4fSIKKyAgICBzdGFnZV90b2tlbj0iJHtyb2xlfS0ke29yZGluYWx9IgorICAgIHByb2plY3Q9InVybmV0d29yay1ldmFsLSR7YXR0ZW1wdF90b2tlbn0tJHtzdGFnZV90b2tlbn0iCisgICAgY2dyb3VwX3BhcmVudD0idXJuZXR3b3JrLWV2YWx1YXRpb24tJHthdHRlbXB0X3Rva2VufS0ke3N0YWdlX3Rva2VufS5zbGljZSIKKyAgICBzdGFnZV9yb290PSIkd29ya19kaXIvcnVucy8kc3RhZ2VfdG9rZW4iCisgICAgb3V0cHV0PSIkc3RhZ2Vfcm9vdC9vdXRwdXQiCisgICAgcnVubmVyX2Vudj0iJHN0YWdlX3Jvb3QvcnVubmVyLmVudiIKKyAgICBjb21wb3NlX2Vudj0iJHN0YWdlX3Jvb3QvY29tcG9zZS5lbnYiCisgICAgaWYgWyAiJHJvbGUiID0gYmFzZWxpbmUgXTsgdGhlbgorICAgICAgICBzb3VyY2U9IiRiYXNlbGluZV9zb3VyY2Vfcm9vdCIKKyAgICBlbHNlCisgICAgICAgIHNvdXJjZT0iJGNhbmRpZGF0ZV9zb3VyY2Vfcm9vdCIKKyAgICBmaQorICAgIGluc3RhbGwgLWQgLW0gMDcwMCAiJHN0YWdlX3Jvb3QiICIkb3V0cHV0IgorCisgICAgc3RhZ2VfZGJfYWRtaW5fcGFzc3dvcmQ9IiQobmV3X3NlY3JldCkiCisgICAgc3RhZ2VfZGJfcGFzc3dvcmQ9IiQobmV3X3NlY3JldCkiCisgICAgc3RhZ2VfcmVkaXNfcGFzc3dvcmQ9IiQobmV3X3NlY3JldCkiCisgICAgYXV0aGVudGljYXRlX2xvY2FsX21vdW50cworICAgIHdyaXRlX3J1bm5lcl9lbnYgIiRydW5uZXJfZW52IiAiJGV2YWx1YXRpb25faWQiICIkYnVpbGRfc2hhIiAiJHNpbXVsYXRvcl9zaGEiICIkaW1hZ2UiICIkY2FuZGlkYXRlX3BhdGNoX3NoYSIKKyAgICB3cml0ZV9jb21wb3NlX2VudiAiJGNvbXBvc2VfZW52IiAiJHByb2plY3QiICIkcm9sZSIgIiRpbWFnZSIgIiRydW5uZXJfZW52IiBcCisgICAgICAgICIkd29ya19kaXIvaW5wdXQiICIkb3V0cHV0IiAiJGNncm91cF9wYXJlbnQiICIkc291cmNlIgorICAgIHN1ZG8gLW4gY2hvd24gLVIgIiRjb250YWluZXJfaG9zdF91aWQ6JGNvbnRhaW5lcl9ob3N0X2dpZCIgIiRvdXRwdXQiCisgICAgc3VkbyAtbiBjaG1vZCAwNzAwICIkb3V0cHV0IgorCisgICAgYWN0aXZlX3Byb2plY3Q9IiRwcm9qZWN0IgorICAgIGFjdGl2ZV9jb21wb3NlX2Vudj0iJGNvbXBvc2VfZW52IgorICAgIGNvbXBvc2Vfd2l0aCAiJHByb2plY3QiICIkY29tcG9zZV9lbnYiIC0tcHJvZmlsZSBydW4gY29uZmlnID4vZGV2L251bGwKKyAgICBjb21wb3NlX3dpdGggIiRwcm9qZWN0IiAiJGNvbXBvc2VfZW52IiAtLXByb2ZpbGUgcnVuIHVwIC0tZGV0YWNoIC0td2FpdCBwb3N0Z3JlcyByZWRpcyA+JjIKKyAgICAjIE9ubHkgdHJ1c3RlZCBiYWNraW5nIGltYWdlcyBoYXZlIHN0YXJ0ZWQuIFJlamVjdCBhIGhvc3QtYWRkcmVzc2VkIGJyaWRnZQorICAgICMgYmVmb3JlIG1pZ3JhdGlvbiwgcHJlZmxpZ2h0IG9yIGNhbmRpZGF0ZSBwYWNrYWdlIGluaXRpYWxpemF0aW9uIGNhbiBydW4uCisgICAgIiRORVRXT1JLX0JPVU5EQVJZIiAiJHtwcm9qZWN0fV9ldmFsdWF0aW9uIiA+ICIkc3RhZ2Vfcm9vdC9uZXR3b3JrLWJvdW5kYXJ5Lmpzb24iIHx8CisgICAgICAgIGRpZSAiJHN0YWdlX3Rva2VuIG5ldHdvcmsgYm91bmRhcnkgZmFpbGVkIGJlZm9yZSBydW5uZXIgYWRtaXNzaW9uIgorICAgIGxvY2FsIG1pZ3JhdGlvbl9qc29uIG1pZ3JhdGlvbl9wYXRoIG1pZ3JhdGlvbl9zaGEKKyAgICBtaWdyYXRpb25fanNvbj0iJChjb21wb3NlX3dpdGggIiRwcm9qZWN0IiAiJGNvbXBvc2VfZW52IiAtLXByb2ZpbGUgcnVuIHJ1biAtLXJtIC0tbm8tZGVwcyAtLW5vLXR0eSBtaWdyYXRlKSIKKyAgICBqcSAtZSAnLnNjaGVtYSA9PSAxIGFuZCAuZGF0YWJhc2VfdmVyc2lvbiA+IDAgYW5kIC5kYXRhYmFzZV92ZXJzaW9uID09IC5taWdyYXRpb25fY291bnQnIFwKKyAgICAgICAgPDw8IiRtaWdyYXRpb25fanNvbiIgPi9kZXYvbnVsbCB8fCBkaWUgIiRzdGFnZV90b2tlbiBtaWdyYXRpb24gZ2F0ZSBmYWlsZWQiCisgICAgbWlncmF0aW9uX3BhdGg9IiRzdGFnZV9yb290L21pZ3JhdGlvbi5qc29uIgorICAgIHByaW50ZiAnJXNcbicgIiRtaWdyYXRpb25fanNvbiIgPiAiJG1pZ3JhdGlvbl9wYXRoIgorICAgIG1pZ3JhdGlvbl9zaGE9IiQoc2hhMjU2X2ZpbGUgIiRtaWdyYXRpb25fcGF0aCIpIgorICAgIG1pZ3JhdGlvbl9oYXNoZXMrPSgiJG1pZ3JhdGlvbl9zaGEiKQorICAgIHJlZGlzX2dlbmVyYXRpb25zKz0oIiQobmV3X3NlY3JldCkiKQorCisgICAgY29tcG9zZV93aXRoICIkcHJvamVjdCIgIiRjb21wb3NlX2VudiIgLS1wcm9maWxlIHJ1biBydW4gLS1ybSAtLW5vLWRlcHMgLS1uby10dHkgcnVubmVyIHByZWZsaWdodCA+JjIKKyAgICBsb2NhbCBydW5uZXJfaWQ9IiIgcG9zdGdyZXNfaWQgcmVkaXNfaWQgcnVubmVyX2Nncm91cCBwb3N0Z3Jlc19jZ3JvdXAgcmVkaXNfY2dyb3VwCisgICAgbG9jYWwgaW5zcGVjdF9wYXRoPSIkc3RhZ2Vfcm9vdC9jb250YWluZXJzLmpzb24iIGluc3BlY3RfanNvbgorICAgIHBvc3RncmVzX2lkPSIkKGNvbXBvc2Vfd2l0aCAiJHByb2plY3QiICIkY29tcG9zZV9lbnYiIC0tcHJvZmlsZSBydW4gcHMgLS1hbGwgLS1xdWlldCBwb3N0Z3JlcykiCisgICAgcmVkaXNfaWQ9IiQoY29tcG9zZV93aXRoICIkcHJvamVjdCIgIiRjb21wb3NlX2VudiIgLS1wcm9maWxlIHJ1biBwcyAtLWFsbCAtLXF1aWV0IHJlZGlzKSIKKyAgICBbIC1uICIkcG9zdGdyZXNfaWQiIF0gJiYgWyAtbiAiJHJlZGlzX2lkIiBdIHx8IGRpZSAiJHN0YWdlX3Rva2VuIGJhY2tpbmcgY29udGFpbmVyIGlkZW50aXR5IG1pc3NpbmciCisgICAgaW5zcGVjdF9qc29uPSIkKHN1ZG8gLW4gZG9ja2VyIGluc3BlY3QgIiRwb3N0Z3Jlc19pZCIgIiRyZWRpc19pZCIpIgorICAgIHdyaXRlX2NvbnRhaW5lcl9pbnNwZWN0aW9uICIkaW5zcGVjdF9wYXRoIiA8PDwiJGluc3BlY3RfanNvbiIKKyAgICBwb3N0Z3Jlc19jZ3JvdXA9IiQoY29udGFpbmVyX2Nncm91cCAiJHBvc3RncmVzX2lkIikiIHx8IGRpZSAiJHN0YWdlX3Rva2VuIHBvc3RncmVzIGNncm91cCBtZW1iZXJzaGlwIHVuYXZhaWxhYmxlIgorICAgIHJlZGlzX2Nncm91cD0iJChjb250YWluZXJfY2dyb3VwICIkcmVkaXNfaWQiKSIgfHwgZGllICIkc3RhZ2VfdG9rZW4gcmVkaXMgY2dyb3VwIG1lbWJlcnNoaXAgdW5hdmFpbGFibGUiCisgICAgWyAiJHtwb3N0Z3Jlc19jZ3JvdXAlLyp9IiA9ICIke3JlZGlzX2Nncm91cCUvKn0iIF0gfHwgZGllICIkc3RhZ2VfdG9rZW4gYmFja2luZyBjZ3JvdXAgcGFyZW50cyBkaXNhZ3JlZSIKKyAgICBjYXNlICIkcG9zdGdyZXNfY2dyb3VwIiBpbgorICAgICAgICAqIi8kY2dyb3VwX3BhcmVudC8iKikgOzsKKyAgICAgICAgKikgZGllICIkc3RhZ2VfdG9rZW4gYmFja2luZyBjb250YWluZXIgZXNjYXBlZCB0aGUgZGVkaWNhdGVkIGNncm91cCBwYXJlbnQiIDs7CisgICAgZXNhYworICAgIGxvY2FsIHByZV9ydW5fb29tX2tpbGxzCisgICAgcHJlX3J1bl9vb21fa2lsbHM9IiQocmVhZF9jZ3JvdXBfb29tX2tpbGxzICIke3Bvc3RncmVzX2Nncm91cCUvKn0iKSIgfHwKKyAgICAgICAgZGllICIkc3RhZ2VfdG9rZW4gcHJlLXJ1biBtZW1vcnkgZXZlbnRzIHVuYXZhaWxhYmxlIgorICAgIFsgIiRwcmVfcnVuX29vbV9raWxscyIgPSAwIF0gfHwgZGllICIkc3RhZ2VfdG9rZW4gcHJlLXJ1biByZXNvdXJjZSBjb250YWlubWVudCBmYWlsdXJlIgorICAgIGNvbXBvc2Vfd2l0aCAiJHByb2plY3QiICIkY29tcG9zZV9lbnYiIC0tcHJvZmlsZSBydW4gdXAgLS1uby1kZXBzIC0tZGV0YWNoIHJ1bm5lciA+JjIKKyAgICBydW5uZXJfaWQ9IiQoY29tcG9zZV93aXRoICIkcHJvamVjdCIgIiRjb21wb3NlX2VudiIgLS1wcm9maWxlIHJ1biBwcyAtLWFsbCAtLXF1aWV0IHJ1bm5lcikiCisgICAgWyAtbiAiJHJ1bm5lcl9pZCIgXSAmJiBbIC1uICIkcG9zdGdyZXNfaWQiIF0gJiYgWyAtbiAiJHJlZGlzX2lkIiBdIHx8IGRpZSAiJHN0YWdlX3Rva2VuIGNvbnRhaW5lciBpZGVudGl0eSBtaXNzaW5nIgorICAgIGluc3BlY3RfanNvbj0iJChzdWRvIC1uIGRvY2tlciBpbnNwZWN0ICIkcnVubmVyX2lkIiAiJHBvc3RncmVzX2lkIiAiJHJlZGlzX2lkIikiCisgICAgd3JpdGVfY29udGFpbmVyX2luc3BlY3Rpb24gIiRpbnNwZWN0X3BhdGgiIDw8PCIkaW5zcGVjdF9qc29uIgorICAgIGZvciBfIGluICQoc2VxIDEgMjAwKTsgZG8KKyAgICAgICAgcnVubmVyX2Nncm91cD0iJChjb250YWluZXJfY2dyb3VwICIkcnVubmVyX2lkIiAyPi9kZXYvbnVsbCB8fCB0cnVlKSIKKyAgICAgICAgcG9zdGdyZXNfY2dyb3VwPSIkKGNvbnRhaW5lcl9jZ3JvdXAgIiRwb3N0Z3Jlc19pZCIgMj4vZGV2L251bGwgfHwgdHJ1ZSkiCisgICAgICAgIHJlZGlzX2Nncm91cD0iJChjb250YWluZXJfY2dyb3VwICIkcmVkaXNfaWQiIDI+L2Rldi9udWxsIHx8IHRydWUpIgorICAgICAgICBbIC1uICIkcnVubmVyX2Nncm91cCIgXSAmJiBbIC1uICIkcG9zdGdyZXNfY2dyb3VwIiBdICYmIFsgLW4gIiRyZWRpc19jZ3JvdXAiIF0gJiYgYnJlYWsKKyAgICAgICAgIyBBIGZhc3QgY3Jhc2ggcmVtb3ZlcyBpdHMgbGl2ZSBjZ3JvdXAgYmVmb3JlIHRoZSBmaXJzdCBzYW1wbGUuIEl0cworICAgICAgICAjIGltbXV0YWJsZSBEb2NrZXIgaWRlbnRpdHkgYW5kIHRlcm1pbmFsIHN0YXRlIHJlbWFpbiBpbnNwZWN0YWJsZS4KKyAgICAgICAgWyAiJChzdWRvIC1uIGRvY2tlciBpbnNwZWN0IC0tZm9ybWF0ICd7ey5TdGF0ZS5TdGF0dXN9fScgIiRydW5uZXJfaWQiKSIgIT0gZXhpdGVkIF0gfHwgYnJlYWsKKyAgICAgICAgc2xlZXAgMC4xCisgICAgZG9uZQorICAgIGxvY2FsIGNncm91cF9tZW1iZXJzaGlwX2F2YWlsYWJsZT1mYWxzZQorICAgIFsgLW4gIiRydW5uZXJfY2dyb3VwIiBdICYmIFsgLW4gIiRwb3N0Z3Jlc19jZ3JvdXAiIF0gJiYgWyAtbiAiJHJlZGlzX2Nncm91cCIgXSAmJiBjZ3JvdXBfbWVtYmVyc2hpcF9hdmFpbGFibGU9dHJ1ZQorICAgIGZvciByZWwgaW4gIiRydW5uZXJfY2dyb3VwIiAiJHBvc3RncmVzX2Nncm91cCIgIiRyZWRpc19jZ3JvdXAiOyBkbworICAgICAgICBjYXNlICIkcmVsIiBpbgorICAgICAgICAgICAgIiIpIDs7CisgICAgICAgICAgICAqIi8kY2dyb3VwX3BhcmVudC8iKikgOzsKKyAgICAgICAgICAgICopIGRpZSAiJHN0YWdlX3Rva2VuIGNvbnRhaW5lciBlc2NhcGVkIHRoZSBkZWRpY2F0ZWQgY2dyb3VwIHBhcmVudCIgOzsKKyAgICAgICAgZXNhYworICAgIGRvbmUKKworICAgIGxvY2FsIGV4aXRfY29kZSByZXNvdXJjZV9zYW1wbGUgc2FtcGxlcl9waWQ9IiIgY3B1X3VzZWMgcGVha19ieXRlcyBzYW1wbGVkX29vbV9raWxscz0wIHBhcmVudF9vb21fa2lsbHMKKyAgICByZXNvdXJjZV9zYW1wbGU9IiRzdGFnZV9yb290L3Jlc291cmNlLWNvdW50ZXJzLnR4dCIKKyAgICBpZiBbICIkY2dyb3VwX21lbWJlcnNoaXBfYXZhaWxhYmxlIiA9IHRydWUgXTsgdGhlbgorICAgICAgICBzYW1wbGVfY2dyb3VwX2NvdW50ZXJzICIkcmVzb3VyY2Vfc2FtcGxlIiAiJHJ1bm5lcl9jZ3JvdXAiICIkcG9zdGdyZXNfY2dyb3VwIiAiJHJlZGlzX2Nncm91cCIgJgorICAgICAgICBzYW1wbGVyX3BpZD0kIQorICAgICAgICBhY3RpdmVfc2FtcGxlcl9waWQ9IiRzYW1wbGVyX3BpZCIKKyAgICBmaQorICAgIGV4aXRfY29kZT0iJChzdWRvIC1uIGRvY2tlciB3YWl0ICIkcnVubmVyX2lkIikiCisgICAgaWYgWyAtbiAiJHNhbXBsZXJfcGlkIiBdOyB0aGVuCisgICAgICAgIGtpbGwgIiRzYW1wbGVyX3BpZCIgPi9kZXYvbnVsbCAyPiYxIHx8IHRydWUKKyAgICAgICAgd2FpdCAiJHNhbXBsZXJfcGlkIiA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQorICAgIGZpCisgICAgYWN0aXZlX3NhbXBsZXJfcGlkPSIiCisgICAgc3VkbyAtbiBkb2NrZXIgbG9ncyAiJHJ1bm5lcl9pZCIgPiYyIHx8IHRydWUKKyAgICBpbnNwZWN0X2pzb249IiQoc3VkbyAtbiBkb2NrZXIgaW5zcGVjdCAiJHJ1bm5lcl9pZCIgIiRwb3N0Z3Jlc19pZCIgIiRyZWRpc19pZCIpIgorICAgIHdyaXRlX2NvbnRhaW5lcl9pbnNwZWN0aW9uICIkaW5zcGVjdF9wYXRoIiA8PDwiJGluc3BlY3RfanNvbiIKKyAgICBbWyAiJGV4aXRfY29kZSIgPX4gXigwfFsxLTldWzAtOV17MCwyfSkkIF1dICYmIFsgIiRleGl0X2NvZGUiIC1sZSAyNTUgXSB8fAorICAgICAgICBkaWUgIiRzdGFnZV90b2tlbiBydW5uZXIgZXhpdCBzdGF0dXMgaXMgaW52YWxpZCIKKyAgICBqcSAtZSAtLWFyZyBwYXJlbnQgIiRjZ3JvdXBfcGFyZW50IiAtLWFyZyBpbWFnZSAiJGltYWdlIiBcCisgICAgICAgIC0tYXJnIGNwdXNldCAiJGNwdXNldCIgXAorICAgICAgICAtLWFyZyBydW5uZXJfaWQgIiRydW5uZXJfaWQiIC0tYXJnIHBvc3RncmVzX2lkICIkcG9zdGdyZXNfaWQiIC0tYXJnIHJlZGlzX2lkICIkcmVkaXNfaWQiIFwKKyAgICAgICAgLS1hcmcgcHJvamVjdCAiJHByb2plY3QiIC0tYXJnIHJvbGUgIiRyb2xlIiAtLWFyZyBqb2JfaWQgIiRqb2JfaWQiIC0tYXJnIHJvdW5kX2lkICIkcm91bmRfaWQiIFwKKyAgICAgICAgLS1hcmdqc29uIGV4aXRfY29kZSAiJGV4aXRfY29kZSIgXAorICAgICAgICAtLWFyZyBjb25maWdfbG9jYWwgIiRjb25maWdfbG9jYWxfZGlyZWN0b3J5IiBcCisgICAgICAgIC0tYXJnIHZhdWx0X2xvY2FsICIkdmF1bHRfbG9jYWxfZGlyZWN0b3J5IiBcCisgICAgICAgIC0tYXJnIHNvdXJjZSAiJHNvdXJjZSIgXAorICAgICAgICAtLWFyZ2pzb24gcnVubmVyX21lbW9yeSAiJFJVTk5FUl9NRU1PUllfQllURVMiIFwKKyAgICAgICAgLS1hcmdqc29uIHJ1bm5lcl9waWRzICIkUlVOTkVSX1BJRFNfTElNSVQiIFwKKyAgICAgICAgLS1hcmdqc29uIHBvc3RncmVzX21lbW9yeSAiJFBPU1RHUkVTX01FTU9SWV9CWVRFUyIgXAorICAgICAgICAtLWFyZ2pzb24gcG9zdGdyZXNfcGlkcyAiJFBPU1RHUkVTX1BJRFNfTElNSVQiIFwKKyAgICAgICAgLS1hcmdqc29uIHJlZGlzX21lbW9yeSAiJFJFRElTX01FTU9SWV9CWVRFUyIgXAorICAgICAgICAtLWFyZ2pzb24gcmVkaXNfcGlkcyAiJFJFRElTX1BJRFNfTElNSVQiIFwKKyAgICAgICAgJ2xlbmd0aCA9PSAzIGFuZAorICAgICAgICAgKG1hcChzZWxlY3QoLk5hbWUgfCBlbmRzd2l0aCgiLXJ1bm5lci0xIikpKSB8IGxlbmd0aCA9PSAxKSBhbmQKKyAgICAgICAgIChtYXAoc2VsZWN0KC5OYW1lIHwgZW5kc3dpdGgoIi1ydW5uZXItMSIpKSlbMF0gfAorICAgICAgICAgIC5JZCA9PSAkcnVubmVyX2lkIGFuZCAuTmFtZSA9PSAoIi8iICsgJHByb2plY3QgKyAiLXJ1bm5lci0xIikgYW5kCisgICAgICAgICAgLkNvbmZpZy5JbWFnZSA9PSAkaW1hZ2UgYW5kIC5Db25maWcuVXNlciA9PSAiNjU1MzI6NjU1MzIiIGFuZAorICAgICAgICAgIC5Ib3N0Q29uZmlnLlJlYWRvbmx5Um9vdGZzID09IHRydWUgYW5kIC5Ib3N0Q29uZmlnLk1lbW9yeSA9PSAkcnVubmVyX21lbW9yeSBhbmQKKyAgICAgICAgICAuSG9zdENvbmZpZy5NZW1vcnlTd2FwID09ICRydW5uZXJfbWVtb3J5IGFuZCAuSG9zdENvbmZpZy5QaWRzTGltaXQgPT0gJHJ1bm5lcl9waWRzIGFuZAorICAgICAgICAgIC5Ib3N0Q29uZmlnLkNncm91cFBhcmVudCA9PSAkcGFyZW50IGFuZCAuU3RhdGUuU3RhdHVzID09ICJleGl0ZWQiIGFuZAorICAgICAgICAgIC5TdGF0ZS5SdW5uaW5nID09IGZhbHNlIGFuZCAuU3RhdGUuRXhpdENvZGUgPT0gJGV4aXRfY29kZSBhbmQKKyAgICAgICAgICAoLlN0YXRlLk9PTUtpbGxlZCA9PSBmYWxzZSBvciAoJHJvbGUgPT0gImNhbmRpZGF0ZSIgYW5kICRleGl0X2NvZGUgPiAwIGFuZCAuU3RhdGUuT09NS2lsbGVkID09IHRydWUpKSBhbmQKKyAgICAgICAgICAoLkhvc3RDb25maWcuQ2FwRHJvcCB8IGluZGV4KCJBTEwiKSAhPSBudWxsKSBhbmQKKyAgICAgICAgICAoLkhvc3RDb25maWcuU2VjdXJpdHlPcHQgfCBpbmRleCgibm8tbmV3LXByaXZpbGVnZXM6dHJ1ZSIpICE9IG51bGwpIGFuZAorICAgICAgICAgIChbLk1vdW50c1tdIHwgc2VsZWN0KC5EZXN0aW5hdGlvbiB8IHN0YXJ0c3dpdGgoIi9ydW50aW1lIikpXSB8IGxlbmd0aCA9PSAyKSBhbmQKKyAgICAgICAgICAoYW55KC5Nb3VudHNbXTsgLlR5cGUgPT0gImJpbmQiIGFuZCAuU291cmNlID09ICRjb25maWdfbG9jYWwgYW5kCisgICAgICAgICAgICAuRGVzdGluYXRpb24gPT0gIi9ydW50aW1lL2NvbmZpZy9sb2NhbCIgYW5kIC5SVyA9PSBmYWxzZSkpIGFuZAorICAgICAgICAgIChhbnkoLk1vdW50c1tdOyAuVHlwZSA9PSAiYmluZCIgYW5kIC5Tb3VyY2UgPT0gJHZhdWx0X2xvY2FsIGFuZAorICAgICAgICAgICAgLkRlc3RpbmF0aW9uID09ICIvcnVudGltZS92YXVsdC9sb2NhbCIgYW5kIC5SVyA9PSBmYWxzZSkpIGFuZAorICAgICAgICAgIChhbnkoLk1vdW50c1tdOyAuVHlwZSA9PSAiYmluZCIgYW5kIC5Tb3VyY2UgPT0gJHNvdXJjZSBhbmQKKyAgICAgICAgICAgIC5EZXN0aW5hdGlvbiA9PSAiL3dvcmtzcGFjZSIgYW5kIC5SVyA9PSBmYWxzZSkpKSBhbmQKKyAgICAgICAgIChtYXAoc2VsZWN0KC5OYW1lIHwgZW5kc3dpdGgoIi1wb3N0Z3Jlcy0xIikpKSB8IGxlbmd0aCA9PSAxKSBhbmQKKyAgICAgICAgIChtYXAoc2VsZWN0KC5OYW1lIHwgZW5kc3dpdGgoIi1wb3N0Z3Jlcy0xIikpKVswXSB8CisgICAgICAgICAgLklkID09ICRwb3N0Z3Jlc19pZCBhbmQgLk5hbWUgPT0gKCIvIiArICRwcm9qZWN0ICsgIi1wb3N0Z3Jlcy0xIikgYW5kCisgICAgICAgICAgLkNvbmZpZy5Vc2VyID09ICI5OTk6OTk5IiBhbmQgLkhvc3RDb25maWcuTWVtb3J5ID09ICRwb3N0Z3Jlc19tZW1vcnkgYW5kCisgICAgICAgICAgLkhvc3RDb25maWcuTWVtb3J5U3dhcCA9PSAkcG9zdGdyZXNfbWVtb3J5IGFuZCAuSG9zdENvbmZpZy5QaWRzTGltaXQgPT0gJHBvc3RncmVzX3BpZHMgYW5kCisgICAgICAgICAgLlN0YXRlLlN0YXR1cyA9PSAicnVubmluZyIgYW5kIC5TdGF0ZS5SdW5uaW5nID09IHRydWUgYW5kIC5TdGF0ZS5FeGl0Q29kZSA9PSAwIGFuZAorICAgICAgICAgIC5TdGF0ZS5PT01LaWxsZWQgPT0gZmFsc2UgYW5kCisgICAgICAgICAgLlN0YXRlLkhlYWx0aC5TdGF0dXMgPT0gImhlYWx0aHkiIGFuZCAuU3RhdGUuSGVhbHRoLkZhaWxpbmdTdHJlYWsgPT0gMCkgYW5kCisgICAgICAgICAobWFwKHNlbGVjdCguTmFtZSB8IGVuZHN3aXRoKCItcmVkaXMtMSIpKSkgfCBsZW5ndGggPT0gMSkgYW5kCisgICAgICAgICAobWFwKHNlbGVjdCguTmFtZSB8IGVuZHN3aXRoKCItcmVkaXMtMSIpKSlbMF0gfAorICAgICAgICAgIC5JZCA9PSAkcmVkaXNfaWQgYW5kIC5OYW1lID09ICgiLyIgKyAkcHJvamVjdCArICItcmVkaXMtMSIpIGFuZAorICAgICAgICAgIC5Db25maWcuVXNlciA9PSAiOTk5Ojk5OSIgYW5kIC5Ib3N0Q29uZmlnLk1lbW9yeSA9PSAkcmVkaXNfbWVtb3J5IGFuZAorICAgICAgICAgIC5Ib3N0Q29uZmlnLk1lbW9yeVN3YXAgPT0gJHJlZGlzX21lbW9yeSBhbmQgLkhvc3RDb25maWcuUGlkc0xpbWl0ID09ICRyZWRpc19waWRzIGFuZAorICAgICAgICAgIC5TdGF0ZS5TdGF0dXMgPT0gInJ1bm5pbmciIGFuZCAuU3RhdGUuUnVubmluZyA9PSB0cnVlIGFuZCAuU3RhdGUuRXhpdENvZGUgPT0gMCBhbmQKKyAgICAgICAgICAuU3RhdGUuT09NS2lsbGVkID09IGZhbHNlIGFuZAorICAgICAgICAgIC5TdGF0ZS5IZWFsdGguU3RhdHVzID09ICJoZWFsdGh5IiBhbmQgLlN0YXRlLkhlYWx0aC5GYWlsaW5nU3RyZWFrID09IDApIGFuZAorICAgICAgICAgKFsuW10gfCAuSG9zdENvbmZpZy5DZ3JvdXBQYXJlbnQgPT0gJHBhcmVudCBhbmQgLkhvc3RDb25maWcuUmVhZG9ubHlSb290ZnMgPT0gdHJ1ZSBhbmQKKyAgICAgICAgICAgLkhvc3RDb25maWcuQ3B1c2V0Q3B1cyA9PSAkY3B1c2V0IGFuZAorICAgICAgICAgICAuSG9zdENvbmZpZy5TeXNjdGxzWyJuZXQuaXB2Ni5jb25mLmFsbC5kaXNhYmxlX2lwdjYiXSA9PSAiMSIgYW5kCisgICAgICAgICAgIC5Ib3N0Q29uZmlnLlN5c2N0bHNbIm5ldC5pcHY2LmNvbmYuZGVmYXVsdC5kaXNhYmxlX2lwdjYiXSA9PSAiMSIgYW5kCisgICAgICAgICAgIC5SZXN0YXJ0Q291bnQgPT0gMCBhbmQgLkhvc3RDb25maWcuUmVzdGFydFBvbGljeS5OYW1lID09ICJubyIgYW5kCisgICAgICAgICAgIC5TdGF0ZS5EZWFkID09IGZhbHNlIGFuZCAuU3RhdGUuUGF1c2VkID09IGZhbHNlIGFuZAorICAgICAgICAgICAuU3RhdGUuUmVzdGFydGluZyA9PSBmYWxzZSBhbmQgLlN0YXRlLkVycm9yID09ICIiIGFuZAorICAgICAgICAgICAuQ29uZmlnLkxhYmVsc1siY29tLmRvY2tlci5jb21wb3NlLnByb2plY3QiXSA9PSAkcHJvamVjdCBhbmQKKyAgICAgICAgICAgLkNvbmZpZy5MYWJlbHNbImNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkIl0gPT0gJGpvYl9pZCBhbmQKKyAgICAgICAgICAgLkNvbmZpZy5MYWJlbHNbImNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24ucm91bmQtaWQiXSA9PSAkcm91bmRfaWQgYW5kCisgICAgICAgICAgIC5Db25maWcuTGFiZWxzWyJjb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLnN0YWdlIl0gPT0gJHJvbGUgYW5kCisgICAgICAgICAgICgoLkhvc3RDb25maWcuQ2FwRHJvcCAvLyBbXSkgfCBpbmRleCgiQUxMIikgIT0gbnVsbCkgYW5kCisgICAgICAgICAgICgoLkhvc3RDb25maWcuU2VjdXJpdHlPcHQgLy8gW10pIHwgaW5kZXgoIm5vLW5ldy1wcml2aWxlZ2VzOnRydWUiKSAhPSBudWxsKV0gfCBhbGwpJyBcCisgICAgICAgIDw8PCIkaW5zcGVjdF9qc29uIiA+L2Rldi9udWxsIHx8IGRpZSAiJHN0YWdlX3Rva2VuIGxpdmUgY29udGFpbmVyIHBvbGljeSBtaXNtYXRjaCIKKyAgICBsb2NhbCBuZXR3b3JrX2lkPSIke3Byb2plY3R9X2V2YWx1YXRpb24iCisgICAgIiRORVRXT1JLX0JPVU5EQVJZIiAiJG5ldHdvcmtfaWQiID4gIiRzdGFnZV9yb290L25ldHdvcmstYm91bmRhcnkucG9zdC5qc29uIiB8fAorICAgICAgICBkaWUgIiRzdGFnZV90b2tlbiBuZXR3b3JrIGlzIG5vdCBpc29sYXRlZCIKKworICAgIFsgLW4gIiRwb3N0Z3Jlc19jZ3JvdXAiIF0gJiYgWyAtbiAiJHJlZGlzX2Nncm91cCIgXSAmJgorICAgICAgICBbICIke3Bvc3RncmVzX2Nncm91cCUvKn0iID0gIiR7cmVkaXNfY2dyb3VwJS8qfSIgXSB8fCBkaWUgIiRzdGFnZV90b2tlbiBzZXJ2aWNlIGNncm91cCBtZW1iZXJzaGlwIHVuYXZhaWxhYmxlIgorICAgICMgVGhlIGRlZGljYXRlZCBwYXJlbnQgc3Vydml2ZXMgYSBmYXN0IHJ1bm5lciBleGl0IGFuZCByZWNvcmRzIGJhY2tlbmQtb25seQorICAgICMgT09NIGtpbGxzIGV2ZW4gd2hlbiBEb2NrZXIga2VlcHMgcmVwb3J0aW5nIGEgaGVhbHRoeSBjb250YWluZXIgaW5pdC4KKyAgICBwYXJlbnRfb29tX2tpbGxzPSIkKHJlYWRfY2dyb3VwX29vbV9raWxscyAiJHtwb3N0Z3Jlc19jZ3JvdXAlLyp9IikiIHx8CisgICAgICAgIGRpZSAiJHN0YWdlX3Rva2VuIHBhcmVudCBtZW1vcnkgZXZlbnRzIHVuYXZhaWxhYmxlIgorICAgIFtbICIkcGFyZW50X29vbV9raWxscyIgPX4gXlswLTldKyQgXV0gfHwgZGllICIkc3RhZ2VfdG9rZW4gcGFyZW50IG1lbW9yeSBldmVudHMgaW52YWxpZCIKKyAgICBpZiBbIC1zICIkcmVzb3VyY2Vfc2FtcGxlIiBdOyB0aGVuCisgICAgICAgIHJlYWQgLXIgY3B1X3VzZWMgcGVha19ieXRlcyBzYW1wbGVkX29vbV9raWxscyA8ICIkcmVzb3VyY2Vfc2FtcGxlIgorICAgICAgICBbWyAiJGNwdV91c2VjIiA9fiBeWzAtOV0rJCBdXSAmJiBbWyAiJHBlYWtfYnl0ZXMiID1+IF5bMC05XSskIF1dICYmCisgICAgICAgICAgICBbWyAiJHNhbXBsZWRfb29tX2tpbGxzIiA9fiBeWzAtOV0rJCBdXSB8fCBkaWUgIiRzdGFnZV90b2tlbiByZXNvdXJjZSBjb3VudGVyIHNhbXBsZSBpbnZhbGlkIgorICAgIGZpCisgICAgbG9jYWwgcG9zdGdyZXNfb29tX2tpbGxzIHJlZGlzX29vbV9raWxscworICAgIHBvc3RncmVzX29vbV9raWxscz0iJChyZWFkX2Nncm91cF9vb21fa2lsbHMgIiRwb3N0Z3Jlc19jZ3JvdXAiKSIgfHwgZGllICIkc3RhZ2VfdG9rZW4gcG9zdGdyZXMgbWVtb3J5IGV2ZW50cyB1bmF2YWlsYWJsZSIKKyAgICByZWRpc19vb21fa2lsbHM9IiQocmVhZF9jZ3JvdXBfb29tX2tpbGxzICIkcmVkaXNfY2dyb3VwIikiIHx8IGRpZSAiJHN0YWdlX3Rva2VuIHJlZGlzIG1lbW9yeSBldmVudHMgdW5hdmFpbGFibGUiCisgICAgW1sgIiRwb3N0Z3Jlc19vb21fa2lsbHMiID1+IF5bMC05XSskIF1dICYmIFtbICIkcmVkaXNfb29tX2tpbGxzIiA9fiBeWzAtOV0rJCBdXSB8fAorICAgICAgICBkaWUgIiRzdGFnZV90b2tlbiBiYWNraW5nIG1lbW9yeSBldmVudHMgaW52YWxpZCIKKyAgICBbICIkcGFyZW50X29vbV9raWxscyIgLWdlICIkKChwb3N0Z3Jlc19vb21fa2lsbHMgKyByZWRpc19vb21fa2lsbHMpKSIgXSAmJgorICAgICAgICBbICIkcGFyZW50X29vbV9raWxscyIgLWdlICIkc2FtcGxlZF9vb21fa2lsbHMiIF0gfHwgZGllICIkc3RhZ2VfdG9rZW4gbWVtb3J5IGV2ZW50IGF0dHJpYnV0aW9uIGluY29uc2lzdGVudCIKKyAgICBsb2NhbCByZXNvdXJjZV9zdGF0ZQorICAgIHJlc291cmNlX3N0YXRlPSIkKGpxIC0tYXJnIHBhcmVudCAiJGNncm91cF9wYXJlbnQiIC0tYXJnIGNwdXNldCAiJGNwdXNldCIgXAorICAgICAgICAtLWFyZ2pzb24gb29tX2tpbGxzICIkcGFyZW50X29vbV9raWxscyIgXAorICAgICAgICAtLWFyZ2pzb24gYmFja2luZ19vb21fa2lsbHMgIiQoKHBvc3RncmVzX29vbV9raWxscyArIHJlZGlzX29vbV9raWxscykpIiBcCisgICAgICAgICd7ZXhpdF9jb2RlOihtYXAoc2VsZWN0KC5OYW1lIHwgZW5kc3dpdGgoIi1ydW5uZXItMSIpKSlbMF0uU3RhdGUuRXhpdENvZGUpLAorICAgICAgICAgIG9vbV9raWxsZWQ6KGFueSguW107IC5TdGF0ZS5PT01LaWxsZWQgPT0gdHJ1ZSkgb3IgJG9vbV9raWxscyA+IDApLAorICAgICAgICAgIHJ1bm5lcl9vb21fa2lsbHM6KCRvb21fa2lsbHMgLSAkYmFja2luZ19vb21fa2lsbHMpLGJhY2tpbmdfb29tX2tpbGxzOiRiYWNraW5nX29vbV9raWxscywKKyAgICAgICAgICBydW5uZXJfb29tX2tpbGxlZDoobWFwKHNlbGVjdCguTmFtZSB8IGVuZHN3aXRoKCItcnVubmVyLTEiKSkpWzBdLlN0YXRlLk9PTUtpbGxlZCksCisgICAgICAgICAgaGFyZF9raWxsZWQ6YW55KC5bXTsgLlN0YXRlLkV4aXRDb2RlID09IDEzNyksCisgICAgICAgICAgbGltaXRfZXNjYXBlOmFueSguW107IC5Ib3N0Q29uZmlnLkNncm91cFBhcmVudCAhPSAkcGFyZW50IG9yIC5Ib3N0Q29uZmlnLkNwdXNldENwdXMgIT0gJGNwdXNldCl9JyBcCisgICAgICAgIDw8PCIkaW5zcGVjdF9qc29uIikiCisgICAgcHJpbnRmICclc1xuJyAiJHJlc291cmNlX3N0YXRlIiA+ICIkc3RhZ2Vfcm9vdC9jb250YWluZXItcmVzb3VyY2Utc3RhdGUuanNvbiIKKyAgICBjaG1vZCAwNDAwICIkc3RhZ2Vfcm9vdC9jb250YWluZXItcmVzb3VyY2Utc3RhdGUuanNvbiIKKyAgICB1bnNldCBpbnNwZWN0X2pzb24KKyAgICBqcSAtZSAnLmJhY2tpbmdfb29tX2tpbGxzID09IDAgYW5kIC5saW1pdF9lc2NhcGUgPT0gZmFsc2UgYW5kCisgICAgICAgICgucnVubmVyX29vbV9raWxsZWQgPT0gZmFsc2Ugb3IgLnJ1bm5lcl9vb21fa2lsbHMgPiAwKScgPDw8IiRyZXNvdXJjZV9zdGF0ZSIgPi9kZXYvbnVsbCB8fAorICAgICAgICBkaWUgIiRzdGFnZV90b2tlbiByZXNvdXJjZSBjb250YWlubWVudCBmYWlsdXJlIgorCisgICAgaWYgWyAiJGV4aXRfY29kZSIgLW5lIDAgXTsgdGhlbgorICAgICAgICBpZiBbICIkcm9sZSIgPSBjYW5kaWRhdGUgXTsgdGhlbgorICAgICAgICAgICAgIyBPbmx5IHRydXN0ZWQgaG9zdCBpbnNwZWN0aW9uIG1heSBwdWJsaXNoIHRoaXMgdGVybWluYWwgZmFpbHVyZTsKKyAgICAgICAgICAgICMgbm8gY2FuZGlkYXRlIG1vdW50IGNvbnRhaW5zIHRoZSBhdHRlbXB0LXJvb3Qgc2lkZWNhciBvciBpdHMgdGVtcC4KKyAgICAgICAgICAgIGxvY2FsIGZhaWx1cmVfcGF0aD0iJGFydGlmYWN0X2Rpci9ldmFsdWF0b3ItZmFpbHVyZS5qc29uIiBmYWlsdXJlX3RtcD0iJGFydGlmYWN0X2Rpci8uZXZhbHVhdG9yLWZhaWx1cmUuanNvbi5uZXciCisgICAgICAgICAgICBbICEgLWUgIiRmYWlsdXJlX3BhdGgiIF0gJiYgWyAhIC1MICIkZmFpbHVyZV9wYXRoIiBdICYmCisgICAgICAgICAgICAgICAgWyAhIC1lICIkZmFpbHVyZV90bXAiIF0gJiYgWyAhIC1MICIkZmFpbHVyZV90bXAiIF0gfHwgZGllICJzdGFnZSBmYWlsdXJlIHBhdGggYWxyZWFkeSBleGlzdHMiCisgICAgICAgICAgICBqcSAtbiAtLWFyZyBqb2JfaWQgIiRqb2JfaWQiIC0tYXJnIHJvdW5kX2lkICIkcm91bmRfaWQiIFwKKyAgICAgICAgICAgICAgICAtLWFyZ2pzb24gYXR0ZW1wdCAiJGF0dGVtcHQiIC0tYXJnanNvbiBleGl0X2NvZGUgIiRleGl0X2NvZGUiIFwKKyAgICAgICAgICAgICAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LXN0YWdlLWZhaWx1cmUiLGpvYl9pZDokam9iX2lkLHJvdW5kX2lkOiRyb3VuZF9pZCwKKyAgICAgICAgICAgICAgICAgIGF0dGVtcHQ6JGF0dGVtcHQscm9sZToiY2FuZGlkYXRlIixzdGFnZToicnVuIixleGl0X2NvZGU6JGV4aXRfY29kZSwKKyAgICAgICAgICAgICAgICAgIGVycm9yOntraW5kOiJzdWJtaXNzaW9uIixjb2RlOiJydW5fcHJvY2Vzc19mYWlsZWQiLAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiJjYW5kaWRhdGUgcnVubmVyIGV4aXRlZCB1bnN1Y2Nlc3NmdWxseSIscmV0cmlhYmxlOmZhbHNlfX0nID4gIiRmYWlsdXJlX3RtcCIKKyAgICAgICAgICAgIGNobW9kIDA0MDAgIiRmYWlsdXJlX3RtcCIKKyAgICAgICAgICAgIHN5bmMgLWQgIiRmYWlsdXJlX3RtcCIKKyAgICAgICAgICAgIG12IC0tICIkZmFpbHVyZV90bXAiICIkZmFpbHVyZV9wYXRoIgorICAgICAgICAgICAgc3luYyAiJGFydGlmYWN0X2RpciIKKyAgICAgICAgZmkKKyAgICAgICAgZGllICIkc3RhZ2VfdG9rZW4gcnVubmVyIGV4aXRlZCAkZXhpdF9jb2RlIgorICAgIGZpCisgICAgWyAiJGNncm91cF9tZW1iZXJzaGlwX2F2YWlsYWJsZSIgPSB0cnVlIF0gfHwgZGllICIkc3RhZ2VfdG9rZW4gY2dyb3VwIG1lbWJlcnNoaXAgdW5hdmFpbGFibGUiCisgICAgWyAtcyAiJHJlc291cmNlX3NhbXBsZSIgXSB8fCBkaWUgIiRzdGFnZV90b2tlbiByZXNvdXJjZSBjb3VudGVyIHNhbXBsZSBtaXNzaW5nIgorICAgIGpxIC1lICcub29tX2tpbGxlZCA9PSBmYWxzZSBhbmQgLmhhcmRfa2lsbGVkID09IGZhbHNlJyA8PDwiJHJlc291cmNlX3N0YXRlIiA+L2Rldi9udWxsIHx8CisgICAgICAgIGRpZSAiJHN0YWdlX3Rva2VuIHJlc291cmNlIGNvbnRhaW5tZW50IGZhaWx1cmUiCisgICAgcm0gLWYgLS0gIiRyZXNvdXJjZV9zYW1wbGUiCisKKyAgICBsb2NhbCBzdGFydGVkX2F0IGZpbmlzaGVkX2F0IHJlc291cmNlX3N0YXJ0X21zIHJlc291cmNlX2VuZF9tcworICAgIHN0YXJ0ZWRfYXQ9IiQoanEgLWVyICdtYXAoc2VsZWN0KC5uYW1lIHwgZW5kc3dpdGgoIi1ydW5uZXItMSIpKSlbMF0uc3RhdGUuc3RhcnRlZF9hdCcgIiRpbnNwZWN0X3BhdGgiKSIKKyAgICBmaW5pc2hlZF9hdD0iJChqcSAtZXIgJ21hcChzZWxlY3QoLm5hbWUgfCBlbmRzd2l0aCgiLXJ1bm5lci0xIikpKVswXS5zdGF0ZS5maW5pc2hlZF9hdCcgIiRpbnNwZWN0X3BhdGgiKSIKKyAgICByZXNvdXJjZV9zdGFydF9tcz0iJChkYXRlIC0tZGF0ZT0iJHN0YXJ0ZWRfYXQiICslcyUzTikiCisgICAgcmVzb3VyY2VfZW5kX21zPSIkKGRhdGUgLS1kYXRlPSIkZmluaXNoZWRfYXQiICslcyUzTikiCisKKyAgICBsb2NhbCBydW5fZGlyPSIkb3V0cHV0LyRldmFsdWF0aW9uX2lkIgorICAgIHN1ZG8gLW4gdGVzdCAtcyAiJHJ1bl9kaXIvcnVuLmpzb24iIHx8IGRpZSAiJHN0YWdlX3Rva2VuIHJ1biBtYW5pZmVzdCBtaXNzaW5nIgorICAgIHN1ZG8gLW4gdGVzdCAtcyAiJHJ1bl9kaXIvYWNjb3VudGluZy5zb3VyY2UuanNvbiIgfHwgZGllICIkc3RhZ2VfdG9rZW4gcHJvdmlkZXIgYWNjb3VudGluZyBzb3VyY2UgbWlzc2luZyIKKyAgICBzdWRvIC1uIGpxIC1lIC0tYXJnIGV2YWx1YXRpb25faWQgIiRldmFsdWF0aW9uX2lkIiBcCisgICAgICAgICcuc2NoZW1hID09IDEgYW5kIC5raW5kID09ICJzaW0tbGF0ZW5jeS1wcm92aWRlci1hY2NvdW50aW5nLXNvdXJjZSIgYW5kCisgICAgICAgICAuZXZhbHVhdGlvbl9pZCA9PSAkZXZhbHVhdGlvbl9pZCBhbmQgLmNvbXBsZXRlID09IHRydWUgYW5kIC5wcm92aWRlcl9lZ3Jlc3NfYnl0ZXMgPj0gMCcgXAorICAgICAgICAiJHJ1bl9kaXIvYWNjb3VudGluZy5zb3VyY2UuanNvbiIgPi9kZXYvbnVsbCB8fCBkaWUgIiRzdGFnZV90b2tlbiBwcm92aWRlciBhY2NvdW50aW5nIHNvdXJjZSBpbnZhbGlkIgorICAgIGxvY2FsIGFjY291bnRpbmdfdG1wPSIkc3RhZ2Vfcm9vdC9hY2NvdW50aW5nLmpzb24iCisgICAgc3VkbyAtbiBqcSBcCisgICAgICAgICd7c2NoZW1hOjEsa2luZDoic2ltLWxhdGVuY3ktYWNjb3VudGluZyIsZXZhbHVhdGlvbl9pZDouZXZhbHVhdGlvbl9pZCwKKyAgICAgICAgICBjb21wbGV0ZTouY29tcGxldGUsbWVhc3VyZV9zdGFydF9tczoubWVhc3VyZV9zdGFydF9tcywKKyAgICAgICAgICBtZWFzdXJlX2VuZF9tczoubWVhc3VyZV9lbmRfbXMscHJvdmlkZXJfZWdyZXNzX2J5dGVzOi5wcm92aWRlcl9lZ3Jlc3NfYnl0ZXN9JyBcCisgICAgICAgICIkcnVuX2Rpci9hY2NvdW50aW5nLnNvdXJjZS5qc29uIiA+ICIkYWNjb3VudGluZ190bXAiCisgICAgc3VkbyAtbiBpbnN0YWxsIC1vICIkY29udGFpbmVyX2hvc3RfdWlkIiAtZyAiJGNvbnRhaW5lcl9ob3N0X2dpZCIgLW0gMDQwMCBcCisgICAgICAgICIkYWNjb3VudGluZ190bXAiICIkcnVuX2Rpci9hY2NvdW50aW5nLmpzb24iCisgICAgbG9jYWwgcmVzb3VyY2VfdG1wPSIkc3RhZ2Vfcm9vdC9yZXNvdXJjZXMuanNvbiIKKyAgICBqcSAtbiBcCisgICAgICAgIC0tYXJnIGV2YWx1YXRpb25faWQgIiRldmFsdWF0aW9uX2lkIiBcCisgICAgICAgIC0tYXJnIGNncm91cF9pZCAiJGNncm91cF9wYXJlbnQiIFwKKyAgICAgICAgLS1hcmdqc29uIG1lYXN1cmVtZW50X3N0YXJ0X21zICIkcmVzb3VyY2Vfc3RhcnRfbXMiIFwKKyAgICAgICAgLS1hcmdqc29uIG1lYXN1cmVtZW50X2VuZF9tcyAiJHJlc291cmNlX2VuZF9tcyIgXAorICAgICAgICAtLWFyZ2pzb24gY3B1X3NlY29uZHMgIiQoYXdrIC12IHZhbHVlPSIkY3B1X3VzZWMiICdCRUdJTiB7cHJpbnRmICIlLjZmIiwgdmFsdWUgLyAxMDAwMDAwfScpIiBcCisgICAgICAgIC0tYXJnanNvbiBwZWFrX3Jzc19ieXRlcyAiJHBlYWtfYnl0ZXMiIFwKKyAgICAgICAgLS1hcmdqc29uIHJlc291cmNlX3N0YXRlICIkcmVzb3VyY2Vfc3RhdGUiIFwKKyAgICAgICAgJ3tzY2hlbWE6MSxraW5kOiJzaW0tbGF0ZW5jeS1yZXNvdXJjZS1yZXBvcnQiLGV2YWx1YXRpb25faWQ6JGV2YWx1YXRpb25faWQsCisgICAgICAgICAgY2dyb3VwX2lkOiRjZ3JvdXBfaWQsbWVhc3VyZW1lbnRfc3RhcnRfbXM6JG1lYXN1cmVtZW50X3N0YXJ0X21zLAorICAgICAgICAgIG1lYXN1cmVtZW50X2VuZF9tczokbWVhc3VyZW1lbnRfZW5kX21zLGNvbXBsZXRlOnRydWUsCisgICAgICAgICAgZXhpdF9jb2RlOiRyZXNvdXJjZV9zdGF0ZS5leGl0X2NvZGUsb29tX2tpbGxlZDokcmVzb3VyY2Vfc3RhdGUub29tX2tpbGxlZCwKKyAgICAgICAgICBoYXJkX2tpbGxlZDokcmVzb3VyY2Vfc3RhdGUuaGFyZF9raWxsZWQsbGltaXRfZXNjYXBlOiRyZXNvdXJjZV9zdGF0ZS5saW1pdF9lc2NhcGUsCisgICAgICAgICAgbWVhc3VyZW1lbnRfbWlzc2luZzpmYWxzZSxjcHVfc2Vjb25kczokY3B1X3NlY29uZHMsCisgICAgICAgICAgcGVha19yc3NfYnl0ZXM6JHBlYWtfcnNzX2J5dGVzfScgPiAiJHJlc291cmNlX3RtcCIKKyAgICBzdWRvIC1uIGluc3RhbGwgLW8gIiRjb250YWluZXJfaG9zdF91aWQiIC1nICIkY29udGFpbmVyX2hvc3RfZ2lkIiAtbSAwNDAwIFwKKyAgICAgICAgIiRyZXNvdXJjZV90bXAiICIkcnVuX2Rpci9yZXNvdXJjZXMuanNvbiIKKyAgICBzdWRvIC1uIHN5bmMgLWQgIiRydW5fZGlyL2FjY291bnRpbmcuanNvbiIgIiRydW5fZGlyL3Jlc291cmNlcy5qc29uIgorICAgIHZhbGlkYXRlX291dHB1dF90cmVlICIkb3V0cHV0IgorCisgICAgbG9jYWwgc3RhdHNfcm9vdAorICAgIHN0YXRzX3Jvb3Q9IiQoc3VkbyAtbiBqcSAtZXIgJy5zdGF0c19yb290JyAiJHJ1bl9kaXIvcnVuLmpzb24iKSIKKyAgICBjYXNlICIkc3RhdHNfcm9vdCIgaW4KKyAgICAgICAgIi9hcnRpZmFjdHMvJGV2YWx1YXRpb25faWQvc2l0ZS9zdGF0cy8iKikgOzsKKyAgICAgICAgKikgZGllICIkc3RhZ2VfdG9rZW4gc3RhdHMgcm9vdCBpZGVudGl0eSBtaXNtYXRjaCIgOzsKKyAgICBlc2FjCisgICAgbG9jYWwgY3N2PSIvYXJ0aWZhY3RzLyRldmFsdWF0aW9uX2lkL3Jlc3VsdHMuY3N2IgorICAgIGxvY2FsIHN0ZGVycj0iL2FydGlmYWN0cy8kZXZhbHVhdGlvbl9pZC9zdGRlcnIubG9nIgorICAgIGxvY2FsIGFjY291bnRpbmc9Ii9hcnRpZmFjdHMvJGV2YWx1YXRpb25faWQvYWNjb3VudGluZy5qc29uIgorICAgIGxvY2FsIHJlc291cmNlcz0iL2FydGlmYWN0cy8kZXZhbHVhdGlvbl9pZC9yZXNvdXJjZXMuanNvbiIKKyAgICBsb2NhbCBtYXJrZXI9Ii9hcnRpZmFjdHMvJGV2YWx1YXRpb25faWQvcnVuLmNvbXBsZXRlLmpzb24iCisgICAgbG9jYWwgbWFuaWZlc3Q9Ii9hcnRpZmFjdHMvJGV2YWx1YXRpb25faWQvcnVuLmpzb24iCisgICAgaWYgWyAiJHJvbGUiID0gYmFzZWxpbmUgXTsgdGhlbgorICAgICAgICBiYXNlbGluZV9jc3YrPSgiJGNzdiIpCisgICAgICAgIGJhc2VsaW5lX3N0ZGVycis9KCIkc3RkZXJyIikKKyAgICAgICAgYmFzZWxpbmVfYWNjb3VudGluZys9KCIkYWNjb3VudGluZyIpCisgICAgICAgIGJhc2VsaW5lX3NhbXBsZXMrPSgiJHN0YXRzX3Jvb3QiKQorICAgICAgICBiYXNlbGluZV9yZXNvdXJjZXMrPSgiJHJlc291cmNlcyIpCisgICAgICAgIGJhc2VsaW5lX21hcmtlcnMrPSgiJG1hcmtlciIpCisgICAgICAgIGJhc2VsaW5lX21hbmlmZXN0cys9KCIkbWFuaWZlc3QiKQorICAgIGVsc2UKKyAgICAgICAgY2FuZGlkYXRlX2Nzdis9KCIkY3N2IikKKyAgICAgICAgY2FuZGlkYXRlX3N0ZGVycis9KCIkc3RkZXJyIikKKyAgICAgICAgY2FuZGlkYXRlX2FjY291bnRpbmcrPSgiJGFjY291bnRpbmciKQorICAgICAgICBjYW5kaWRhdGVfc2FtcGxlcys9KCIkc3RhdHNfcm9vdCIpCisgICAgICAgIGNhbmRpZGF0ZV9yZXNvdXJjZXMrPSgiJHJlc291cmNlcyIpCisgICAgICAgIGNhbmRpZGF0ZV9tYXJrZXJzKz0oIiRtYXJrZXIiKQorICAgICAgICBjYW5kaWRhdGVfbWFuaWZlc3RzKz0oIiRtYW5pZmVzdCIpCisgICAgZmkKKyAgICBsb2NhbCBwcm92aWRlcl9ieXRlcworICAgIHByb3ZpZGVyX2J5dGVzPSIkKHN1ZG8gLW4ganEgLWVyICcucHJvdmlkZXJfZWdyZXNzX2J5dGVzJyAiJHJ1bl9kaXIvYWNjb3VudGluZy5qc29uIikiCisgICAgcnVuX2FjY291bnRpbmdfcmVjb3Jkcys9KCIkKGpxIC1jbiAtLWFyZyBldmFsdWF0aW9uX2lkICIkZXZhbHVhdGlvbl9pZCIgLS1hcmcgcm9sZSAiJHJvbGUiIFwKKyAgICAgICAgLS1hcmcgcGF0aCAiJGFjY291bnRpbmciIC0tYXJnIHNoYTI1NiAiJChzdWRvIC1uIHNoYTI1NnN1bSAiJHJ1bl9kaXIvYWNjb3VudGluZy5qc29uIiB8IGF3ayAne3ByaW50ICQxfScpIiBcCisgICAgICAgIC0tYXJnanNvbiBieXRlcyAiJChzdWRvIC1uIHN0YXQgLWMgJyVzJyAiJHJ1bl9kaXIvYWNjb3VudGluZy5qc29uIikiIFwKKyAgICAgICAgLS1hcmdqc29uIHByb3ZpZGVyX2VncmVzc19ieXRlcyAiJHByb3ZpZGVyX2J5dGVzIiBcCisgICAgICAgICd7ZXZhbHVhdGlvbl9pZDokZXZhbHVhdGlvbl9pZCxyb2xlOiRyb2xlLHBhdGg6JHBhdGgsc2hhMjU2OiRzaGEyNTYsYnl0ZXM6JGJ5dGVzLAorICAgICAgICAgIHByb3ZpZGVyX2VncmVzc19ieXRlczokcHJvdmlkZXJfZWdyZXNzX2J5dGVzfScpIikKKyAgICBydW5fcmVzb3VyY2VfcmVjb3Jkcys9KCIkKGpxIC1jbiAtLWFyZyBldmFsdWF0aW9uX2lkICIkZXZhbHVhdGlvbl9pZCIgLS1hcmcgcm9sZSAiJHJvbGUiIFwKKyAgICAgICAgLS1hcmcgcGF0aCAiJHJlc291cmNlcyIgLS1hcmcgc2hhMjU2ICIkKHN1ZG8gLW4gc2hhMjU2c3VtICIkcnVuX2Rpci9yZXNvdXJjZXMuanNvbiIgfCBhd2sgJ3twcmludCAkMX0nKSIgXAorICAgICAgICAtLWFyZ2pzb24gYnl0ZXMgIiQoc3VkbyAtbiBzdGF0IC1jICclcycgIiRydW5fZGlyL3Jlc291cmNlcy5qc29uIikiIFwKKyAgICAgICAgLS1hcmdqc29uIGNwdV9zZWNvbmRzICIkKGF3ayAtdiB2YWx1ZT0iJGNwdV91c2VjIiAnQkVHSU4ge3ByaW50ZiAiJS42ZiIsIHZhbHVlIC8gMTAwMDAwMH0nKSIgXAorICAgICAgICAtLWFyZ2pzb24gcGVha19yc3NfYnl0ZXMgIiRwZWFrX2J5dGVzIiBcCisgICAgICAgICd7ZXZhbHVhdGlvbl9pZDokZXZhbHVhdGlvbl9pZCxyb2xlOiRyb2xlLHBhdGg6JHBhdGgsc2hhMjU2OiRzaGEyNTYsYnl0ZXM6JGJ5dGVzLAorICAgICAgICAgIGNwdV9zZWNvbmRzOiRjcHVfc2Vjb25kcyxwZWFrX3Jzc19ieXRlczokcGVha19yc3NfYnl0ZXN9JykiKQorCisgICAgY29tcG9zZV93aXRoICIkcHJvamVjdCIgIiRjb21wb3NlX2VudiIgLS1wcm9maWxlIHJ1biBkb3duIC0tdm9sdW1lcyAtLXJlbW92ZS1vcnBoYW5zID4mMgorICAgIFsgLXogIiQoc3VkbyAtbiBkb2NrZXIgcHMgLWFxIC0tZmlsdGVyICJsYWJlbD1jb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLmpvYi1pZD0kam9iX2lkIiBcCisgICAgICAgIC0tZmlsdGVyICJsYWJlbD1jb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLnN0YWdlPSRyb2xlIikiIF0gfHwgZGllICIkc3RhZ2VfdG9rZW4gY2xlYW51cCBsZWZ0IGNvbnRhaW5lcnMiCisgICAgc3VkbyAtbiBjcCAtYSAiJG91dHB1dC8uIiAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dC8iCisgICAgdmFsaWRhdGVfb3V0cHV0X3RyZWUgIiR3b3JrX2Rpci9zY29yZXItaW5wdXQiCisgICAgcmVjb3JkX3N0YWdlX3Byb2dyZXNzICIkcm9sZSIgIiRpbmRleCIgIiRydW5fZGlyL3J1bi5qc29uIgorICAgIGF1dGhlbnRpY2F0ZV9sb2NhbF9tb3VudHMKKyAgICBhY3RpdmVfcHJvamVjdD0iIgorICAgIGFjdGl2ZV9jb21wb3NlX2Vudj0iIgorICAgIHJtIC1mIC0tICIkcnVubmVyX2VudiIgIiRjb21wb3NlX2VudiIgIiRhY2NvdW50aW5nX3RtcCIgIiRyZXNvdXJjZV90bXAiCisgICAgc3VkbyAtbiBjaG93biAtUiAiJHdvcmtlcl91aWQ6JHdvcmtlcl9naWQiICIkc3RhZ2Vfcm9vdCIKKyAgICBsb2cgIiRzdGFnZV90b2tlbiBjb21wbGV0ZSIKK30KKworIyBCdWlsZCBzdWJtaXR0ZWQgY29kZSBvbmx5IGFmdGVyIHRoZSB0cnVzdGVkIHJvdW5kIGJhc2VsaW5lIGhhcyBiZWVuIG1lYXN1cmVkCisjIG9yIGF1dGhlbnRpY2F0ZWQuIEtlZXBpbmcgdGhpcyBhcyBhIGZ1bmN0aW9uIGxldHMgdGhlIGZpcnN0IHJvdW5kIGV2YWx1YXRpb24KKyMgZXN0YWJsaXNoIGl0cyBjb250cm9sIGJlZm9yZSBhbnkgdW50cnVzdGVkIGNvbXBpbGVyIHdvcmtsb2FkIGNhbiBwZXJ0dXJiIHRoZQorIyBob3N0IHVzZWQgdG8gbWVhc3VyZSB0aGF0IGNvbnRyb2wuCitidWlsZF9jYW5kaWRhdGUoKSB7Cit3cml0ZV9ldmFsdWF0aW9uX3Byb2dyZXNzIGJ1aWxkaW5nICIkcmVwbGljYXRlcyIgMAorbG9nICJidWlsZGluZyBhdXRoZW50aWNhdGVkIGNhbmRpZGF0ZSBpbWFnZSBvZmZsaW5lIgorY2FuZGlkYXRlX2J1aWxkX2pzb249IiR3b3JrX2Rpci9jYW5kaWRhdGUtYnVpbGQuanNvbiIKK2NhbmRpZGF0ZV9idWlsZF9sb2c9IiR3b3JrX2Rpci9jYW5kaWRhdGUtYnVpbGQubG9nIgorY2FuZGlkYXRlX2J1aWxkX3BpcGU9IiR3b3JrX2Rpci8uY2FuZGlkYXRlLWJ1aWxkLnBpcGUiCitta2ZpZm8gLW0gMDYwMCAiJGNhbmRpZGF0ZV9idWlsZF9waXBlIgoreyBoZWFkIC1jICIkTUFYX0JVSUxEX0xPR19CWVRFUyI7IGNhdCA+L2Rldi9udWxsOyB9IFwKKyAgICA8ICIkY2FuZGlkYXRlX2J1aWxkX3BpcGUiID4gIiRjYW5kaWRhdGVfYnVpbGRfbG9nIiAmCithY3RpdmVfYnVpbGRfbG9nX3BpZD0kIQorYWN0aXZlX2J1aWxkX2xvZ19waXBlPSIkY2FuZGlkYXRlX2J1aWxkX3BpcGUiCit0cmFwIC0gRVJSCitzZXQgK2UKKyRCVUlMRF9TVUJNSVNTSU9OICIke3NvdXJjZV9tb2RlX2FyZ3NbQF19IiAtLWFsbG93LWxvY2FsLWJhc2UgLS1iYXNlLWltYWdlICIkYmFzZV9idWlsZF9yZWYiIFwKKyAgICAtLXNvdXJjZS1yb290ICIkY2FuZGlkYXRlX3NvdXJjZV9yb290IiBcCisgICAgLS1wYXRjaCAiJHBhdGNoX3BhdGgiIC0tcG9saWN5ICIkcG9saWN5X3BhdGgiIFwKKyAgICA+ICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iIDI+ICIkY2FuZGlkYXRlX2J1aWxkX3BpcGUiCitjYW5kaWRhdGVfYnVpbGRfc3RhdHVzPSQ/Cit3YWl0ICIkYWN0aXZlX2J1aWxkX2xvZ19waWQiCitjYW5kaWRhdGVfYnVpbGRfbG9nX3N0YXR1cz0kPworYWN0aXZlX2J1aWxkX2xvZ19waWQ9IiIKK3JtIC1mIC0tICIkY2FuZGlkYXRlX2J1aWxkX3BpcGUiCithY3RpdmVfYnVpbGRfbG9nX3BpcGU9IiIKK3NldCAtZQordHJhcCAnb25fZXJyb3IgIiRMSU5FTk8iICIkPyInIEVSUgorWyAiJGNhbmRpZGF0ZV9idWlsZF9sb2dfc3RhdHVzIiAtZXEgMCBdIHx8IGRpZSAiYm91bmRlZCBjYW5kaWRhdGUgYnVpbGQgbG9nIGNhcHR1cmUgZmFpbGVkIgoraWYgWyAiJGNhbmRpZGF0ZV9idWlsZF9zdGF0dXMiIC1uZSAwIF07IHRoZW4KKyAgICBpZiBbICIkY2FuZGlkYXRlX2J1aWxkX3N0YXR1cyIgLWVxIDIgXSB8fAorICAgICAgICEgc3VkbyAtbiBkb2NrZXIgaW5mbyA+L2Rldi9udWxsIDI+JjEgfHwKKyAgICAgICAhIHN1ZG8gLW4gZG9ja2VyIGltYWdlIGluc3BlY3QgIiRiYXNlX2ltYWdlX2lkIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgICAgZGllICJjYW5kaWRhdGUgYnVpbGRlciBmYWlsZWQgYmVjYXVzZSBldmFsdWF0b3IgaW5mcmFzdHJ1Y3R1cmUgaXMgdW5hdmFpbGFibGUiCisgICAgZmkKKyAgICBlbWl0X2NhbmRpZGF0ZV9idWlsZF9mYWlsdXJlICIkY2FuZGlkYXRlX2J1aWxkX2xvZyIKKyAgICBleGl0IDAKK2ZpCitjaG1vZCAwNDAwICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iICIkY2FuZGlkYXRlX2J1aWxkX2xvZyIKK3JlYWRvbmx5IGNhbmRpZGF0ZV9idWlsZF9rZXlzPSdbImJhc2VfaW1hZ2VfaWQiLCJiYXNlX3NoYSIsImJ1aWxkZXJfc2hhMjU2IiwiY2FuZGlkYXRlX2NvbW1pdHMiLCJjYW5kaWRhdGVfY29tbWl0c19zaGEyNTYiLCJjYW5kaWRhdGVfc2hhIiwiaW1hZ2UiLCJpbWFnZV9pZCIsImltYWdlX2tleSIsIm9yaWdpbmFsX3NvdXJjZV9pZGVudGl0eV9zaGEyNTYiLCJwYXRjaF9zaGEyNTYiLCJwYXRjaF92YWxpZGF0b3Jfc2hhMjU2IiwicG9saWN5X3NoYTI1NiIsInNjaGVtYSJdJworanEgLWUgLS1hcmdqc29uIGNhbmRpZGF0ZV9idWlsZF9rZXlzICIkY2FuZGlkYXRlX2J1aWxkX2tleXMiIFwKKyAgICAtLWFyZ2pzb24gcmVwb3NpdG9yaWVzICIkcmVwb3NpdG9yeV9uYW1lc19qc29uIiBcCisgICAgJ3R5cGUgPT0gIm9iamVjdCIgYW5kIC5zY2hlbWEgPT0gMSBhbmQgKChrZXlzIHwgc29ydCkgPT0gJGNhbmRpZGF0ZV9idWlsZF9rZXlzKSBhbmQKKyAgICAgKC5pbWFnZSB8IHR5cGUgPT0gInN0cmluZyIgYW5kIGxlbmd0aCA+IDApIGFuZAorICAgICAoLmltYWdlX2lkIHwgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXnNoYTI1NjpbMC05YS1mXXs2NH0kIikpIGFuZAorICAgICAoLmJhc2VfaW1hZ2VfaWQgfCB0eXBlID09ICJzdHJpbmciIGFuZCB0ZXN0KCJec2hhMjU2OlswLTlhLWZdezY0fSQiKSkgYW5kCisgICAgICguYmFzZV9zaGEgfCB0eXBlID09ICJzdHJpbmciIGFuZCB0ZXN0KCJeWzAtOWEtZl17NDB9JCIpKSBhbmQKKyAgICAgKC5jYW5kaWRhdGVfc2hhIHwgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXlswLTlhLWZdezQwfSQiKSkgYW5kCisgICAgICgucGF0Y2hfc2hhMjU2IHwgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXlswLTlhLWZdezY0fSQiKSkgYW5kCisgICAgICgucG9saWN5X3NoYTI1NiB8IHR5cGUgPT0gInN0cmluZyIgYW5kIHRlc3QoIl5bMC05YS1mXXs2NH0kIikpIGFuZAorICAgICAoLmJ1aWxkZXJfc2hhMjU2IHwgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXlswLTlhLWZdezY0fSQiKSkgYW5kCisgICAgICgucGF0Y2hfdmFsaWRhdG9yX3NoYTI1NiB8IHR5cGUgPT0gInN0cmluZyIgYW5kIHRlc3QoIl5bMC05YS1mXXs2NH0kIikpIGFuZAorICAgICAoLmNhbmRpZGF0ZV9jb21taXRzX3NoYTI1NiB8IHR5cGUgPT0gInN0cmluZyIgYW5kIHRlc3QoIl5bMC05YS1mXXs2NH0kIikpIGFuZAorICAgICAoLm9yaWdpbmFsX3NvdXJjZV9pZGVudGl0eV9zaGEyNTYgfCB0eXBlID09ICJzdHJpbmciIGFuZCB0ZXN0KCJeWzAtOWEtZl17NjR9JCIpKSBhbmQKKyAgICAgKCguY2FuZGlkYXRlX2NvbW1pdHMgfCBrZXlzKSA9PSAoJHJlcG9zaXRvcmllcyB8IHNvcnQpKSBhbmQKKyAgICAgKC5jYW5kaWRhdGVfY29tbWl0cyB8IGFsbCguW107IHR5cGUgPT0gInN0cmluZyIgYW5kIHRlc3QoIl5bMC05YS1mXXs0MH0kIikpKSBhbmQKKyAgICAgKC5pbWFnZV9rZXkgfCB0eXBlID09ICJzdHJpbmciIGFuZCB0ZXN0KCJeWzAtOWEtZl17NjR9JCIpKScgXAorICAgICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iID4vZGV2L251bGwgfHwgZGllICJjYW5kaWRhdGUgYnVpbGQgcmVjb3JkIGlzIGludmFsaWQiCitjYW5kaWRhdGVfaW1hZ2VfaWQ9IiQoanEgLWVyICcuaW1hZ2VfaWQnICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iKSIKK2NhbmRpZGF0ZV9zaGE9IiQoanEgLWVyICcuY2FuZGlkYXRlX3NoYScgIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIpIgorWyAiJChqcSAtZXIgJy5iYXNlX2ltYWdlX2lkJyAiJGNhbmRpZGF0ZV9idWlsZF9qc29uIikiID0gIiRiYXNlX2ltYWdlX2lkIiBdIHx8IGRpZSAiY2FuZGlkYXRlIGJhc2UgaWRlbnRpdHkgbWlzbWF0Y2giCitbICIkKGpxIC1lciAnLmJhc2Vfc2hhJyAiJGNhbmRpZGF0ZV9idWlsZF9qc29uIikiID0gIiRiYXNlX3NoYSIgXSB8fCBkaWUgImNhbmRpZGF0ZSBiYXNlIFNIQSBtaXNtYXRjaCIKK1sgIiQoanEgLWVyICcucGF0Y2hfc2hhMjU2JyAiJGNhbmRpZGF0ZV9idWlsZF9qc29uIikiID0gIiRwYXRjaF9zaGEyNTYiIF0gfHwgZGllICJjYW5kaWRhdGUgcGF0Y2ggaWRlbnRpdHkgbWlzbWF0Y2giCitbICIkKGpxIC1lciAnLnBvbGljeV9zaGEyNTYnICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iKSIgPSAiJHBvbGljeV9zaGEyNTYiIF0gfHwgZGllICJjYW5kaWRhdGUgcG9saWN5IGlkZW50aXR5IG1pc21hdGNoIgorWyAiJChqcSAtZXIgJy5idWlsZGVyX3NoYTI1NicgIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIpIiA9ICIkYnVpbGRlcl9zaGEyNTYiIF0gfHwgZGllICJjYW5kaWRhdGUgYnVpbGRlciBpZGVudGl0eSBtaXNtYXRjaCIKK1sgIiQoanEgLWVyICcucGF0Y2hfdmFsaWRhdG9yX3NoYTI1NicgIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIpIiA9ICIkcGF0Y2hfdmFsaWRhdG9yX3NoYTI1NiIgXSB8fCBkaWUgImNhbmRpZGF0ZSBwYXRjaC12YWxpZGF0b3IgaWRlbnRpdHkgbWlzbWF0Y2giCitbICIkKGpxIC1lciAnLm9yaWdpbmFsX3NvdXJjZV9pZGVudGl0eV9zaGEyNTYnICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iKSIgPSAiJGNhbmRpZGF0ZV9vcmlnaW5hbF9zb3VyY2VfaWRlbnRpdHlfc2hhMjU2IiBdIHx8IGRpZSAiY2FuZGlkYXRlIG9yaWdpbmFsIHNvdXJjZSBpZGVudGl0eSBtaXNtYXRjaCIKK2NhbmRpZGF0ZV9jb21taXRzX2pzb249IiQoanEgLWNTICcuY2FuZGlkYXRlX2NvbW1pdHMnICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iKSIKK2NhbmRpZGF0ZV9jb21taXRzX3NoYTI1Nj0iJChqcSAtUyAnLmNhbmRpZGF0ZV9jb21taXRzJyAiJGNhbmRpZGF0ZV9idWlsZF9qc29uIiB8IHNoYTI1NnN1bSB8IGF3ayAne3ByaW50ICQxfScpIgorWyAiJChqcSAtZXIgJy5jYW5kaWRhdGVfY29tbWl0c19zaGEyNTYnICIkY2FuZGlkYXRlX2J1aWxkX2pzb24iKSIgPSAiJGNhbmRpZGF0ZV9jb21taXRzX3NoYTI1NiIgXSB8fCBkaWUgImNhbmRpZGF0ZSBjb21taXQtbWFwIGRpZ2VzdCBtaXNtYXRjaCIKK2pxIC1lIC0tYXJnanNvbiBjb21taXRzICIkY2FuZGlkYXRlX2NvbW1pdHNfanNvbiIgJy5yZXBvc2l0b3JpZXMgPT0gJGNvbW1pdHMnIFwKKyAgICAiJGNhbmRpZGF0ZV9zb3VyY2Vfcm9vdC8uZXZhbHVhdGlvbi1zb3VyY2UuanNvbiIgPi9kZXYvbnVsbCB8fCBkaWUgInRlbXBvcmFyeSBjYW5kaWRhdGUgY29tbWl0IG1hcCBkb2VzIG5vdCBtYXRjaCBpdHMgaW1hZ2UiCitbICIkKGpxIC1lciAnLmltYWdlX2tleScgIiRjYW5kaWRhdGVfYnVpbGRfanNvbiIpIiA9ICIkaW1hZ2Vfa2V5IiBdIHx8IGRpZSAiY2FuZGlkYXRlIGltYWdlIGtleSBtaXNtYXRjaCIKK1sgIiQoanEgLWVyICcucmVwb3NpdG9yaWVzLnNlcnZlcicgIiRjYW5kaWRhdGVfc291cmNlX3Jvb3QvLmV2YWx1YXRpb24tc291cmNlLmpzb24iKSIgPSAiJGNhbmRpZGF0ZV9zaGEiIF0gfHwKKyAgICBkaWUgInRlbXBvcmFyeSBjYW5kaWRhdGUgY2hlY2tvdXQgZG9lcyBub3QgbWF0Y2ggdGhlIGNhbmRpZGF0ZSBpbWFnZSIKK1sgIiQoanEgLWVyICcuY2FuZGlkYXRlX3BhdGNoX3NoYTI1NicgIiRjYW5kaWRhdGVfc291cmNlX3Jvb3QvLmV2YWx1YXRpb24tc291cmNlLmpzb24iKSIgPSAiJHBhdGNoX3NoYTI1NiIgXSB8fAorICAgIGRpZSAidGVtcG9yYXJ5IGNhbmRpZGF0ZSBjaGVja291dCBkb2VzIG5vdCBtYXRjaCB0aGUgY2Fub25pY2FsIHBhdGNoIgorWyAiJChzdWRvIC1uIGRvY2tlciBpbWFnZSBpbnNwZWN0IC0tZm9ybWF0ICd7ey5JZH19JyAiJGNhbmRpZGF0ZV9pbWFnZV9pZCIpIiA9ICIkY2FuZGlkYXRlX2ltYWdlX2lkIiBdIHx8CisgICAgZGllICJjYW5kaWRhdGUgaW1hZ2UgaWQgaXMgdW5hdmFpbGFibGUgb3IgY2hhbmdlZCIKK2NhbmRpZGF0ZV9pZGVudGl0eT0iJChzdWRvIC1uIGRvY2tlciBydW4gLS1ybSAtLW5ldHdvcmsgbm9uZSAtLXJlYWQtb25seSAtLWNhcC1kcm9wIEFMTCBcCisgICAgLS1zZWN1cml0eS1vcHQgbm8tbmV3LXByaXZpbGVnZXM6dHJ1ZSAiJGNhbmRpZGF0ZV9pbWFnZV9pZCIgaWRlbnRpdHkpIgorY2FuZGlkYXRlX3NpbXVsYXRvcl9zaGEyNTY9IiQoanEgLWVyICcuc2ltdWxhdG9yX3NoYTI1NicgPDw8IiRjYW5kaWRhdGVfaWRlbnRpdHkiKSIKK2pxIC1lIC0tYXJnIGJhc2Vfc2hhICIkYmFzZV9zaGEiIC0tYXJnIGJ1aWxkX3NoYSAiJGNhbmRpZGF0ZV9zaGEiIFwKKyAgICAtLWFyZyBwYXRjaF9zaGEgIiRwYXRjaF9zaGEyNTYiIC0tYXJnIHBvbGljeV9zaGEgIiRwb2xpY3lfc2hhMjU2IiBcCisgICAgLS1hcmcgYnVpbGRlcl9zaGEgIiRidWlsZGVyX3NoYTI1NiIgLS1hcmcgaW1hZ2Vfa2V5ICIkaW1hZ2Vfa2V5IiBcCisgICAgLS1hcmcgcGF0Y2hfdmFsaWRhdG9yX3NoYTI1NiAiJHBhdGNoX3ZhbGlkYXRvcl9zaGEyNTYiIFwKKyAgICAtLWFyZyBjYW5kaWRhdGVfY29tbWl0c19zaGEyNTYgIiRjYW5kaWRhdGVfY29tbWl0c19zaGEyNTYiIFwKKyAgICAtLWFyZyBvcmlnaW5hbF9zb3VyY2VfaWRlbnRpdHlfc2hhMjU2ICIkY2FuZGlkYXRlX29yaWdpbmFsX3NvdXJjZV9pZGVudGl0eV9zaGEyNTYiIFwKKyAgICAtLWFyZ2pzb24gY2FuZGlkYXRlX2NvbW1pdHMgIiRjYW5kaWRhdGVfY29tbWl0c19qc29uIiBcCisgICAgJy5zY2hlbWEgPT0gMSBhbmQgLmltYWdlX2tpbmQgPT0gInN1Ym1pc3Npb24iIGFuZCAuYmFzZV9zaGEgPT0gJGJhc2Vfc2hhIGFuZAorICAgICAuYnVpbGRfc2hhID09ICRidWlsZF9zaGEgYW5kIC5wYXRjaF9zaGEyNTYgPT0gJHBhdGNoX3NoYSBhbmQKKyAgICAgLnBvbGljeV9zaGEyNTYgPT0gJHBvbGljeV9zaGEgYW5kIC5idWlsZGVyX3NoYTI1NiA9PSAkYnVpbGRlcl9zaGEgYW5kCisgICAgIC5pbWFnZV9rZXkgPT0gJGltYWdlX2tleSBhbmQgKC5zaW11bGF0b3Jfc2hhMjU2IHwgdGVzdCgiXlswLTlhLWZdezY0fSQiKSkgYW5kCisgICAgIC5wYXRjaF92YWxpZGF0b3Jfc2hhMjU2ID09ICRwYXRjaF92YWxpZGF0b3Jfc2hhMjU2IGFuZAorICAgICAuY2FuZGlkYXRlX2NvbW1pdHNfc2hhMjU2ID09ICRjYW5kaWRhdGVfY29tbWl0c19zaGEyNTYgYW5kCisgICAgIC5vcmlnaW5hbF9zb3VyY2VfaWRlbnRpdHlfc2hhMjU2ID09ICRvcmlnaW5hbF9zb3VyY2VfaWRlbnRpdHlfc2hhMjU2IGFuZAorICAgICAuY2FuZGlkYXRlX2NvbW1pdHMgPT0gJGNhbmRpZGF0ZV9jb21taXRzIGFuZAorICAgICAoLnBhdGhzIHwgdHlwZSA9PSAiYXJyYXkiKScgXAorICAgIDw8PCIkY2FuZGlkYXRlX2lkZW50aXR5IiA+L2Rldi9udWxsIHx8IGRpZSAiY2FuZGlkYXRlIGltYWdlIGlkZW50aXR5IGlzIGludmFsaWQiCithdXRoZW50aWNhdGVfcHJvdGVjdGVkX3NpbXVsYXRvcl90cmVlCit3cml0ZV9zb3VyY2VfZXZpZGVuY2UgZmFsc2UKK3NlYWxfZXZhbHVhdGlvbl9zb3VyY2UgIiRjYW5kaWRhdGVfc291cmNlX3Jvb3QiICIkY2FuZGlkYXRlX3NoYSIgIiRwYXRjaF9zaGEyNTYiCit9CisKK3NlYWxfZXZhbHVhdGlvbl9zb3VyY2UgIiRiYXNlbGluZV9zb3VyY2Vfcm9vdCIgIiRiYXNlX3NoYSIgIiIKKworIyBSZWZ1c2Ugc291cmNlLXBlcmNlbnQvcmVxdWVzdC1mcmFjdGlvbiBtaXNtYXRjaGVzIGJlZm9yZSBwYXlpbmcgZm9yIGFueQorIyBiYXNlbGluZSBydW4uIFRoZSBwcmlzdGluZSBpbWFnZSBwZXJmb3JtcyB0aGlzIG1ldGFkYXRhLW9ubHkgY2hlY2sgb2ZmbGluZS4KK3N1ZG8gLW4gZG9ja2VyIHJ1biAtLXJtIC0tbmV0d29yayBub25lIC0tcmVhZC1vbmx5IC0tY2FwLWRyb3AgQUxMIFwKKyAgICAtLXNlY3VyaXR5LW9wdCBuby1uZXctcHJpdmlsZWdlczp0cnVlIC0tY3B1c2V0LWNwdXMgIiRtYW5hZ2VtZW50X2NwdXNldCIgXAorICAgIC0tbWVtb3J5ICIkU0NPUkVSX01FTU9SWV9MSU1JVCIgLS1tZW1vcnktc3dhcCAiJFNDT1JFUl9NRU1PUllfTElNSVQiIC0tcGlkcy1saW1pdCAiJFNDT1JFUl9QSURTX0xJTUlUIiBcCisgICAgLS1lbnYgQVBFWF9TSU1fQklOPS9vcHQvdXJuZXR3b3JrL2Jpbi9zaW0tbGF0ZW5jeSBcCisgICAgLS1lbnYgIkFQRVhfU0lNX1NIQTI1Nj0kYmFzZV9zaW11bGF0b3Jfc2hhMjU2IiBcCisgICAgLS1lbnYgIkFQRVhfRVBPQ0g9JHNvdXJjZV9lcG9jaCIgLS1lbnYgIkFQRVhfVEFLRU9WRVJfTUFSR0lOPSR0YWtlb3Zlcl9tYXJnaW4iIFwKKyAgICAtLWVudiAiQVBFWF9HMl9WT0xVTUVfUE9MSUNZPSRnMl92b2x1bWVfcG9saWN5IiBcCisgICAgLS1lbnYgIkFQRVhfV09SS19DT1ZFUkFHRV9QT0xJQ1lfSlNPTj0kd29ya19jb3ZlcmFnZV9wb2xpY3kiIFwKKyAgICAiJGJhc2VfaW1hZ2VfaWQiIG1hcmdpbi1wcmVmbGlnaHQgPiYyIHx8IGRpZSAic291cmNlIGVwb2NoIHRha2VvdmVyIG1hcmdpbiBwcmVmbGlnaHQgZmFpbGVkIgorCitpZiBbIC1uICIkcm91bmRfYmFzZWxpbmVfcGF0aCIgXTsgdGhlbgorICAgIGpxIC1lIC0tYXJnIHJvdW5kX2lkICIkcm91bmRfaWQiIC0tYXJnIHByb3ZpZGVyc19zaGEyNTYgIiRwcm92aWRlcnNfc2hhMjU2IiBcCisgICAgICAgIC0tYXJnIHNjb3Jlcl92ZXJzaW9uICIkc2NvcmVyX3ZlcnNpb24iIC0tYXJnanNvbiByZXBsaWNhdGVzICIkcmVwbGljYXRlcyIgXAorICAgICAgICAtLWFyZyBnMl92b2x1bWVfcG9saWN5ICIkZzJfdm9sdW1lX3BvbGljeSIgXAorICAgICAgICAtLWFyZ2pzb24gY292ZXJhZ2UgIiR3b3JrX2NvdmVyYWdlX3BvbGljeSIgXAorICAgICAgICAtLWFyZ2pzb24gcmVxdWVzdF90aW1lb3V0X21zICIkcmVxdWVzdF90aW1lb3V0X21zIiBcCisgICAgICAgIC0tYXJnanNvbiB0YWtlb3Zlcl9tYXJnaW4gIiR0YWtlb3Zlcl9tYXJnaW4iIFwKKyAgICAgICAgJy5zY29yZV9zY2hlbWEgPT0gMSBhbmQgLmtpbmQgPT0gInNpbS1sYXRlbmN5LXNjb3JlLWJhc2VsaW5lIiBhbmQKKyAgICAgICAgIC5zY29yZXJfdmVyc2lvbiA9PSAkc2NvcmVyX3ZlcnNpb24gYW5kIC5yb3VuZF9pZCA9PSAkcm91bmRfaWQgYW5kCisgICAgICAgICAoLmcyX3ZvbHVtZV9wb2xpY3kgLy8gIiIpID09ICRnMl92b2x1bWVfcG9saWN5IGFuZAorICAgICAgICAgKC53b3JrX2NvdmVyYWdlX3BvbGljeSAvLyBudWxsKSA9PSAkY292ZXJhZ2UgYW5kCisgICAgICAgICAuY29uZmlnX3NoYTI1NiA9PSAkcHJvdmlkZXJzX3NoYTI1NiBhbmQKKyAgICAgICAgIC5yZXF1ZXN0X3RpbWVvdXRfbXMgPT0gJHJlcXVlc3RfdGltZW91dF9tcyBhbmQKKyAgICAgICAgIC50YWtlb3Zlcl9tYXJnaW4gPT0gJHRha2VvdmVyX21hcmdpbiBhbmQKKyAgICAgICAgICgucmVwbGljYXRlcyB8IHR5cGUgPT0gImFycmF5IiBhbmQgbGVuZ3RoID09ICRyZXBsaWNhdGVzKSBhbmQKKyAgICAgICAgIGFsbCgucmVwbGljYXRlc1tdOworICAgICAgICAgICAoLmxpdmVfbWV0cmljcyB8IHR5cGUgPT0gIm9iamVjdCIgYW5kCisgICAgICAgICAgICAoa2V5cyB8IHNvcnQpID09IFsidGhyb3VnaHB1dF9wNTBfYnl0ZXNfcGVyX3MiLCJ0aHJvdWdocHV0X3A5NV9ieXRlc19wZXJfcyIsInR0ZmJfcDUwX21zIiwidHRmYl9wOTVfbXMiXSBhbmQKKyAgICAgICAgICAgIGFsbCguW107IC52YWx1ZSA+PSAwIGFuZCAubiA+IDAgYW5kICguYmxvY2tfc2UgLy8gMCkgPj0gMCkpKScgXAorICAgICAgICAiJHJvdW5kX2Jhc2VsaW5lX3BhdGgiID4vZGV2L251bGwgfHwgZGllICJmcm96ZW4gcm91bmQgYmFzZWxpbmUgY29udHJhY3QgbWlzbWF0Y2giCisgICAgc3VkbyAtbiBpbnN0YWxsIC1vICIkd29ya2VyX3VpZCIgLWcgIiR3b3JrZXJfZ2lkIiAtbSAwNDAwIFwKKyAgICAgICAgIiRyb3VuZF9iYXNlbGluZV9wYXRoIiAiJGFydGlmYWN0X2Rpci9iYXNlbGluZS5qc29uIgorICAgIHN1ZG8gLW4gaW5zdGFsbCAtbyAiJGNvbnRhaW5lcl9ob3N0X3VpZCIgLWcgIiRjb250YWluZXJfaG9zdF9naWQiIC1tIDA0MDAgXAorICAgICAgICAiJGFydGlmYWN0X2Rpci9iYXNlbGluZS5qc29uIiAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dC9iYXNlbGluZS5qc29uIgorICAgIGJhc2VsaW5lX3NoYTI1Nj0iJChzaGEyNTZfZmlsZSAiJGFydGlmYWN0X2Rpci9iYXNlbGluZS5qc29uIikiCisgICAgWyAiJGJhc2VsaW5lX3NoYTI1NiIgPSAiJHJvdW5kX2Jhc2VsaW5lX3NoYTI1NiIgXSB8fCBkaWUgIm1hdGVyaWFsaXplZCByb3VuZCBiYXNlbGluZSBoYXNoIG1pc21hdGNoIgorICAgIHdoaWxlIElGUz0gcmVhZCAtciBwcm9ncmVzc19yZWNvcmQ7IGRvCisgICAgICAgIHByb2dyZXNzX3JlY29yZHMrPSgiJHByb2dyZXNzX3JlY29yZCIpCisgICAgZG9uZSA8IDwoanEgLWMgJworICAgICAgICAucmVwbGljYXRlcyB8IHRvX2VudHJpZXNbXSBhcyAkcmVwbGljYXRlIHwKKyAgICAgICAgJHJlcGxpY2F0ZS52YWx1ZS5saXZlX21ldHJpY3MgfCB0b19lbnRyaWVzW10gfAorICAgICAgICB7cm9sZToiYmFzZWxpbmUiLHJlcGxpY2F0ZTooJHJlcGxpY2F0ZS5rZXkgKyAxKSxtZXRyaWM6LmtleSwKKyAgICAgICAgIHF1YW50aWxlOihpZiAoLmtleSB8IGNvbnRhaW5zKCJfcDUwXyIpKSB0aGVuICJwNTAiIGVsc2UgInA5NSIgZW5kKSwKKyAgICAgICAgIHZhbHVlOi52YWx1ZS52YWx1ZSxwX2ltcHJvdmVtZW50Om51bGwscF9yZWdyZXNzaW9uOm51bGwsc2lnbmlmaWNhbmNlOiJiYXNlbGluZSJ9JyBcCisgICAgICAgICIkYXJ0aWZhY3RfZGlyL2Jhc2VsaW5lLmpzb24iKQorICAgIHdyaXRlX2V2YWx1YXRpb25fcHJvZ3Jlc3MgYmFzZWxpbmUgIiRyZXBsaWNhdGVzIiAwCitlbHNlCisgICAgZm9yICgoaSA9IDE7IGkgPD0gcmVwbGljYXRlczsgaSsrKSk7IGRvCisgICAgICAgIHJ1bl9zdGFnZSBiYXNlbGluZSAiJGkiICIkYmFzZV9pbWFnZV9pZCIgIiRiYXNlX3NoYSIgIiRiYXNlX3NpbXVsYXRvcl9zaGEyNTYiICIkRU1QVFlfUEFUQ0hfU0hBMjU2IgorICAgIGRvbmUKK2ZpCisKK3Njb3JlX3J1bm5lcl9lbnY9IiR3b3JrX2Rpci9zY29yZXIuZW52Igorc2NvcmVfY29tcG9zZV9lbnY9IiR3b3JrX2Rpci9zY29yZXItY29tcG9zZS5lbnYiCitpZiBbIC16ICIkcm91bmRfYmFzZWxpbmVfcGF0aCIgXTsgdGhlbgorc3RhZ2VfZGJfYWRtaW5fcGFzc3dvcmQ9IiQobmV3X3NlY3JldCkiCitzdGFnZV9kYl9wYXNzd29yZD0iJChuZXdfc2VjcmV0KSIKK3N0YWdlX3JlZGlzX3Bhc3N3b3JkPSIkKG5ld19zZWNyZXQpIgord3JpdGVfcnVubmVyX2VudiAiJHNjb3JlX3J1bm5lcl9lbnYiICJzY29yZS0ke2pvYl9pZDowOjh9IiAiJGJhc2Vfc2hhIiAiJGJhc2Vfc2ltdWxhdG9yX3NoYTI1NiIgIiRiYXNlX2ltYWdlX2lkIiAiJEVNUFRZX1BBVENIX1NIQTI1NiIKK3NlZCAtaSAnc3xeQVBFWF9QUk9WSURFUlNfRklMRT0uKnxBUEVYX1BST1ZJREVSU19GSUxFPS9hcnRpZmFjdHMvcHJvdmlkZXJzLnltbHwnICIkc2NvcmVfcnVubmVyX2VudiIKK2NobW9kIDA2MDAgIiRzY29yZV9ydW5uZXJfZW52IgorcHJpbnRmICclc1xuJyBcCisgICAgIkFQRVhfUk9VTkRfSUQ9JHJvdW5kX2lkIiBcCisgICAgIkFQRVhfVEFLRU9WRVJfTUFSR0lOPSR0YWtlb3Zlcl9tYXJnaW4iIFwKKyAgICAiQVBFWF9CQVNFTElORV9SVU5TPSQoam9pbl9jc3YgIiR7YmFzZWxpbmVfY3N2W0BdfSIpIiBcCisgICAgIkFQRVhfQkFTRUxJTkVfU1RERVJSPSQoam9pbl9jc3YgIiR7YmFzZWxpbmVfc3RkZXJyW0BdfSIpIiBcCisgICAgIkFQRVhfQkFTRUxJTkVfQUNDT1VOVElORz0kKGpvaW5fY3N2ICIke2Jhc2VsaW5lX2FjY291bnRpbmdbQF19IikiIFwKKyAgICAiQVBFWF9CQVNFTElORV9TQU1QTEVTPSQoam9pbl9jc3YgIiR7YmFzZWxpbmVfc2FtcGxlc1tAXX0iKSIgXAorICAgICJBUEVYX0JBU0VMSU5FX1JFU09VUkNFUz0kKGpvaW5fY3N2ICIke2Jhc2VsaW5lX3Jlc291cmNlc1tAXX0iKSIgXAorICAgICJBUEVYX0JBU0VMSU5FX01BUktFUlM9JChqb2luX2NzdiAiJHtiYXNlbGluZV9tYXJrZXJzW0BdfSIpIiBcCisgICAgJ0FQRVhfQkFTRUxJTkVfTUFOSUZFU1Q9L3Njb3JlLW91dHB1dC9iYXNlbGluZS5qc29uJyBcCisgICAgPj4gIiRzY29yZV9ydW5uZXJfZW52IgorY2htb2QgMDQwMCAiJHNjb3JlX3J1bm5lcl9lbnYiCisKK2Jhc2VsaW5lX3Njb3JlX291dHB1dD0iJHdvcmtfZGlyL2Jhc2VsaW5lLXNjb3JlLW91dHB1dCIKK2luc3RhbGwgLWQgLW0gMDcwMCAiJGJhc2VsaW5lX3Njb3JlX291dHB1dCIKK3N1ZG8gLW4gY2hvd24gIiRjb250YWluZXJfaG9zdF91aWQ6JGNvbnRhaW5lcl9ob3N0X2dpZCIgIiRiYXNlbGluZV9zY29yZV9vdXRwdXQiCitzY29yZV9wcm9qZWN0PSJ1cm5ldHdvcmstZXZhbC0ke2F0dGVtcHRfdG9rZW59LWJhc2VsaW5lLXNjb3JlIgorc2NvcmVfY2dyb3VwX3BhcmVudD0idXJuZXR3b3JrLWV2YWx1YXRpb24tJHthdHRlbXB0X3Rva2VufS1iYXNlbGluZS1zY29yZS5zbGljZSIKK3dyaXRlX2NvbXBvc2VfZW52ICIkc2NvcmVfY29tcG9zZV9lbnYiICIkc2NvcmVfcHJvamVjdCIgc2NvcmUgIiRiYXNlX2ltYWdlX2lkIiAiJHNjb3JlX3J1bm5lcl9lbnYiIFwKKyAgICAiJHdvcmtfZGlyL3Njb3Jlci1pbnB1dCIgIiRiYXNlbGluZV9zY29yZV9vdXRwdXQiICIkc2NvcmVfY2dyb3VwX3BhcmVudCIgIiRiYXNlbGluZV9zb3VyY2Vfcm9vdCIKK3NlZCAtaSAncy9eRVZBTFVBVElPTl9BQ1RJT049LiovRVZBTFVBVElPTl9BQ1RJT049YmFzZWxpbmUvJyAiJHNjb3JlX2NvbXBvc2VfZW52IgorYWN0aXZlX3Byb2plY3Q9IiRzY29yZV9wcm9qZWN0IgorYWN0aXZlX2NvbXBvc2VfZW52PSIkc2NvcmVfY29tcG9zZV9lbnYiCitjb21wb3NlX3dpdGggIiRzY29yZV9wcm9qZWN0IiAiJHNjb3JlX2NvbXBvc2VfZW52IiAtLXByb2ZpbGUgc2NvcmUgdXAgLS1kZXRhY2ggc2NvcmVyID4mMgorc2NvcmVyX2lkPSIkKGNvbXBvc2Vfd2l0aCAiJHNjb3JlX3Byb2plY3QiICIkc2NvcmVfY29tcG9zZV9lbnYiIC0tcHJvZmlsZSBzY29yZSBwcyAtLWFsbCAtLXF1aWV0IHNjb3JlcikiCitbIC1uICIkc2NvcmVyX2lkIiBdIHx8IGRpZSAiYmFzZWxpbmUgc2NvcmVyIGNvbnRhaW5lciBtaXNzaW5nIgorc2NvcmVyX2V4aXQ9IiQoc3VkbyAtbiBkb2NrZXIgd2FpdCAiJHNjb3Jlcl9pZCIpIgorYmFzZWxpbmVfc2NvcmVyX2xvZz0iJHdvcmtfZGlyL2Jhc2VsaW5lLXNjb3Jlci5sb2ciCitzdWRvIC1uIGRvY2tlciBsb2dzICIkc2NvcmVyX2lkIiA+ICIkYmFzZWxpbmVfc2NvcmVyX2xvZyIgMj4mMSB8fCB0cnVlCitjYXQgIiRiYXNlbGluZV9zY29yZXJfbG9nIiA+JjIKK2NobW9kIDA0MDAgIiRiYXNlbGluZV9zY29yZXJfbG9nIgorWyAiJHNjb3Jlcl9leGl0IiAtZXEgMCBdIHx8IGRpZSAiYmFzZWxpbmUgc2NvcmVyIGV4aXRlZCAkc2NvcmVyX2V4aXQiCitzdWRvIC1uIGRvY2tlciBpbnNwZWN0ICIkc2NvcmVyX2lkIiB8IGpxIC1lIC0tYXJnIHBhcmVudCAiJHNjb3JlX2Nncm91cF9wYXJlbnQiIFwKKyAgICAtLWFyZyBpbWFnZSAiJGJhc2VfaW1hZ2VfaWQiIC0tYXJnIGNwdXNldCAiJGNwdXNldCIgXAorICAgICcuWzBdLkNvbmZpZy5Vc2VyID09ICI2NTUzMjo2NTUzMiIgYW5kIC5bMF0uSG9zdENvbmZpZy5SZWFkb25seVJvb3RmcyA9PSB0cnVlIGFuZAorICAgICAuWzBdLkhvc3RDb25maWcuTmV0d29ya01vZGUgPT0gIm5vbmUiIGFuZCAuWzBdLkhvc3RDb25maWcuTWVtb3J5ID09IDQyOTQ5NjcyOTYgYW5kCisgICAgIC5bMF0uSG9zdENvbmZpZy5NZW1vcnlTd2FwID09IDQyOTQ5NjcyOTYgYW5kIC5bMF0uSG9zdENvbmZpZy5QaWRzTGltaXQgPT0gMTAyNCBhbmQKKyAgICAgLlswXS5Db25maWcuSW1hZ2UgPT0gJGltYWdlIGFuZCAuWzBdLkhvc3RDb25maWcuQ2dyb3VwUGFyZW50ID09ICRwYXJlbnQgYW5kCisgICAgIC5bMF0uSG9zdENvbmZpZy5DcHVzZXRDcHVzID09ICRjcHVzZXQgYW5kCisgICAgICguWzBdLkhvc3RDb25maWcuQ2FwRHJvcCB8IGluZGV4KCJBTEwiKSAhPSBudWxsKSBhbmQKKyAgICAgKC5bMF0uSG9zdENvbmZpZy5TZWN1cml0eU9wdCB8IGluZGV4KCJuby1uZXctcHJpdmlsZWdlczp0cnVlIikgIT0gbnVsbCknID4vZGV2L251bGwgfHwKKyAgICBkaWUgImJhc2VsaW5lIHNjb3JlciBjb250YWlubWVudCBtaXNtYXRjaCIKK3N1ZG8gLW4gdGVzdCAtcyAiJGJhc2VsaW5lX3Njb3JlX291dHB1dC9iYXNlbGluZS5qc29uIiB8fCBkaWUgImJhc2VsaW5lIG1hbmlmZXN0IG1pc3NpbmciCitjb21wb3NlX3dpdGggIiRzY29yZV9wcm9qZWN0IiAiJHNjb3JlX2NvbXBvc2VfZW52IiAtLXByb2ZpbGUgc2NvcmUgZG93biAtLXZvbHVtZXMgLS1yZW1vdmUtb3JwaGFucyA+JjIKK2FjdGl2ZV9wcm9qZWN0PSIiCithY3RpdmVfY29tcG9zZV9lbnY9IiIKK3N1ZG8gLW4gaW5zdGFsbCAtbyAiJHdvcmtlcl91aWQiIC1nICIkd29ya2VyX2dpZCIgLW0gMDQwMCBcCisgICAgIiRiYXNlbGluZV9zY29yZV9vdXRwdXQvYmFzZWxpbmUuanNvbiIgIiRhcnRpZmFjdF9kaXIvYmFzZWxpbmUuanNvbiIKK3N1ZG8gLW4gaW5zdGFsbCAtbyAiJGNvbnRhaW5lcl9ob3N0X3VpZCIgLWcgIiRjb250YWluZXJfaG9zdF9naWQiIC1tIDA0MDAgXAorICAgICIkYXJ0aWZhY3RfZGlyL2Jhc2VsaW5lLmpzb24iICIkd29ya19kaXIvc2NvcmVyLWlucHV0L2Jhc2VsaW5lLmpzb24iCitiYXNlbGluZV9zaGEyNTY9IiQoc2hhMjU2X2ZpbGUgIiRhcnRpZmFjdF9kaXIvYmFzZWxpbmUuanNvbiIpIgorZmkKKworIyBOb3RoaW5nIGZyb20gdHJ1c3RlZCBiYXNlbGluZSBzY29yaW5nIGlzIG5lZWRlZCB3aGlsZSBidWlsZGluZyB0aGUKKyMgc3VibWlzc2lvbi4gUmVtb3ZpbmcgdGhlIGVwaGVtZXJhbCBlbnZpcm9ubWVudCBhbHNvIGtlZXBzIGl0cyBvbmUtdGltZQorIyBiYWNraW5nLXNlcnZpY2UgY3JlZGVudGlhbHMgb3V0IG9mIGEgdGVybWluYWwgYnVpbGQtZmFpbHVyZSBhcmNoaXZlLgorcm0gLWYgLS0gIiRzY29yZV9ydW5uZXJfZW52IiAiJHNjb3JlX2NvbXBvc2VfZW52IgorYnVpbGRfY2FuZGlkYXRlCitmb3IgKChpID0gMTsgaSA8PSByZXBsaWNhdGVzOyBpKyspKTsgZG8KKyAgICBydW5fc3RhZ2UgY2FuZGlkYXRlICIkaSIgIiRjYW5kaWRhdGVfaW1hZ2VfaWQiICIkY2FuZGlkYXRlX3NoYSIgIiRjYW5kaWRhdGVfc2ltdWxhdG9yX3NoYTI1NiIgIiRwYXRjaF9zaGEyNTYiCitkb25lCit3cml0ZV9ldmFsdWF0aW9uX3Byb2dyZXNzIHNjb3JpbmcgIiRyZXBsaWNhdGVzIiAiJHJlcGxpY2F0ZXMiCisKKyMgUmVidWlsZCB0aGUgc2NvcmVyIGVudmlyb25tZW50IGZvciBjYW5kaWRhdGUgc2NvcmluZzsgbm8gYmFzZWxpbmUgcGF0aCB3YXMKKyMgZXZlciBtb3VudGVkIGludG8gYSBjYW5kaWRhdGUgcnVubmVyLgorc3RhZ2VfZGJfYWRtaW5fcGFzc3dvcmQ9IiQobmV3X3NlY3JldCkiCitzdGFnZV9kYl9wYXNzd29yZD0iJChuZXdfc2VjcmV0KSIKK3N0YWdlX3JlZGlzX3Bhc3N3b3JkPSIkKG5ld19zZWNyZXQpIgorWyAhIC1lICIkc2NvcmVfcnVubmVyX2VudiIgXSB8fCBjaG1vZCAwNjAwICIkc2NvcmVfcnVubmVyX2VudiIKK3dyaXRlX3J1bm5lcl9lbnYgIiRzY29yZV9ydW5uZXJfZW52IiAic2NvcmUtJHtqb2JfaWQ6MDo4fSIgIiRiYXNlX3NoYSIgIiRiYXNlX3NpbXVsYXRvcl9zaGEyNTYiICIkYmFzZV9pbWFnZV9pZCIgIiRFTVBUWV9QQVRDSF9TSEEyNTYiCitzZWQgLWkgJ3N8XkFQRVhfUFJPVklERVJTX0ZJTEU9Lip8QVBFWF9QUk9WSURFUlNfRklMRT0vYXJ0aWZhY3RzL3Byb3ZpZGVycy55bWx8JyAiJHNjb3JlX3J1bm5lcl9lbnYiCitjaG1vZCAwNjAwICIkc2NvcmVfcnVubmVyX2VudiIKK3ByaW50ZiAnJXNcbicgXAorICAgICdBUEVYX0JBU0VMSU5FX01BTklGRVNUPS9hcnRpZmFjdHMvYmFzZWxpbmUuanNvbicgXAorICAgICJBUEVYX0JBU0VMSU5FX1NIQTI1Nj0kYmFzZWxpbmVfc2hhMjU2IiBcCisgICAgIkFQRVhfQ0FORElEQVRFX1JVTlM9JChqb2luX2NzdiAiJHtjYW5kaWRhdGVfY3N2W0BdfSIpIiBcCisgICAgIkFQRVhfQ0FORElEQVRFX1NUREVSUj0kKGpvaW5fY3N2ICIke2NhbmRpZGF0ZV9zdGRlcnJbQF19IikiIFwKKyAgICAiQVBFWF9DQU5ESURBVEVfQUNDT1VOVElORz0kKGpvaW5fY3N2ICIke2NhbmRpZGF0ZV9hY2NvdW50aW5nW0BdfSIpIiBcCisgICAgIkFQRVhfQ0FORElEQVRFX1NBTVBMRVM9JChqb2luX2NzdiAiJHtjYW5kaWRhdGVfc2FtcGxlc1tAXX0iKSIgXAorICAgICJBUEVYX0NBTkRJREFURV9SRVNPVVJDRVM9JChqb2luX2NzdiAiJHtjYW5kaWRhdGVfcmVzb3VyY2VzW0BdfSIpIiBcCisgICAgIkFQRVhfQ0FORElEQVRFX01BUktFUlM9JChqb2luX2NzdiAiJHtjYW5kaWRhdGVfbWFya2Vyc1tAXX0iKSIgXAorICAgICdBUEVYX1NDT1JFX09VVFBVVD0vc2NvcmUtb3V0cHV0L3Njb3JlLmpzb24nIFwKKyAgICA+PiAiJHNjb3JlX3J1bm5lcl9lbnYiCitjaG1vZCAwNDAwICIkc2NvcmVfcnVubmVyX2VudiIKKworY2FuZGlkYXRlX3Njb3JlX291dHB1dD0iJHdvcmtfZGlyL2NhbmRpZGF0ZS1zY29yZS1vdXRwdXQiCitpbnN0YWxsIC1kIC1tIDA3MDAgIiRjYW5kaWRhdGVfc2NvcmVfb3V0cHV0Igorc3VkbyAtbiBjaG93biAiJGNvbnRhaW5lcl9ob3N0X3VpZDokY29udGFpbmVyX2hvc3RfZ2lkIiAiJGNhbmRpZGF0ZV9zY29yZV9vdXRwdXQiCitzY29yZV9wcm9qZWN0PSJ1cm5ldHdvcmstZXZhbC0ke2F0dGVtcHRfdG9rZW59LWNhbmRpZGF0ZS1zY29yZSIKK3Njb3JlX2Nncm91cF9wYXJlbnQ9InVybmV0d29yay1ldmFsdWF0aW9uLSR7YXR0ZW1wdF90b2tlbn0tY2FuZGlkYXRlLXNjb3JlLnNsaWNlIgord3JpdGVfY29tcG9zZV9lbnYgIiRzY29yZV9jb21wb3NlX2VudiIgIiRzY29yZV9wcm9qZWN0IiBzY29yZSAiJGJhc2VfaW1hZ2VfaWQiICIkc2NvcmVfcnVubmVyX2VudiIgXAorICAgICIkd29ya19kaXIvc2NvcmVyLWlucHV0IiAiJGNhbmRpZGF0ZV9zY29yZV9vdXRwdXQiICIkc2NvcmVfY2dyb3VwX3BhcmVudCIgIiRiYXNlbGluZV9zb3VyY2Vfcm9vdCIKK3NlZCAtaSAncy9eRVZBTFVBVElPTl9BQ1RJT049LiovRVZBTFVBVElPTl9BQ1RJT049c2NvcmUvJyAiJHNjb3JlX2NvbXBvc2VfZW52IgorYWN0aXZlX3Byb2plY3Q9IiRzY29yZV9wcm9qZWN0IgorYWN0aXZlX2NvbXBvc2VfZW52PSIkc2NvcmVfY29tcG9zZV9lbnYiCitjb21wb3NlX3dpdGggIiRzY29yZV9wcm9qZWN0IiAiJHNjb3JlX2NvbXBvc2VfZW52IiAtLXByb2ZpbGUgc2NvcmUgdXAgLS1kZXRhY2ggc2NvcmVyID4mMgorc2NvcmVyX2lkPSIkKGNvbXBvc2Vfd2l0aCAiJHNjb3JlX3Byb2plY3QiICIkc2NvcmVfY29tcG9zZV9lbnYiIC0tcHJvZmlsZSBzY29yZSBwcyAtLWFsbCAtLXF1aWV0IHNjb3JlcikiCitbIC1uICIkc2NvcmVyX2lkIiBdIHx8IGRpZSAiY2FuZGlkYXRlIHNjb3JlciBjb250YWluZXIgbWlzc2luZyIKK3Njb3Jlcl9leGl0PSIkKHN1ZG8gLW4gZG9ja2VyIHdhaXQgIiRzY29yZXJfaWQiKSIKK2NhbmRpZGF0ZV9zY29yZXJfbG9nPSIkd29ya19kaXIvY2FuZGlkYXRlLXNjb3Jlci5sb2ciCitzdWRvIC1uIGRvY2tlciBsb2dzICIkc2NvcmVyX2lkIiA+ICIkY2FuZGlkYXRlX3Njb3Jlcl9sb2ciIDI+JjEgfHwgdHJ1ZQorY2F0ICIkY2FuZGlkYXRlX3Njb3Jlcl9sb2ciID4mMgorY2htb2QgMDQwMCAiJGNhbmRpZGF0ZV9zY29yZXJfbG9nIgorWyAiJHNjb3Jlcl9leGl0IiAtZXEgMCBdIHx8IGRpZSAiY2FuZGlkYXRlIHNjb3JlciBleGl0ZWQgJHNjb3Jlcl9leGl0Igorc3VkbyAtbiBkb2NrZXIgaW5zcGVjdCAiJHNjb3Jlcl9pZCIgfCBqcSAtZSAtLWFyZyBwYXJlbnQgIiRzY29yZV9jZ3JvdXBfcGFyZW50IiBcCisgICAgLS1hcmcgaW1hZ2UgIiRiYXNlX2ltYWdlX2lkIiAtLWFyZyBjcHVzZXQgIiRjcHVzZXQiIFwKKyAgICAnLlswXS5Db25maWcuVXNlciA9PSAiNjU1MzI6NjU1MzIiIGFuZCAuWzBdLkhvc3RDb25maWcuUmVhZG9ubHlSb290ZnMgPT0gdHJ1ZSBhbmQKKyAgICAgLlswXS5Ib3N0Q29uZmlnLk5ldHdvcmtNb2RlID09ICJub25lIiBhbmQgLlswXS5Ib3N0Q29uZmlnLk1lbW9yeSA9PSA0Mjk0OTY3Mjk2IGFuZAorICAgICAuWzBdLkhvc3RDb25maWcuTWVtb3J5U3dhcCA9PSA0Mjk0OTY3Mjk2IGFuZCAuWzBdLkhvc3RDb25maWcuUGlkc0xpbWl0ID09IDEwMjQgYW5kCisgICAgIC5bMF0uQ29uZmlnLkltYWdlID09ICRpbWFnZSBhbmQgLlswXS5Ib3N0Q29uZmlnLkNncm91cFBhcmVudCA9PSAkcGFyZW50IGFuZAorICAgICAuWzBdLkhvc3RDb25maWcuQ3B1c2V0Q3B1cyA9PSAkY3B1c2V0IGFuZAorICAgICAoLlswXS5Ib3N0Q29uZmlnLkNhcERyb3AgfCBpbmRleCgiQUxMIikgIT0gbnVsbCkgYW5kCisgICAgICguWzBdLkhvc3RDb25maWcuU2VjdXJpdHlPcHQgfCBpbmRleCgibm8tbmV3LXByaXZpbGVnZXM6dHJ1ZSIpICE9IG51bGwpJyA+L2Rldi9udWxsIHx8CisgICAgZGllICJjYW5kaWRhdGUgc2NvcmVyIGNvbnRhaW5tZW50IG1pc21hdGNoIgorc3VkbyAtbiB0ZXN0IC1zICIkY2FuZGlkYXRlX3Njb3JlX291dHB1dC9zY29yZS5qc29uIiB8fCBkaWUgInNjb3JlIG91dHB1dCBtaXNzaW5nIgorY29tcG9zZV93aXRoICIkc2NvcmVfcHJvamVjdCIgIiRzY29yZV9jb21wb3NlX2VudiIgLS1wcm9maWxlIHNjb3JlIGRvd24gLS12b2x1bWVzIC0tcmVtb3ZlLW9ycGhhbnMgPiYyCithY3RpdmVfcHJvamVjdD0iIgorYWN0aXZlX2NvbXBvc2VfZW52PSIiCitzdWRvIC1uIGluc3RhbGwgLW8gIiR3b3JrZXJfdWlkIiAtZyAiJHdvcmtlcl9naWQiIC1tIDA0MDAgXAorICAgICIkY2FuZGlkYXRlX3Njb3JlX291dHB1dC9zY29yZS5qc29uIiAiJGFydGlmYWN0X2Rpci9zY29yZS5qc29uIgorCitwcmludGYgJyVzXG4nICIke3J1bl9hY2NvdW50aW5nX3JlY29yZHNbQF19IiB8IGpxIC1zIFwKKyAgICAtLWFyZyBqb2JfaWQgIiRqb2JfaWQiIC0tYXJnIHJvdW5kX2lkICIkcm91bmRfaWQiIFwKKyAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LWV2YWx1YXRpb24tYWNjb3VudGluZyIsam9iX2lkOiRqb2JfaWQsCisgICAgICByb3VuZF9pZDokcm91bmRfaWQsY29tcGxldGU6dHJ1ZSxydW5zOi59JyA+ICIkYXJ0aWZhY3RfZGlyL2FjY291bnRpbmcuanNvbiIKK3ByaW50ZiAnJXNcbicgIiR7cnVuX3Jlc291cmNlX3JlY29yZHNbQF19IiB8IGpxIC1zIFwKKyAgICAtLWFyZyBqb2JfaWQgIiRqb2JfaWQiIC0tYXJnIHJvdW5kX2lkICIkcm91bmRfaWQiIFwKKyAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LWV2YWx1YXRpb24tcmVzb3VyY2VzIixqb2JfaWQ6JGpvYl9pZCwKKyAgICAgIHJvdW5kX2lkOiRyb3VuZF9pZCxjb21wbGV0ZTp0cnVlLHJ1bnM6Ln0nID4gIiRhcnRpZmFjdF9kaXIvcmVzb3VyY2VzLmpzb24iCitjaG1vZCAwNDAwICIkYXJ0aWZhY3RfZGlyL2FjY291bnRpbmcuanNvbiIgIiRhcnRpZmFjdF9kaXIvcmVzb3VyY2VzLmpzb24iCisKK3JtIC1mIC0tICIkc2NvcmVfcnVubmVyX2VudiIgIiRzY29yZV9jb21wb3NlX2VudiIKK2F1dGhlbnRpY2F0ZV9sb2NhbF9tb3VudHMKK3JlbW92ZV9ldmFsdWF0aW9uX3NvdXJjZXMKK3BlcnNpc3RfZXZpZGVuY2VfdHJlZQord3JpdGVfZXZpZGVuY2VfbWFuaWZlc3QKKwordGVtcGxhdGVfZGF0YWJhc2VfaWQ9IiQocHJpbnRmICclc1xuJyAiJHttaWdyYXRpb25faGFzaGVzW0BdfSIgfCBzaGEyNTZzdW0gfCBhd2sgJ3twcmludCAkMX0nKSIKK3JlZGlzX2dlbmVyYXRpb25faWQ9IiQocHJpbnRmICclc1xuJyAiJHtyZWRpc19nZW5lcmF0aW9uc1tAXX0iIHwgc2hhMjU2c3VtIHwgYXdrICd7cHJpbnQgJDF9JykiCitbIC16ICIkKHN1ZG8gLW4gZG9ja2VyIHBzIC1hcSAtLWZpbHRlciAibGFiZWw9Y29tLnVybmV0d29yay5jb21wZXRpdGlvbi5qb2ItaWQ9JGpvYl9pZCIpIiBdIHx8CisgICAgZGllICJmaW5hbCBjbGVhbnVwIGxlZnQgam9iIGNvbnRhaW5lcnMiCitbIC16ICIkKHN1ZG8gLW4gZG9ja2VyIG5ldHdvcmsgbHMgLXEgLS1maWx0ZXIgImxhYmVsPWNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkPSRqb2JfaWQiKSIgXSB8fAorICAgIGRpZSAiZmluYWwgY2xlYW51cCBsZWZ0IGpvYiBuZXR3b3JrcyIKK2NsZWFudXBfY29tcGxldGU9dHJ1ZQord3JpdGVfZXZhbHVhdGlvbl9wcm9ncmVzcyBjb21wbGV0ZSAiJHJlcGxpY2F0ZXMiICIkcmVwbGljYXRlcyIKKworY29tcGxldGVfcGF0aD0iJGFydGlmYWN0X2Rpci9ldmFsdWF0aW9uLmNvbXBsZXRlLmpzb24iCitqcSAtbiBcCisgICAgLS1hcmcgam9iX2lkICIkam9iX2lkIiAtLWFyZyByb3VuZF9pZCAiJHJvdW5kX2lkIiAtLWFyZ2pzb24gYXR0ZW1wdCAiJGF0dGVtcHQiIFwKKyAgICAtLWFyZyBiYXNlX2ltYWdlX2lkICIkYmFzZV9pbWFnZV9pZCIgLS1hcmcgY2FuZGlkYXRlX2ltYWdlX2lkICIkY2FuZGlkYXRlX2ltYWdlX2lkIiBcCisgICAgLS1hcmcgcGF0Y2hfc2hhMjU2ICIkcGF0Y2hfc2hhMjU2IiAtLWFyZyBwcm92aWRlcnNfc2hhMjU2ICIkcHJvdmlkZXJzX3NoYTI1NiIgXAorICAgIC0tYXJnIGFjY291bnRpbmdfc2hhMjU2ICIkKHNoYTI1Nl9maWxlICIkYXJ0aWZhY3RfZGlyL2FjY291bnRpbmcuanNvbiIpIiBcCisgICAgLS1hcmcgYmFzZWxpbmVfc2hhMjU2ICIkYmFzZWxpbmVfc2hhMjU2IiBcCisgICAgLS1hcmcgcmVzb3VyY2VzX3NoYTI1NiAiJChzaGEyNTZfZmlsZSAiJGFydGlmYWN0X2Rpci9yZXNvdXJjZXMuanNvbiIpIiBcCisgICAgLS1hcmcgc2NvcmVfc2hhMjU2ICIkKHNoYTI1Nl9maWxlICIkYXJ0aWZhY3RfZGlyL3Njb3JlLmpzb24iKSIgXAorICAgIC0tYXJnIGV2aWRlbmNlX21hbmlmZXN0X3NoYTI1NiAiJChzaGEyNTZfZmlsZSAiJGV2aWRlbmNlX21hbmlmZXN0IikiIFwKKyAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LXdvcmtlci1ldmFsdWF0aW9uLWNvbXBsZXRlIixqb2JfaWQ6JGpvYl9pZCwKKyAgICAgIHJvdW5kX2lkOiRyb3VuZF9pZCxhdHRlbXB0OiRhdHRlbXB0LGJhc2VfaW1hZ2VfaWQ6JGJhc2VfaW1hZ2VfaWQsCisgICAgICBjYW5kaWRhdGVfaW1hZ2VfaWQ6JGNhbmRpZGF0ZV9pbWFnZV9pZCxwYXRjaF9zaGEyNTY6JHBhdGNoX3NoYTI1NiwKKyAgICAgIHByb3ZpZGVyc19zaGEyNTY6JHByb3ZpZGVyc19zaGEyNTYsY2xlYW51cF9jb21wbGV0ZTp0cnVlLAorICAgICAgYXJ0aWZhY3RzOnthY2NvdW50aW5nOiRhY2NvdW50aW5nX3NoYTI1NixiYXNlbGluZTokYmFzZWxpbmVfc2hhMjU2LAorICAgICAgICByZXNvdXJjZXM6JHJlc291cmNlc19zaGEyNTYsc2NvcmU6JHNjb3JlX3NoYTI1NiwKKyAgICAgICAgZXZpZGVuY2VfbWFuaWZlc3Q6JGV2aWRlbmNlX21hbmlmZXN0X3NoYTI1Nn19JyA+ICIkY29tcGxldGVfcGF0aCIKK2NobW9kIDA0MDAgIiRjb21wbGV0ZV9wYXRoIgorc3luYyAtZCAiJGFydGlmYWN0X2Rpci9hY2NvdW50aW5nLmpzb24iICIkYXJ0aWZhY3RfZGlyL2Jhc2VsaW5lLmpzb24iIFwKKyAgICAiJGFydGlmYWN0X2Rpci9yZXNvdXJjZXMuanNvbiIgIiRhcnRpZmFjdF9kaXIvc2NvcmUuanNvbiIgIiRldmlkZW5jZV9tYW5pZmVzdCIgIiRjb21wbGV0ZV9wYXRoIgorc3luYyAiJGFydGlmYWN0X2RpciIKKworYXJ0aWZhY3RfcmVjb3Jkcz0oKQorZm9yIHJlbGF0aXZlIGluIGFjY291bnRpbmcuanNvbiBiYXNlbGluZS5qc29uIHJlc291cmNlcy5qc29uIHNjb3JlLmpzb24gZXZhbHVhdGlvbi1wcm9ncmVzcy5qc29uIGV2YWx1YXRpb24uY29tcGxldGUuanNvbiBldmlkZW5jZS1tYW5pZmVzdC5qc29uOyBkbworICAgIHBhdGg9IiRhcnRpZmFjdF9kaXIvJHJlbGF0aXZlIgorICAgIGFydGlmYWN0X3JlY29yZHMrPSgiJChqcSAtY24gLS1hcmcgcGF0aCAiJHJlbGF0aXZlIiAtLWFyZyBzaGEyNTYgIiQoc2hhMjU2X2ZpbGUgIiRwYXRoIikiIFwKKyAgICAgICAgLS1hcmdqc29uIGJ5dGVzICIkKGZpbGVfYnl0ZXMgIiRwYXRoIikiICd7cGF0aDokcGF0aCxzaGEyNTY6JHNoYTI1NixieXRlczokYnl0ZXN9JykiKQorZG9uZQorYXJ0aWZhY3RzX2pzb249IiQocHJpbnRmICclc1xuJyAiJHthcnRpZmFjdF9yZWNvcmRzW0BdfSIgfCBqcSAtcyAnLicpIgorc2VjdXJpdHlfanNvbj0iJChqcSAtY24gXAorICAgIC0tYXJnIGNncm91cF9pZCAidXJuZXR3b3JrLWV2YWx1YXRpb24tJHtqb2JfaWQvLy0vfS5zbGljZSIgXAorICAgIC0tYXJnIHRlbXBsYXRlX2RhdGFiYXNlX2lkICIkdGVtcGxhdGVfZGF0YWJhc2VfaWQiIFwKKyAgICAtLWFyZyByZWRpc19nZW5lcmF0aW9uX2lkICIkcmVkaXNfZ2VuZXJhdGlvbl9pZCIgXAorICAgICd7dGVtcGxhdGVfZGF0YWJhc2VfcmVzZXQ6dHJ1ZSxyZWRpc19yZXNldDp0cnVlLGNncm91cF9jb250YWluZWQ6dHJ1ZSwKKyAgICAgIHJlc291cmNlX2xpbWl0czp0cnVlLG1hbmFnZW1lbnRfY3B1X3Jlc2VydmVkOnRydWUsCisgICAgICBtYW5hZ2VtZW50X21lbW9yeV9yZXNlcnZlZDp0cnVlLGRlZmF1bHRfZGVueV9uZXR3b3JrOnRydWUsb2ZmbGluZV9idWlsZDp0cnVlLAorICAgICAgb2ZmbGluZV9idWlsZF9yZXNvdXJjZV9saW1pdHM6dHJ1ZSwKKyAgICAgIG5vX3Byb2R1Y3Rpb25fc2VjcmV0czp0cnVlLHN0cnVjdHVyYWxfcGF0Y2hfY2hlY2s6dHJ1ZSwKKyAgICAgIGFjY291bnRpbmdfY29tcGxldGU6dHJ1ZSxyZXNvdXJjZV9yZXBvcnRfY29tcGxldGU6dHJ1ZSwKKyAgICAgIGNsZWFudXBfY29tcGxldGU6dHJ1ZSxpbW11dGFibGVfcmVwb3J0czp0cnVlLGNncm91cF9pZDokY2dyb3VwX2lkLAorICAgICAgdGVtcGxhdGVfZGF0YWJhc2VfaWQ6JHRlbXBsYXRlX2RhdGFiYXNlX2lkLAorICAgICAgcmVkaXNfZ2VuZXJhdGlvbl9pZDokcmVkaXNfZ2VuZXJhdGlvbl9pZH0nKSIKKworaWYganEgLWUgJy5ldmFsX2Vycm9yID09IG51bGwnICIkYXJ0aWZhY3RfZGlyL3Njb3JlLmpzb24iID4vZGV2L251bGw7IHRoZW4KKyAgICBzY29yZV9qc29uPSIkKGpxIFwKKyAgICAgICAgJ3tzY29yZV9zY2hlbWEscmF3X3Njb3JlLG5vcm1hbGl6ZWRfc2NvcmUscGxhY2VhYmxlLAorICAgICAgICAgIHRha2VvdmVyX2VsaWdpYmxlOiguZGlhZ25vc3RpY3MuYmFzZWxpbmVfdGFrZW92ZXJfZWxpZ2libGUgLy8gZmFsc2UpLAorICAgICAgICAgIGdhdGVzLHNpZ25pZmljYW5jZSxkaWFnbm9zdGljc30nICIkYXJ0aWZhY3RfZGlyL3Njb3JlLmpzb24iKSIKKyAgICBldmFsX2Vycm9yX2pzb249bnVsbAorZWxzZQorICAgIHNjb3JlX2pzb249bnVsbAorICAgIGV2YWxfZXJyb3JfanNvbj0iJChqcSBcCisgICAgICAgICcuZXZhbF9lcnJvciB8IHtraW5kLGNvZGUsbWVzc2FnZSxyZXRyaWFibGU6KC5raW5kID09ICJpbmZyYXN0cnVjdHVyZSIgYW5kIC5jb2RlICE9ICJzY29yZV9yZXN1bHRfaW52YWxpZCIpfScgXAorICAgICAgICAiJGFydGlmYWN0X2Rpci9zY29yZS5qc29uIikiCitmaQorCityZXN1bHRfdG1wPSIkYXJ0aWZhY3RfZGlyLy53b3JrZXItcmVzdWx0LnRtcCIKK2pxIC1uIFwKKyAgICAtLWFyZyBqb2JfaWQgIiRqb2JfaWQiIFwKKyAgICAtLWFyZ2pzb24gc2NvcmUgIiRzY29yZV9qc29uIiBcCisgICAgLS1hcmdqc29uIGV2YWxfZXJyb3IgIiRldmFsX2Vycm9yX2pzb24iIFwKKyAgICAtLWFyZ2pzb24gc2VjdXJpdHkgIiRzZWN1cml0eV9qc29uIiBcCisgICAgLS1hcmdqc29uIGFydGlmYWN0cyAiJGFydGlmYWN0c19qc29uIiBcCisgICAgJ3tzY2hlbWE6MSxqb2JfaWQ6JGpvYl9pZCxzY29yZTokc2NvcmUsZXZhbF9lcnJvcjokZXZhbF9lcnJvciwKKyAgICAgIHNlY3VyaXR5OiRzZWN1cml0eSxhcnRpZmFjdHM6JGFydGlmYWN0c30nID4gIiRyZXN1bHRfdG1wIgorc3luYyAtZCAiJHJlc3VsdF90bXAiCitbICEgLWUgIiRyZXN1bHRfcGF0aCIgXSB8fCBkaWUgIndvcmtlciByZXN1bHQgcGF0aCBhcHBlYXJlZCBkdXJpbmcgZXZhbHVhdGlvbiIKK212ICIkcmVzdWx0X3RtcCIgIiRyZXN1bHRfcGF0aCIKK2NobW9kIDA0MDAgIiRyZXN1bHRfcGF0aCIKK3N5bmMgLWQgIiRyZXN1bHRfcGF0aCIKK3N5bmMgIiRhcnRpZmFjdF9kaXIiCitsb2cgImV2YWx1YXRpb24gY29tcGxldGU6IGpvYj0kam9iX2lkIGNhbmRpZGF0ZT0kY2FuZGlkYXRlX3NoYSIKZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvZXZhbHVhdG9yL2NvbnRhaW5lci9wcmVwYXJlLXJvdW5kLWJhc2VsaW5lLXdvcmstY292ZXJhZ2Uuc2ggYi9jb25uZWN0L3NpbS1sYXRlbmN5L2V2YWx1YXRvci9jb250YWluZXIvcHJlcGFyZS1yb3VuZC1iYXNlbGluZS13b3JrLWNvdmVyYWdlLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwNGRhMTEyZDFlZDMwZGE2ODg2N2NmODRiYjQxYmM2NDFmNWJjZGUKLS0tIC9kZXYvbnVsbAorKysgYi9jb25uZWN0L3NpbS1sYXRlbmN5L2V2YWx1YXRvci9jb250YWluZXIvcHJlcGFyZS1yb3VuZC1iYXNlbGluZS13b3JrLWNvdmVyYWdlLnNoCkBAIC0wLDAgKzEsOTAgQEAKKyMhL3Vzci9iaW4vZW52IGJhc2gKKyMgQSBzZXBhcmF0ZWx5IHBpbm5lZCBzY29yZXItdGhyZWUgcHJvZHVjZXIgaGFzIG5vIGNhbmRpZGF0ZSBvciBzdWJtaXNzaW9uCisjIGNvbXBsZXRpb24gYXV0aG9yaXR5LiBOZXcgcXVhbGlmaWNhdGlvbiBtdXN0IHByZWNlZGUgYW55IHB1YmxpYyBmcmVlemUuCitzZXQgLUVldW8gcGlwZWZhaWwKK3VtYXNrIDA3NworYmFzZWxpbmVfYXJndW1lbnRzPSgiJEAiKQorYmFzZWxpbmVfcmVxdWVzdD0iIiBiYXNlbGluZV9yZWNlaXB0PSIiIGJhc2VsaW5lX293bmVyPSIiIGJhc2VsaW5lX2NvbnRleHRfc2hhMjU2PSIiCit3aGlsZSBbICIkIyIgLWd0IDAgXTsgZG8KKyAgICBbICIkIyIgLWdlIDIgXSB8fCBleGl0IDIKKyAgICBjYXNlICIkMSIgaW4KKyAgICAgICAgLS1yZXF1ZXN0KSBiYXNlbGluZV9yZXF1ZXN0PSIkMiIgOzsKKyAgICAgICAgLS1yZWNlaXB0KSBiYXNlbGluZV9yZWNlaXB0PSIkMiIgOzsKKyAgICAgICAgLS1vd25lcikgYmFzZWxpbmVfb3duZXI9IiQyIiA7OworICAgICAgICAtLWNvbnRleHQtc2hhMjU2KSBiYXNlbGluZV9jb250ZXh0X3NoYTI1Nj0iJDIiIDs7CisgICAgICAgICopIGV4aXQgMiA7OworICAgIGVzYWMKKyAgICBzaGlmdCAyCitkb25lCitbWyAiJGJhc2VsaW5lX293bmVyIiA9fiBeW0EtWmEtejAtOV1bQS1aYS16MC05Ll8tXXswLDEyN30kICYmICIkYmFzZWxpbmVfY29udGV4dF9zaGEyNTYiID1+IF5bMC05YS1mXXs2NH0kIF1dIHx8IGV4aXQgMgorW1sgIiRiYXNlbGluZV9yZXF1ZXN0IiA9IC8qICYmICIkYmFzZWxpbmVfcmVjZWlwdCIgPSAvKiBdXSB8fCBleGl0IDIKK2Jhc2VsaW5lX3JlbGVhc2U9IiQoY2QgIiQoZGlybmFtZSAiJHtCQVNIX1NPVVJDRVswXX0iKSIgJiYgcHdkIC1QKSIKK2Jhc2VsaW5lX2FydGlmYWN0cz0iJChkaXJuYW1lIC0tICIkYmFzZWxpbmVfcmVxdWVzdCIpIgorWyAiJGJhc2VsaW5lX3JlY2VpcHQiID0gIiRiYXNlbGluZV9hcnRpZmFjdHMvcm91bmQtYmFzZWxpbmUtcHJlcGFyYXRpb24uY29tcGxldGUuanNvbiIgXSB8fCBleGl0IDIKK1sgISAtZSAiJGJhc2VsaW5lX3JlY2VpcHQiIF0gJiYgWyAhIC1MICIkYmFzZWxpbmVfcmVjZWlwdCIgXSB8fCBleGl0IDIKK2pxIC1lICcuZXZhbHVhdGlvbl9wb2xpY3kuZzJfdm9sdW1lX3BvbGljeSA9PSAibWluaW11bS13b3JrLzEiIGFuZCAuc2NvcmVyX3ZlcnNpb24gPT0gInNpbS1sYXRlbmN5LXNjb3JlLzMiIGFuZAorIC5ldmFsdWF0aW9uX3BvbGljeS53b3JrX2NvdmVyYWdlX3BvbGljeS5raW5kID09ICJzZWVkZWQtY3Jhd2wtY292ZXJhZ2UvdjEiIGFuZAorIC5ldmFsdWF0aW9uX3BvbGljeS5yZXBsaWNhdGVzID09IDkgYW5kIC5yb3VuZF9iYXNlbGluZV9wYXRoID09ICIiIGFuZCAucm91bmRfYmFzZWxpbmVfc2hhMjU2ID09ICIiJyAiJGJhc2VsaW5lX3JlcXVlc3QiID4vZGV2L251bGwKKworIyBQcmVzZXJ2ZSB0aGUgZGVkaWNhdGVkIGNvbnRyb2wgQUJJIHdoZW4gYXBwbHlpbmcgdGhlIG1hbmFnZW1lbnQgYWZmaW5pdHkuCitiYXNlbGluZV9yZXNvdXJjZV9ib3VuZGFyeV9qc29uPSIkKCIkYmFzZWxpbmVfcmVsZWFzZS9yZXNvdXJjZS1ib3VuZGFyeS5zaCIpIgorYmFzZWxpbmVfbWFuYWdlbWVudF9jcHVzZXQ9IiQoanEgLWVyICcubWFuYWdlbWVudF9jcHVzZXQgfCBzZWxlY3QodHlwZSA9PSAic3RyaW5nIiBhbmQgbGVuZ3RoID4gMCknIDw8PCIkYmFzZWxpbmVfcmVzb3VyY2VfYm91bmRhcnlfanNvbiIpIgorYmFzZWxpbmVfZXhwZWN0ZWRfbWFuYWdlbWVudF9hZmZpbml0eT0iJCh0YXNrc2V0IC1jICIkYmFzZWxpbmVfbWFuYWdlbWVudF9jcHVzZXQiIGF3ayAtRjogJyQxID09ICJDcHVzX2FsbG93ZWRfbGlzdCIge2dzdWIoL1tbOnNwYWNlOl1dLywgIiIsICQyKTsgcHJpbnQgJDJ9JyAvcHJvYy9zZWxmL3N0YXR1cykiCitpZiBbICIke0NPTVBFVElUSU9OX01BTkFHRU1FTlRfQ1BVU0VUX0FQUExJRUQ6LX0iICE9ICIkYmFzZWxpbmVfbWFuYWdlbWVudF9jcHVzZXQiIF07IHRoZW4KKyAgICBleGVjIHRhc2tzZXQgLWMgIiRiYXNlbGluZV9tYW5hZ2VtZW50X2NwdXNldCIgZW52IENPTVBFVElUSU9OX01BTkFHRU1FTlRfQ1BVU0VUX0FQUExJRUQ9IiRiYXNlbGluZV9tYW5hZ2VtZW50X2NwdXNldCIgIiQocmVhbHBhdGggLWUgIiQwIikiICIke2Jhc2VsaW5lX2FyZ3VtZW50c1tAXX0iCitmaQorYmFzZWxpbmVfYWN0dWFsX21hbmFnZW1lbnRfYWZmaW5pdHk9IiQoYXdrIC1GOiAnJDEgPT0gIkNwdXNfYWxsb3dlZF9saXN0IiB7Z3N1YigvW1s6c3BhY2U6XV0vLCAiIiwgJDIpOyBwcmludCAkMn0nIC9wcm9jL3NlbGYvc3RhdHVzKSIKK1sgIiRiYXNlbGluZV9hY3R1YWxfbWFuYWdlbWVudF9hZmZpbml0eSIgPSAiJGJhc2VsaW5lX2V4cGVjdGVkX21hbmFnZW1lbnRfYWZmaW5pdHkiIF0gfHwgZXhpdCAyCisKKyMgVGhlIGV4YWN0IHByZWZpeCBoYXMgdGhlIHNhbWUgbmF0aXZlIGNvbnRyb2wgcHJvZHVjZXIgYW5kIGNsZWFudXAgdHJhcCwgYnV0CisjIHN0b3BzIGJlZm9yZSB0aGUgb25lIGxpdGVyYWwgY2FuZGlkYXRlIGJ1aWxkIGNhbGwuIFRoZXJlIGlzIG5vIGNhbGxlciBzY3JpcHQuCityb3VuZF9iYXNlbGluZV9jb250cm9sX3ByZWZpeCgpIHsKKyAgICBsb2NhbCBzb3VyY2U9IiQxIiBwcm9ncmFtIHByZWZpeCBjb3VudAorICAgIFsgLWYgIiRzb3VyY2UiIF0gJiYgWyAhIC1MICIkc291cmNlIiBdIHx8IHJldHVybiAxCisgICAgWyAiJChzaGEyNTZzdW0gLS0gIiRzb3VyY2UiIHwgYXdrICd7cHJpbnQgJDF9JykiID0gNWQyZDliZWY5MDI5NDRlYjZkYjE2NjYyOGRkOGJjOGFkYzU3Y2U2NjhmMTE4ZWZkNDkzMzE5YWY2M2FhODgwMiBdIHx8IHJldHVybiAxCisgICAgcHJvZ3JhbT0iJCg8IiRzb3VyY2UiKSIKKyAgICBjb3VudD0iJChwcmludGYgJyVzXG4nICIkcHJvZ3JhbSIgfCBhd2sgJyQwID09ICJidWlsZF9jYW5kaWRhdGUiIHtuKyt9IEVORCB7cHJpbnQgbiswfScpIgorICAgIFsgIiRjb3VudCIgPSAxIF0gfHwgcmV0dXJuIDEKKyAgICBwcmVmaXg9IiR7cHJvZ3JhbSUlJCdcbmJ1aWxkX2NhbmRpZGF0ZVxuJyp9IgorICAgIFsgIiRwcmVmaXgiICE9ICIkcHJvZ3JhbSIgXSB8fCByZXR1cm4gMQorICAgIHByaW50ZiAnJXNcbicgIiRwcmVmaXgiCit9CitiYXNlbGluZV9wcmVmaXg9IiQocm91bmRfYmFzZWxpbmVfY29udHJvbF9wcmVmaXggIiRiYXNlbGluZV9yZWxlYXNlL2V2YWx1YXRvci13b3JrLWNvdmVyYWdlLnNoIikiCitzZXQgLS0gLS1yZXF1ZXN0ICIkYmFzZWxpbmVfcmVxdWVzdCIgLS1yZXN1bHQgIiRiYXNlbGluZV9hcnRpZmFjdHMvd29ya2VyLXJlc3VsdC5qc29uIgorZXZhbCAiJGJhc2VsaW5lX3ByZWZpeCIKK3Vuc2V0IGJhc2VsaW5lX3ByZWZpeAorCitbICIkcmVwbGljYXRlcyIgPSA5IF0gJiYgWyAiJHsjYmFzZWxpbmVfbWFuaWZlc3RzW0BdfSIgPSA5IF0gJiYgWyAiJHsjY2FuZGlkYXRlX21hbmlmZXN0c1tAXX0iID0gMCBdIHx8IGRpZSAnYmFzZWxpbmUtb25seSBjb250cm9sIGNvdW50IG1pc21hdGNoJworWyAhIC1lICIkYXJ0aWZhY3RfZGlyL3dvcmtlci1yZXN1bHQuanNvbiIgXSAmJiBbICEgLWUgIiRhcnRpZmFjdF9kaXIvZXZhbHVhdGlvbi5jb21wbGV0ZS5qc29uIiBdIHx8IGRpZSAnYmFzZWxpbmUgcHJlcGFyYXRpb24gZ2FpbmVkIHN1Ym1pc3Npb24tcmVzdWx0IGF1dGhvcml0eScKK1sgLXogIiQoc3VkbyAtbiBkb2NrZXIgcHMgLWFxIC0tZmlsdGVyICJsYWJlbD1jb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLmpvYi1pZD0kam9iX2lkIikiIF0gfHwgZGllICdiYXNlbGluZSBwcmVwYXJhdGlvbiBsZWZ0IGNvbnRhaW5lcnMnCitbIC16ICIkKHN1ZG8gLW4gZG9ja2VyIG5ldHdvcmsgbHMgLXEgLS1maWx0ZXIgImxhYmVsPWNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24uam9iLWlkPSRqb2JfaWQiKSIgXSB8fCBkaWUgJ2Jhc2VsaW5lIHByZXBhcmF0aW9uIGxlZnQgbmV0d29ya3MnCityZW1vdmVfZXZhbHVhdGlvbl9zb3VyY2VzCitbICIkd29ya19kaXIiID0gIiRhcnRpZmFjdF9kaXIvLmV2aWRlbmNlLXJ1bnRpbWUiIF0gJiYgbW91bnRwb2ludCAtcSAiJHdvcmtfZGlyIiB8fCBkaWUgJ2Jhc2VsaW5lIHByZXBhcmF0aW9uIGxvc3QgaXRzIG93bmVkIHRtcGZzJworc3VkbyAtbiBybSAtcmYgLS0gIiR3b3JrX2Rpci9pbnB1dCIgIiR3b3JrX2Rpci9zY29yZXItaW5wdXQiICIkd29ya19kaXIvc2NvcmUtcnVudGltZSIKK3JtIC1mIC0tICIkc2NvcmVfcnVubmVyX2VudiIgIiRzY29yZV9jb21wb3NlX2VudiIKK3ZhbGlkYXRlX291dHB1dF90cmVlICIkd29ya19kaXIiCit3cml0ZV9ldmFsdWF0aW9uX3Byb2dyZXNzIGJhc2VsaW5lX3ByZXBhcmVkIDkgMAorcGVyc2lzdF9ldmlkZW5jZV90cmVlCit3cml0ZV9ldmlkZW5jZV9tYW5pZmVzdAorWyAteiAiJHthY3RpdmVfd29ya19tb3VudDotfSIgXSB8fCBkaWUgJ2Jhc2VsaW5lIHByZXBhcmF0aW9uIGV2aWRlbmNlIG1vdW50IHN1cnZpdmVkJworYmFzZWxpbmVfaWRzPSgpCitmb3Igb3JkaW5hbCBpbiAwMSAwMiAwMyAwNCAwNSAwNiAwNyAwOCAwOTsgZG8gYmFzZWxpbmVfaWRzKz0oImJhc2VsaW5lLSRvcmRpbmFsLSR7am9iX2lkOjA6OH0iKTsgZG9uZQorYmFzZWxpbmVfaWRzX2pzb249IiQocHJpbnRmICclc1xuJyAiJHtiYXNlbGluZV9pZHNbQF19IiB8IGpxIC1Sc2MgJ3NwbGl0KCJcbiIpWzotMV0nKSIKK2Jhc2VsaW5lX3BlbmRpbmc9IiRhcnRpZmFjdF9kaXIvLnJvdW5kLWJhc2VsaW5lLXByZXBhcmF0aW9uLmNvbXBsZXRlLmpzb24ubmV3IgorWyAhIC1lICIkYmFzZWxpbmVfcGVuZGluZyIgXSAmJiBbICEgLUwgIiRiYXNlbGluZV9wZW5kaW5nIiBdIHx8IGRpZSAnYmFzZWxpbmUgY29tcGxldGlvbiBwYXRoIGFscmVhZHkgZXhpc3RzJworanEgLW4gLS1hcmcgb3duZXIgIiRiYXNlbGluZV9vd25lciIgLS1hcmcgY29udGV4dF9zaGEyNTYgIiRiYXNlbGluZV9jb250ZXh0X3NoYTI1NiIgXAorICAgIC0tYXJnIGpvYl9pZCAiJGpvYl9pZCIgLS1hcmcgcm91bmRfaWQgIiRyb3VuZF9pZCIgLS1hcmcgYmFzZV9zaGEgIiRiYXNlX3NoYSIgXAorICAgIC0tYXJnIGltYWdlICIkYmFzZV9pbWFnZV9pZCIgLS1hcmcgcHJvdmlkZXJzX3NoYTI1NiAiJHByb3ZpZGVyc19zaGEyNTYiIC0tYXJnIHNjb3Jlcl92ZXJzaW9uICIkc2NvcmVyX3ZlcnNpb24iIFwKKyAgICAtLWFyZ2pzb24gc291cmNlX2Vwb2NoICIkc291cmNlX2Vwb2NoIiAtLWFyZ2pzb24gY29udHJvbF9pZHMgIiRiYXNlbGluZV9pZHNfanNvbiIgLS1hcmdqc29uIGNvdmVyYWdlICIkd29ya19jb3ZlcmFnZV9wb2xpY3kiIFwKKyAgICAtLWFyZyBiYXNlbGluZV9zaGEyNTYgIiRiYXNlbGluZV9zaGEyNTYiIC0tYXJnIGV2aWRlbmNlX3NoYTI1NiAiJChzaGEyNTZfZmlsZSAiJGV2aWRlbmNlX21hbmlmZXN0IikiIFwKKyAgICAne3NjaGVtYToxLGtpbmQ6InNpbS1sYXRlbmN5LXJvdW5kLWJhc2VsaW5lLXByZXBhcmF0aW9uLWNvbXBsZXRlIixvd25lcjokb3duZXIsY29udGV4dF9zaGEyNTY6JGNvbnRleHRfc2hhMjU2LAorICAgICAgam9iX2lkOiRqb2JfaWQscm91bmRfaWQ6JHJvdW5kX2lkLHNvdXJjZV9lcG9jaDokc291cmNlX2Vwb2NoLGJhc2Vfc2hhOiRiYXNlX3NoYSxiYXNlX2ltYWdlX2lkOiRpbWFnZSwKKyAgICAgIHByb3ZpZGVyc19zaGEyNTY6JHByb3ZpZGVyc19zaGEyNTYsc2NvcmVyX3ZlcnNpb246JHNjb3Jlcl92ZXJzaW9uLGcyX3ZvbHVtZV9wb2xpY3k6Im1pbmltdW0td29yay8xIix3b3JrX2NvdmVyYWdlX3BvbGljeTokY292ZXJhZ2UsCisgICAgICByZXBsaWNhdGVzOjksY29udHJvbF9ldmFsdWF0aW9uX2lkczokY29udHJvbF9pZHMsYmFzZWxpbmVfc2hhMjU2OiRiYXNlbGluZV9zaGEyNTYsZXZpZGVuY2VfbWFuaWZlc3Rfc2hhMjU2OiRldmlkZW5jZV9zaGEyNTYsCisgICAgICBzdWJtaXNzaW9uX3N0YXJ0ZWQ6ZmFsc2UsY2FuZGlkYXRlX2V4ZWN1dGVkOmZhbHNlLGNsZWFudXBfY29tcGxldGU6dHJ1ZX0nID4gIiRiYXNlbGluZV9wZW5kaW5nIgorY2htb2QgMDQwMCAiJGJhc2VsaW5lX3BlbmRpbmciCitzeW5jIC1kICIkYmFzZWxpbmVfcGVuZGluZyIgIiRhcnRpZmFjdF9kaXIvYmFzZWxpbmUuanNvbiIgIiRldmlkZW5jZV9tYW5pZmVzdCIKK1sgISAtZSAiJGJhc2VsaW5lX3JlY2VpcHQiIF0gJiYgWyAhIC1MICIkYmFzZWxpbmVfcmVjZWlwdCIgXSB8fCBkaWUgJ2Jhc2VsaW5lIGNvbXBsZXRpb24gYXBwZWFyZWQgZHVyaW5nIHB1YmxpY2F0aW9uJworbXYgLS0gIiRiYXNlbGluZV9wZW5kaW5nIiAiJGJhc2VsaW5lX3JlY2VpcHQiCitzeW5jICIkYXJ0aWZhY3RfZGlyIgorbG9nICdjb3ZlcmFnZSByb3VuZCBiYXNlbGluZSBwcmVwYXJlZDsgbm8gc3VibWlzc2lvbiBjbG9jaywgY2FuZGlkYXRlIG9yIHNjb3JlIGV4ZWN1dGVkJwpkaWZmIC0tZ2l0IGEvY29ubmVjdC9zaW0tbGF0ZW5jeS9ldmFsdWF0b3IvY29udGFpbmVyL3N1YmV2YWx1YXRpb24tb3duZXJzaGlwLnNoIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9ldmFsdWF0b3IvY29udGFpbmVyL3N1YmV2YWx1YXRpb24tb3duZXJzaGlwLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyMzEwZGE2NDA0YWI0OTRhYjM5YmUzMDg4ZTBiOWY5NWE5N2EyZGMKLS0tIC9kZXYvbnVsbAorKysgYi9jb25uZWN0L3NpbS1sYXRlbmN5L2V2YWx1YXRvci9jb250YWluZXIvc3ViZXZhbHVhdGlvbi1vd25lcnNoaXAuc2gKQEAgLTAsMCArMSwyMjAgQEAKKyMhL3Vzci9iaW4vZW52IGJhc2gKKworIyBTb3VyY2Ugb25seSBmcm9tIHRoZSBwcm90ZWN0ZWQgcHJvc3BlY3RpdmUgZXZhbHVhdG9yIHJlbGVhc2UuIFRoZSBhZ2VudCBwaW5zCisjIHRoZXNlIGV4YWN0IGJ5dGVzIGJlZm9yZSBsYXVuY2g7IG5vIGNhbmRpZGF0ZSBmaWxlIHNlbGVjdHMgbGFiZWxzIG9yIGNncm91cHMuCisjIE5vIGVudmlyb25tZW50IG1lYW5zIGxlZ2FjeSBiZWhhdmlvci4gQW55IHBhcnRpYWwgc2NvcGUgcmVmdXNlcyBhbGwgd29yay4KKworc3ViZXZhbHVhdGlvbl9vd25lcnNoaXBfaW5pdCgpIHsKKyAgICBzdWJldmFsdWF0aW9uX3Njb3BlZD1mYWxzZQorICAgIHN1YmV2YWx1YXRpb25fcnVuX2lkPSIiCisgICAgc3ViZXZhbHVhdGlvbl9wcmVmbGlnaHRfY2dyb3VwPSIiCisgICAgc3ViZXZhbHVhdGlvbl9kb2NrZXJfYXJncz0oKQorICAgIHN1YmV2YWx1YXRpb25fcnVuX2xhYmVsX2FyZ3M9KCkKKyAgICBzdWJldmFsdWF0aW9uX3Byb2JlX2FyZ3M9KCkKKyAgICBzdWJldmFsdWF0aW9uX21hbmFnZW1lbnRfYXJncz0oKQorICAgIHN1YmV2YWx1YXRpb25fY29tcG9zZV9hcmdzPSgpCisgICAgc3ViZXZhbHVhdGlvbl9jbGVhbnVwX2ZpbHRlcl9hcmdzPSgpCisgICAgc3ViZXZhbHVhdGlvbl9kb2NrZXJfY29tbWFuZD0oc3VkbyAtbiBkb2NrZXIpCisgICAgbG9jYWwgcHJlc2VudD0wIG5hbWUgdmFsdWUgZGlyZWN0b3J5IHRva2VuCisgICAgZm9yIG5hbWUgaW4gVVJORVRXT1JLX1NVQkVWQUxVQVRJT05fUlVOX0lEIFVSTkVUV09SS19TVUJFVkFMVUFUSU9OX0pPQl9JRCBVUk5FVFdPUktfU1VCRVZBTFVBVElPTl9ST1VORF9JRCBVUk5FVFdPUktfU1VCRVZBTFVBVElPTl9BVFRFTVBUOyBkbworICAgICAgICBpZiBbWyAtdiAiJG5hbWUiIF1dOyB0aGVuCisgICAgICAgICAgICBwcmVzZW50PSQoKHByZXNlbnQgKyAxKSkKKyAgICAgICAgZmkKKyAgICBkb25lCisgICAgW1sgIiRwcmVzZW50IiAhPSAwIF1dIHx8IHJldHVybiAwCisgICAgaWYgW1sgIiRwcmVzZW50IiAhPSA0IHx8ICEgIiR7VVJORVRXT1JLX1NVQkVWQUxVQVRJT05fUlVOX0lEOi19IiA9fiBeWzAtOWEtZl17NjR9JCB8fAorICAgICAgICAgICEgIiR7VVJORVRXT1JLX1NVQkVWQUxVQVRJT05fSk9CX0lEOi19IiA9fiBeWzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17NH0tWzAtOWEtZl17MTJ9JCB8fAorICAgICAgICAgICEgIiR7VVJORVRXT1JLX1NVQkVWQUxVQVRJT05fUk9VTkRfSUQ6LX0iID1+IF5bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0kIHx8CisgICAgICAgICAgISAiJHtVUk5FVFdPUktfU1VCRVZBTFVBVElPTl9BVFRFTVBUOi19IiA9fiBeWzEtOV1bMC05XXswLDE4fSQgXV07IHRoZW4KKyAgICAgICAgcHJpbnRmICdzdWJldmFsdWF0aW9uIG93bmVyc2hpcCBzY29wZSBpcyBpbmNvbXBsZXRlIG9yIG1hbGZvcm1lZFxuJyA+JjIKKyAgICAgICAgcmV0dXJuIDIKKyAgICBmaQorICAgIHZhbHVlPSIkVVJORVRXT1JLX1NVQkVWQUxVQVRJT05fQVRURU1QVCIKKyAgICBpZiBbWyAiJHsjdmFsdWV9IiA9IDE5ICYmICIkdmFsdWUiID4gOTIyMzM3MjAzNjg1NDc3NTgwNyBdXTsgdGhlbgorICAgICAgICBwcmludGYgJ3N1YmV2YWx1YXRpb24gb3duZXJzaGlwIGF0dGVtcHQgZXhjZWVkcyBpdHMgc2lnbmVkIGludGVnZXIgYm91bmRcbicgPiYyCisgICAgICAgIHJldHVybiAyCisgICAgZmkKKyAgICB0b2tlbj0iJChwcmludGYgJyVzOiVzJyAiJFVSTkVUV09SS19TVUJFVkFMVUFUSU9OX0pPQl9JRCIgIiR2YWx1ZSIgfCBzaGEyNTZzdW0pIiB8fCByZXR1cm4gMgorICAgIHRva2VuPSIke3Rva2VuJSUgKn0iCisgICAgW1sgIiR0b2tlbiIgPX4gXlswLTlhLWZdezY0fSQgXV0gfHwgcmV0dXJuIDIKKyAgICBkaXJlY3Rvcnk9IiQoY2QgIiQoZGlybmFtZSAiJHtCQVNIX1NPVVJDRVswXX0iKSIgJiYgcHdkIC1QKSIgfHwgcmV0dXJuIDIKKyAgICBpZiBbWyAtdiBVUk5FVFdPUktfU1VCRVZBTFVBVElPTl9DT1JFX1BST0ZJTEUgJiYgIiRVUk5FVFdPUktfU1VCRVZBTFVBVElPTl9DT1JFX1BST0ZJTEUiICE9ICIkZGlyZWN0b3J5L2NhbmRpZGF0ZS1jb3JlLnNlY2NvbXAuanNvbiIgXV07IHRoZW4KKyAgICAgICAgcHJpbnRmICdzdWJldmFsdWF0aW9uIGNvcmUgcHJvZmlsZSBkaWZmZXJzIGZyb20gaXRzIHByb3RlY3RlZCBoZWxwZXIgcmVsZWFzZVxuJyA+JjIKKyAgICAgICAgcmV0dXJuIDIKKyAgICBmaQorICAgIGV4cG9ydCBVUk5FVFdPUktfU1VCRVZBTFVBVElPTl9DT1JFX1BST0ZJTEU9IiRkaXJlY3RvcnkvY2FuZGlkYXRlLWNvcmUuc2VjY29tcC5qc29uIgorICAgIHN1YmV2YWx1YXRpb25fcnVuX2lkPSIkVVJORVRXT1JLX1NVQkVWQUxVQVRJT05fUlVOX0lEIgorICAgIHN1YmV2YWx1YXRpb25fZG9ja2VyX2NvbW1hbmQ9KCIke1VSTkVUV09SS19TVUJFVkFMVUFUSU9OX0NMSUVOVDotfSIgLS1kb2NrZXItY2xpZW50ICIkc3ViZXZhbHVhdGlvbl9ydW5faWQiIC0tKQorICAgIHN1YmV2YWx1YXRpb25fcHJlZmxpZ2h0X2Nncm91cD0idXJuZXR3b3JrLWV2YWx1YXRpb24tJHt0b2tlbjowOjMyfS1wcmVmbGlnaHQuc2xpY2UiCisgICAgZXhwb3J0IFVSTkVUV09SS19TVUJFVkFMVUFUSU9OX0JSSURHRV9OQU1FPSJ1bmV2LSR7c3ViZXZhbHVhdGlvbl9ydW5faWQ6MDoxMH0iCisgICAgc3ViZXZhbHVhdGlvbl9tYW5hZ2VtZW50X2FyZ3M9KC0tY3B1c2V0LWNwdXMgIiR7VVJORVRXT1JLX1NVQkVWQUxVQVRJT05fTUFOQUdFTUVOVF9DUFVTRVQ6LX0iKQorICAgIHN1YmV2YWx1YXRpb25fZG9ja2VyX2FyZ3M9KAorICAgICAgICAtLWxhYmVsICJjb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLmpvYi1pZD0kVVJORVRXT1JLX1NVQkVWQUxVQVRJT05fSk9CX0lEIgorICAgICAgICAtLWxhYmVsICJjb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLnJvdW5kLWlkPSRVUk5FVFdPUktfU1VCRVZBTFVBVElPTl9ST1VORF9JRCIKKyAgICAgICAgLS1sYWJlbCAiY29tLnVybmV0d29yay5jb21wZXRpdGlvbi5ydW4taWQ9JHN1YmV2YWx1YXRpb25fcnVuX2lkIgorICAgICAgICAtLWNncm91cC1wYXJlbnQgIiRzdWJldmFsdWF0aW9uX3ByZWZsaWdodF9jZ3JvdXAiCisgICAgICAgIC0tdWxpbWl0IGNvcmU9MToxCisgICAgICAgIC0tc2VjdXJpdHktb3B0ICJzZWNjb21wPSRVUk5FVFdPUktfU1VCRVZBTFVBVElPTl9DT1JFX1BST0ZJTEUiCisgICAgKQorICAgIHN1YmV2YWx1YXRpb25fcHJvYmVfYXJncz0oCisgICAgICAgIC0tbmV0d29yayBub25lIC0tcmVhZC1vbmx5IC0tY2FwLWRyb3AgQUxMCisgICAgICAgIC0tc2VjdXJpdHktb3B0IG5vLW5ldy1wcml2aWxlZ2VzOnRydWUKKyAgICAgICAgLS1tZW1vcnkgNGcgLS1tZW1vcnktc3dhcCA0ZyAtLXBpZHMtbGltaXQgMTAyNAorICAgICAgICAiJHtzdWJldmFsdWF0aW9uX21hbmFnZW1lbnRfYXJnc1tAXX0iCisgICAgKQorICAgIHN1YmV2YWx1YXRpb25fcnVuX2xhYmVsX2FyZ3M9KC0tbGFiZWwgImNvbS51cm5ldHdvcmsuY29tcGV0aXRpb24ucnVuLWlkPSRzdWJldmFsdWF0aW9uX3J1bl9pZCIpCisgICAgc3ViZXZhbHVhdGlvbl9jb21wb3NlX2FyZ3M9KC0tZmlsZSAiJGRpcmVjdG9yeS9jb21wb3NlLnN1YmV2YWx1YXRpb24ueW1sIikKKyAgICBzdWJldmFsdWF0aW9uX2NsZWFudXBfZmlsdGVyX2FyZ3M9KAorICAgICAgICAtLWZpbHRlciAibGFiZWw9Y29tLnVybmV0d29yay5jb21wZXRpdGlvbi5yb3VuZC1pZD0kVVJORVRXT1JLX1NVQkVWQUxVQVRJT05fUk9VTkRfSUQiCisgICAgICAgIC0tZmlsdGVyICJsYWJlbD1jb20udXJuZXR3b3JrLmNvbXBldGl0aW9uLnJ1bi1pZD0kc3ViZXZhbHVhdGlvbl9ydW5faWQiCisgICAgKQorICAgIHN1YmV2YWx1YXRpb25fc2NvcGVkPXRydWUKK30KKworIyBPbmx5IHRoZSByb290LXBpbm5lZCBwdWJsaWMgcm9sZSBjYW4gcm91dGUgcHJvc3BlY3RpdmUgRG9ja2VyIGNhbGxzLiBOZWl0aGVyCisjIGFuIGluaGVyaXRlZCBEb2NrZXIgY29udGV4dCBub3IgYSBnZW5lcmljIHN1ZG8gY2FwYWJpbGl0eSBpcyB1c2VkIGluIHNjb3BlLgorc3ViZXZhbHVhdGlvbl9yZXF1aXJlX2NsaWVudCgpIHsKKyAgICBbWyAiJHtVUk5FVFdPUktfU1VCRVZBTFVBVElPTl9DTElFTlQ6LX0iID09IC8qICYmCisgICAgICAgIiR7VVJORVRXT1JLX1NVQkVWQUxVQVRJT05fQ0xJRU5UOi19IiAhPSAqJCdcbicqICYmCisgICAgICAgIiR7VVJORVRXT1JLX1NVQkVWQUxVQVRJT05fQ0xJRU5UOi19IiAhPSAqJCdccicqICYmCisgICAgICAgLWYgIiRVUk5FVFdPUktfU1VCRVZBTFVBVElPTl9DTElFTlQiICYmIC14ICIkVVJORVRXT1JLX1NVQkVWQUxVQVRJT05fQ0xJRU5UIiAmJgorICAgICAgICEgLUwgIiRVUk5FVFdPUktfU1VCRVZBTFVBVElPTl9DTElFTlQiICYmCisgICAgICAgIiR7VVJORVRXT1JLX1NVQkVWQUxVQVRJT05fTUFOQUdFTUVOVF9DUFVTRVQ6LX0iID1+IF5bMC05XSsoWywtXVswLTldKykqJCBdXSB8fCB7CisgICAgICAgIHByaW50ZiAnc3ViZXZhbHVhdGlvbiBoYXMgbm8gZml4ZWQgbm9uLXJvb3QgY2xpZW50IGFuZCBtYW5hZ2VtZW50IENQVSBpZGVudGl0eVxuJyA+JjIKKyAgICAgICAgcmV0dXJuIDIKKyAgICB9Cit9CisKKyMgVGhlIHVuc2NvcGVkIGJyYW5jaCByZXRhaW5zIHRoZSBvbGQgY29tbWFuZCBhbmQgYXJndW1lbnQgb3JkZXIuIFNjb3BlIGlzCisjIHN1cHBsaWVkIG9ubHkgYnkgdGhlIGF1dGhlbnRpY2F0ZWQgYWdlbnQsIG5ldmVyIGJ5IGEgY2FuZGlkYXRlIGNvbnRhaW5lci4KK2V2YWx1YXRpb25fZG9ja2VyKCkgeworICAgIGlmIFtbICIke3N1YmV2YWx1YXRpb25fc2NvcGVkOi1mYWxzZX0iID0gdHJ1ZSBdXTsgdGhlbgorICAgICAgICBzdWJldmFsdWF0aW9uX3JlcXVpcmVfY2xpZW50IHx8IHJldHVybgorICAgICAgICAiJFVSTkVUV09SS19TVUJFVkFMVUFUSU9OX0NMSUVOVCIgLS1kb2NrZXItY2xpZW50ICIkc3ViZXZhbHVhdGlvbl9ydW5faWQiIC0tICIkQCIKKyAgICBlbHNlCisgICAgICAgIHN1ZG8gLW4gZG9ja2VyICIkQCIKKyAgICBmaQorfQorCisjIE9yZGluYXJ5IGhlbHBlciBjbGVhbnVwIGdldHMgdGhlIHNhbWUgZXh0ZXJuYWwgYm91bmQgd2l0aG91dCBnaXZpbmcgdGhlCisjIHdvcmtlciByb290IHBlcm1pc3Npb24gdG8gcnVuIGFuIGFyYml0cmFyeSB0aW1lb3V0L2NvbW1hbmQgY29tYmluYXRpb24uCitldmFsdWF0aW9uX3RpbWVkX2RvY2tlcigpIHsKKyAgICBpZiBbWyAiJHtzdWJldmFsdWF0aW9uX3Njb3BlZDotZmFsc2V9IiA9IHRydWUgXV07IHRoZW4KKyAgICAgICAgc3ViZXZhbHVhdGlvbl9yZXF1aXJlX2NsaWVudCB8fCByZXR1cm4KKyAgICAgICAgdGltZW91dCAtLXNpZ25hbD1URVJNIC0ta2lsbC1hZnRlcj0xcyAzcyAiJFVSTkVUV09SS19TVUJFVkFMVUFUSU9OX0NMSUVOVCIgLS1kb2NrZXItY2xpZW50ICIkc3ViZXZhbHVhdGlvbl9ydW5faWQiIC0tICIkQCIKKyAgICBlbHNlCisgICAgICAgIHN1ZG8gLW4gdGltZW91dCAtLXNpZ25hbD1URVJNIC0ta2lsbC1hZnRlcj0xcyAzcyBkb2NrZXIgIiRAIgorICAgIGZpCit9CisKKyMgUm9vdCBmaWxlc3lzdGVtIHdvcmsgaGFzIGEgZmluaXRlIHBvc2l0aW9uYWwgdm9jYWJ1bGFyeSBpbiB0aGUgaW5kZXBlbmRlbnQKKyMgb3duZXIuIE5vIHNoZWxsLCBleGVjdXRhYmxlLCB1aWQvZ2lkLCBtb3VudCBzb3VyY2Ugb3IgbW9kZSBjcm9zc2VzIHRoaXMgY2FsbC4KK2V2YWx1YXRpb25faG9zdCgpIHsKKyAgICBbWyAiJHtzdWJldmFsdWF0aW9uX3Njb3BlZDotZmFsc2V9IiA9IHRydWUgXV0gfHwgcmV0dXJuIDIKKyAgICBzdWJldmFsdWF0aW9uX3JlcXVpcmVfY2xpZW50IHx8IHJldHVybgorICAgICIkVVJORVRXT1JLX1NVQkVWQUxVQVRJT05fQ0xJRU5UIiAtLWhvc3Qtb3BlcmF0aW9uICIkc3ViZXZhbHVhdGlvbl9ydW5faWQiIC0tICIkQCIKK30KKworIyBNZWFzdXJlbWVudCBjYW5ub3Qgb3ZlcmxhcCByZXRhaW5lZCB1bmJvdW5kZWQgQnVpbGRLaXQgbWVtb3J5LiBPbmx5IHRoZQorIyBuby1hcmd1bWVudCByb290IHJvbGUgcmV0aXJlcyBpdDsgdGhpcyBoZWxwZXIgcmV0YWlucyBpdHMgZmluaXRlIHJlY2VpcHQuCisjIFRoZSB1bnNjb3BlZCBldmFsdWF0b3IgbmV2ZXIgY2FsbHMgdGhpcyBwcm9zcGVjdGl2ZSBwaGFzZSBib3VuZGFyeS4KK3N1YmV2YWx1YXRpb25fcmV0aXJlX2J1aWxkKCkgeworICAgIFtbICIke3N1YmV2YWx1YXRpb25fc2NvcGVkOi1mYWxzZX0iID0gdHJ1ZSAmJiAiJCMiID0gMSAmJiAiJDEiID0gLyogJiYKKyAgICAgICAiJDEiICE9ICokJ1xuJyogJiYgIiQxIiAhPSAqJCdccicqIF1dIHx8IHJldHVybiAyCisgICAgbG9jYWwgZGVzdGluYXRpb249IiQxIiBwZW5kaW5nPSIkMS5uZXciCisgICAgW1sgISAtZSAiJGRlc3RpbmF0aW9uIiAmJiAhIC1MICIkZGVzdGluYXRpb24iICYmICEgLWUgIiRwZW5kaW5nIiAmJiAhIC1MICIkcGVuZGluZyIgXV0gfHwgcmV0dXJuIDIKKyAgICBpZiAhIChzZXQgLW8gbm9jbG9iYmVyOyBldmFsdWF0aW9uX2hvc3QgcmV0aXJlLWJ1aWxkID4gIiRwZW5kaW5nIik7IHRoZW4KKyAgICAgICAgcm0gLWYgLS0gIiRwZW5kaW5nIgorICAgICAgICByZXR1cm4gMgorICAgIGZpCisgICAgaWYgISBqcSAtZSAnCisgICAgICAgIHR5cGUgPT0gIm9iamVjdCIgYW5kCisgICAgICAgIChrZXlzIHwgc29ydCkgPT0gWyJtZW1vcnlfY3VycmVudF9ieXRlcyIsIm1lbW9yeV9zdGF0X3NoYTI1NiIsIm91dGNvbWVfa2luZCIsInJlY2VpcHRfc2hhMjU2IiwicmV0YWluZWRfbWVtb3J5X21heGltdW1fYnl0ZXMiXSBhbmQKKyAgICAgICAgKC5vdXRjb21lX2tpbmQgPT0gImFja25vd2xlZGdlZC1idWlsZCIgb3IgLm91dGNvbWVfa2luZCA9PSAibm8tYnVpbGQtaXNzdWVkIikgYW5kCisgICAgICAgICgucmV0YWluZWRfbWVtb3J5X21heGltdW1fYnl0ZXMgfCB0eXBlID09ICJudW1iZXIiIGFuZCAuID4gMCBhbmQgZmxvb3IgPT0gLikgYW5kCisgICAgICAgICgubWVtb3J5X2N1cnJlbnRfYnl0ZXMgfCB0eXBlID09ICJudW1iZXIiIGFuZCAuID49IDAgYW5kIGZsb29yID09IC4pIGFuZAorICAgICAgICAubWVtb3J5X2N1cnJlbnRfYnl0ZXMgPD0gLnJldGFpbmVkX21lbW9yeV9tYXhpbXVtX2J5dGVzIGFuZAorICAgICAgICAoLm1lbW9yeV9zdGF0X3NoYTI1NiB8IHR5cGUgPT0gInN0cmluZyIgYW5kIHRlc3QoIl5bMC05YS1mXXs2NH0kIikpIGFuZAorICAgICAgICAoLnJlY2VpcHRfc2hhMjU2IHwgdHlwZSA9PSAic3RyaW5nIiBhbmQgdGVzdCgiXlswLTlhLWZdezY0fSQiKSkKKyAgICAnICIkcGVuZGluZyIgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBybSAtZiAtLSAiJHBlbmRpbmciCisgICAgICAgIHJldHVybiAyCisgICAgZmkKKyAgICBjaG1vZCAwNDAwICIkcGVuZGluZyIgfHwgcmV0dXJuCisgICAgc3luYyAtZCAiJHBlbmRpbmciIHx8IHJldHVybgorICAgIG12IC0tICIkcGVuZGluZyIgIiRkZXN0aW5hdGlvbiIgfHwgcmV0dXJuCisgICAgc3luYyAiJChkaXJuYW1lICIkZGVzdGluYXRpb24iKSIKK30KKworIyBDb250YWluZXIgb3V0cHV0IGlzIGluc3BlY3RlZCBvbmx5IGFmdGVyIGl0cyBjb21wbGV0ZSBjb2hvcnQgaGFzIHN0b3BwZWQgYW5kCisjIHRoZSBkZXNjcmlwdG9yLWNvbmZpbmVkIGJyb2tlciBoYXMgcmVjbGFpbWVkIGl0LiBTY29wZWQgd29yayBzdGF5cyBub24tcm9vdC4KK2V2YWx1YXRpb25fZmlsZSgpIHsKKyAgICBpZiBbWyAiJHtzdWJldmFsdWF0aW9uX3Njb3BlZDotZmFsc2V9IiA9IHRydWUgXV07IHRoZW4KKyAgICAgICAgIiRAIgorICAgIGVsc2UKKyAgICAgICAgc3VkbyAtbiAiJEAiCisgICAgZmkKK30KKworIyBSZWFkLW9ubHkgaW5wdXQgYmluZHMgdXNlIHdvcmtlci1vd25lZCwgd29ybGQtcmVhZGFibGUgbGVhdmVzIGJlaGluZCB0aGUKKyMgcHJpdmF0ZSBydW4gYW5jZXN0b3IuIE9ubHkgbGVnYWN5IG1vZGUgbmVlZHMgdHJhbnNsYXRlZCBvd25lcnNoaXAgb24gY29waWVzLgorZXZhbHVhdGlvbl9zZWFsZWRfY29weSgpIHsKKyAgICBbWyAiJCMiID0gNCBdXSB8fCByZXR1cm4gMgorICAgIGlmIFtbICIke3N1YmV2YWx1YXRpb25fc2NvcGVkOi1mYWxzZX0iID0gdHJ1ZSBdXTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1tIDA0NDQgLS0gIiQzIiAiJDQiCisgICAgZWxzZQorICAgICAgICBzdWRvIC1uIGluc3RhbGwgLW8gIiQxIiAtZyAiJDIiIC1tIDA0MDAgLS0gIiQzIiAiJDQiCisgICAgZmkKK30KKworIyBQcm9kdWN0L3NvdXJjZSBkYXRhIG11c3Qgbm90IGdhaW4gYSBob3N0IHByb2Nlc3MgdGhyb3VnaCBHaXQgaG9va3MsIGZzbW9uaXRvciwKKyMgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gb3IgcHJvdG9jb2wgaGVscGVycyBhZnRlciBhIGNoZWNrZWQgcGF0Y2ggaXMgYXBwbGllZC4KKyMgQnJvYWQgd3JpdGVzIGFkZGl0aW9uYWxseSB1c2UgdGhlIGluZGVwZW5kZW50bHkgcGlubmVkIGNhbm9uaWNhbCB2YWxpZGF0b3IuCitldmFsdWF0aW9uX2dpdCgpIHsKKyAgICBpZiBbWyAiJHtzdWJldmFsdWF0aW9uX3Njb3BlZDotZmFsc2V9IiA9IHRydWUgXV07IHRoZW4KKyAgICAgICAgbG9jYWwgYXJndW1lbnQgcmVwb3NpdG9yeT0iIiBwcmV2aW91cz0iIiBjb25maWd1cmVkIHN0YXR1cz0wCisgICAgICAgIGxvY2FsIC1hIHNhZmVfYXJndW1lbnRzPSgpCisgICAgICAgIGxvY2FsIGNvbW1hbmRfc2Vlbj1mYWxzZSBvcHRpb25fdmFsdWU9ZmFsc2UKKyAgICAgICAgZm9yIGFyZ3VtZW50IGluICIkQCI7IGRvCisgICAgICAgICAgICBpZiBbWyAiJHByZXZpb3VzIiA9IC1DIF1dOyB0aGVuIHJlcG9zaXRvcnk9IiRhcmd1bWVudCI7IGZpCisgICAgICAgICAgICBwcmV2aW91cz0iJGFyZ3VtZW50IgorICAgICAgICAgICAgc2FmZV9hcmd1bWVudHMrPSgiJGFyZ3VtZW50IikKKyAgICAgICAgICAgIGlmIFtbICIkb3B0aW9uX3ZhbHVlIiA9IHRydWUgXV07IHRoZW4gb3B0aW9uX3ZhbHVlPWZhbHNlOyBjb250aW51ZTsgZmkKKyAgICAgICAgICAgIGlmIFtbICIkY29tbWFuZF9zZWVuIiAhPSB0cnVlIF1dOyB0aGVuCisgICAgICAgICAgICAgICAgY2FzZSAiJGFyZ3VtZW50IiBpbgorICAgICAgICAgICAgICAgICAgICAtQ3wtY3wtLWdpdC1kaXJ8LS13b3JrLXRyZWUpIG9wdGlvbl92YWx1ZT10cnVlIDs7CisgICAgICAgICAgICAgICAgICAgIC0qKSA7OworICAgICAgICAgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9zZWVuPXRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFtbICIkYXJndW1lbnQiID0gZGlmZiBdXTsgdGhlbiBzYWZlX2FyZ3VtZW50cys9KC0tbm8tZXh0LWRpZmYgLS1uby10ZXh0Y29udik7IGZpCisgICAgICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgIGZpCisgICAgICAgIGRvbmUKKyAgICAgICAgW1sgIiRyZXBvc2l0b3J5IiA9IC8qICYmIC1kICIkcmVwb3NpdG9yeS8uZ2l0IiAmJiAhIC1MICIkcmVwb3NpdG9yeS8uZ2l0IiBdXSB8fCByZXR1cm4gMgorICAgICAgICBjb25maWd1cmVkPSIkKEdJVF9DT05GSUdfTk9TWVNURU09MSBHSVRfQ09ORklHX1NZU1RFTT0vZGV2L251bGwgR0lUX0NPTkZJR19HTE9CQUw9L2Rldi9udWxsIFwKKyAgICAgICAgICAgIGdpdCAtLW5vLXBhZ2VyIC1jIGNvcmUuaG9va3NQYXRoPS9kZXYvbnVsbCAtYyBjb3JlLmZzbW9uaXRvcj1mYWxzZSAtQyAiJHJlcG9zaXRvcnkiIFwKKyAgICAgICAgICAgICAgICBjb25maWcgLS1sb2NhbCAtLWluY2x1ZGVzIC0tbmFtZS1vbmx5IC0tZ2V0LXJlZ2V4cCAnXmZpbHRlclwuJykiIHx8IHN0YXR1cz0kPworICAgICAgICBbWyAiJHN0YXR1cyIgPSAxICYmIC16ICIkY29uZmlndXJlZCIgXV0gfHwgeworICAgICAgICAgICAgcHJpbnRmICdzb3VyY2UgcmVwb3NpdG9yeSBjb250YWlucyBhbiB1bnF1YWxpZmllZCBHaXQgY29udGVudCBmaWx0ZXJcbicgPiYyCisgICAgICAgICAgICByZXR1cm4gMgorICAgICAgICB9CisgICAgICAgIEdJVF9DT05GSUdfTk9TWVNURU09MSBHSVRfQ09ORklHX1NZU1RFTT0vZGV2L251bGwgR0lUX0NPTkZJR19HTE9CQUw9L2Rldi9udWxsIFwKKyAgICAgICAgR0lUX0FUVFJfTk9TWVNURU09MSBHSVRfVEVSTUlOQUxfUFJPTVBUPTAgXAorICAgICAgICAgICAgZ2l0IC0tbm8tcGFnZXIgLWMgY29yZS5ob29rc1BhdGg9L2Rldi9udWxsIC1jIGNvcmUuZnNtb25pdG9yPWZhbHNlIFwKKyAgICAgICAgICAgICAgICAtYyBwcm90b2NvbC5hbGxvdz1uZXZlciAtYyBnYy5hdXRvPTAgLWMgbWFpbnRlbmFuY2UuYXV0bz1mYWxzZSAiJHtzYWZlX2FyZ3VtZW50c1tAXX0iCisgICAgZWxzZQorICAgICAgICBnaXQgIiRAIgorICAgIGZpCit9CisKKyMgQmluZCB0aGUgZXZhbHVhdG9yJ3MgZGVjb2RlZCBpbW11dGFibGUgcmVxdWVzdCBiZWZvcmUgYW55IHJlc291cmNlIGNyZWF0aW9uLgorc3ViZXZhbHVhdGlvbl9yZXF1aXJlX2lkZW50aXR5KCkgeworICAgIGlmIFtbICIke3N1YmV2YWx1YXRpb25fc2NvcGVkOi1mYWxzZX0iID0gdHJ1ZSBdXTsgdGhlbgorICAgICAgICBbWyAiJCMiID0gMyAmJiAiJDEiID0gIiRVUk5FVFdPUktfU1VCRVZBTFVBVElPTl9KT0JfSUQiICYmCisgICAgICAgICAgICIkMiIgPSAiJFVSTkVUV09SS19TVUJFVkFMVUFUSU9OX1JPVU5EX0lEIiAmJiAiJDMiID0gIiRVUk5FVFdPUktfU1VCRVZBTFVBVElPTl9BVFRFTVBUIiBdXSB8fCB7CisgICAgICAgICAgICBwcmludGYgJ3N1YmV2YWx1YXRpb24gcmVxdWVzdCBkaWZmZXJzIGZyb20gaXRzIGF1dGhlbnRpY2F0ZWQgb3duZXJzaGlwIHNjb3BlXG4nID4mMgorICAgICAgICAgICAgcmV0dXJuIDIKKyAgICAgICAgfQorICAgIGZpCit9CmRpZmYgLS1naXQgYS9jb25uZWN0L3NpbS1sYXRlbmN5L2V2YWx1YXRvci9jb250YWluZXIvc3VibWlzc2lvbi1idWlsZGVyLWlkZW50aXR5LnNoIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9ldmFsdWF0b3IvY29udGFpbmVyL3N1Ym1pc3Npb24tYnVpbGRlci1pZGVudGl0eS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzQ0NmMxYWNmNDVlYjE5YmYyZDI1NzIxZDQ5ODA1YThiM2RlZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9ldmFsdWF0b3IvY29udGFpbmVyL3N1Ym1pc3Npb24tYnVpbGRlci1pZGVudGl0eS5zaApAQCAtMCwwICsxLDkwIEBACisjIS91c3IvYmluL2VudiBiYXNoCisjIEF1dGhlbnRpY2F0ZSBvbmUgaW1tdXRhYmxlIHRydXN0ZWQgYnVpbGRlciByZWxlYXNlLiBObyBjYW5kaWRhdGUgcGF0aCwgbW9kZWwKKyMgY3JlZGVudGlhbCwgZW52aXJvbm1lbnQtc2VsZWN0ZWQgZXhlY3V0YWJsZSBvciBtdXRhYmxlIGJhc2UtaW1hZ2UgdG9vbCBpcyB1c2VkLgorc2V0IC1FZXVvIHBpcGVmYWlsCitleHBvcnQgUEFUSD0vdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbgorcmVhZG9ubHkgU0NSSVBUX0RJUj0iJChjZCAiJChkaXJuYW1lICIke0JBU0hfU09VUkNFWzBdfSIpIiAmJiBwd2QgLVApIgorW1sgJCMgPT0gMCBdXSB8fCBleGl0IDIKKworZmFpbCgpIHsgcHJpbnRmICdzdWJtaXNzaW9uIGJ1aWxkZXIgcmVsZWFzZSBpcyBhYnNlbnQsIHVuc2FmZSBvciB1bnBpbm5lZFxuJyA+JjI7IGV4aXQgMjsgfQorCitwcm90ZWN0ZWRfZmlsZSgpIHsKKyAgICBsb2NhbCBsZWFmPSIkMSIgY3VycmVudD0iJDEiIG93bmVyIHBlcm1pc3Npb25zCisgICAgW1sgLWYgIiRsZWFmIiAmJiAhIC1MICIkbGVhZiIgXV0gfHwgZmFpbAorICAgIHdoaWxlIDo7IGRvCisgICAgICAgIFtbICEgLUwgIiRjdXJyZW50IiBdXSB8fCBmYWlsCisgICAgICAgIG93bmVyPSIkKHN0YXQgLWMgJXUgIiRjdXJyZW50IikiIHx8IGZhaWwKKyAgICAgICAgcGVybWlzc2lvbnM9IiQoc3RhdCAtYyAlYSAiJGN1cnJlbnQiKSIgfHwgZmFpbAorICAgICAgICBbWyAiJG93bmVyIiA9PSAwICYmICIkcGVybWlzc2lvbnMiID1+IF5bMC03XXszLDR9JCBdXSB8fCBmYWlsCisgICAgICAgICgoICg4IyRwZXJtaXNzaW9ucyAmIDgjMDIyKSA9PSAwICkpIHx8IGZhaWwKKyAgICAgICAgW1sgIiRjdXJyZW50IiAhPSAvIF1dIHx8IGJyZWFrCisgICAgICAgIGN1cnJlbnQ9IiQoZGlybmFtZSAiJGN1cnJlbnQiKSIKKyAgICAgICAgW1sgLWQgIiRjdXJyZW50IiBdXSB8fCBmYWlsCisgICAgZG9uZQorfQorCitzdWJldmFsdWF0aW9uX3Njb3BlZD1mYWxzZQoraWYgW1sgLXYgVVJORVRXT1JLX1NVQkVWQUxVQVRJT05fUlVOX0lEIHx8IC12IFVSTkVUV09SS19TVUJFVkFMVUFUSU9OX0pPQl9JRCB8fAorICAgICAgLXYgVVJORVRXT1JLX1NVQkVWQUxVQVRJT05fUk9VTkRfSUQgfHwgLXYgVVJORVRXT1JLX1NVQkVWQUxVQVRJT05fQVRURU1QVCBdXTsgdGhlbgorICAgIHByb3RlY3RlZF9maWxlICIkU0NSSVBUX0RJUi9zdWJldmFsdWF0aW9uLW93bmVyc2hpcC5zaCIKKyAgICBwcm90ZWN0ZWRfZmlsZSAiJFNDUklQVF9ESVIvY29tcG9zZS5zdWJldmFsdWF0aW9uLnltbCIKKyAgICBwcm90ZWN0ZWRfZmlsZSAiJFNDUklQVF9ESVIvZG9ja2VyLWlkLW1hcC5zaCIKKyAgICBzb3VyY2UgIiRTQ1JJUFRfRElSL3N1YmV2YWx1YXRpb24tb3duZXJzaGlwLnNoIgorICAgIHN1YmV2YWx1YXRpb25fb3duZXJzaGlwX2luaXQgfHwgZmFpbAorZmkKKworZm9yIGxlYWYgaW4gc3VibWlzc2lvbi1idWlsZGVyLWlkZW50aXR5LnNoIGJ1aWxkLXN1Ym1pc3Npb24uc2ggRG9ja2VyZmlsZS5zdWJtaXNzaW9uIGV2YWx1YXRvci5zaCBwcmVwYXJlLWV2YWx1YXRpb24tc291cmNlLnNoIGNvbXBldGl0aW9ucGF0Y2ggY29tcGV0aXRpb25wYXRjaC5zaGEyNTY7IGRvCisgICAgcHJvdGVjdGVkX2ZpbGUgIiRTQ1JJUFRfRElSLyRsZWFmIgorZG9uZQorW1sgLXggIiRTQ1JJUFRfRElSL2NvbXBldGl0aW9ucGF0Y2giIF1dIHx8IGZhaWwKK1tbICIkKHN0YXQgLWMgJXMgIiRTQ1JJUFRfRElSL2NvbXBldGl0aW9ucGF0Y2guc2hhMjU2IikiIC1sZSA2NSBdXSB8fCBmYWlsCitleHBlY3RlZF92YWxpZGF0b3Jfc2hhMjU2PSIkKDwiJFNDUklQVF9ESVIvY29tcGV0aXRpb25wYXRjaC5zaGEyNTYiKSIKK1tbICIkZXhwZWN0ZWRfdmFsaWRhdG9yX3NoYTI1NiIgPX4gXlswLTlhLWZdezY0fSQgXV0gfHwgZmFpbAordmFsaWRhdG9yX3NoYTI1Nj0iJChzaGEyNTZzdW0gIiRTQ1JJUFRfRElSL2NvbXBldGl0aW9ucGF0Y2giIHwgYXdrICd7cHJpbnQgJDF9JykiCitbWyAiJHZhbGlkYXRvcl9zaGEyNTYiID09ICIkZXhwZWN0ZWRfdmFsaWRhdG9yX3NoYTI1NiIgXV0gfHwgZmFpbAorZG9ja2VyZmlsZV9zaGEyNTY9IiQoc2hhMjU2c3VtICIkU0NSSVBUX0RJUi9Eb2NrZXJmaWxlLnN1Ym1pc3Npb24iIHwgYXdrICd7cHJpbnQgJDF9JykiCitidWlsZF9zY3JpcHRfc2hhMjU2PSIkKHNoYTI1NnN1bSAiJFNDUklQVF9ESVIvYnVpbGQtc3VibWlzc2lvbi5zaCIgfCBhd2sgJ3twcmludCAkMX0nKSIKK2lkZW50aXR5X2hlbHBlcl9zaGEyNTY9IiQoc2hhMjU2c3VtICIkU0NSSVBUX0RJUi9zdWJtaXNzaW9uLWJ1aWxkZXItaWRlbnRpdHkuc2giIHwgYXdrICd7cHJpbnQgJDF9JykiCit2YWxpZGF0b3JfcGluX3NoYTI1Nj0iJChzaGEyNTZzdW0gIiRTQ1JJUFRfRElSL2NvbXBldGl0aW9ucGF0Y2guc2hhMjU2IiB8IGF3ayAne3ByaW50ICQxfScpIgorZXZhbHVhdG9yX3NoYTI1Nj0iJChzaGEyNTZzdW0gIiRTQ1JJUFRfRElSL2V2YWx1YXRvci5zaCIgfCBhd2sgJ3twcmludCAkMX0nKSIKK3NvdXJjZV9wcmVwYXJlcl9zaGEyNTY9IiQoc2hhMjU2c3VtICIkU0NSSVBUX0RJUi9wcmVwYXJlLWV2YWx1YXRpb24tc291cmNlLnNoIiB8IGF3ayAne3ByaW50ICQxfScpIgorbWFuaWZlc3Q9IiQoanEgLW5TYyAtLWFyZyB2YWxpZGF0b3IgIiR2YWxpZGF0b3Jfc2hhMjU2IiAtLWFyZyBkb2NrZXJmaWxlICIkZG9ja2VyZmlsZV9zaGEyNTYiIFwKKyAgICAtLWFyZyBidWlsZF9zY3JpcHQgIiRidWlsZF9zY3JpcHRfc2hhMjU2IiAtLWFyZyBpZGVudGl0eV9oZWxwZXIgIiRpZGVudGl0eV9oZWxwZXJfc2hhMjU2IiBcCisgICAgLS1hcmcgdmFsaWRhdG9yX3BpbiAiJHZhbGlkYXRvcl9waW5fc2hhMjU2IiAtLWFyZyBldmFsdWF0b3IgIiRldmFsdWF0b3Jfc2hhMjU2IiBcCisgICAgLS1hcmcgc291cmNlX3ByZXBhcmVyICIkc291cmNlX3ByZXBhcmVyX3NoYTI1NiIgXAorICAgICd7c2NoZW1hOjEsa2luZDoic2ltLWxhdGVuY3ktc3VibWlzc2lvbi1idWlsZGVyL3YyIixwYXRjaF92YWxpZGF0b3Jfc2hhMjU2OiR2YWxpZGF0b3IsCisgICAgICBkb2NrZXJmaWxlX3NoYTI1NjokZG9ja2VyZmlsZSxidWlsZF9zY3JpcHRfc2hhMjU2OiRidWlsZF9zY3JpcHQsCisgICAgICBpZGVudGl0eV9oZWxwZXJfc2hhMjU2OiRpZGVudGl0eV9oZWxwZXIsdmFsaWRhdG9yX3Bpbl9zaGEyNTY6JHZhbGlkYXRvcl9waW4sCisgICAgICBldmFsdWF0b3Jfc2hhMjU2OiRldmFsdWF0b3Isc291cmNlX3ByZXBhcmVyX3NoYTI1Njokc291cmNlX3ByZXBhcmVyfScpIgoraWYgW1sgIiRzdWJldmFsdWF0aW9uX3Njb3BlZCIgPSB0cnVlIF1dOyB0aGVuCisgICAgZm9yIGxlYWYgaW4gRG9ja2VyZmlsZS5zdWJtaXNzaW9uLnRyYWNrZWQgdHJhY2tlZC1zdWJtaXNzaW9uLWJ1aWxkLnNoIGRvY2tlci1zdG9jay5zZWNjb21wLmpzb24gY2FuZGlkYXRlLWNvcmUuc2VjY29tcC5qc29uIGNvbXBvc2UueW1sOyBkbworICAgICAgICBwcm90ZWN0ZWRfZmlsZSAiJFNDUklQVF9ESVIvJGxlYWYiCisgICAgZG9uZQorICAgIG93bmVyc2hpcF9zaGEyNTY9IiQoc2hhMjU2c3VtICIkU0NSSVBUX0RJUi9zdWJldmFsdWF0aW9uLW93bmVyc2hpcC5zaCIgfCBhd2sgJ3twcmludCAkMX0nKSIKKyAgICBjb21wb3NlX3NoYTI1Nj0iJChzaGEyNTZzdW0gIiRTQ1JJUFRfRElSL2NvbXBvc2Uuc3ViZXZhbHVhdGlvbi55bWwiIHwgYXdrICd7cHJpbnQgJDF9JykiCisgICAgaWRfbWFwX3NoYTI1Nj0iJChzaGEyNTZzdW0gIiRTQ1JJUFRfRElSL2RvY2tlci1pZC1tYXAuc2giIHwgYXdrICd7cHJpbnQgJDF9JykiCisgICAgdHJhY2tlZF9kb2NrZXJmaWxlX3NoYTI1Nj0iJChzaGEyNTZzdW0gIiRTQ1JJUFRfRElSL0RvY2tlcmZpbGUuc3VibWlzc2lvbi50cmFja2VkIiB8IGF3ayAne3ByaW50ICQxfScpIgorICAgIHRyYWNrZWRfYnVpbGRlcl9zaGEyNTY9IiQoc2hhMjU2c3VtICIkU0NSSVBUX0RJUi90cmFja2VkLXN1Ym1pc3Npb24tYnVpbGQuc2giIHwgYXdrICd7cHJpbnQgJDF9JykiCisgICAgc3RvY2tfcHJvZmlsZV9zaGEyNTY9IiQoc2hhMjU2c3VtICIkU0NSSVBUX0RJUi9kb2NrZXItc3RvY2suc2VjY29tcC5qc29uIiB8IGF3ayAne3ByaW50ICQxfScpIgorICAgIGNvcmVfcHJvZmlsZV9zaGEyNTY9IiQoc2hhMjU2c3VtICIkU0NSSVBUX0RJUi9jYW5kaWRhdGUtY29yZS5zZWNjb21wLmpzb24iIHwgYXdrICd7cHJpbnQgJDF9JykiCisgICAgY29tcG9zZV9iYXNlX3NoYTI1Nj0iJChzaGEyNTZzdW0gIiRTQ1JJUFRfRElSL2NvbXBvc2UueW1sIiB8IGF3ayAne3ByaW50ICQxfScpIgorICAgIGJhY2tpbmdfaW1hZ2VzPSIkKGF3ayAnJDEgPT0gImltYWdlOiIgJiYgKCQyIH4gL15wb3N0Z3JlczovIHx8ICQyIH4gL15yZWRpczovKSB7cHJpbnQgJDJ9JyAiJFNDUklQVF9ESVIvY29tcG9zZS55bWwiIHwKKyAgICAgICAganEgLVJzYyAnc3BsaXQoIlxuIilbOi0xXSB8IHNvcnQnKSIKKyAgICBqcSAtZSAnbGVuZ3RoID09IDIgYW5kICh1bmlxdWUgfCBsZW5ndGggPT0gMikgYW5kCisgICAgICAgIChtYXAoc2VsZWN0KHRlc3QoIl5wb3N0Z3JlczpbYS16QS1aMC05Xy4tXStAc2hhMjU2OlswLTlhLWZdezY0fSQiKSkpIHwgbGVuZ3RoID09IDEpIGFuZAorICAgICAgICAobWFwKHNlbGVjdCh0ZXN0KCJecmVkaXM6W2EtekEtWjAtOV8uLV0rQHNoYTI1NjpbMC05YS1mXXs2NH0kIikpKSB8IGxlbmd0aCA9PSAxKScgXAorICAgICAgICA8PDwiJGJhY2tpbmdfaW1hZ2VzIiA+L2Rldi9udWxsIHx8IGZhaWwKKyAgICBtYW5pZmVzdD0iJChqcSAtblNjIC0tYXJnanNvbiBtYW5pZmVzdCAiJG1hbmlmZXN0IiAtLWFyZyBvd25lcnNoaXAgIiRvd25lcnNoaXBfc2hhMjU2IiAtLWFyZyBjb21wb3NlICIkY29tcG9zZV9zaGEyNTYiIC0tYXJnIGlkX21hcCAiJGlkX21hcF9zaGEyNTYiIFwKKyAgICAgICAgLS1hcmcgdHJhY2tlZF9kb2NrZXJmaWxlICIkdHJhY2tlZF9kb2NrZXJmaWxlX3NoYTI1NiIgLS1hcmcgdHJhY2tlZF9idWlsZGVyICIkdHJhY2tlZF9idWlsZGVyX3NoYTI1NiIgXAorICAgICAgICAtLWFyZyBzdG9ja19wcm9maWxlICIkc3RvY2tfcHJvZmlsZV9zaGEyNTYiIC0tYXJnIGNvcmVfcHJvZmlsZSAiJGNvcmVfcHJvZmlsZV9zaGEyNTYiIFwKKyAgICAgICAgLS1hcmcgY29tcG9zZV9iYXNlICIkY29tcG9zZV9iYXNlX3NoYTI1NiIgLS1hcmdqc29uIGJhY2tpbmdfaW1hZ2VzICIkYmFja2luZ19pbWFnZXMiIFwKKyAgICAgICAgJyRtYW5pZmVzdCArIHtraW5kOiJzaW0tbGF0ZW5jeS1zdWJtaXNzaW9uLWJ1aWxkZXIvdHJhY2tlZC12MSIsZXhlY3V0aW9uX2NsYXNzOiJ0cmFja2VkLWNyZWF0ZS1jb3JlLW9uZS92MSIsCisgICAgICAgICAgc291cmNlX21hdGVyaWFsaXphdGlvbjoicmVxdWlyZWQtcmVhZG9ubHktcnVuLXNvdXJjZS92MSIsYnVpbHRpbl9zb3VyY2Vfa2luZDoicHJpc3RpbmUtZXZhbHVhdG9yLWJhc2UiLAorICAgICAgICAgIHN1YmV2YWx1YXRpb25fb3duZXJzaGlwX3NoYTI1Njokb3duZXJzaGlwLHN1YmV2YWx1YXRpb25fY29tcG9zZV9zaGEyNTY6JGNvbXBvc2Usc3ViZXZhbHVhdGlvbl9kb2NrZXJfaWRfbWFwX3NoYTI1NjokaWRfbWFwLAorICAgICAgICAgIHRyYWNrZWRfZG9ja2VyZmlsZV9zaGEyNTY6JHRyYWNrZWRfZG9ja2VyZmlsZSx0cmFja2VkX2J1aWxkZXJfc2hhMjU2OiR0cmFja2VkX2J1aWxkZXIsCisgICAgICAgICAgc3RvY2tfc2VjY29tcF9wcm9maWxlX3NoYTI1Njokc3RvY2tfcHJvZmlsZSxjYW5kaWRhdGVfY29yZV9wcm9maWxlX3NoYTI1NjokY29yZV9wcm9maWxlLAorICAgICAgICAgIGNvbXBvc2VfYmFzZV9zaGEyNTY6JGNvbXBvc2VfYmFzZSxiYWNraW5nX2ltYWdlczokYmFja2luZ19pbWFnZXN9JykiCitmaQorYnVpbGRlcl9zaGEyNTY9IiQocHJpbnRmICclcycgIiRtYW5pZmVzdCIgfCBzaGEyNTZzdW0gfCBhd2sgJ3twcmludCAkMX0nKSIKK2pxIC1uU2MgLS1hcmdqc29uIG1hbmlmZXN0ICIkbWFuaWZlc3QiIC0tYXJnIGJ1aWxkZXJfc2hhMjU2ICIkYnVpbGRlcl9zaGEyNTYiIFwKKyAgICAnJG1hbmlmZXN0ICsge2J1aWxkZXJfc2hhMjU2OiRidWlsZGVyX3NoYTI1Nn0nCmRpZmYgLS1naXQgYS9jb25uZWN0L3NpbS1sYXRlbmN5L2V2YWx1YXRvcl93b3JrX2NvdmVyYWdlX3Rlc3QuZ28gYi9jb25uZWN0L3NpbS1sYXRlbmN5L2V2YWx1YXRvcl93b3JrX2NvdmVyYWdlX3Rlc3QuZ28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBjYzk3NDFjM2ZiNjhiODVhZDdlOWQ5OTdjOWZhMDZlMTYxNzVlMgotLS0gL2Rldi9udWxsCisrKyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvZXZhbHVhdG9yX3dvcmtfY292ZXJhZ2VfdGVzdC5nbwpAQCAtMCwwICsxLDE0MSBAQAorcGFja2FnZSBtYWluCisKKy8vIEFjdHVhbCBzaGVsbCBwcmVkaWNhdGVzIGFyZSBleGVyY2lzZWQgd2l0aCBwcml2YXRlIHN5bnRoZXRpYyBtZXRhZGF0YSBhbmQgYQorLy8gZml4ZWQgZmFrZSBjYXBhYmlsaXR5IHJlc3BvbmRlci4gTm8gRG9ja2VyLCBzZXJ2aWNlcyBvciB3b3JrbG9hZCBpcyBzdGFydGVkLgorCitpbXBvcnQgKAorCSJieXRlcyIKKwkiY3J5cHRvL3NoYTI1NiIKKwkiZW5jb2RpbmcvaGV4IgorCSJlbmNvZGluZy9qc29uIgorCSJvcyIKKwkib3MvZXhlYyIKKwkicGF0aC9maWxlcGF0aCIKKwkic3RyaW5ncyIKKwkidGVzdGluZyIKKworCSJnaXRodWIuY29tL3VybmV0d29yay9zZXJ2ZXIvbW9kZWwiCispCisKKy8vIE5ldyBtZXRhZGF0YSBjYW5ub3QgZG93bmdyYWRlIHRoZSBzY29yZXIgb3Igc2lsZW50bHkgZHJvcCBpdHMgd29yayBwb2xpY3kuCitmdW5jIFRlc3RFdmFsdWF0b3JXb3JrQ292ZXJhZ2VXb3JrZXJTY2hlbWFCaW5kc0V4YWN0VmVyc2lvbmVkU2hhcGUodCAqdGVzdGluZy5UKSB7CisJZm9yIF8sIHNjcmlwdCA6PSByYW5nZSBbXXN0cmluZ3siZXZhbHVhdG9yLXdvcmstY292ZXJhZ2Uuc2giLCAiZXZhbHVhdG9yLXN1YmV2YWx1YXRpb24uc2gifSB7CisJCWZ1bmN0aW9uIDo9IGcyU2NyaXB0RnVuY3Rpb24odCwgZmlsZXBhdGguSm9pbigiZXZhbHVhdG9yIiwgImNvbnRhaW5lciIsIHNjcmlwdCksICJ2YWxpZGF0ZV93b3JrZXJfcmVxdWVzdF9zY2hlbWEiKQorCQlmb3IgXywgdGVzdCA6PSByYW5nZSBbXXN0cnVjdCB7CisJCQltdXRhdGUgZnVuYyhtYXBbc3RyaW5nXWFueSkKKwkJCXZhbGlkICBib29sCisJCX17CisJCQl7dmFsaWQ6IHRydWV9LAorCQkJe211dGF0ZTogZnVuYyhyZXF1ZXN0IG1hcFtzdHJpbmddYW55KSB7IHJlcXVlc3RbInNjb3Jlcl92ZXJzaW9uIl0gPSBtb2RlbC5Db21wZXRpdGlvbk1pbmltdW1Xb3JrU2NvcmVyVmVyc2lvbiB9fSwKKwkJCXttdXRhdGU6IGZ1bmMocmVxdWVzdCBtYXBbc3RyaW5nXWFueSkgeworCQkJCWRlbGV0ZShyZXF1ZXN0WyJldmFsdWF0aW9uX3BvbGljeSJdLihtYXBbc3RyaW5nXWFueSksICJ3b3JrX2NvdmVyYWdlX3BvbGljeSIpCisJCQl9fSwKKwkJCXttdXRhdGU6IGZ1bmMocmVxdWVzdCBtYXBbc3RyaW5nXWFueSkgeworCQkJCWRlbGV0ZShyZXF1ZXN0WyJldmFsdWF0aW9uX3BvbGljeSJdLihtYXBbc3RyaW5nXWFueSksICJnMl92b2x1bWVfcG9saWN5IikKKwkJCX19LAorCQkJe211dGF0ZTogZnVuYyhyZXF1ZXN0IG1hcFtzdHJpbmddYW55KSB7CisJCQkJcmVxdWVzdFsiZXZhbHVhdGlvbl9wb2xpY3kiXS4obWFwW3N0cmluZ11hbnkpWyJ3b3JrX2NvdmVyYWdlX3BvbGljeSJdID0gbmlsCisJCQl9fSwKKwkJCXttdXRhdGU6IGZ1bmMocmVxdWVzdCBtYXBbc3RyaW5nXWFueSkgeworCQkJCXJlcXVlc3RbImV2YWx1YXRpb25fcG9saWN5Il0uKG1hcFtzdHJpbmddYW55KVsid29ya19jb3ZlcmFnZV9wb2xpY3kiXS4obWFwW3N0cmluZ11hbnkpWyJ1bmtub3duIl0gPSB0cnVlCisJCQl9fSwKKwkJCXttdXRhdGU6IGZ1bmMocmVxdWVzdCBtYXBbc3RyaW5nXWFueSkgeworCQkJCXJlcXVlc3RbImV2YWx1YXRpb25fcG9saWN5Il0uKG1hcFtzdHJpbmddYW55KVsid29ya19jb3ZlcmFnZV9wb2xpY3kiXS4obWFwW3N0cmluZ11hbnkpWyJraW5kIl0gPSAidW5rbm93bi8xIgorCQkJfX0sCisJCQl7bXV0YXRlOiBmdW5jKHJlcXVlc3QgbWFwW3N0cmluZ11hbnkpIHsKKwkJCQlyZXF1ZXN0WyJzdGFnaW5nIl0gPSB0cnVlCisJCQkJcmVxdWVzdFsiZXZhbHVhdGlvbl9wb2xpY3kiXS4obWFwW3N0cmluZ11hbnkpWyJ0YWtlb3Zlcl9tYXJnaW4iXSA9IDAKKwkJCX19LAorCQl9IHsKKwkJCXJlcXVlc3QgOj0gZXZhbHVhdG9yUmVxdWVzdFNjaGVtYUZpeHR1cmUoKQorCQkJcG9saWN5Qnl0ZXMsIGVyciA6PSBqc29uLk1hcnNoYWwobW9kZWwuRGVmYXVsdENvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5KCkpCisJCQlpZiBlcnIgIT0gbmlsIHsKKwkJCQl0LkZhdGFsKGVycikKKwkJCX0KKwkJCXZhciBwb2xpY3kgbWFwW3N0cmluZ11hbnkKKwkJCWlmIGVyciA6PSBqc29uLlVubWFyc2hhbChwb2xpY3lCeXRlcywgJnBvbGljeSk7IGVyciAhPSBuaWwgeworCQkJCXQuRmF0YWwoZXJyKQorCQkJfQorCQkJcmVxdWVzdFsic2NvcmVyX3ZlcnNpb24iXSA9IG1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlU2NvcmVyVmVyc2lvbgorCQkJcmVxdWVzdFsiZXZhbHVhdGlvbl9wb2xpY3kiXS4obWFwW3N0cmluZ11hbnkpWyJnMl92b2x1bWVfcG9saWN5Il0gPSBzdHJpbmcobW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeU1pbmltdW1Xb3JrKQorCQkJcmVxdWVzdFsiZXZhbHVhdGlvbl9wb2xpY3kiXS4obWFwW3N0cmluZ11hbnkpWyJ3b3JrX2NvdmVyYWdlX3BvbGljeSJdID0gcG9saWN5CisJCQlpZiB0ZXN0Lm11dGF0ZSAhPSBuaWwgeworCQkJCXRlc3QubXV0YXRlKHJlcXVlc3QpCisJCQl9CisJCQljb250ZW50LCBlcnIgOj0ganNvbi5NYXJzaGFsKHJlcXVlc3QpCisJCQlpZiBlcnIgIT0gbmlsIHsKKwkJCQl0LkZhdGFsKGVycikKKwkJCX0KKwkJCXBhdGggOj0gZmlsZXBhdGguSm9pbih0LlRlbXBEaXIoKSwgInJlcXVlc3QuanNvbiIpCisJCQlpZiBlcnIgOj0gb3MuV3JpdGVGaWxlKHBhdGgsIGNvbnRlbnQsIDBvNjAwKTsgZXJyICE9IG5pbCB7CisJCQkJdC5GYXRhbChlcnIpCisJCQl9CisJCQljb21tYW5kIDo9IGV4ZWMuQ29tbWFuZENvbnRleHQodC5Db250ZXh0KCksICIvYmluL2Jhc2giLCAiLWMiLCAic2V0IC1FZXVvIHBpcGVmYWlsXG4iK2Z1bmN0aW9uKyJcbnZhbGlkYXRlX3dvcmtlcl9yZXF1ZXN0X3NjaGVtYSBcIiQxXCIiLCAic3ludGhldGljLWNvdmVyYWdlLXJlcXVlc3QiLCBwYXRoKQorCQkJY29tbWFuZC5FbnYgPSBbXXN0cmluZ3siUEFUSD0vdXNyL2JpbjovYmluIiwgIkxBTkc9QyIsICJMQ19BTEw9QyJ9CisJCQlpZiBvdXRwdXQsIGVyciA6PSBjb21tYW5kLkNvbWJpbmVkT3V0cHV0KCk7IChlcnIgPT0gbmlsKSAhPSB0ZXN0LnZhbGlkIHsKKwkJCQl0LkZhdGFsKCJ2ZXJzaW9uZWQgd29ya2VyIHNjaGVtYSBkaXNhZ3JlZWQgd2l0aCBpdHMgZXhhY3QgcG9saWN5IGVudmVsb3BlIiwgc2NyaXB0LCB0ZXN0LnZhbGlkLCBzdHJpbmcob3V0cHV0KSwgZXJyKQorCQkJfQorCQl9CisJfQorfQorCisvLyBGdWxsIHBvbGljeSBlcXVhbGl0eSwgbm90IGEga2luZC1vbmx5IGNhcGFiaWxpdHksIGF1dGhlbnRpY2F0ZXMgdG9sZXJhbmNlLgorZnVuYyBUZXN0T2ZmaWNpYWxSdW5Xb3JrQ292ZXJhZ2VSZXF1aXJlc0Z1bGxDb21waWxlZENhcGFiaWxpdHkodCAqdGVzdGluZy5UKSB7CisJcG9saWN5IDo9IG1vZGVsLkRlZmF1bHRDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSgpCisJY2FwYWJpbGl0eSwgZXJyIDo9IGpzb24uTWFyc2hhbChtYXBbc3RyaW5nXWFueXsic2NvcmVfc2NoZW1hIjogMSwgInNjb3Jlcl92ZXJzaW9uIjogbW9kZWwuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTY29yZXJWZXJzaW9uLCAid29ya19jb3ZlcmFnZV9wb2xpY3kiOiBwb2xpY3l9KQorCWlmIGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJcm9vdCA6PSB0LlRlbXBEaXIoKQorCWZha2UgOj0gZmlsZXBhdGguSm9pbihyb290LCAic3ludGhldGljLXNjb3JlciIpCisJc2NyaXB0IDo9ICIjIS9iaW4vYmFzaFxuc2V0IC1FZXVvIHBpcGVmYWlsXG5bIFwiJCpcIiA9ICdzY29yZS1wb2xpY3kgLS1nMi12b2x1bWUtcG9saWN5IG1pbmltdW0td29yay8xIC0td29yay1jb3ZlcmFnZS1wb2xpY3kgc2VlZGVkLWNyYXdsLWNvdmVyYWdlL3YxJyBdXG5wcmludGYgJyVzXFxuJyAnIiArIHN0cmluZyhjYXBhYmlsaXR5KSArICInXG4iCisJaWYgZXJyIDo9IG9zLldyaXRlRmlsZShmYWtlLCBbXWJ5dGUoc2NyaXB0KSwgMG83MDApOyBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCWZ1bmN0aW9uIDo9IGcyU2NyaXB0RnVuY3Rpb24odCwgIm9mZmljaWFsLXJ1bi5zaCIsICJjb3ZlcmFnZV9wb2xpY3lfYXJndW1lbnRzIikKKwlmb3IgXywgdGVzdCA6PSByYW5nZSBbXXN0cnVjdCB7CisJCXBvbGljeSAqbW9kZWwuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3kKKwkJdmFsaWQgIGJvb2wKKwl9eworCQl7cG9saWN5OiAmcG9saWN5LCB2YWxpZDogdHJ1ZX0sCisJCXt2YWxpZDogdHJ1ZX0sCisJCXtwb2xpY3k6ICZtb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeXtLaW5kOiBtb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZUtpbmQsIE1pbmltdW1QYWdlQ292ZXJhZ2VSYXRpbzogLjUsIE1pbmltdW1CeXRlQ292ZXJhZ2VSYXRpbzogLjV9fSwKKwkJe3BvbGljeTogJm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5e0tpbmQ6ICJ1bmtub3duLzEifX0sCisJfSB7CisJCWNvbnRlbnQsIGVyciA6PSBqc29uLk1hcnNoYWwodGVzdC5wb2xpY3kpCisJCWlmIGVyciAhPSBuaWwgeworCQkJdC5GYXRhbChlcnIpCisJCX0KKwkJYm9keSA6PSAic2V0IC1FZXVvIHBpcGVmYWlsXG5kaWUoKXsgZXhpdCA3MTsgfVxuIiArIGZ1bmN0aW9uICsgIlxuY292ZXJhZ2VfcG9saWN5X2FyZ3VtZW50c1xuaWYgWyBcIiRBUEVYX1dPUktfQ09WRVJBR0VfUE9MSUNZX0pTT05cIiA9IG51bGwgXTsgdGhlbiBbIFwiJHsjY292ZXJhZ2VfYXJnc1tAXX1cIiA9IDAgXTsgZWxzZSBbIFwiJHtjb3ZlcmFnZV9hcmdzWypdfVwiID0gJy0td29yay1jb3ZlcmFnZS1wb2xpY3kgc2VlZGVkLWNyYXdsLWNvdmVyYWdlL3YxJyBdOyBmaVxuIgorCQljb21tYW5kIDo9IGV4ZWMuQ29tbWFuZENvbnRleHQodC5Db250ZXh0KCksICIvYmluL2Jhc2giLCAiLWMiLCBib2R5KQorCQljb21tYW5kLkVudiA9IFtdc3RyaW5neyJQQVRIPS91c3IvYmluOi9iaW4iLCAiQVBFWF9TQ09SRVJfQklOPSIgKyBmYWtlLCAiQVBFWF9HMl9WT0xVTUVfUE9MSUNZPW1pbmltdW0td29yay8xIiwgIkFQRVhfV09SS19DT1ZFUkFHRV9QT0xJQ1lfSlNPTj0iICsgc3RyaW5nKGNvbnRlbnQpfQorCQlpZiBvdXRwdXQsIGVyciA6PSBjb21tYW5kLkNvbWJpbmVkT3V0cHV0KCk7IChlcnIgPT0gbmlsKSAhPSB0ZXN0LnZhbGlkIHsKKwkJCXQuRmF0YWwoImNvbXBpbGVkIGNvdmVyYWdlIGNhcGFiaWxpdHkgd2FzIG9taXR0ZWQgb3Igc3Vic3RpdHV0ZWQiLCB0ZXN0LnZhbGlkLCBzdHJpbmcob3V0cHV0KSwgZXJyKQorCQl9CisJfQorfQorCisvLyBTZXBhcmF0ZSBwcm9kdWNlciBpZGVudGl0aWVzIHByb3RlY3QgdGhlIGJ5dGUtZXhhY3QgaGlzdG9yaWNhbCByZWxlYXNlLgorZnVuYyBUZXN0RXZhbHVhdG9yV29ya0NvdmVyYWdlVXNlc05ld1Byb2R1Y2VyQW5kTGVhdmVzSGlzdG9yaWNhbEJ5dGVzKHQgKnRlc3RpbmcuVCkgeworCWxlZ2FjeSwgZXJyIDo9IG9zLlJlYWRGaWxlKGZpbGVwYXRoLkpvaW4oImV2YWx1YXRvciIsICJjb250YWluZXIiLCAiZXZhbHVhdG9yLW1pbmltdW0td29yay5zaCIpKQorCWlmIGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJbGVnYWN5SGFzaCA6PSBzaGEyNTYuU3VtMjU2KGxlZ2FjeSkKKwlpZiBoZXguRW5jb2RlVG9TdHJpbmcobGVnYWN5SGFzaFs6XSkgIT0gIjc3ODA5MzBkNDRlYmMxZGY1ZDhmNzc1YTc1YzM3YWFkYjIwNDhmYzFiOTM4NjAyNzYxNWYzY2U2YjVmZTU2ZDQiIHsKKwkJdC5GYXRhbCgiaGlzdG9yaWNhbCBtaW5pbXVtLXdvcmsgcHJvZHVjZXIgYnl0ZXMgY2hhbmdlZCIpCisJfQorCWZ1dHVyZSwgZXJyIDo9IG9zLlJlYWRGaWxlKGZpbGVwYXRoLkpvaW4oImV2YWx1YXRvciIsICJjb250YWluZXIiLCAiZXZhbHVhdG9yLXdvcmstY292ZXJhZ2Uuc2giKSkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCXByZXBhcmVyLCBlcnIgOj0gb3MuUmVhZEZpbGUoZmlsZXBhdGguSm9pbigiZXZhbHVhdG9yIiwgImNvbnRhaW5lciIsICJwcmVwYXJlLXJvdW5kLWJhc2VsaW5lLXdvcmstY292ZXJhZ2Uuc2giKSkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCWZ1dHVyZUhhc2ggOj0gc2hhMjU2LlN1bTI1NihmdXR1cmUpCisJaWYgIWJ5dGVzLkNvbnRhaW5zKHByZXBhcmVyLCBbXWJ5dGUoaGV4LkVuY29kZVRvU3RyaW5nKGZ1dHVyZUhhc2hbOl0pKSkgfHwgYnl0ZXMuQ29udGFpbnMocHJlcGFyZXIsIFtdYnl0ZShoZXguRW5jb2RlVG9TdHJpbmcobGVnYWN5SGFzaFs6XSkpKSB8fAorCQkhc3RyaW5ncy5Db250YWlucyhzdHJpbmcocHJlcGFyZXIpLCAiZXZhbHVhdG9yLXdvcmstY292ZXJhZ2Uuc2giKSB8fCAhYnl0ZXMuQ29udGFpbnMoZnV0dXJlLCBbXWJ5dGUoIkFQRVhfV09SS19DT1ZFUkFHRV9QT0xJQ1lfSlNPTj0iKSkgeworCQl0LkZhdGFsKCJjb3ZlcmFnZSBwcm9kdWNlciBsb3N0IGl0cyBzZXBhcmF0ZWx5IHBpbm5lZCBwcm90b2NvbCBvciBwb2xpY3kiKQorCX0KK30KZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvbWFpbi5nbyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvbWFpbi5nbwppbmRleCAzNzM3NTQyY2Q5NWU2MThlNzBmOWEzMjVkM2U5ZGQ0NjVmMTk5ZWQ0Li5iNjQ0NTc4NTk0MTczNTljZmRlNzk4ZTE5M2M3YjlkNjY3MmVjN2FlIDEwMDY0NAotLS0gYS9jb25uZWN0L3NpbS1sYXRlbmN5L21haW4uZ28KKysrIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9tYWluLmdvCkBAIC01NSw2ICs1NSw3IEBAIGltcG9ydCAoCiAKIAkiZ2l0aHViLmNvbS91cm5ldHdvcmsvc2VydmVyIgogCSJnaXRodWIuY29tL3VybmV0d29yay9zZXJ2ZXIvY29udHJvbGxlciIKKwkiZ2l0aHViLmNvbS91cm5ldHdvcmsvc2VydmVyL21vZGVsIgogKQogCiBmdW5jIHNpbXVsYXRpb25Vc2FnZSgpIHN0cmluZyB7CkBAIC02MiwxNSArNjMsMTYgQEAgZnVuYyBzaW11bGF0aW9uVXNhZ2UoKSBzdHJpbmcgewogCiBVc2FnZToKICAgc2ltLWxhdGVuY3kgaW5pdCBbLS1vdXQ9PHBhdGg+XSBbLS1jb3VudD08bj5dIFstLWNsaWVudHM9PG4+XSBbLS1yYXRlPTxtPl0gWy0tc2VlZD08cz5dIFstLXF1YWxpdHktd2luZG93PTxuPl0KLSAgc2ltLWxhdGVuY3kgcnVuIC0tZXBvY2g9PG4+IFstLXNvdXJjZS1jb25maWc9PHBhdGg+XSBbLS1yZXBvcy1yb290PTxkaXI+XSBbLS1wcm92aWRlcnM9PHBhdGg+XSBbLS1zaXRlLWhvbWU9PGRpcj5dIFstLXJhbXA9PGQ+XSBbLS1wcmV3YXJtPTxkPl0gWy0tc2V0dGxlPTxkPl0gWy0tY2xpZW50LXdhcm11cC10aW1lb3V0PTxkPl0gWy0tZHVyYXRpb249PGQ+XSBbLS1yZXF1ZXN0LXRpbWVvdXQ9PGQ+XSBbLS1mbGVldC1zaGFyZHM9PG4+XSBbLS1zaXRlLWxpc3Rlbj08YWRkcj5dIFstLWhvc3RzPTxuPl0gWy0tYXBpLXBvcnQ9PHA+XSBbLS1waXBlbGluZS1pbnRlcnZhbD08ZD5dIFstLXRlc3QtdGltZW91dD08ZD5dIFstLWFubm91bmNlLXRpbWVvdXQ9PGQ+XSBbLS1uby1pbXBhaXJdIFstLXJlc2V0XSBbLS1tZXRhPTxwYXRoPl0gWy0tZXZhbHVhdGlvbi1pZD08aWQ+XSBbLS1vZmZpY2lhbF0gWy0tZXhwZWN0ZWQtcmV2aXNpb249PHNoYT5dIFstLXJlc291cmNlLXJlcG9ydD08cGF0aD5dIFstLWFjY291bnRpbmctcmVwb3J0PTxwYXRoPl0gWy0tYWNjb3VudGluZy1zb3VyY2U9PHBhdGg+XSBbLS1maW5hbC1tYXJrZXI9PHBhdGg+XQorICBzaW0tbGF0ZW5jeSBydW4gLS1lcG9jaD08bj4gWy0tc291cmNlLWNvbmZpZz08cGF0aD5dIFstLXJlcG9zLXJvb3Q9PGRpcj5dIFstLXByb3ZpZGVycz08cGF0aD5dIFstLXNpdGUtaG9tZT08ZGlyPl0gWy0tcmFtcD08ZD5dIFstLXByZXdhcm09PGQ+XSBbLS1zZXR0bGU9PGQ+XSBbLS1jbGllbnQtd2FybXVwLXRpbWVvdXQ9PGQ+XSBbLS1kdXJhdGlvbj08ZD5dIFstLXJlcXVlc3QtdGltZW91dD08ZD5dIFstLWZsZWV0LXNoYXJkcz08bj5dIFstLXNpdGUtbGlzdGVuPTxhZGRyPl0gWy0taG9zdHM9PG4+XSBbLS1hcGktcG9ydD08cD5dIFstLXBpcGVsaW5lLWludGVydmFsPTxkPl0gWy0tdGVzdC10aW1lb3V0PTxkPl0gWy0tYW5ub3VuY2UtdGltZW91dD08ZD5dIFstLW5vLWltcGFpcl0gWy0tcmVzZXRdIFstLW1ldGE9PHBhdGg+XSBbLS1ldmFsdWF0aW9uLWlkPTxpZD5dIFstLW9mZmljaWFsXSBbLS1leHBlY3RlZC1yZXZpc2lvbj08c2hhPl0gWy0tcmVzb3VyY2UtcmVwb3J0PTxwYXRoPl0gWy0tYWNjb3VudGluZy1yZXBvcnQ9PHBhdGg+XSBbLS1hY2NvdW50aW5nLXNvdXJjZT08cGF0aD5dIFstLWZpbmFsLW1hcmtlcj08cGF0aD5dIFstLWcyLXZvbHVtZS1wb2xpY3k9PHBvbGljeT5dIFstLXdvcmstY292ZXJhZ2UtcG9saWN5PTxraW5kPl0KICAgc2ltLWxhdGVuY3kgZmxlZXQgLS1lcG9jaD08bj4gWy0tc291cmNlLWNvbmZpZz08cGF0aD5dIFstLXJlcG9zLXJvb3Q9PGRpcj5dIC0tcHJvdmlkZXJzPTxwYXRoPiAtLXNoYXJkPTxpL24+IC0tYXBpLXVybD08dXJsPiAtLXdzLXVybHM9PHVybHM+IFstLXJhbXA9PGQ+XSBbLS1uby1pbXBhaXJdIFstLWV2YWx1YXRpb24taWQ9PGlkPl0gWy0tYWNjb3VudGluZy1jb21tYW5kLWZkPTxuPl0gWy0tYWNjb3VudGluZy1yZXNwb25zZS1mZD08bj5dCiAgIHNpbS1sYXRlbmN5IGFuYWx5emUgLS1ydW49PHBhdGg+IFstLXdpbmRvdz08dz5dIFstLW91dD08cGF0aD5dIFstLWpzb25dCiAgIHNpbS1sYXRlbmN5IGJhc2VsaW5lIC0tZXBvY2g9PG4+IFstLXNvdXJjZS1jb25maWc9PHBhdGg+XSBbLS1yZXBvcy1yb290PTxkaXI+XSAtLXJ1bnM9PHBhdGhzPiBbLS1hbHBoYT08YT5dIFstLW91dD08cGF0aD5dCiAgIHNpbS1sYXRlbmN5IGJhc2VsaW5lIC0tZXBvY2g9PG4+IFstLXNvdXJjZS1jb25maWc9PHBhdGg+XSBbLS1yZXBvcy1yb290PTxkaXI+XSBbLS1yZXBsaWNhdGVzPTxuPl0gWy0tb3V0LWRpcj08ZGlyPl0gWy0tYWxwaGE9PGE+XSBbLS1vdXQ9PHBhdGg+XSBbLS1wcm92aWRlcnM9PHBhdGg+XSBbLS1zaXRlLWhvbWU9PGRpcj5dIFstLXJhbXA9PGQ+XSBbLS1wcmV3YXJtPTxkPl0gWy0tc2V0dGxlPTxkPl0gWy0tY2xpZW50LXdhcm11cC10aW1lb3V0PTxkPl0gWy0tZHVyYXRpb249PGQ+XSBbLS1yZXF1ZXN0LXRpbWVvdXQ9PGQ+XSBbLS1mbGVldC1zaGFyZHM9PG4+XSBbLS1zaXRlLWxpc3Rlbj08YWRkcj5dIFstLWhvc3RzPTxuPl0gWy0tYXBpLXBvcnQ9PHA+XSBbLS1waXBlbGluZS1pbnRlcnZhbD08ZD5dIFstLXRlc3QtdGltZW91dD08ZD5dIFstLWFubm91bmNlLXRpbWVvdXQ9PGQ+XSBbLS1uby1pbXBhaXJdCiAgIHNpbS1sYXRlbmN5IGNvbXBhcmUgLS1hPTxwYXRocz4gLS1iPTxwYXRocz4gWy0tYmFzZWxpbmU9PHBhdGg+XSBbLS1wPTxhPl0gWy0td2luZG93PTx3Pl0gWy0tanNvbl0KLSAgc2ltLWxhdGVuY3kgc2NvcmUtYmFzZWxpbmUgLS1ydW49PHBhdGhzPiAtLXN0ZGVycj08cGF0aHM+IC0tYWNjb3VudGluZz08cGF0aHM+IC0tc2FtcGxlcz08cGF0aHM+IC0tcmVzb3VyY2UtcmVwb3J0PTxwYXRocz4gLS1tYXJrZXI9PHBhdGhzPiAtLXJvdW5kLWlkPTxpZD4gLS10YWtlb3Zlci1tYXJnaW49PG0+IFstLW91dD08cGF0aD5dCisgIHNpbS1sYXRlbmN5IHNjb3JlLWJhc2VsaW5lIC0tcnVuPTxwYXRocz4gLS1zdGRlcnI9PHBhdGhzPiAtLWFjY291bnRpbmc9PHBhdGhzPiAtLXNhbXBsZXM9PHBhdGhzPiAtLXJlc291cmNlLXJlcG9ydD08cGF0aHM+IC0tbWFya2VyPTxwYXRocz4gLS1yb3VuZC1pZD08aWQ+IC0tdGFrZW92ZXItbWFyZ2luPTxtPiBbLS1nMi12b2x1bWUtcG9saWN5PTxwb2xpY3k+XSBbLS13b3JrLWNvdmVyYWdlLXBvbGljeT08a2luZD5dIFstLXByb3ZpZGVycz08cGF0aD5dIFstLW91dD08cGF0aD5dCiAgIHNpbS1sYXRlbmN5IHNjb3JlLXByb2dyZXNzIC0tcnVuPTxwYXRocz4gLS1iYXNlbGluZT08cGF0aD4KLSAgc2ltLWxhdGVuY3kgc2NvcmUgLS1ydW49PHBhdGhzPiAtLXN0ZGVycj08cGF0aHM+IC0tYmFzZWxpbmU9PHBhdGg+IC0tYWNjb3VudGluZz08cGF0aHM+IC0tc2FtcGxlcz08cGF0aHM+IC0tcmVzb3VyY2UtcmVwb3J0PTxwYXRocz4gLS1tYXJrZXI9PHBhdGhzPiBbLS1vdXQ9PHBhdGg+XQorICBzaW0tbGF0ZW5jeSBzY29yZSAtLXJ1bj08cGF0aHM+IC0tc3RkZXJyPTxwYXRocz4gLS1iYXNlbGluZT08cGF0aD4gLS1hY2NvdW50aW5nPTxwYXRocz4gLS1zYW1wbGVzPTxwYXRocz4gLS1yZXNvdXJjZS1yZXBvcnQ9PHBhdGhzPiAtLW1hcmtlcj08cGF0aHM+IFstLXByb3ZpZGVycz08cGF0aD5dIFstLW91dD08cGF0aD5dCisgIHNpbS1sYXRlbmN5IHNjb3JlLXBvbGljeSBbLS1nMi12b2x1bWUtcG9saWN5PTxwb2xpY3k+XSBbLS13b3JrLWNvdmVyYWdlLXBvbGljeT08a2luZD5dCiAgIHNpbS1sYXRlbmN5IHNvdXJjZS1jaGVjayAtLWVwb2NoPTxuPiBbLS1zb3VyY2UtY29uZmlnPTxwYXRoPl0gWy0tcmVwb3Mtcm9vdD08ZGlyPl0gWy0tanNvbl0KICAgc2ltLWxhdGVuY3kgc291cmNlLXJlY29yZCAtLWVwb2NoPTxuPiBbLS1zdGFnaW5nXSBbLS1zb3VyY2UtY29uZmlnPTxwYXRoPl0gWy0tcmVwb3Mtcm9vdD08ZGlyPl0KICAgc2ltLWxhdGVuY3kgc3RhZ2luZy1zb3VyY2UtY2hlY2sgLS1lcG9jaD0wIFstLXNvdXJjZS1jb25maWc9PHBhdGg+XSBbLS1yZXBvcy1yb290PTxkaXI+XQpAQCAtMTk0LDYgKzE5Niw4IEBAIE9wdGlvbnM6CiAgIC0tYmFzZWxpbmU9PHBhdGg+ICAgICAgQ29tcGFyZSBub2lzZSBmbG9vciwgb3IgYXV0aGVudGljYXRlZCBzY29yZSBiYXNlbGluZSBtYW5pZmVzdCAoc2NvcmUpLgogICAtLXJvdW5kLWlkPTxpZD4gICAgICAgIENvbXBldGl0aW9uIHJvdW5kIGlkIGJvdW5kIGludG8gYSBzY29yZSBiYXNlbGluZSBtYW5pZmVzdC4KICAgLS10YWtlb3Zlci1tYXJnaW49PG0+ICBGcm96ZW4gZnJhY3Rpb25hbCBpbXByb3ZlbWVudCByZXF1aXJlZCBmb3IgdGFrZW92ZXIuCisgIC0tZzItdm9sdW1lLXBvbGljeT08cG9saWN5PiAgRnJvemVuIEcyIHBvbGljeTsgb21pc3Npb24gcmV0YWlucyBoaXN0b3JpY2FsIDk14oCTMTA1JSwgbWluaW11bS13b3JrLzEgcmV0YWlucyBvbmx5IGluY2x1c2l2ZSA5NSUgZmxvb3JzLgorICAtLXdvcmstY292ZXJhZ2UtcG9saWN5PTxraW5kPiAgRXhwbGljaXQgcHJvc3BlY3RpdmUgc2VlZGVkLWNyYXdsLWNvdmVyYWdlL3YxOyBvbWlzc2lvbiBwcmVzZXJ2ZXMgaGlzdG9yaWNhbCB3b3JrbG9hZCBhbmQgc2l4IGdhdGVzLgogICAtLXN0ZGVycj08cGF0aHM+ICAgICAgIENvbW1hLXNlcGFyYXRlZCBjYW5kaWRhdGUgc3RkZXJyIGFydGlmYWN0cyAoc2NvcmUpLgogICAtLWFjY291bnRpbmc9PHBhdGhzPiAgIENvbW1hLXNlcGFyYXRlZCBpbW11dGFibGUgYWNjb3VudGluZyBzbmFwc2hvdHMgKHNjb3JlKS4KICAgLS1zYW1wbGVzPTxwYXRocz4gICAgICBDb21tYS1zZXBhcmF0ZWQgRmluZFByb3ZpZGVyczIgY29ycG9yYSAoc2NvcmUpLgpAQCAtMjE3LDYgKzIyMSwxOSBAQCBmdW5jIG1haW4oKSB7CiAJfQogCiAJc3dpdGNoIHsKKwljYXNlIG9wdEJvb2wob3B0cywgInNjb3JlLXBvbGljeSIpOgorCQlwb2xpY3kgOj0gbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeShvcHRTdHJpbmcob3B0cywgIi0tZzItdm9sdW1lLXBvbGljeSIsICIiKSkKKwkJY292ZXJhZ2UgOj0gY292ZXJhZ2VQb2xpY3lPcHRpb24ob3B0cykKKwkJdmVyc2lvbiwgZXJyIDo9IG1vZGVsLkNvbXBldGl0aW9uU2NvcmVyVmVyc2lvbkZvcldvcmtDb3ZlcmFnZShwb2xpY3ksIGNvdmVyYWdlKQorCQlpZiBlcnIgIT0gbmlsIHsKKwkJCWZhdGFsZigic2NvcmUgcG9saWN5OiAlcyIsIGVycikKKwkJfQorCQlwcmludEpzb24oc3RydWN0IHsKKwkJCVNjb3JlU2NoZW1hICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InNjb3JlX3NjaGVtYSJgCisJCQlTY29yZXJWZXJzaW9uICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJzY29yZXJfdmVyc2lvbiJgCisJCQlHMlZvbHVtZVBvbGljeSAgICAgbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeSAgICAgIGBqc29uOiJnMl92b2x1bWVfcG9saWN5LG9taXRlbXB0eSJgCisJCQlXb3JrQ292ZXJhZ2VQb2xpY3kgKm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5IGBqc29uOiJ3b3JrX2NvdmVyYWdlX3BvbGljeSxvbWl0ZW1wdHkiYAorCQl9e1Njb3JlU2NoZW1hOiBhcGV4U2NvcmVTY2hlbWEsIFNjb3JlclZlcnNpb246IHZlcnNpb24sIEcyVm9sdW1lUG9saWN5OiBwb2xpY3ksIFdvcmtDb3ZlcmFnZVBvbGljeTogY292ZXJhZ2V9KQogCWNhc2Ugb3B0Qm9vbChvcHRzLCAiaW5pdCIpOgogCQlydW5Jbml0KG9wdHMpCiAJY2FzZSBvcHRCb29sKG9wdHMsICJydW4iKToKQEAgLTM0Niw2ICszNjMsOCBAQCBmdW5jIHJ1blJ1bihvcHRzIGRvY29wdC5PcHRzKSB7CiAJc2VydmljZXNDb25maWcuQW5ub3VuY2VUaW1lb3V0ID0gb3B0RHVyYXRpb24ob3B0cywgIi0tYW5ub3VuY2UtdGltZW91dCIsIHNlcnZpY2VzQ29uZmlnLkFubm91bmNlVGltZW91dCkKIAogCW9wdGlvbnMgOj0gJlJ1bk9wdGlvbnN7CisJCUcyVm9sdW1lUG9saWN5OiAgICAgIG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3kob3B0U3RyaW5nKG9wdHMsICItLWcyLXZvbHVtZS1wb2xpY3kiLCAiIikpLAorCQlXb3JrQ292ZXJhZ2VQb2xpY3k6ICBjb3ZlcmFnZVBvbGljeU9wdGlvbihvcHRzKSwKIAkJRXBvY2g6ICAgICAgICAgICAgICAgZXBvY2hOdW1iZXIsCiAJCVNvdXJjZUNvbmZpZzogICAgICAgIHNvdXJjZUNvbmZpZywKIAkJUmVwb3NpdG9yaWVzUm9vdDogICAgcmVwb3NpdG9yaWVzUm9vdCwKZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvb2ZmaWNpYWwtcnVuLnNoIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9vZmZpY2lhbC1ydW4uc2gKaW5kZXggNmUxOWQ5OTViNWIzNmY0ZDAzNDgyM2U5YzczNTZjYzQyYTBmZjE3MS4uZDE1MDM5YTM4OTAxZDdjYmQwNjc0MDdjNWM4NzIyNDZjNzRjNjExNSAxMDA3NTUKLS0tIGEvY29ubmVjdC9zaW0tbGF0ZW5jeS9vZmZpY2lhbC1ydW4uc2gKKysrIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9vZmZpY2lhbC1ydW4uc2gKQEAgLTg1LDYgKzg1LDc3IEBAIHZlcmlmeV9iaW5hcnlfcmV2aXNpb24oKSB7CiAgICAgWyAiJG1vZGlmaWVkIiA9IGZhbHNlIF0gfHwgZGllICIkbGFiZWwgd2FzIGJ1aWx0IGZyb20gYSBtb2RpZmllZCB3b3JrdHJlZSIKIH0KIAorIyBPbmx5IHBlcmNlbnQvZnJhY3Rpb24gbWV0YWRhdGEgY29udmVyc2lvbiBnZXRzIHR3byBiaW5hcnk2NCBlcHNpbG9ucyBvZgorIyByZXByZXNlbnRhdGlvbiBzbGFjay4gU2NvcmluZyBhbmQgc2lnbmlmaWNhbmNlIHN0aWxsIHVzZSB0aGUgZXhhY3QgbWFyZ2luLgordmFsaWRhdGVfc291cmNlX2Vwb2NoX21hcmdpbigpIHsKKyAgICBqcSAtZSAtLWFyZ2pzb24gbWFyZ2luICIkQVBFWF9UQUtFT1ZFUl9NQVJHSU4iIC0tYXJnanNvbiBlcG9jaCAiJEFQRVhfRVBPQ0giICcKKyAgICAgICAgZGVmIGVxdWl2YWxlbnRfcGVyY2VudCgkcGVyY2VudDsgJGZyYWN0aW9uKToKKyAgICAgICAgICAgICgkZnJhY3Rpb24gKiAxMDApIGFzICRjb252ZXJ0ZWQgfAorICAgICAgICAgICAgaWYgJHBlcmNlbnQgPT0gMCBvciAkY29udmVydGVkID09IDAgdGhlbiAkcGVyY2VudCA9PSAkY29udmVydGVkCisgICAgICAgICAgICBlbHNlIChbMSwgKCRwZXJjZW50IHwgZmFicyksICgkY29udmVydGVkIHwgZmFicyldIHwgbWF4KSBhcyAkc2NhbGUgfAorICAgICAgICAgICAgICAgICgoJHBlcmNlbnQgLSAkY29udmVydGVkKSB8IGZhYnMpIDw9ICgyICogMi4yMjA0NDYwNDkyNTAzMTNlLTE2ICogJHNjYWxlKQorICAgICAgICAgICAgZW5kOworICAgICAgICB0eXBlID09ICJvYmplY3QiIGFuZCAuc2NoZW1hID09IDEgYW5kCisgICAgICAgICguZXBvY2ggfCB0eXBlID09ICJudW1iZXIiIGFuZCBpc2Zpbml0ZSBhbmQgLiA+PSAwIGFuZCAuIDw9IDYgYW5kIC4gJSAxID09IDApIGFuZAorICAgICAgICAuZXBvY2ggPT0gJGVwb2NoIGFuZAorICAgICAgICAoJG1hcmdpbiB8IHR5cGUgPT0gIm51bWJlciIgYW5kIGlzZmluaXRlIGFuZCAuID49IDAgYW5kIC4gPCAxKSBhbmQKKyAgICAgICAgKC5zaWduaWZpY2FudF9pbXByb3ZlbWVudF9wZXJjZW50IHwgdHlwZSA9PSAibnVtYmVyIiBhbmQgaXNmaW5pdGUgYW5kIC4gPj0gMCBhbmQgLiA8IDEwMCkgYW5kCisgICAgICAgIGVxdWl2YWxlbnRfcGVyY2VudCguc2lnbmlmaWNhbnRfaW1wcm92ZW1lbnRfcGVyY2VudDsgJG1hcmdpbikKKyAgICAgICAgJyA8PDwiJDEiID4vZGV2L251bGwgfHwKKyAgICAgICAgZGllICJ0YWtlb3ZlciBtYXJnaW4gZG9lcyBub3QgbWF0Y2ggdGhlIGNvbmZpZ3VyZWQgc291cmNlIGVwb2NoIgorfQorCisjIFRoaXMgcmVhZC1vbmx5IGFjdGlvbiBhdXRoZW50aWNhdGVzIHRoZSBidWlsdC1pbiBzb3VyY2UgbWV0YWRhdGEgd2l0aG91dAorIyBzZXJ2aWNlcywgY2FuZGlkYXRlIGluaXRpYWxpemF0aW9uIG9yIHNpbXVsYXRpb247IGhvc3RzIGNhbGwgaXQgYmVmb3JlIFIgcnVucy4KK3ZhbGlkYXRlX3NvdXJjZV9lcG9jaF9nMl9wb2xpY3koKSB7CisgICAgbG9jYWwgcG9saWN5PSIke0FQRVhfRzJfVk9MVU1FX1BPTElDWTotfSIKKyAgICBsb2NhbCBjb3ZlcmFnZT0iJHtBUEVYX1dPUktfQ09WRVJBR0VfUE9MSUNZX0pTT046LW51bGx9IgorICAgIGNhc2UgIiRwb2xpY3kiIGluCisgICAgICAgICcnfG1pbmltdW0td29yay8xKSA7OworICAgICAgICAqKSBkaWUgInVuc3VwcG9ydGVkIGcyIHZvbHVtZSBwb2xpY3kiIDs7CisgICAgZXNhYworICAgIGpxIC1lIC0tYXJnIHBvbGljeSAiJHBvbGljeSIgLS1hcmdqc29uIGNvdmVyYWdlICIkY292ZXJhZ2UiICcKKyAgICAgICAgKGlmICRwb2xpY3kgPT0gIiIgdGhlbiAoaGFzKCJnMl92b2x1bWVfcG9saWN5IikgfCBub3QpCisgICAgICAgIGVsc2UgLmcyX3ZvbHVtZV9wb2xpY3kgPT0gJHBvbGljeSBlbmQpIGFuZAorICAgICAgICAoLndvcmtfY292ZXJhZ2VfcG9saWN5IC8vIG51bGwpID09ICRjb3ZlcmFnZQorICAgICcgPDw8IiQxIiA+L2Rldi9udWxsIHx8IGRpZSAiZzIgdm9sdW1lIHBvbGljeSBkb2VzIG5vdCBtYXRjaCB0aGUgY29uZmlndXJlZCBzb3VyY2UgZ2VuZXJhdGlvbiIKK30KKworIyBBdXRoZW50aWNhdGUgdGhlIGNvbXBsZXRlIHBvbGljeSB0aHJvdWdoIHRoZSBwcmlzdGluZSBjb21waWxlZCBjYXBhYmlsaXR5LAorIyBub3QgYSBzaGVsbCBkZWZhdWx0IG9yIGEgY2FuZGlkYXRlJ3MgZWNob2VkIGNvdmVyYWdlIGNvdW50ZXJzLgorY292ZXJhZ2VfcG9saWN5X2FyZ3VtZW50cygpIHsKKyAgICBjb3ZlcmFnZV9hcmdzPSgpCisgICAgbG9jYWwgY292ZXJhZ2U9IiR7QVBFWF9XT1JLX0NPVkVSQUdFX1BPTElDWV9KU09OOi1udWxsfSIgY2FwYWJpbGl0eSBraW5kCisgICAgWyAiJGNvdmVyYWdlIiAhPSBudWxsIF0gfHwgcmV0dXJuIDAKKyAgICBbICIke0FQRVhfRzJfVk9MVU1FX1BPTElDWTotfSIgPSBtaW5pbXVtLXdvcmsvMSBdIHx8IGRpZSAiY292ZXJhZ2UgcmVxdWlyZXMgbWluaW11bS13b3JrIgorICAgIGtpbmQ9IiQoanEgLWVyICcua2luZCB8IHNlbGVjdCguID09ICJzZWVkZWQtY3Jhd2wtY292ZXJhZ2UvdjEiKScgPDw8IiRjb3ZlcmFnZSIpIiB8fCBkaWUgInVuc3VwcG9ydGVkIGNvdmVyYWdlIHBvbGljeSIKKyAgICBjYXBhYmlsaXR5PSIkKCIkQVBFWF9TQ09SRVJfQklOIiBzY29yZS1wb2xpY3kgLS1nMi12b2x1bWUtcG9saWN5IG1pbmltdW0td29yay8xIC0td29yay1jb3ZlcmFnZS1wb2xpY3kgIiRraW5kIikiIHx8IGRpZSAibWlzc2luZyBzY29yZXIgY292ZXJhZ2UgY2FwYWJpbGl0eSIKKyAgICBqcSAtZSAtLWFyZ2pzb24gY292ZXJhZ2UgIiRjb3ZlcmFnZSIgJy5zY29yZXJfdmVyc2lvbiA9PSAic2ltLWxhdGVuY3ktc2NvcmUvMyIgYW5kIC53b3JrX2NvdmVyYWdlX3BvbGljeSA9PSAkY292ZXJhZ2UnIDw8PCIkY2FwYWJpbGl0eSIgPi9kZXYvbnVsbCB8fCBkaWUgImNvdmVyYWdlIHBvbGljeSBkaWZmZXJzIGZyb20gY29tcGlsZWQgY2FwYWJpbGl0eSIKKyAgICBjb3ZlcmFnZV9hcmdzPSgtLXdvcmstY292ZXJhZ2UtcG9saWN5ICIka2luZCIpCit9CisKKyMgVGhpcyByZWFkLW9ubHkgYWN0aW9uIGNoZWNrcyBib3RoIGluZGVwZW5kZW50bHkgZnJvemVuIGNvbnRyYWN0cy4KK3NvdXJjZV9tYXJnaW5fcHJlZmxpZ2h0KCkgeworICAgIGxvY2FsIG5hbWUgc291cmNlX2Vwb2NoCisgICAgZm9yIG5hbWUgaW4gQVBFWF9TSU1fQklOIEFQRVhfU0lNX1NIQTI1NiBBUEVYX0VQT0NIIEFQRVhfVEFLRU9WRVJfTUFSR0lOOyBkbyByZXF1aXJlX3ZhciAiJG5hbWUiOyBkb25lCisgICAgcmVxdWlyZV9jb21tYW5kIGpxCisgICAgcmVxdWlyZV9jb21tYW5kIHNoYTI1NnN1bQorICAgIHJlcXVpcmVfc2hhMjU2ICIkQVBFWF9TSU1fU0hBMjU2IgorICAgIFtbICIkQVBFWF9FUE9DSCIgPX4gXlswLTZdJCBdXSB8fCBkaWUgIkFQRVhfRVBPQ0ggbXVzdCBiZSBhbiBpbnRlZ2VyIGluIDAuLjYiCisgICAgW1sgIiRBUEVYX1RBS0VPVkVSX01BUkdJTiIgPX4gXjBcLlswLTldKyQgXV0gfHwgZGllICJBUEVYX1RBS0VPVkVSX01BUkdJTiBtdXN0IGJlIGEgZGVjaW1hbCBmcmFjdGlvbiIKKyAgICBbIC14ICIkQVBFWF9TSU1fQklOIiBdIHx8IGRpZSAic2ltdWxhdG9yIGJpbmFyeSBpcyBub3QgZXhlY3V0YWJsZSIKKyAgICBbICIkKHNoYTI1Nl9maWxlICIkQVBFWF9TSU1fQklOIikiID0gIiRBUEVYX1NJTV9TSEEyNTYiIF0gfHwgZGllICJzaW11bGF0b3IgYmluYXJ5IGhhc2ggbWlzbWF0Y2giCisgICAgc291cmNlX2Vwb2NoPSIkKAorICAgICAgICAiJEFQRVhfU0lNX0JJTiIgc291cmNlLWNoZWNrIFwKKyAgICAgICAgICAgIC0tZXBvY2ggIiRBUEVYX0VQT0NIIiBcCisgICAgICAgICAgICAtLXNvdXJjZS1jb25maWcgL29wdC91cm5ldHdvcmsvc2ltLWxhdGVuY3kueW1sIFwKKyAgICAgICAgICAgIC0tcmVwb3Mtcm9vdCAvd29ya3NwYWNlIFwKKyAgICAgICAgICAgIC0tanNvbgorICAgICkiIHx8IGRpZSAic291cmNlIGVwb2NoIHRocmVzaG9sZCBwcmVmbGlnaHQgZmFpbGVkIgorICAgIHZhbGlkYXRlX3NvdXJjZV9lcG9jaF9tYXJnaW4gIiRzb3VyY2VfZXBvY2giCisgICAgdmFsaWRhdGVfc291cmNlX2Vwb2NoX2cyX3BvbGljeSAiJHNvdXJjZV9lcG9jaCIKK30KKwogcHJlZmxpZ2h0KCkgewogICAgIHJlcXVpcmVfY29tbW9uCiAgICAgcmVxdWlyZV9jb21tYW5kIGdvCkBAIC0yMTAsNiArMjgxLDE1IEBAIHJ1bl9vbmUoKSB7CiAgICAgICAgIC0tYW5ub3VuY2UtdGltZW91dCAiJEFQRVhfQU5OT1VOQ0VfVElNRU9VVCIKICAgICApCiAgICAgaWYgWyAiJEFQRVhfTk9fSU1QQUlSIiA9IHllcyBdOyB0aGVuIGFyZ3MrPSgtLW5vLWltcGFpcik7IGZpCisgICAgY2FzZSAiJHtBUEVYX0cyX1ZPTFVNRV9QT0xJQ1k6LX0iIGluCisgICAgICAgICcnKSA7OworICAgICAgICBtaW5pbXVtLXdvcmsvMSkgYXJncys9KC0tZzItdm9sdW1lLXBvbGljeSAiJEFQRVhfRzJfVk9MVU1FX1BPTElDWSIpIDs7CisgICAgICAgICopIGRpZSAidW5zdXBwb3J0ZWQgZzIgdm9sdW1lIHBvbGljeSIgOzsKKyAgICBlc2FjCisKKyAgICBsb2NhbCBjb3ZlcmFnZV9hcmdzPSgpCisgICAgY292ZXJhZ2VfcG9saWN5X2FyZ3VtZW50cworICAgIGFyZ3MrPSgiJHtjb3ZlcmFnZV9hcmdzW0BdfSIpCiAKICAgICBsb2cgInN0YXJ0aW5nIHNpbXVsYXRvcjsgYXJ0aWZhY3RzPSRkaXIiCiAgICAgc2V0ICtlCkBAIC0yMjIsOCArMzAyLDExIEBAIHJ1bl9vbmUoKSB7CiAgICAgWyAtcyAiJG1ldGEiIF0gfHwgZGllICJzaW11bGF0b3IgZW1pdHRlZCBubyBydW4gbWFuaWZlc3QiCiAgICAgWyAtcyAiJG1hcmtlciIgXSB8fCBkaWUgInNpbXVsYXRvciBlbWl0dGVkIG5vIGNvbXBsZXRpb24gbWFya2VyIgogICAgIFsgLXMgIiRhY2NvdW50aW5nX3NvdXJjZSIgXSB8fCBkaWUgInNpbXVsYXRvciBlbWl0dGVkIG5vIHByb3ZpZGVyIGFjY291bnRpbmcgc291cmNlIgotICAgIGpxIC1lIC0tYXJnanNvbiBzb3VyY2VfZXBvY2ggIiRBUEVYX0VQT0NIIiBcCi0gICAgICAgICcuc2NoZW1hID09IDIgYW5kIC5zb3VyY2VfZXBvY2ggPT0gJHNvdXJjZV9lcG9jaCBhbmQgLnNjb3JlX3NjaGVtYSA9PSAxIGFuZCAuY29tcGxldGlvbl9zdGF0ZSA9PSAiY29tcGxldGUiJyAiJG1ldGEiID4vZGV2L251bGwgfHwKKyAgICBqcSAtZSAtLWFyZ2pzb24gc291cmNlX2Vwb2NoICIkQVBFWF9FUE9DSCIgLS1hcmcgZzJfdm9sdW1lX3BvbGljeSAiJHtBUEVYX0cyX1ZPTFVNRV9QT0xJQ1k6LX0iIC0tYXJnanNvbiBjb3ZlcmFnZSAiJHtBUEVYX1dPUktfQ09WRVJBR0VfUE9MSUNZX0pTT046LW51bGx9IiBcCisgICAgICAgICcuc2NoZW1hID09IChpZiAkY292ZXJhZ2UgPT0gbnVsbCB0aGVuIDIgZWxzZSAzIGVuZCkgYW5kIC5zb3VyY2VfZXBvY2ggPT0gJHNvdXJjZV9lcG9jaCBhbmQgLnNjb3JlX3NjaGVtYSA9PSAxIGFuZCAuY29tcGxldGlvbl9zdGF0ZSA9PSAiY29tcGxldGUiIGFuZAorICAgICAgICAgKC5nMl92b2x1bWVfcG9saWN5IC8vICIiKSA9PSAkZzJfdm9sdW1lX3BvbGljeSBhbmQKKyAgICAgICAgICgud29ya19jb3ZlcmFnZV9wb2xpY3kgLy8gbnVsbCkgPT0gJGNvdmVyYWdlIGFuZAorICAgICAgICAgLnNjb3Jlcl92ZXJzaW9uID09IChpZiAkY292ZXJhZ2UgIT0gbnVsbCB0aGVuICJzaW0tbGF0ZW5jeS1zY29yZS8zIiBlbGlmICRnMl92b2x1bWVfcG9saWN5ID09ICIiIHRoZW4gInNpbS1sYXRlbmN5LXNjb3JlLzEiIGVsc2UgInNpbS1sYXRlbmN5LXNjb3JlLzIiIGVuZCknICIkbWV0YSIgPi9kZXYvbnVsbCB8fAogICAgICAgICBkaWUgInJ1biBtYW5pZmVzdCBpcyBub3QgY29tcGxldGUgc2NoZW1hIDIiCiAgICAganEgLWUgLS1hcmcgZXZhbHVhdGlvbl9pZCAiJEFQRVhfRVZBTFVBVElPTl9JRCIgXAogICAgICAgICAnLnNjaGVtYSA9PSAxIGFuZApAQCAtMjY0LDIxICszNDcsMTggQEAgYnVpbGRfYmFzZWxpbmVfYnVuZGxlKCkgewogICAgIFsgIiQoc2hhMjU2X2ZpbGUgIiRBUEVYX1NDT1JFUl9CSU4iKSIgPSAiJEFQRVhfU0NPUkVSX1NIQTI1NiIgXSB8fAogICAgICAgICBkaWUgInNjb3JlciBiaW5hcnkgaGFzaCBtaXNtYXRjaCIKIAotICAgIGxvY2FsIHNvdXJjZV9lcG9jaAotICAgIHNvdXJjZV9lcG9jaD0iJCgKLSAgICAgICAgIiRBUEVYX1NJTV9CSU4iIHNvdXJjZS1jaGVjayBcCi0gICAgICAgICAgICAtLWVwb2NoICIkQVBFWF9FUE9DSCIgXAotICAgICAgICAgICAgLS1zb3VyY2UtY29uZmlnIC9vcHQvdXJuZXR3b3JrL3NpbS1sYXRlbmN5LnltbCBcCi0gICAgICAgICAgICAtLXJlcG9zLXJvb3QgL3dvcmtzcGFjZSBcCi0gICAgICAgICAgICAtLWpzb24KLSAgICApIiB8fCBkaWUgInNvdXJjZSBlcG9jaCB0aHJlc2hvbGQgcHJlZmxpZ2h0IGZhaWxlZCIKLSAgICBqcSAtZSAtLWFyZ2pzb24gbWFyZ2luICIkQVBFWF9UQUtFT1ZFUl9NQVJHSU4iIFwKLSAgICAgICAgJy5zY2hlbWEgPT0gMSBhbmQgLmVwb2NoID49IDAgYW5kCi0gICAgICAgICAuc2lnbmlmaWNhbnRfaW1wcm92ZW1lbnRfcGVyY2VudCA9PSAoJG1hcmdpbiAqIDEwMCknIFwKLSAgICAgICAgPDw8IiRzb3VyY2VfZXBvY2giID4vZGV2L251bGwgfHwKLSAgICAgICAgZGllICJ0YWtlb3ZlciBtYXJnaW4gZG9lcyBub3QgbWF0Y2ggdGhlIGNvbmZpZ3VyZWQgc291cmNlIGVwb2NoIgorICAgIHNvdXJjZV9tYXJnaW5fcHJlZmxpZ2h0CiAKLSAgICAiJEFQRVhfU0NPUkVSX0JJTiIgc2NvcmUtYmFzZWxpbmUgXAorICAgIGxvY2FsIGcyX3BvbGljeV9hcmdzPSgpCisgICAgY2FzZSAiJHtBUEVYX0cyX1ZPTFVNRV9QT0xJQ1k6LX0iIGluCisgICAgICAgICcnKSA7OworICAgICAgICBtaW5pbXVtLXdvcmsvMSkgZzJfcG9saWN5X2FyZ3MrPSgtLWcyLXZvbHVtZS1wb2xpY3kgIiRBUEVYX0cyX1ZPTFVNRV9QT0xJQ1kiKSA7OworICAgICAgICAqKSBkaWUgInVuc3VwcG9ydGVkIGcyIHZvbHVtZSBwb2xpY3kiIDs7CisgICAgZXNhYworICAgIGxvY2FsIGNvdmVyYWdlX2FyZ3M9KCkgd29ya2xvYWRfYXJncz0oKQorICAgIGNvdmVyYWdlX3BvbGljeV9hcmd1bWVudHMKKyAgICBpZiBbICIke0FQRVhfV09SS19DT1ZFUkFHRV9QT0xJQ1lfSlNPTjotbnVsbH0iICE9IG51bGwgXTsgdGhlbiB3b3JrbG9hZF9hcmdzPSgtLXByb3ZpZGVycyAiJEFQRVhfUFJPVklERVJTX0ZJTEUiKTsgZmkKKyAgICAiJEFQRVhfU0NPUkVSX0JJTiIgc2NvcmUtYmFzZWxpbmUgIiR7ZzJfcG9saWN5X2FyZ3NbQF19IiAiJHtjb3ZlcmFnZV9hcmdzW0BdfSIgIiR7d29ya2xvYWRfYXJnc1tAXX0iIFwKICAgICAgICAgLS1ydW4gIiRBUEVYX0JBU0VMSU5FX1JVTlMiIFwKICAgICAgICAgLS1zdGRlcnIgIiRBUEVYX0JBU0VMSU5FX1NUREVSUiIgXAogICAgICAgICAtLWFjY291bnRpbmcgIiRBUEVYX0JBU0VMSU5FX0FDQ09VTlRJTkciIFwKQEAgLTI4OCw3ICszNjgsMTEgQEAgYnVpbGRfYmFzZWxpbmVfYnVuZGxlKCkgewogICAgICAgICAtLXJvdW5kLWlkICIkQVBFWF9ST1VORF9JRCIgXAogICAgICAgICAtLXRha2VvdmVyLW1hcmdpbiAiJEFQRVhfVEFLRU9WRVJfTUFSR0lOIiBcCiAgICAgICAgIC0tb3V0ICIkQVBFWF9CQVNFTElORV9NQU5JRkVTVCIgPi9kZXYvbnVsbAotICAgIGpxIC1lICcuc2NvcmVfc2NoZW1hID09IDEgYW5kIC5raW5kID09ICJzaW0tbGF0ZW5jeS1zY29yZS1iYXNlbGluZSIgYW5kCisgICAganEgLWUgLS1hcmcgZzJfdm9sdW1lX3BvbGljeSAiJHtBUEVYX0cyX1ZPTFVNRV9QT0xJQ1k6LX0iIC0tYXJnanNvbiBjb3ZlcmFnZSAiJHtBUEVYX1dPUktfQ09WRVJBR0VfUE9MSUNZX0pTT046LW51bGx9IiBcCisgICAgICAgICcuc2NvcmVfc2NoZW1hID09IDEgYW5kIC5raW5kID09ICJzaW0tbGF0ZW5jeS1zY29yZS1iYXNlbGluZSIgYW5kCisgICAgICAgICguZzJfdm9sdW1lX3BvbGljeSAvLyAiIikgPT0gJGcyX3ZvbHVtZV9wb2xpY3kgYW5kCisgICAgICAgICgud29ya19jb3ZlcmFnZV9wb2xpY3kgLy8gbnVsbCkgPT0gJGNvdmVyYWdlIGFuZAorICAgICAgICAuc2NvcmVyX3ZlcnNpb24gPT0gKGlmICRjb3ZlcmFnZSAhPSBudWxsIHRoZW4gInNpbS1sYXRlbmN5LXNjb3JlLzMiIGVsaWYgJGcyX3ZvbHVtZV9wb2xpY3kgPT0gIiIgdGhlbiAic2ltLWxhdGVuY3ktc2NvcmUvMSIgZWxzZSAic2ltLWxhdGVuY3ktc2NvcmUvMiIgZW5kKSBhbmQKICAgICAgICAgKC5yZXBsaWNhdGVzIHwgbGVuZ3RoICUgMiA9PSAxKSBhbmQKICAgICAgICAgKFsucmVwbGljYXRlc1tdLmZpbmRwcm92aWRlcnNfc2FtcGxlX3NwYW5fZnJhY3Rpb24gfAogICAgICAgICAgIHR5cGUgPT0gIm51bWJlciIgYW5kIGlzZmluaXRlIGFuZCAuID49IDAuOTAgYW5kIC4gPD0gMV0gfCBhbGwpJyBcCkBAIC0zMTUsNyArMzk5LDEwIEBAIHNjb3JlX2J1bmRsZSgpIHsKIAogICAgIFsgIiQoc2hhMjU2X2ZpbGUgIiRBUEVYX1NDT1JFUl9CSU4iKSIgPSAiJEFQRVhfU0NPUkVSX1NIQTI1NiIgXSB8fAogICAgICAgICBkaWUgInNjb3JlciBiaW5hcnkgaGFzaCBtaXNtYXRjaCIKLSAgICAiJEFQRVhfU0NPUkVSX0JJTiIgc2NvcmUgXAorICAgIGxvY2FsIGNvdmVyYWdlX2FyZ3M9KCkgd29ya2xvYWRfYXJncz0oKQorICAgIGNvdmVyYWdlX3BvbGljeV9hcmd1bWVudHMKKyAgICBpZiBbICIke0FQRVhfV09SS19DT1ZFUkFHRV9QT0xJQ1lfSlNPTjotbnVsbH0iICE9IG51bGwgXTsgdGhlbiB3b3JrbG9hZF9hcmdzPSgtLXByb3ZpZGVycyAiJEFQRVhfUFJPVklERVJTX0ZJTEUiKTsgZmkKKyAgICAiJEFQRVhfU0NPUkVSX0JJTiIgc2NvcmUgIiR7d29ya2xvYWRfYXJnc1tAXX0iIFwKICAgICAgICAgLS1ydW4gIiRBUEVYX0NBTkRJREFURV9SVU5TIiBcCiAgICAgICAgIC0tc3RkZXJyICIkQVBFWF9DQU5ESURBVEVfU1RERVJSIiBcCiAgICAgICAgIC0tYmFzZWxpbmUgIiRBUEVYX0JBU0VMSU5FX01BTklGRVNUIiBcCkBAIC01MDQsNiArNTkxLDcgQEAgZmluYWxpemVfYnVuZGxlKCkgewogdXNhZ2UoKSB7CiAgICAgcHJpbnRmICclc1xuJyBcCiAgICAgICAgICd1c2FnZTogb2ZmaWNpYWwtcnVuLnNoIHByZWZsaWdodCcgXAorICAgICAgICAnICAgICAgIG9mZmljaWFsLXJ1bi5zaCBtYXJnaW4tcHJlZmxpZ2h0JyBcCiAgICAgICAgICcgICAgICAgb2ZmaWNpYWwtcnVuLnNoIHJ1bicgXAogICAgICAgICAnICAgICAgIG9mZmljaWFsLXJ1bi5zaCBiYXNlbGluZScgXAogICAgICAgICAnICAgICAgIG9mZmljaWFsLXJ1bi5zaCBzY29yZScgXApAQCAtNTExLDYgKzU5OSw3IEBAIHVzYWdlKCkgewogfQogCiBjYXNlICIkezE6LX0iIGluCisgICAgbWFyZ2luLXByZWZsaWdodCkgc291cmNlX21hcmdpbl9wcmVmbGlnaHQgOzsKICAgICBwcmVmbGlnaHQpIHByZWZsaWdodCA7OwogICAgIHJ1bikgICAgICAgcnVuX29uZSA7OwogICAgIGJhc2VsaW5lKSAgYnVpbGRfYmFzZWxpbmVfYnVuZGxlIDs7CmRpZmYgLS1naXQgYS9jb25uZWN0L3NpbS1sYXRlbmN5L3Jlc3VsdHMuZ28gYi9jb25uZWN0L3NpbS1sYXRlbmN5L3Jlc3VsdHMuZ28KaW5kZXggMDkyZDJmYTgwNjA1MzJiN2M4NzM4MzE1MDA3YjRiOGVhMDIyNDZmMy4uNTU2MTUxNmM0YzNlODc4MDYyNWQ2NGYwZTgxMDg5YjRiOTkyNjVmZSAxMDA2NDQKLS0tIGEvY29ubmVjdC9zaW0tbGF0ZW5jeS9yZXN1bHRzLmdvCisrKyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvcmVzdWx0cy5nbwpAQCAtMjksNiArMjksOCBAQCBpbXBvcnQgKAogCSJwYXRoL2ZpbGVwYXRoIgogCSJzdHJjb252IgogCSJzdHJpbmdzIgorCisJImdpdGh1Yi5jb20vdXJuZXR3b3JrL3NlcnZlci9tb2RlbCIKICkKIAogLy8gU2NoZW1hIDIgYWRkcyB0aGUgb2ZmaWNpYWwtZXZhbHVhdGlvbiBsaWZlY3ljbGUgZmllbGRzLiBDU1YgY29sdW1ucyByZW1haW4KQEAgLTUzLDYgKzU1LDkgQEAgY29uc3QgdGhyb3VnaHB1dE1pbkJ5dGVzID0gMTAyNCAqIDEwMjQKIC8vIHJlc3VsdFJvdyBpcyBvbmUgcGFyc2VkIENTViByb3cgKHRoZSBmaWVsZHMgdGhlIG1ldHJpY3MgbmVlZCkuCiB0eXBlIHJlc3VsdFJvdyBzdHJ1Y3QgewogCXRTdGFydE1zIGludDY0CisJY2xpZW50ICAgc3RyaW5nCisJcGF0aCAgICAgc3RyaW5nCisJZGVwdGggICAgaW50CiAJc3RhdHVzICAgaW50CiAJYnl0ZXMgICAgaW50NjQKIAl0dGZiTXMgICBmbG9hdDY0CkBAIC03Nyw4ICs4MiwxMSBAQCB0eXBlIE1ldHJpY1N1bW1hcnkgc3RydWN0IHsKIC8vIHN1bW1hcmllcy4gTG9hZGVkIGVpdGhlciBmcm9tIHRoZSBzaWRlLWNhciBkaXJlY3RseSBvciByZWNvbXB1dGVkIGZyb20gYQogLy8gcmVzdWx0cyBDU1YuCiB0eXBlIFJ1blN0YXRzIHN0cnVjdCB7Ci0JU2NoZW1hIGludCAgICBganNvbjoic2NoZW1hImAKLQlLaW5kICAgc3RyaW5nIGBqc29uOiJraW5kImAKKwlHMlZvbHVtZVBvbGljeSAgICAgbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeSAgICAgIGBqc29uOiJnMl92b2x1bWVfcG9saWN5LG9taXRlbXB0eSJgCisJV29ya0NvdmVyYWdlUG9saWN5ICptb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSBganNvbjoid29ya19jb3ZlcmFnZV9wb2xpY3ksb21pdGVtcHR5ImAKKwlXb3JrQ292ZXJhZ2UgICAgICAgKndvcmtDb3ZlcmFnZVJlcG9ydCAgICAgICAgICAgICAgICAgIGBqc29uOiJ3b3JrX2NvdmVyYWdlLG9taXRlbXB0eSJgCisJU2NoZW1hICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoic2NoZW1hImAKKwlLaW5kICAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJraW5kImAKIAkvLyB0aGUgYXJ0aWZhY3QgcGF0aCB0aGlzIHdhcyBsb2FkZWQgZnJvbSAoc2V0IGF0IGxvYWQsIGtlcHQgb24gc2F2ZSkKIAlMYWJlbCBzdHJpbmcgYGpzb246ImxhYmVsLG9taXRlbXB0eSJgCiAKQEAgLTQ4MCw2ICs0ODgsOSBAQCBmdW5jIHdyaXRlUnVuU3RhdHMocGF0aCBzdHJpbmcsIHN0YXRzICpSdW5TdGF0cykgZXJyb3IgewogCWlmIGVyciAhPSBuaWwgewogCQlyZXR1cm4gZXJyCiAJfQorCWlmIHN0YXRzLldvcmtDb3ZlcmFnZVBvbGljeSAhPSBuaWwgJiYgbGVuKHN0YXRzQnl0ZXMpKzEgPiBtb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZU1heGltdW1NYW5pZmVzdEJ5dGVzIHsKKwkJcmV0dXJuIGZtdC5FcnJvcmYoImNvdmVyYWdlIHJ1biBtYW5pZmVzdCBleGNlZWRzIGl0cyB2ZXJzaW9uZWQgYXJ0aWZhY3QgYm91bmQiKQorCX0KIAlyZXR1cm4gd3JpdGVBdG9taWNGaWxlKHBhdGgsIGFwcGVuZChzdGF0c0J5dGVzLCAnXG4nKSwgMG82NDQpCiB9CiAKQEAgLTQ5NSw3ICs1MDYsNyBAQCBmdW5jIHJlYWRSdW5TdGF0cyhwYXRoIHN0cmluZykgKCpSdW5TdGF0cywgZXJyb3IpIHsKIAlpZiBzdGF0cy5LaW5kICE9IHJ1blN0YXRzS2luZCB7CiAJCXJldHVybiBuaWwsIGZtdC5FcnJvcmYoIiVzOiBraW5kICVxIGlzIG5vdCBhICVzIiwgcGF0aCwgc3RhdHMuS2luZCwgcnVuU3RhdHNLaW5kKQogCX0KLQlpZiBzdGF0cy5TY2hlbWEgPCAxIHx8IHJ1blN0YXRzU2NoZW1hIDwgc3RhdHMuU2NoZW1hIHsKKwlpZiBzdGF0cy5TY2hlbWEgPCAxIHx8IDMgPCBzdGF0cy5TY2hlbWEgewogCQlyZXR1cm4gbmlsLCBmbXQuRXJyb3JmKCIlczogdW5zdXBwb3J0ZWQgcnVuIGFydGlmYWN0IHNjaGVtYSAlZCIsIHBhdGgsIHN0YXRzLlNjaGVtYSkKIAl9CiAJcmV0dXJuICZzdGF0cywgbmlsCmRpZmYgLS1naXQgYS9jb25uZWN0L3NpbS1sYXRlbmN5L3J1bi5nbyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvcnVuLmdvCmluZGV4IDhhNzJiMjdjZTJjZjc1ZTdhYjRiNGI3Njc3MDdhMTZhN2NjYzNlNDMuLjY2ZjY5OTA5ZGFiZGZhNGFjYzQwOGFjMDFiNzBiYzQ4NzQyODI5YmMgMTAwNjQ0Ci0tLSBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvcnVuLmdvCisrKyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvcnVuLmdvCkBAIC0zMSwxNiArMzEsMTkgQEAgaW1wb3J0ICgKIAkidGltZSIKIAogCSJnaXRodWIuY29tL3VybmV0d29yay9zZXJ2ZXIiCisJImdpdGh1Yi5jb20vdXJuZXR3b3JrL3NlcnZlci9tb2RlbCIKIAkiZ2l0aHViLmNvbS91cm5ldHdvcmsvc2VydmVyL3N0YXRzIgogKQogCiB0eXBlIFJ1bk9wdGlvbnMgc3RydWN0IHsKLQlFcG9jaCAgICAgICAgICAgIGludAotCVNvdXJjZUNvbmZpZyAgICAgc3RyaW5nCi0JUmVwb3NpdG9yaWVzUm9vdCBzdHJpbmcKLQlDb25maWdQYXRoICAgICAgIHN0cmluZwotCVNpdGVIb21lICAgICAgICAgc3RyaW5nCi0JUmFtcCAgICAgICAgICAgICB0aW1lLkR1cmF0aW9uCisJRzJWb2x1bWVQb2xpY3kgICAgIG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3kKKwlXb3JrQ292ZXJhZ2VQb2xpY3kgKm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5CisJRXBvY2ggICAgICAgICAgICAgIGludAorCVNvdXJjZUNvbmZpZyAgICAgICBzdHJpbmcKKwlSZXBvc2l0b3JpZXNSb290ICAgc3RyaW5nCisJQ29uZmlnUGF0aCAgICAgICAgIHN0cmluZworCVNpdGVIb21lICAgICAgICAgICBzdHJpbmcKKwlSYW1wICAgICAgICAgICAgICAgdGltZS5EdXJhdGlvbgogCS8vIHJlbGlhYmlsaXR5IGhpc3RvcnkgYmFja2ZpbGxlZCBzbyBwcm92aWRlcnMgYXJlIGVzdGFibGlzaGVkIHdpdGhvdXQgdGhlCiAJLy8gfjguNGggY29sZC1zdGFydCB3YXJtLXVwICgwID0gcHVyZSBvcmdhbmljIHdhcm0tdXApCiAJUHJld2FybSAgdGltZS5EdXJhdGlvbgpAQCAtODQsNyArODcsNyBAQCBmdW5jIChzZWxmICpSdW5PcHRpb25zKSBmbGVldFNldHRpbmdzKCkgRmxlZXRTZXR0aW5ncyB7CiAJcmV0dXJuICpzZWxmLkZsZWV0U2V0dGluZ3MKIH0KIAotY29uc3Qgb2ZmaWNpYWxTY29yZXJWZXJzaW9uID0gInNpbS1sYXRlbmN5LXNjb3JlLzEiCitjb25zdCBvZmZpY2lhbFNjb3JlclZlcnNpb24gPSBtb2RlbC5Db21wZXRpdGlvblNjb3JlclZlcnNpb24KIGNvbnN0IHRlYXJkb3duVGltZW91dCA9IDIwICogdGltZS5TZWNvbmQKIAogdmFyIHJ1bkV2YWx1YXRpb25JZFBhdHRlcm4gPSByZWdleHAuTXVzdENvbXBpbGUoYF5bQS1aYS16MC05Ll8tXXsxLDEyOH0kYCkKQEAgLTEzNSwxMCArMTM4LDIyIEBAIGZ1bmMgd2FpdFBoYXNlKGN0eCBjb250ZXh0LkNvbnRleHQsIGR1cmF0aW9uIHRpbWUuRHVyYXRpb24pIGVycm9yIHsKIAl9CiB9CiAKKy8vIEZ1dHVyZSBjb3ZlcmFnZSBvd25zIGEgc3RhbmRhcmQtbGlicmFyeSBtb25vdG9uaWMgY2xvY2sgaW5zaWRlIHByb3RlY3RlZAorLy8gcnVubmVyIHNvdXJjZS4gSGlzdG9yaWNhbCBvbWlzc2lvbiByZXRhaW5zIHRoZSBleGFjdCBwcm9kdWN0IGNsb2NrIHZhbHVlLgorZnVuYyBydW5DbG9ja05vdyhjb3ZlcmFnZSAqbW9kZWwuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3ksIHByb2R1Y3RDbG9jayBmdW5jKCkgdGltZS5UaW1lKSB0aW1lLlRpbWUgeworCWlmIGNvdmVyYWdlICE9IG5pbCB7CisJCXJldHVybiB0aW1lLk5vdygpCisJfQorCXJldHVybiBwcm9kdWN0Q2xvY2soKQorfQorCiBmdW5jIFJ1bihvcHRpb25zICpSdW5PcHRpb25zKSAocmV0RXJyIGVycm9yKSB7CiAJaWYgb3B0aW9ucyA9PSBuaWwgewogCQlyZXR1cm4gaW5jb21wbGV0ZUVycm9yKCJpbnZhbGlkX29wdGlvbnMiLCAic2V0dXAiLCBlcnJvcnMuTmV3KCJuaWwgcnVuIG9wdGlvbnMiKSkKIAl9CisJaWYgXywgZXJyIDo9IG1vZGVsLkNvbXBldGl0aW9uU2NvcmVyVmVyc2lvbkZvcldvcmtDb3ZlcmFnZShvcHRpb25zLkcyVm9sdW1lUG9saWN5LCBvcHRpb25zLldvcmtDb3ZlcmFnZVBvbGljeSk7IGVyciAhPSBuaWwgeworCQlyZXR1cm4gaW5jb21wbGV0ZUVycm9yKCJpbnZhbGlkX29wdGlvbnMiLCAic2V0dXAiLCBlcnIpCisJfQogCWlmIG9wdGlvbnMuUmVxdWVzdFRpbWVvdXQgPD0gMCB7CiAJCWlmIG9wdGlvbnMuT2ZmaWNpYWwgewogCQkJcmV0dXJuIGluY29tcGxldGVFcnJvcigiaW52YWxpZF9vcHRpb25zIiwgInNldHVwIiwgZXJyb3JzLk5ldygib2ZmaWNpYWwgcmVxdWVzdCB0aW1lb3V0IG11c3QgYmUgcG9zaXRpdmUiKSkKQEAgLTMwNywxMCArMzIyLDEzIEBAIGZ1bmMgUnVuKG9wdGlvbnMgKlJ1bk9wdGlvbnMpIChyZXRFcnIgZXJyb3IpIHsKIAkJaWYgZHJpdmVyICE9IG5pbCB7CiAJCQlzdW1tYXJpemVSb3dzKGRyaXZlci5yZXN1bHRSb3dzKCksIHJ1blN0YXRzKQogCQkJcnVuU3RhdHMuUmVzdWx0c0NzdlNoYTI1NiwgcnVuU3RhdHMuUmVzdWx0c0NzdkJ5dGVzID0gZHJpdmVyLmNzdklkZW50aXR5KCkKKwkJCWlmIGRyaXZlci53b3JrQ292ZXJhZ2UgIT0gbmlsIHsKKwkJCQlydW5TdGF0cy5Xb3JrQ292ZXJhZ2UgPSBkcml2ZXIud29ya0NvdmVyYWdlLnJlcG9ydCgpCisJCQl9CiAJCX0gZWxzZSBpZiBydW5TdGF0cy5NZXRyaWNzID09IG5pbCB7CiAJCQlydW5TdGF0cy5NZXRyaWNzID0gbWFwW3N0cmluZ11NZXRyaWNTdW1tYXJ5e30KIAkJfQotCQlydW5TdGF0cy5Db21wbGV0ZWRVbml4TXMgPSBzZXJ2ZXIuTm93VXRjKCkuVW5peE1pbGxpKCkKKwkJcnVuU3RhdHMuQ29tcGxldGVkVW5peE1zID0gcnVuQ2xvY2tOb3cob3B0aW9ucy5Xb3JrQ292ZXJhZ2VQb2xpY3ksIHNlcnZlci5Ob3dVdGMpLlVuaXhNaWxsaSgpCiAJCXJ1blN0YXRzLkNvbXBsZXRpb25TdGF0ZSA9ICJjb21wbGV0ZSIKIAkJcnVuU3RhdHMuSW5jb21wbGV0ZUNvZGUgPSAiIgogCQlydW5TdGF0cy5JbmNvbXBsZXRlTWVzc2FnZSA9ICIiCkBAIC01MzcsMTEgKzU1NSwzNyBAQCBmdW5jIFJ1bihvcHRpb25zICpSdW5PcHRpb25zKSAocmV0RXJyIGVycm9yKSB7CiAJCXJldHVybiBpbmNvbXBsZXRlRXJyb3IoImFjY291bnRpbmdfc3RhcnRfZmFpbGVkIiwgIm1lYXN1cmVtZW50IHNldHVwIiwgZXJyKQogCX0KIAlwcm92aWRlckFjY291bnRpbmdTdGFydGVkID0gdHJ1ZQotCW1lYXN1cmVTdGFydCA6PSBzZXJ2ZXIuTm93VXRjKCkKKwkvLyBQcmVjb21wdXRlIGJlZm9yZSBvcGVuaW5nIHRoZSBiYXJyaWVyLCBzbyBpbnZlbnRvcnkgd29yayBjYW5ub3QgY29uc3VtZQorCS8vIGEgY2FuZGlkYXRlJ3Mgb2ZmZXJlZCBhZG1pc3Npb24gdGltZSBvciBpdHMgb3JpZ2luYWwgY3Jhd2wgZGVhZGxpbmVzLgorCXZhciBjb3ZlcmFnZVBsYW4gKndvcmtDb3ZlcmFnZVBsYW4KKwlpZiBvcHRpb25zLldvcmtDb3ZlcmFnZVBvbGljeSAhPSBuaWwgeworCQljb3ZlcmFnZVBsYW4sIGVyciA9IGJ1aWxkV29ya0NvdmVyYWdlUGxhbihjb25maWcsIG9wdGlvbnMuRHVyYXRpb24sIG9wdGlvbnMuUmVxdWVzdFRpbWVvdXQsIGRlZmF1bHRXb3JrQ292ZXJhZ2VMaW1pdHMoKSkKKwkJaWYgZXJyICE9IG5pbCB7CisJCQlyZXR1cm4gaW5jb21wbGV0ZUVycm9yKCJ3b3JrX2ludmVudG9yeV9pbnZhbGlkIiwgIm1lYXN1cmVtZW50IHNldHVwIiwgZXJyKQorCQl9CisJfQorCW1lYXN1cmVTdGFydCA6PSBydW5DbG9ja05vdyhvcHRpb25zLldvcmtDb3ZlcmFnZVBvbGljeSwgc2VydmVyLk5vd1V0YykKIAltZWFzdXJlRW5kIDo9IG1lYXN1cmVTdGFydC5BZGQob3B0aW9ucy5EdXJhdGlvbikKIAlydW5TdGF0cy5NZWFzdXJlU3RhcnRNcyA9IG1lYXN1cmVTdGFydC5Vbml4TWlsbGkoKQogCXJ1blN0YXRzLk1lYXN1cmVFbmRNcyA9IG1lYXN1cmVFbmQuVW5peE1pbGxpKCkKIAlsb2dmKCJNRUFTVVJFIFdJTkRPVzogWyVkLCAlZF0gdW5peC1tcyIsIG1lYXN1cmVTdGFydC5Vbml4TWlsbGkoKSwgbWVhc3VyZUVuZC5Vbml4TWlsbGkoKSkKKwlzdGFydERyaXZlciA6PSBmdW5jKCkgeworCQlkb25lIDo9IG1ha2UoY2hhbiBlcnJvciwgMSkKKwkJZHJpdmVyRG9uZSA9IGRvbmUKKwkJZ28gZnVuYygpIHsKKwkJCWRvbmUgPC0gcnVuRHJpdmVyKGRyaXZlcikKKwkJCWNsb3NlKGRvbmUpCisJCX0oKQorCX0KKwlpZiBjb3ZlcmFnZVBsYW4gIT0gbmlsIHsKKwkJZHJpdmVyLndvcmtDb3ZlcmFnZSwgZXJyID0gbmV3V29ya0NvdmVyYWdlQ29sbGVjdG9yKGNvdmVyYWdlUGxhbiwgbWVhc3VyZVN0YXJ0KQorCQlpZiBlcnIgIT0gbmlsIHsKKwkJCXJldHVybiBpbmNvbXBsZXRlRXJyb3IoIndvcmtfaW52ZW50b3J5X2ludmFsaWQiLCAibWVhc3VyZW1lbnQgc2V0dXAiLCBlcnIpCisJCX0KKwkJLy8gTWF0Y2htYWtpbmcgcHJvYmVzIGFuZCB0aGUgZml4ZWQgb2ZmZXJlZCBjb2hvcnQgc2hhcmUgdGhpcyBiYXJyaWVyOworCQkvLyBhIHN5bmNocm9ub3VzIGZpcnN0IHByb2JlIG1heSBub3Qgc2hpZnQgdGhlIHJvb3QgYXJyaXZhbCBwbGFuLgorCQlzdGFydERyaXZlcigpCisJfQogCXByb2JlT2Zmc2V0cyA6PSBtYXRjaG1ha2luZ1Byb2JlT2Zmc2V0cyhvcHRpb25zLkR1cmF0aW9uKQogCWlmIGxlbihwcm9iZU9mZnNldHMpIDwgMiB8fCBwcm9iZU9mZnNldHNbMF0gIT0gMCB7CiAJCXJldHVybiBpbmNvbXBsZXRlRXJyb3IoCkBAIC01NjUsMTggKzYwOSw3IEBAIGZ1bmMgUnVuKG9wdGlvbnMgKlJ1bk9wdGlvbnMpIChyZXRFcnIgZXJyb3IpIHsKIAltYXRjaG1ha2luZ1Byb2Jlc0RvbmVNdXRhYmxlIDo9IG1ha2UoY2hhbiBlcnJvciwgMSkKIAltYXRjaG1ha2luZ1Byb2Jlc0RvbmUgPSBtYXRjaG1ha2luZ1Byb2Jlc0RvbmVNdXRhYmxlCiAJd2FpdFVudGlsIDo9IGZ1bmMod2FpdEN0eCBjb250ZXh0LkNvbnRleHQsIHRhcmdldCB0aW1lLlRpbWUpIGVycm9yIHsKLQkJcmVtYWluaW5nIDo9IHRhcmdldC5TdWIoc2VydmVyLk5vd1V0YygpKQotCQlpZiByZW1haW5pbmcgPD0gMCB7Ci0JCQlyZXR1cm4gbmlsCi0JCX0KLQkJdGltZXIgOj0gdGltZS5OZXdUaW1lcihyZW1haW5pbmcpCi0JCWRlZmVyIHRpbWVyLlN0b3AoKQotCQlzZWxlY3QgewotCQljYXNlIDwtdGltZXIuQzoKLQkJCXJldHVybiBuaWwKLQkJY2FzZSA8LXdhaXRDdHguRG9uZSgpOgotCQkJcmV0dXJuIHdhaXRDdHguRXJyKCkKLQkJfQorCQlyZXR1cm4gd2FpdFBoYXNlKHdhaXRDdHgsIHRhcmdldC5TdWIocnVuQ2xvY2tOb3cob3B0aW9ucy5Xb3JrQ292ZXJhZ2VQb2xpY3ksIHNlcnZlci5Ob3dVdGMpKSkKIAl9CiAJZ28gZnVuYygpIHsKIAkJbWF0Y2htYWtpbmdQcm9iZXNEb25lTXV0YWJsZSA8LSBydW5NYXRjaG1ha2luZ1Byb2JlcygKQEAgLTU4OSwxNCArNjIyLDExIEBAIGZ1bmMgUnVuKG9wdGlvbnMgKlJ1bk9wdGlvbnMpIChyZXRFcnIgZXJyb3IpIHsKIAkJKQogCQljbG9zZShtYXRjaG1ha2luZ1Byb2Jlc0RvbmVNdXRhYmxlKQogCX0oKQotCWRyaXZlckRvbmVNdXRhYmxlIDo9IG1ha2UoY2hhbiBlcnJvciwgMSkKLQlkcml2ZXJEb25lID0gZHJpdmVyRG9uZU11dGFibGUKLQlnbyBmdW5jKCkgewotCQlkcml2ZXJEb25lTXV0YWJsZSA8LSBydW5Ecml2ZXIoZHJpdmVyKQotCQljbG9zZShkcml2ZXJEb25lTXV0YWJsZSkKLQl9KCkKKwlpZiBjb3ZlcmFnZVBsYW4gPT0gbmlsIHsKKwkJc3RhcnREcml2ZXIoKQorCX0KIAotCW1lYXN1cmVSZW1haW5pbmcgOj0gbWVhc3VyZUVuZC5TdWIoc2VydmVyLk5vd1V0YygpKQorCW1lYXN1cmVSZW1haW5pbmcgOj0gbWVhc3VyZUVuZC5TdWIocnVuQ2xvY2tOb3cob3B0aW9ucy5Xb3JrQ292ZXJhZ2VQb2xpY3ksIHNlcnZlci5Ob3dVdGMpKQogCWlmIG1lYXN1cmVSZW1haW5pbmcgPD0gMCB7CiAJCXJldHVybiBpbmNvbXBsZXRlRXJyb3IoCiAJCQkibWF0Y2htYWtpbmdfcHJvYmVfdGltZW91dCIsCkBAIC02NjMsNiArNjkzLDEwIEBAIGZ1bmMgUnVuKG9wdGlvbnMgKlJ1bk9wdGlvbnMpIChyZXRFcnIgZXJyb3IpIHsKIC8vIGFydGlmYWN0cyBjYW4gYmUgY2hlY2tlZCBmb3IgY29tcGFyYWJpbGl0eS4gVGhlIHdpbmRvdywgY2xpZW50IGNvdW50cywKIC8vIGFuZCBtZXRyaWNzIGFyZSBmaWxsZWQgaW4gYXMgdGhlIHJ1biBwcm9ncmVzc2VzLgogZnVuYyBuZXdSdW5TdGF0cyhvcHRpb25zICpSdW5PcHRpb25zLCBjb25maWcgKkNvbmZpZykgKCpSdW5TdGF0cywgZXJyb3IpIHsKKwlzY29yZXJWZXJzaW9uLCBlcnIgOj0gbW9kZWwuQ29tcGV0aXRpb25TY29yZXJWZXJzaW9uRm9yV29ya0NvdmVyYWdlKG9wdGlvbnMuRzJWb2x1bWVQb2xpY3ksIG9wdGlvbnMuV29ya0NvdmVyYWdlUG9saWN5KQorCWlmIGVyciAhPSBuaWwgeworCQlyZXR1cm4gbmlsLCBlcnIKKwl9CiAJY29uZmlnQnl0ZXMsIGVyciA6PSBvcy5SZWFkRmlsZShvcHRpb25zLkNvbmZpZ1BhdGgpCiAJaWYgZXJyICE9IG5pbCB7CiAJCXJldHVybiBuaWwsIGVycgpAQCAtNjc4LDI4ICs3MTIsMzQgQEAgZnVuYyBuZXdSdW5TdGF0cyhvcHRpb25zICpSdW5PcHRpb25zLCBjb25maWcgKkNvbmZpZykgKCpSdW5TdGF0cywgZXJyb3IpIHsKIAlpZiAxIDwgbGVuKHByb2JlT2Zmc2V0cykgewogCQlwcm9iZUludGVydmFsID0gKHByb2JlT2Zmc2V0c1sxXSAtIHByb2JlT2Zmc2V0c1swXSkuU3RyaW5nKCkKIAl9CisJc2NoZW1hIDo9IHJ1blN0YXRzU2NoZW1hCisJaWYgb3B0aW9ucy5Xb3JrQ292ZXJhZ2VQb2xpY3kgIT0gbmlsIHsKKwkJc2NoZW1hID0gMworCX0KIAlyZXR1cm4gJlJ1blN0YXRzewotCQlTY2hlbWE6ICAgICAgICAgICBydW5TdGF0c1NjaGVtYSwKLQkJS2luZDogICAgICAgICAgICAgcnVuU3RhdHNLaW5kLAotCQlTb3VyY2VFcG9jaDogICAgICBvcHRpb25zLkVwb2NoLAotCQlTY29yZVNjaGVtYTogICAgICBhcGV4U2NvcmVTY2hlbWEsCi0JCVNjb3JlclZlcnNpb246ICAgIG9mZmljaWFsU2NvcmVyVmVyc2lvbiwKLQkJRXZhbHVhdGlvbklkOiAgICAgb3B0aW9ucy5FdmFsdWF0aW9uSWQsCi0JCU9mZmljaWFsOiAgICAgICAgIG9wdGlvbnMuT2ZmaWNpYWwsCi0JCVJlcXVlc3RUaW1lb3V0TXM6IG9wdGlvbnMuUmVxdWVzdFRpbWVvdXQuTWlsbGlzZWNvbmRzKCksCi0JCVJlc291cmNlUmVwb3J0OiAgIG9wdGlvbnMuUmVzb3VyY2VSZXBvcnQsCi0JCUFjY291bnRpbmdSZXBvcnQ6IG9wdGlvbnMuQWNjb3VudGluZ1JlcG9ydCwKLQkJQWNjb3VudGluZ1NvdXJjZTogb3B0aW9ucy5BY2NvdW50aW5nU291cmNlLAotCQlGaW5hbE1hcmtlcjogICAgICBvcHRpb25zLkZpbmFsTWFya2VyLAotCQlDb21wbGV0aW9uU3RhdGU6ICAicnVubmluZyIsCi0JCUNvbmZpZ1NoYTI1NjogICAgIGZtdC5TcHJpbnRmKCIleCIsIHNoYTI1Ni5TdW0yNTYoY29uZmlnQnl0ZXMpKSwKLQkJU2VlZDogICAgICAgICAgICAgY29uZmlnLlNlZWQsCi0JCUJ1aWxkUmV2aXNpb246ICAgIHJldmlzaW9uLAotCQlCdWlsZE1vZGlmaWVkOiAgICBtb2RpZmllZCwKLQkJSG9zdG5hbWU6ICAgICAgICAgaG9zdG5hbWUsCi0JCU9zOiAgICAgICAgICAgICAgIHJ1bnRpbWUuR09PUywKLQkJQXJjaDogICAgICAgICAgICAgcnVudGltZS5HT0FSQ0gsCi0JCU51bUNwdTogICAgICAgICAgIHJ1bnRpbWUuTnVtQ1BVKCksCisJCUcyVm9sdW1lUG9saWN5OiAgICAgb3B0aW9ucy5HMlZvbHVtZVBvbGljeSwKKwkJV29ya0NvdmVyYWdlUG9saWN5OiBvcHRpb25zLldvcmtDb3ZlcmFnZVBvbGljeS5DbG9uZSgpLAorCQlTY2hlbWE6ICAgICAgICAgICAgIHNjaGVtYSwKKwkJS2luZDogICAgICAgICAgICAgICBydW5TdGF0c0tpbmQsCisJCVNvdXJjZUVwb2NoOiAgICAgICAgb3B0aW9ucy5FcG9jaCwKKwkJU2NvcmVTY2hlbWE6ICAgICAgICBhcGV4U2NvcmVTY2hlbWEsCisJCVNjb3JlclZlcnNpb246ICAgICAgc2NvcmVyVmVyc2lvbiwKKwkJRXZhbHVhdGlvbklkOiAgICAgICBvcHRpb25zLkV2YWx1YXRpb25JZCwKKwkJT2ZmaWNpYWw6ICAgICAgICAgICBvcHRpb25zLk9mZmljaWFsLAorCQlSZXF1ZXN0VGltZW91dE1zOiAgIG9wdGlvbnMuUmVxdWVzdFRpbWVvdXQuTWlsbGlzZWNvbmRzKCksCisJCVJlc291cmNlUmVwb3J0OiAgICAgb3B0aW9ucy5SZXNvdXJjZVJlcG9ydCwKKwkJQWNjb3VudGluZ1JlcG9ydDogICBvcHRpb25zLkFjY291bnRpbmdSZXBvcnQsCisJCUFjY291bnRpbmdTb3VyY2U6ICAgb3B0aW9ucy5BY2NvdW50aW5nU291cmNlLAorCQlGaW5hbE1hcmtlcjogICAgICAgIG9wdGlvbnMuRmluYWxNYXJrZXIsCisJCUNvbXBsZXRpb25TdGF0ZTogICAgInJ1bm5pbmciLAorCQlDb25maWdTaGEyNTY6ICAgICAgIGZtdC5TcHJpbnRmKCIleCIsIHNoYTI1Ni5TdW0yNTYoY29uZmlnQnl0ZXMpKSwKKwkJU2VlZDogICAgICAgICAgICAgICBjb25maWcuU2VlZCwKKwkJQnVpbGRSZXZpc2lvbjogICAgICByZXZpc2lvbiwKKwkJQnVpbGRNb2RpZmllZDogICAgICBtb2RpZmllZCwKKwkJSG9zdG5hbWU6ICAgICAgICAgICBob3N0bmFtZSwKKwkJT3M6ICAgICAgICAgICAgICAgICBydW50aW1lLkdPT1MsCisJCUFyY2g6ICAgICAgICAgICAgICAgcnVudGltZS5HT0FSQ0gsCisJCU51bUNwdTogICAgICAgICAgICAgcnVudGltZS5OdW1DUFUoKSwKIAkJRmxhZ3M6IG1hcFtzdHJpbmddc3RyaW5newogCQkJInJhbXAiOiAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5SYW1wLlN0cmluZygpLAogCQkJInByZXdhcm0iOiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5QcmV3YXJtLlN0cmluZygpLApAQCAtODc5LDE0ICs5MTksMTYgQEAgZnVuYyB3cml0ZUV4Y2x1c2l2ZUF0b21pY0ZpbGUocGF0aCBzdHJpbmcsIGNvbnRlbnQgW11ieXRlLCBtb2RlIG9zLkZpbGVNb2RlKSAocmUKIH0KIAogdHlwZSBydW5GaW5hbE1hcmtlciBzdHJ1Y3QgewotCVNjaGVtYSAgICAgICAgICAgIGludCAgICBganNvbjoic2NoZW1hImAKLQlLaW5kICAgICAgICAgICAgICBzdHJpbmcgYGpzb246ImtpbmQiYAotCVNjb3JlU2NoZW1hICAgICAgIGludCAgICBganNvbjoic2NvcmVfc2NoZW1hImAKLQlTY29yZXJWZXJzaW9uICAgICBzdHJpbmcgYGpzb246InNjb3Jlcl92ZXJzaW9uImAKLQlFdmFsdWF0aW9uSWQgICAgICBzdHJpbmcgYGpzb246ImV2YWx1YXRpb25faWQiYAotCVJ1bk1hbmlmZXN0U2hhMjU2IHN0cmluZyBganNvbjoicnVuX21hbmlmZXN0X3NoYTI1NiJgCi0JUnVuTWFuaWZlc3RCeXRlcyAgaW50NjQgIGBqc29uOiJydW5fbWFuaWZlc3RfYnl0ZXMiYAotCUNvbXBsZXRlZFVuaXhNcyAgIGludDY0ICBganNvbjoiY29tcGxldGVkX3VuaXhfbXMiYAorCUcyVm9sdW1lUG9saWN5ICAgICBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5ICAgICAgYGpzb246ImcyX3ZvbHVtZV9wb2xpY3ksb21pdGVtcHR5ImAKKwlXb3JrQ292ZXJhZ2VQb2xpY3kgKm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5IGBqc29uOiJ3b3JrX2NvdmVyYWdlX3BvbGljeSxvbWl0ZW1wdHkiYAorCVNjaGVtYSAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InNjaGVtYSJgCisJS2luZCAgICAgICAgICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoia2luZCJgCisJU2NvcmVTY2hlbWEgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoic2NvcmVfc2NoZW1hImAKKwlTY29yZXJWZXJzaW9uICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJzY29yZXJfdmVyc2lvbiJgCisJRXZhbHVhdGlvbklkICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiZXZhbHVhdGlvbl9pZCJgCisJUnVuTWFuaWZlc3RTaGEyNTYgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoicnVuX21hbmlmZXN0X3NoYTI1NiJgCisJUnVuTWFuaWZlc3RCeXRlcyAgIGludDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoicnVuX21hbmlmZXN0X2J5dGVzImAKKwlDb21wbGV0ZWRVbml4TXMgICAgaW50NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJjb21wbGV0ZWRfdW5peF9tcyJgCiB9CiAKIGZ1bmMgd3JpdGVGaW5hbE1hcmtlcihtYXJrZXJQYXRoIHN0cmluZywgbWV0YVBhdGggc3RyaW5nLCBydW5TdGF0cyAqUnVuU3RhdHMpIGVycm9yIHsKQEAgLTg5NSwxNCArOTM3LDE2IEBAIGZ1bmMgd3JpdGVGaW5hbE1hcmtlcihtYXJrZXJQYXRoIHN0cmluZywgbWV0YVBhdGggc3RyaW5nLCBydW5TdGF0cyAqUnVuU3RhdHMpIGVyCiAJCXJldHVybiBmbXQuRXJyb3JmKCJyZWFkIGZpbmFsaXplZCBydW4gbWFuaWZlc3Q6ICV3IiwgZXJyKQogCX0KIAltYXJrZXIgOj0gcnVuRmluYWxNYXJrZXJ7Ci0JCVNjaGVtYTogICAgICAgICAgICAxLAotCQlLaW5kOiAgICAgICAgICAgICAgInNpbS1sYXRlbmN5LWNvbXBsZXRlIiwKLQkJU2NvcmVTY2hlbWE6ICAgICAgIGFwZXhTY29yZVNjaGVtYSwKLQkJU2NvcmVyVmVyc2lvbjogICAgIG9mZmljaWFsU2NvcmVyVmVyc2lvbiwKLQkJRXZhbHVhdGlvbklkOiAgICAgIHJ1blN0YXRzLkV2YWx1YXRpb25JZCwKLQkJUnVuTWFuaWZlc3RTaGEyNTY6IGZtdC5TcHJpbnRmKCIleCIsIHNoYTI1Ni5TdW0yNTYobWFuaWZlc3RCeXRlcykpLAotCQlSdW5NYW5pZmVzdEJ5dGVzOiAgaW50NjQobGVuKG1hbmlmZXN0Qnl0ZXMpKSwKLQkJQ29tcGxldGVkVW5peE1zOiAgIHJ1blN0YXRzLkNvbXBsZXRlZFVuaXhNcywKKwkJRzJWb2x1bWVQb2xpY3k6ICAgICBydW5TdGF0cy5HMlZvbHVtZVBvbGljeSwKKwkJV29ya0NvdmVyYWdlUG9saWN5OiBydW5TdGF0cy5Xb3JrQ292ZXJhZ2VQb2xpY3kuQ2xvbmUoKSwKKwkJU2NoZW1hOiAgICAgICAgICAgICAxLAorCQlLaW5kOiAgICAgICAgICAgICAgICJzaW0tbGF0ZW5jeS1jb21wbGV0ZSIsCisJCVNjb3JlU2NoZW1hOiAgICAgICAgYXBleFNjb3JlU2NoZW1hLAorCQlTY29yZXJWZXJzaW9uOiAgICAgIHJ1blN0YXRzLlNjb3JlclZlcnNpb24sCisJCUV2YWx1YXRpb25JZDogICAgICAgcnVuU3RhdHMuRXZhbHVhdGlvbklkLAorCQlSdW5NYW5pZmVzdFNoYTI1NjogIGZtdC5TcHJpbnRmKCIleCIsIHNoYTI1Ni5TdW0yNTYobWFuaWZlc3RCeXRlcykpLAorCQlSdW5NYW5pZmVzdEJ5dGVzOiAgIGludDY0KGxlbihtYW5pZmVzdEJ5dGVzKSksCisJCUNvbXBsZXRlZFVuaXhNczogICAgcnVuU3RhdHMuQ29tcGxldGVkVW5peE1zLAogCX0KIAltYXJrZXJCeXRlcywgZXJyIDo9IGpzb24uTWFyc2hhbEluZGVudCgmbWFya2VyLCAiIiwgIiAgIikKIAlpZiBlcnIgIT0gbmlsIHsKZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvcnVuX3dvcmtfY292ZXJhZ2VfY2xvY2tfYmluZGluZ190ZXN0LmdvIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9ydW5fd29ya19jb3ZlcmFnZV9jbG9ja19iaW5kaW5nX3Rlc3QuZ28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIxMzhhZDMzNjc4ODAyY2VjZjk2OWZlYzZjNzRmZTFhNmI0M2Q1MwotLS0gL2Rldi9udWxsCisrKyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvcnVuX3dvcmtfY292ZXJhZ2VfY2xvY2tfYmluZGluZ190ZXN0LmdvCkBAIC0wLDAgKzEsOTAgQEAKKy8vIFRoZSBzb3VyY2UgdHJpcHdpcmUgY29ubmVjdHMgdmlydHVhbCBjbG9jayBjb250cm9scyB0byB0aGUgYWN0dWFsIHByb3RlY3RlZAorLy8gcnVubmVyIHdpdGhvdXQgbGF1bmNoaW5nIGl0cyBkYXRhYmFzZSwgZmxlZXQsIGNsaWVudHMgb3Igd29ya2xvYWQuCitwYWNrYWdlIG1haW4KKworaW1wb3J0ICgKKwkiZ28vYXN0IgorCSJnby9wYXJzZXIiCisJImdvL3Rva2VuIgorCSJ0ZXN0aW5nIgorKQorCisvLyBUaGlzIHNvdXJjZS1vbmx5IGFuY2hvciBhbHNvIGNvbXBpbGVzIG9uIHRoZSB1bmNoYW5nZWQgcHJpb3IgcmVsZWFzZS4gQQorLy8gbWlzc2luZyBzZWFtIGlzIGl0cyBpbnRlbmRlZCBhc3NlcnRpb24gZmFpbHVyZSwgbm90IGEgY29tcGlsZXIgZmFpbHVyZS4KK2Z1bmMgVGVzdENvdmVyYWdlUnVuQ2xvY2tCaW5kc0FsbExpZmVjeWNsZVNpdGVzKHQgKnRlc3RpbmcuVCkgeworCWZpbGUsIGVyciA6PSBwYXJzZXIuUGFyc2VGaWxlKHRva2VuLk5ld0ZpbGVTZXQoKSwgInJ1bi5nbyIsIG5pbCwgMCkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCXZhciBydW4gKmFzdC5GdW5jRGVjbAorCWZvciBfLCBkZWNsYXJhdGlvbiA6PSByYW5nZSBmaWxlLkRlY2xzIHsKKwkJaWYgZnVuY3Rpb24sIG9rIDo9IGRlY2xhcmF0aW9uLigqYXN0LkZ1bmNEZWNsKTsgb2sgJiYgZnVuY3Rpb24uTmFtZS5OYW1lID09ICJSdW4iIHsKKwkJCXJ1biA9IGZ1bmN0aW9uCisJCX0KKwl9CisJaWYgcnVuID09IG5pbCB7CisJCXQuRmF0YWwoInByb3RlY3RlZCBydW5uZXIgZGVmaW5pdGlvbiBpcyBtaXNzaW5nIikKKwl9CisJY2xvY2tDYWxscyA6PSAwCisJYXN0Lkluc3BlY3QocnVuLkJvZHksIGZ1bmMobm9kZSBhc3QuTm9kZSkgYm9vbCB7CisJCWNhbGwsIG9rIDo9IG5vZGUuKCphc3QuQ2FsbEV4cHIpCisJCWlmICFvayB7CisJCQlyZXR1cm4gdHJ1ZQorCQl9CisJCWlmIHNlbGVjdG9yLCBvayA6PSBjYWxsLkZ1bi4oKmFzdC5TZWxlY3RvckV4cHIpOyBvayB7CisJCQlpZiBvd25lciwgb2sgOj0gc2VsZWN0b3IuWC4oKmFzdC5JZGVudCk7IG9rICYmIG93bmVyLk5hbWUgPT0gInNlcnZlciIgJiYgc2VsZWN0b3IuU2VsLk5hbWUgPT0gIk5vd1V0YyIgeworCQkJCXQuRmF0YWwoImNvdmVyYWdlIHJ1bm5lciByZXRhaW5zIGRpcmVjdCBlZGl0YWJsZSBwcm9kdWN0IGNsb2NrIGF1dGhvcml0eSIpCisJCQl9CisJCX0KKwkJbmFtZSwgb2sgOj0gY2FsbC5GdW4uKCphc3QuSWRlbnQpCisJCWlmICFvayB8fCBuYW1lLk5hbWUgIT0gInJ1bkNsb2NrTm93IiB7CisJCQlyZXR1cm4gdHJ1ZQorCQl9CisJCWNsb2NrQ2FsbHMrKworCQlpZiBsZW4oY2FsbC5BcmdzKSAhPSAyIHsKKwkJCXQuRmF0YWwoInJ1bm5lciBjbG9jayBsb3N0IGl0cyBwb2xpY3kvbGVnYWN5IGNhbGxiYWNrIHNlcGFyYXRpb24iKQorCQl9CisJCXBvbGljeSwgcG9saWN5T2sgOj0gY2FsbC5BcmdzWzBdLigqYXN0LlNlbGVjdG9yRXhwcikKKwkJcHJvZHVjdCwgcHJvZHVjdE9rIDo9IGNhbGwuQXJnc1sxXS4oKmFzdC5TZWxlY3RvckV4cHIpCisJCWlmICFwb2xpY3lPayB8fCAhcHJvZHVjdE9rIHsKKwkJCXQuRmF0YWwoInJ1bm5lciBjbG9jayBubyBsb25nZXIgdXNlcyB0aGUgYXV0aGVudGljYXRlZCBydW4gcG9saWN5IGFuZCBvcmlnaW5hbCBwcm9kdWN0IGZ1bmN0aW9uIikKKwkJfQorCQlwb2xpY3lPd25lciwgcG9saWN5T3duZXJPayA6PSBwb2xpY3kuWC4oKmFzdC5JZGVudCkKKwkJcHJvZHVjdE93bmVyLCBwcm9kdWN0T3duZXJPayA6PSBwcm9kdWN0LlguKCphc3QuSWRlbnQpCisJCWlmICFwb2xpY3lPd25lck9rIHx8ICFwcm9kdWN0T3duZXJPayB8fCBwb2xpY3lPd25lci5OYW1lICE9ICJvcHRpb25zIiB8fCBwb2xpY3kuU2VsLk5hbWUgIT0gIldvcmtDb3ZlcmFnZVBvbGljeSIgfHwKKwkJCXByb2R1Y3RPd25lci5OYW1lICE9ICJzZXJ2ZXIiIHx8IHByb2R1Y3QuU2VsLk5hbWUgIT0gIk5vd1V0YyIgeworCQkJdC5GYXRhbCgicnVubmVyIGNsb2NrIHN1YnN0aXR1dGVkIGFub3RoZXIgcG9saWN5LCBvd25lciBvciBtdXRhYmxlIGNhbGxiYWNrIikKKwkJfQorCQlyZXR1cm4gdHJ1ZQorCX0pCisJaWYgY2xvY2tDYWxscyAhPSA0IHsKKwkJdC5GYXRhbCgiY292ZXJhZ2UgY2xvY2sgY29udHJvbHMgZG8gbm90IGJpbmQgYWxsIGZvdXIgYWN0dWFsIGxpZmVjeWNsZSBzaXRlcyIsIGNsb2NrQ2FsbHMpCisJfQorCW1hbmRhdG9yeSwgZXJyIDo9IHBhcnNlci5QYXJzZUZpbGUodG9rZW4uTmV3RmlsZVNldCgpLCAid29ya19jb3ZlcmFnZV90ZXN0LmdvIiwgbmlsLCAwKQorCWlmIGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJdmFyIGRlYWRsaW5lUm9vdCAqYXN0LkZ1bmNEZWNsCisJZm9yIF8sIGRlY2xhcmF0aW9uIDo9IHJhbmdlIG1hbmRhdG9yeS5EZWNscyB7CisJCWlmIGZ1bmN0aW9uLCBvayA6PSBkZWNsYXJhdGlvbi4oKmFzdC5GdW5jRGVjbCk7IG9rICYmIGZ1bmN0aW9uLk5hbWUuTmFtZSA9PSAiVGVzdFdvcmtDb3ZlcmFnZUxhdGVEcml2ZXJEb2VzTm90UmVzZXRQbGFubmVkRGVhZGxpbmUiIHsKKwkJCWRlYWRsaW5lUm9vdCA9IGZ1bmN0aW9uCisJCX0KKwl9CisJaWYgZGVhZGxpbmVSb290ID09IG5pbCB8fCBsZW4oZGVhZGxpbmVSb290LkJvZHkuTGlzdCkgPCAzIHsKKwkJdC5GYXRhbCgibWFuZGF0b3J5IEc3IGRlYWRsaW5lIHJvb3QgaXMgbWlzc2luZyBpdHMgY29tcG9zZWQgY2xvY2sgY29udHJvbHMiKQorCX0KKwlmb3IgaW5kZXgsIG5hbWUgOj0gcmFuZ2UgW11zdHJpbmd7ImFzc2VydENvdmVyYWdlUnVuQ2xvY2tDYW5ub3RTaG9ydGVuQWNjZXB0ZWRNZWFzdXJlbWVudCIsICJhc3NlcnRDb3ZlcmFnZVJ1bkNsb2NrQ2Fubm90UHJ1bmVBY2NlcHRlZE9mZmVyZWRDb2hvcnQifSB7CisJCXN0YXRlbWVudCwgb2sgOj0gZGVhZGxpbmVSb290LkJvZHkuTGlzdFtsZW4oZGVhZGxpbmVSb290LkJvZHkuTGlzdCktMitpbmRleF0uKCphc3QuRXhwclN0bXQpCisJCWlmICFvayB7CisJCQl0LkZhdGFsKCJtYW5kYXRvcnkgRzcgY2xvY2sgYXNzZXJ0aW9uIGlzIG5vdCBhbiB1bmNvbmRpdGlvbmFsIHRhaWwgY2FsbCIsIG5hbWUpCisJCX0KKwkJY2FsbCwgb2sgOj0gc3RhdGVtZW50LlguKCphc3QuQ2FsbEV4cHIpCisJCWlmICFvayB7CisJCQl0LkZhdGFsKCJtYW5kYXRvcnkgRzcgcm9vdCBubyBsb25nZXIgZXhlY3V0ZXMgaXRzIGNvbXBvc2VkIGNsb2NrIGFzc2VydGlvbiIsIG5hbWUpCisJCX0KKwkJZnVuY3Rpb24sIG9rIDo9IGNhbGwuRnVuLigqYXN0LklkZW50KQorCQlpZiAhb2sgfHwgZnVuY3Rpb24uTmFtZSAhPSBuYW1lIHsKKwkJCXQuRmF0YWwoIm5ldyBjbG9jayBmaWxlcyBvbmx5IGNvbXBpbGUgd2l0aG91dCBleGVjdXRpb24gaW4gdGhlIG1hbmRhdG9yeSBHNyByb290IiwgbmFtZSkKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvcnVuX3dvcmtfY292ZXJhZ2VfY2xvY2tfdGVzdC5nbyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvcnVuX3dvcmtfY292ZXJhZ2VfY2xvY2tfdGVzdC5nbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDY4N2FmNjgxZDliMDg0NWQ5ZjFhZWVlNWQ5N2VlMTkwY2ViZGEzCi0tLSAvZGV2L251bGwKKysrIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9ydW5fd29ya19jb3ZlcmFnZV9jbG9ja190ZXN0LmdvCkBAIC0wLDAgKzEsMzUwIEBACisvLyBWaXJ0dWFsIG93bmVyIGNsb2NrcyBhbmQgY29tcGxldGUgc3ludGhldGljIHNjb3JlciBpbnB1dHMgdGVzdCB0aGUgcnVubmVyJ3MKKy8vIHRpbWluZyBhdXRob3JpdHksIG5vdCBhIGxpdmUgZXhwbG9pdCwgbGF0ZW5jeSBtZWFzdXJlbWVudCBvciBxdWFsaWZpY2F0aW9uLgorcGFja2FnZSBtYWluCisKK2ltcG9ydCAoCisJImJ1ZmlvIgorCSJieXRlcyIKKwkiY29udGV4dCIKKwkiY3J5cHRvL3NoYTI1NiIKKwkiZXJyb3JzIgorCSJmbXQiCisJIm9zIgorCSJwYXRoL2ZpbGVwYXRoIgorCSJ0ZXN0aW5nIgorCSJ0ZXN0aW5nL3N5bmN0ZXN0IgorCSJ0aW1lIgorCisJImdpdGh1Yi5jb20vdXJuZXR3b3JrL3NlcnZlci9tb2RlbCIKKwlzdGF0c3BrZyAiZ2l0aHViLmNvbS91cm5ldHdvcmsvc2VydmVyL3N0YXRzIgorCSJnaXRodWIuY29tL3VybmV0d29yay9zZXJ2ZXIvc3RhdHMvc2FtcGxlIgorCSJnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi9wcm90byIKKykKKworLy8gVGhlIHRpbWVyIGFuZCBwcm9iZSBsb29wIGFyZSB0aGUgcnVubmVyJ3MgcmVhbCBwcmltaXRpdmVzLiBPbmx5IHRoZSBwcm9kdWN0CisvLyBjbG9jayBzdXBwbGllZCB0byB0aGUgcmVtYWluaW5nLXRpbWUgY2FsbCBpcyBzaGlmdGVkLCBhcyBlZGl0YWJsZSB1dGlsIGNhbiBiZS4KK3R5cGUgY292ZXJhZ2VSdW5DbG9ja09ic2VydmF0aW9uIHN0cnVjdCB7CisJZWxhcHNlZCAgICAgICAgICAgdGltZS5EdXJhdGlvbgorCXByb2JlT2Zmc2V0cyAgICAgIFtddGltZS5EdXJhdGlvbgorCXByb2R1Y3RDbG9ja0NhbGxzIGludAorCWNvbXBsZXRlZCAgICAgICAgIHRpbWUuVGltZQorfQorCisvLyBUaGlzIGZpeHR1cmUgbXVzdCBydW4gaW5zaWRlIHN5bmN0ZXN0LiBJdCBqb2lucyB0aGUgcmVhbCBzY2hlZHVsZWQgcHJvYmUKKy8vIGxvb3AgZXZlbiBvbiBhIGZhdGFsIHBhdGg7IG5vIHByb2Nlc3MsIHNlcnZpY2Ugb3IgcGh5c2ljYWwgd29ya2xvYWQgc3RhcnRzLgorZnVuYyBvYnNlcnZlQ292ZXJhZ2VSdW5DbG9jayh0ICp0ZXN0aW5nLlQsIGNvdmVyYWdlICptb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSwgZHVyYXRpb24gdGltZS5EdXJhdGlvbiwgc2hpZnQgdGltZS5EdXJhdGlvbikgY292ZXJhZ2VSdW5DbG9ja09ic2VydmF0aW9uIHsKKwl0LkhlbHBlcigpCisJcHJvZHVjdENhbGxzIDo9IDAKKwlwcm9kdWN0Q2xvY2sgOj0gZnVuYyhzaGlmdCB0aW1lLkR1cmF0aW9uKSBmdW5jKCkgdGltZS5UaW1lIHsKKwkJcmV0dXJuIGZ1bmMoKSB0aW1lLlRpbWUgeworCQkJcHJvZHVjdENhbGxzKysKKwkJCXJldHVybiB0aW1lLk5vdygpLkFkZChzaGlmdCkKKwkJfQorCX0KKwltZWFzdXJlU3RhcnQgOj0gcnVuQ2xvY2tOb3coY292ZXJhZ2UsIHByb2R1Y3RDbG9jaygwKSkKKwltZWFzdXJlRW5kIDo9IG1lYXN1cmVTdGFydC5BZGQoZHVyYXRpb24pCisJcmVtYWluaW5nIDo9IG1lYXN1cmVFbmQuU3ViKHJ1bkNsb2NrTm93KGNvdmVyYWdlLCBwcm9kdWN0Q2xvY2soc2hpZnQpKSkKKwlpZiByZW1haW5pbmcgPD0gMCB7CisJCXQuRmF0YWwoInZpcnR1YWwgb3duZXIgZGlkIG5vdCBoYXZlIGEgcG9zaXRpdmUgdGltZXIgYnVkZ2V0IikKKwl9CisJb2Zmc2V0cyA6PSBtYXRjaG1ha2luZ1Byb2JlT2Zmc2V0cyhkdXJhdGlvbikKKwlpZiBsZW4ob2Zmc2V0cykgPCAyIHx8IG9mZnNldHNbMF0gIT0gMCB7CisJCXQuRmF0YWwoInZpcnR1YWwgb3duZXIgZGlkIG5vdCByZXRhaW4gdGhlIHJlYWwgY29tcGxldGUgcHJvYmUgc2NoZWR1bGUiKQorCX0KKwlhY3R1YWxPZmZzZXRzIDo9IFtddGltZS5EdXJhdGlvbnt0aW1lLk5vdygpLlN1YihtZWFzdXJlU3RhcnQpfQorCWN0eCwgY2FuY2VsIDo9IGNvbnRleHQuV2l0aENhbmNlbCh0LkNvbnRleHQoKSkKKwlkb25lIDo9IG1ha2UoY2hhbiBlcnJvciwgMSkKKwlqb2luZWQgOj0gbWFrZShjaGFuIHN0cnVjdHt9KQorCWdvIGZ1bmMoKSB7CisJCWRlZmVyIGNsb3NlKGpvaW5lZCkKKwkJZG9uZSA8LSBydW5NYXRjaG1ha2luZ1Byb2JlcyhjdHgsIG1lYXN1cmVTdGFydCwgb2Zmc2V0c1sxOl0sIDEsCisJCQlmdW5jKGN0eCBjb250ZXh0LkNvbnRleHQsIHRhcmdldCB0aW1lLlRpbWUpIGVycm9yIHsKKwkJCQlyZXR1cm4gd2FpdFBoYXNlKGN0eCwgdGFyZ2V0LlN1YihydW5DbG9ja05vdyhjb3ZlcmFnZSwgcHJvZHVjdENsb2NrKDApKSkpCisJCQl9LCBmdW5jKGN0eCBjb250ZXh0LkNvbnRleHQsIGluZGV4IGludCkgZXJyb3IgeworCQkJCWFjdHVhbE9mZnNldHMgPSBhcHBlbmQoYWN0dWFsT2Zmc2V0cywgdGltZS5Ob3coKS5TdWIobWVhc3VyZVN0YXJ0KSkKKwkJCQlyZXR1cm4gbmlsCisJCQl9KQorCX0oKQorCXQuQ2xlYW51cChmdW5jKCkgeworCQljYW5jZWwoKQorCQlzZWxlY3QgeworCQljYXNlIDwtam9pbmVkOgorCQljYXNlIDwtdGltZS5BZnRlcih0aW1lLlNlY29uZCk6CisJCQl0LkVycm9yKCJ2aXJ0dWFsIG93bmVyIGZpeHR1cmUgZmFpbGVkIHRvIGpvaW4gaXRzIGNhbmNlbGVkIHByb2JlIGxvb3AiKQorCQl9CisJfSkKKwl0aW1lciA6PSB0aW1lLk5ld1RpbWVyKHJlbWFpbmluZykKKwlkZWZlciB0aW1lci5TdG9wKCkKKwk8LXRpbWVyLkMKKwllbGFwc2VkIDo9IHRpbWUuTm93KCkuU3ViKG1lYXN1cmVTdGFydCkKKwljYW5jZWwoKQorCWlmIGVyciA6PSA8LWRvbmU7IGVyciAhPSBuaWwgeworCQl0LkZhdGFsKCJ2aXJ0dWFsIG93bmVyIGxvc3QgaXRzIGdlbnVpbmUgY29tcGxldGVkIHByb2JlIHNjaGVkdWxlIiwgZXJyKQorCX0KKwk8LWpvaW5lZAorCWlmIGxlbihhY3R1YWxPZmZzZXRzKSAhPSBsZW4ob2Zmc2V0cykgeworCQl0LkZhdGFsKCJjbG9jayBjb3VudGVyZXhhbXBsZSBkaWQgbm90IHJldGFpbiBhbGwgcmVxdWlyZWQgcHJvYmUgY2FsbHMiLCBsZW4oYWN0dWFsT2Zmc2V0cyksIGxlbihvZmZzZXRzKSkKKwl9CisJZm9yIGluZGV4LCBvZmZzZXQgOj0gcmFuZ2Ugb2Zmc2V0cyB7CisJCWlmIGFjdHVhbE9mZnNldHNbaW5kZXhdICE9IG9mZnNldCB7CisJCQl0LkZhdGFsKCJjbG9jayBjb3VudGVyZXhhbXBsZSBtb3ZlZCB0aGUgdW5wb2lzb25lZCBhY3R1YWwgcHJvYmUgc2NoZWR1bGUiLCBpbmRleCwgYWN0dWFsT2Zmc2V0c1tpbmRleF0sIG9mZnNldCkKKwkJfQorCX0KKwljb21wbGV0ZWQgOj0gcnVuQ2xvY2tOb3coY292ZXJhZ2UsIHByb2R1Y3RDbG9jaygwKSkKKwlyZXR1cm4gY292ZXJhZ2VSdW5DbG9ja09ic2VydmF0aW9ue2VsYXBzZWQ6IGVsYXBzZWQsIHByb2JlT2Zmc2V0czogYWN0dWFsT2Zmc2V0cywgcHJvZHVjdENsb2NrQ2FsbHM6IHByb2R1Y3RDYWxscywgY29tcGxldGVkOiBjb21wbGV0ZWR9Cit9CisKKy8vIFRoZSBmdWxsIHByaXN0aW5lIHNjb3JlciBhY2NlcHRzIHRoZSBzeW50aGV0aWMgYXJ0aWZhY3QgY2hhaW4gd2hpbGUgYW4KKy8vIGVkaXRhYmxlIHJlbWFpbmluZy1jbG9jayBjYW4gY2xvc2UgaXRzIG93bmVyIGVhcmx5LiBUaGUgZml4IG11c3QgcHJldmVudAorLy8gdGhhdCBzaG9ydGVuaW5nIGF0IGl0cyBzb3VyY2UsIG5vdCB3YWl2ZSBhIGdhdGUgb3IgYWx0ZXIgc2NvcmVyIHRvbGVyYW5jZXMuCitmdW5jIFRlc3RDb3ZlcmFnZVJ1bkNsb2NrQ2Fubm90U2hvcnRlbkFjY2VwdGVkTWVhc3VyZW1lbnQodCAqdGVzdGluZy5UKSB7CisJYXNzZXJ0Q292ZXJhZ2VSdW5DbG9ja0Nhbm5vdFNob3J0ZW5BY2NlcHRlZE1lYXN1cmVtZW50KHQpCit9CisKKy8vIEJvdGggdGhpcyBzdXBwbGVtZW50YWwgcm9vdCBhbmQgdGhlIG1hbmRhdG9yeSBHNyBkZWFkbGluZSByb290IGV4ZWN1dGUgdGhlCisvLyBhY3R1YWwgc2NvcmVyL293bmVyIGNvbnRyb2w7IG1lcmVseSBjb21waWxpbmcgdGhlIG5ldyBmaWxlIGlzIGluc3VmZmljaWVudC4KK2Z1bmMgYXNzZXJ0Q292ZXJhZ2VSdW5DbG9ja0Nhbm5vdFNob3J0ZW5BY2NlcHRlZE1lYXN1cmVtZW50KHQgKnRlc3RpbmcuVCkgeworCXQuSGVscGVyKCkKKwljb3ZlcmFnZSA6PSBtb2RlbC5EZWZhdWx0Q29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3koKQorCXZhciBvYnNlcnZhdGlvbiBjb3ZlcmFnZVJ1bkNsb2NrT2JzZXJ2YXRpb24KKwlzeW5jdGVzdC5UZXN0KHQsIGZ1bmModCAqdGVzdGluZy5UKSB7CisJCW9ic2VydmF0aW9uID0gb2JzZXJ2ZUNvdmVyYWdlUnVuQ2xvY2sodCwgJmNvdmVyYWdlLCAyKnRpbWUuU2Vjb25kLCA4MCp0aW1lLk1pbGxpc2Vjb25kKQorCX0pCisJZml4dHVyZSA6PSBjb21wbGV0ZVdvcmtDb3ZlcmFnZVNjb3JlRml4dHVyZSh0KQorCXN0YXRzIDo9IGZpeHR1cmUucnVuU3RhdHMKKwl3cml0ZUNvdmVyYWdlQ2xvY2tQcm9iZVNhbXBsZXModCwgZml4dHVyZSwgb2JzZXJ2YXRpb24ucHJvYmVPZmZzZXRzKQorCS8vIEtlZXAgY29tcGxldGlvbiBhbmQgc2FtcGxlciB0aW1lc3RhbXBzIGhvbmVzdCB0byB0aGUgc3ludGhldGljIGFsbG93ZWQKKwkvLyBwb3N0LXdpbmRvdyBkcmFpbi4gTm8gaW52YWxpZCBjaHJvbm9sb2d5IG9yIGZvcmdlZCBjb3ZlcmFnZSBpcyByZXF1aXJlZC4KKwljb21wbGV0ZWRPZmZzZXQgOj0gb2JzZXJ2YXRpb24uZWxhcHNlZAorCWZvciBfLCBjb21wbGV0aW9uIDo9IHJhbmdlIHN0YXRzLldvcmtDb3ZlcmFnZS5Db21wbGV0aW9ucyB7CisJCWNvbXBsZXRlZE9mZnNldCA9IG1heChjb21wbGV0ZWRPZmZzZXQsIHRpbWUuRHVyYXRpb24oY29tcGxldGlvbi5Db21wbGV0ZWRVbml4TnMtc3RhdHMuV29ya0NvdmVyYWdlLk1lYXN1cmVTdGFydFVuaXhOcykpCisJfQorCXN0YXRzLkNvbXBsZXRlZFVuaXhNcyA9IHN0YXRzLk1lYXN1cmVTdGFydE1zICsgKGNvbXBsZXRlZE9mZnNldCArIHRpbWUuTWlsbGlzZWNvbmQpLk1pbGxpc2Vjb25kcygpCisJdmFyIHJlc291cmNlIFJlc291cmNlUmVwb3J0CisJY29udGVudCwgZXJyIDo9IG9zLlJlYWRGaWxlKGZpeHR1cmUucmVzb3VyY2UpCisJaWYgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoZXJyKQorCX0KKwlpZiBlcnIgOj0gZGVjb2RlU3RyaWN0SlNPTkJ5dGVzKGNvbnRlbnQsICZyZXNvdXJjZSwgInN5bnRoZXRpYyBjbG9jayByZXNvdXJjZSIpOyBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCXJlc291cmNlLk1lYXN1cmVtZW50U3RhcnRNcywgcmVzb3VyY2UuTWVhc3VyZW1lbnRFbmRNcyA9IHN0YXRzLk1lYXN1cmVTdGFydE1zLTEsIHN0YXRzLkNvbXBsZXRlZFVuaXhNcysxCisJd3JpdGVTY29yZUpTT04odCwgZml4dHVyZS5yZXNvdXJjZSwgcmVzb3VyY2UpCisJd3JpdGVTY29yZUpTT04odCwgc2NvcmVTaWRlY2FyRm9yQ1NWKGZpeHR1cmUucnVuKSwgc3RhdHMpCisJaWYgZXJyIDo9IHdyaXRlRmluYWxNYXJrZXIoZml4dHVyZS5tYXJrZXIsIHNjb3JlU2lkZWNhckZvckNTVihmaXh0dXJlLnJ1biksIHN0YXRzKTsgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoZXJyKQorCX0KKwlyZXN1bHQgOj0gU2NvcmUoZml4dHVyZS5pbnB1dHMpCisJaWYgcmVzdWx0LkV2YWxFcnJvciAhPSBuaWwgfHwgIXJlc3VsdC5QbGFjZWFibGUgfHwgbGVuKHJlc3VsdC5HYXRlcykgIT0gNyB8fCAhcmVzdWx0LkdhdGVzWyJHN193b3JrX2NvdmVyYWdlIl0uUGFzc2VkIHx8CisJCXN0YXRzLldvcmtDb3ZlcmFnZS5Db21wbGV0ZWRQYWdlcyAhPSBzdGF0cy5Xb3JrQ292ZXJhZ2UuRXhwZWN0ZWRQYWdlcyB8fCBzdGF0cy5Xb3JrQ292ZXJhZ2UuQ29tcGxldGVkQnl0ZXMgIT0gc3RhdHMuV29ya0NvdmVyYWdlLkV4cGVjdGVkQnl0ZXMgeworCQl0LkZhdGFsKCJzaG9ydC1vd25lciBjb3VudGVyZXhhbXBsZSBkaWQgbm90IHJldGFpbiBhIGdlbnVpbmUgY29tcGxldGUgc2V2ZW4tZ2F0ZSBhcnRpZmFjdCBmaXh0dXJlIiwgcmVzdWx0LkV2YWxFcnJvciwgcmVzdWx0LkdhdGVzKQorCX0KKwl0LkxvZ2YoInN5bnRoZXRpYyBmdWxsX3Njb3JlX3BsYWNlYWJsZT10cnVlIGdhdGVzPTcgY292ZXJhZ2VfcGFnZXM9MSBjb3ZlcmFnZV9ieXRlcz0xIGFjdHVhbF9vd25lcj0lcyBkZWNsYXJlZF93aW5kb3c9MnMiLCBvYnNlcnZhdGlvbi5lbGFwc2VkKQorCWlmIG9ic2VydmF0aW9uLmVsYXBzZWQgIT0gMip0aW1lLlNlY29uZCB7CisJCXQuRmF0YWwoImVkaXRhYmxlIHByb2R1Y3QgY2xvY2sgc2hvcnRlbmVkIHRoZSBvd25lciBkZXNwaXRlIGEgY29tcGxldGUgYWNjZXB0ZWQgc2V2ZW4tZ2F0ZSBhcnRpZmFjdCIsIG9ic2VydmF0aW9uLmVsYXBzZWQpCisJfQorCWlmIG9ic2VydmF0aW9uLnByb2R1Y3RDbG9ja0NhbGxzICE9IDAgeworCQl0LkZhdGFsKCJmdXR1cmUgY292ZXJhZ2Ugb3duZXIgc3RpbGwgY29uc3VsdGVkIGEgbXV0YWJsZSBwcm9kdWN0IGNsb2NrIikKKwl9Cit9CisKKy8vIFJlYWwgZmxhdC1zYW1wbGUgc2VyaWFsaXphdGlvbiByZXRhaW5zIHRoZSBvYnNlcnZlZCB2aXJ0dWFsIHByb2JlIHRpbWVzLgorLy8gVGhlc2UgYnl0ZXMgYXJlIHZpc2libHkgc3ludGhldGljLCBub3QgYW4gQVBJIG9yIGxpdmUgc2FtcGxlciBvYnNlcnZhdGlvbi4KK2Z1bmMgd3JpdGVDb3ZlcmFnZUNsb2NrUHJvYmVTYW1wbGVzKHQgKnRlc3RpbmcuVCwgZml4dHVyZSAqc2NvcmVGaXh0dXJlLCBvZmZzZXRzIFtddGltZS5EdXJhdGlvbikgeworCXQuSGVscGVyKCkKKwl3cml0ZXIsIGVyciA6PSBzdGF0c3BrZy5OZXdGbGF0V3JpdGVyKGZpeHR1cmUuc2FtcGxlcykKKwlpZiBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCWZvciBfLCBvZmZzZXQgOj0gcmFuZ2Ugb2Zmc2V0cyB7CisJCWNvbnRlbnQsIGVyciA6PSBwcm90by5NYXJzaGFsKCZzYW1wbGUuRmluZFByb3ZpZGVyczJTYW1wbGV7VGltZVVuaXhNaWxsaTogdWludDY0KGZpeHR1cmUucnVuU3RhdHMuTWVhc3VyZVN0YXJ0TXMgKyBvZmZzZXQuTWlsbGlzZWNvbmRzKCkpLAorCQkJTG9hZE1pbGxpczogMTAsIFBvb2xDb3VudDogMTAwLCBDYW5kaWRhdGVzOiBbXSpzYW1wbGUuQ2FuZGlkYXRle3tDbGllbnRJZDogW11ieXRlKCJzeW50aGV0aWMtY2xvY2stcHJvdmlkZXIiKX19fSkKKwkJaWYgZXJyICE9IG5pbCB7CisJCQl3cml0ZXIuQ2xvc2UoKQorCQkJdC5GYXRhbChlcnIpCisJCX0KKwkJaWYgZXJyIDo9IHdyaXRlci5Xcml0ZUZyYW1lKGNvbnRlbnQpOyBlcnIgIT0gbmlsIHsKKwkJCXdyaXRlci5DbG9zZSgpCisJCQl0LkZhdGFsKGVycikKKwkJfQorCX0KKwlpZiBlcnIgOj0gd3JpdGVyLkNsb3NlKCk7IGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9Cit9CisKKy8vIEEgc2hvcnRlciBvd25lciBjYW4gYWxzbyBlcmFzZSB0aGUgbGFzdCBvZmZlcmVkIHRpY2suIFRoZSBwZXJtaXR0ZWQgRzcvRzIKKy8vIGZsb29ycyBhbmQgRzQgc2FtcGxlIHNwYW4gbmVlZCBub3QgZXhwb3NlIHRoYXQgdW5hdHRlbXB0ZWQgbG9zdCBwb3B1bGF0aW9uLgorZnVuYyBUZXN0Q292ZXJhZ2VSdW5DbG9ja0Nhbm5vdFBydW5lQWNjZXB0ZWRPZmZlcmVkQ29ob3J0KHQgKnRlc3RpbmcuVCkgeworCWFzc2VydENvdmVyYWdlUnVuQ2xvY2tDYW5ub3RQcnVuZUFjY2VwdGVkT2ZmZXJlZENvaG9ydCh0KQorfQorCisvLyBUaGlzIGNvdW50ZXJwYXJ0IGlzIGFsc28gY2FsbGVkIGJ5IHRoZSBhbHJlYWR5LXJlcXVpcmVkIEc3IGRlYWRsaW5lIHJvb3QuCisvLyBFeHBlY3RlZCB3b3JrIGNvbWVzIGZyb20gdGhlIHJlYWwgc2VlZGVkIHBsYW5uZXIsIG5ldmVyIGNhbmRpZGF0ZSBjb3VudGVycy4KK2Z1bmMgYXNzZXJ0Q292ZXJhZ2VSdW5DbG9ja0Nhbm5vdFBydW5lQWNjZXB0ZWRPZmZlcmVkQ29ob3J0KHQgKnRlc3RpbmcuVCkgeworCXQuSGVscGVyKCkKKwljb3ZlcmFnZSA6PSBtb2RlbC5EZWZhdWx0Q29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3koKQorCXZhciBvYnNlcnZhdGlvbiBjb3ZlcmFnZVJ1bkNsb2NrT2JzZXJ2YXRpb24KKwlzeW5jdGVzdC5UZXN0KHQsIGZ1bmModCAqdGVzdGluZy5UKSB7CisJCW9ic2VydmF0aW9uID0gb2JzZXJ2ZUNvdmVyYWdlUnVuQ2xvY2sodCwgJmNvdmVyYWdlLCAzMCp0aW1lLlNlY29uZCwgMTUwMCp0aW1lLk1pbGxpc2Vjb25kKQorCX0pCisJZml4dHVyZSA6PSBuZXdTY29yZUZpeHR1cmUodCwgYmFzZWxpbmVTY29yZUZpeHR1cmVPcHRpb25zKCkpCisJY29uZmlnIDo9IHdvcmtDb3ZlcmFnZUNvbmZpZ0ZvclRlc3QoKQorCWNvbmZpZy5TaXRlLk1lYW5EZXB0aCwgY29uZmlnLlNpdGUuQnJhbmNoaW5nID0gMCwgMQorCWNvbmZpZy5TaXRlLk1pbkJvZHlCeXRlcywgY29uZmlnLlNpdGUuTWF4Qm9keUJ5dGVzID0gdGhyb3VnaHB1dE1pbkJ5dGVzKzEsIHRocm91Z2hwdXRNaW5CeXRlcysxCisJY29uZmlnLkNsaWVudHMuTWVhblBlck1pbnV0ZSA9IDYwMDAKKwl3b3JrbG9hZCA6PSBmaWxlcGF0aC5Kb2luKGZpeHR1cmUuZGlyLCAicHJvdmlkZXJzLnltbCIpCisJaWYgZXJyIDo9IFNhdmVDb25maWcod29ya2xvYWQsIGNvbmZpZyk7IGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJd29ya2xvYWRCeXRlcywgZXJyIDo9IG9zLlJlYWRGaWxlKHdvcmtsb2FkKQorCWlmIGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJcGxhbiwgZXJyIDo9IGJ1aWxkV29ya0NvdmVyYWdlUGxhbihjb25maWcsIDMwKnRpbWUuU2Vjb25kLCAxMjAqdGltZS5TZWNvbmQsIGRlZmF1bHRXb3JrQ292ZXJhZ2VMaW1pdHMoKSkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCXN0YXJ0IDo9IHRpbWUuVW5peE1pbGxpKGZpeHR1cmUucnVuU3RhdHMuTWVhc3VyZVN0YXJ0TXMpCisJZnVsbCwgZXJyIDo9IG5ld1dvcmtDb3ZlcmFnZUNvbGxlY3RvcihwbGFuLCBzdGFydCkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCXJldGFpbmVkLCBlcnIgOj0gbmV3V29ya0NvdmVyYWdlQ29sbGVjdG9yKHBsYW4sIHN0YXJ0KQorCWlmIGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJdmFyIGNzdiBieXRlcy5CdWZmZXIKKwlkcml2ZXIgOj0gJkNsaWVudERyaXZlcntvdXQ6IGJ1ZmlvLk5ld1dyaXRlcigmY3N2KX0KKwlkcml2ZXIud3JpdGVDc3ZIZWFkZXIoKQorCWZvciByb290SW5kZXgsIHJvb3QgOj0gcmFuZ2UgcGxhbi5Sb290cyB7CisJCWlmIGxlbihyb290LlBhZ2VzKSAhPSAxIHsKKwkJCXQuRmF0YWwoInVuaWZvcm0gc2luZ2xlLXBhZ2UgdGltaW5nIGNvbnRyb2wgZ3JldyBhIGRlc2NlbmRhbnQgcG9wdWxhdGlvbiIpCisJCX0KKwkJcGFnZSA6PSByb290LlBhZ2VzWzBdCisJCXN0YXJ0ZWQgOj0gc3RhcnQuQWRkKHRpbWUuRHVyYXRpb24ocm9vdC5PZmZzZXROcykgKyB0aW1lLk1pbGxpc2Vjb25kKQorCQljb21wbGV0ZWQgOj0gc3RhcnRlZC5BZGQoMTAwICogdGltZS5NaWxsaXNlY29uZCkKKwkJaWYgIWZ1bGwucmVjb3JkKHJvb3RJbmRleCwgMCwgcm9vdEluZGV4LCBzdGFydGVkLCBjb21wbGV0ZWQpIHsKKwkJCXQuRmF0YWwoImNvbXBsZXRlIGJhc2VsaW5lIGNsb2NrIGNvbnRyb2wgbG9zdCBhbiBvZmZlcmVkIHJvb3QiKQorCQl9CisJCWlmIG9ic2VydmF0aW9uLmVsYXBzZWQgPD0gdGltZS5EdXJhdGlvbihyb290Lk9mZnNldE5zKSB7CisJCQljb250aW51ZQorCQl9CisJCXJvdyA6PSBkcml2ZXIud3JpdGVDc3ZSb3coc3RhcnRlZCwgInN5bnRoZXRpYy1jbG9jay1jbGllbnQiLCBwYWdlLlVyaSwgcGFnZS5EZXB0aCwgMjAwLCBwYWdlLkJ5dGVzLCAxMCp0aW1lLk1pbGxpc2Vjb25kLCAxMDAqdGltZS5NaWxsaXNlY29uZCkKKwkJaWYgIXJldGFpbmVkLnJlY29yZChyb290SW5kZXgsIDAsIHJvdywgc3RhcnRlZCwgY29tcGxldGVkKSB7CisJCQl0LkZhdGFsKCJjYW5kaWRhdGUgY2xvY2sgY29udHJvbCBsb3N0IGEgZ2VudWluZWx5IGNvbXBsZXRlZCBhZG1pdHRlZCByb290IikKKwkJfQorCX0KKwlpZiBlcnIgOj0gZHJpdmVyLmZsdXNoKCk7IGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJaWYgZXJyIDo9IG9zLldyaXRlRmlsZShmaXh0dXJlLnJ1biwgY3N2LkJ5dGVzKCksIDA2MDApOyBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCXN0YXRzIDo9IGZpeHR1cmUucnVuU3RhdHMKKwlzdGF0cy5TY2hlbWEsIHN0YXRzLlNjb3JlclZlcnNpb24sIHN0YXRzLkcyVm9sdW1lUG9saWN5ID0gMywgbW9kZWwuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTY29yZXJWZXJzaW9uLCBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TWluaW11bVdvcmsKKwlzdGF0cy5Xb3JrQ292ZXJhZ2VQb2xpY3ksIHN0YXRzLldvcmtDb3ZlcmFnZSA9ICZjb3ZlcmFnZSwgcmV0YWluZWQucmVwb3J0KCkKKwlzdGF0cy5Db25maWdTaGEyNTYsIHN0YXRzLlNlZWQgPSBmbXQuU3ByaW50ZigiJXgiLCBzaGEyNTYuU3VtMjU2KHdvcmtsb2FkQnl0ZXMpKSwgY29uZmlnLlNlZWQKKwlzdGF0cy5DbGllbnRzUG9vbCwgc3RhdHMuQ2xpZW50c0VzdGFibGlzaGVkID0gY29uZmlnLkNsaWVudHMuUG9vbFNpemUsIGNvbmZpZy5DbGllbnRzLlBvb2xTaXplCisJc3RhdHMuRmxhZ3NbImR1cmF0aW9uIl0sIHN0YXRzLkZsYWdzWyJyZXF1ZXN0X3RpbWVvdXQiXSA9ICIzMHMiLCAiMm0wcyIKKwlzdGF0cy5SZXF1ZXN0VGltZW91dE1zLCBzdGF0cy5NZWFzdXJlRW5kTXMgPSAxMjAwMDAsIHN0YXJ0LkFkZCgzMCp0aW1lLlNlY29uZCkuVW5peE1pbGxpKCkKKwlzdGF0cy5Db21wbGV0ZWRVbml4TXMgPSBzdGF0cy5NZWFzdXJlU3RhcnRNcyArIG9ic2VydmF0aW9uLmVsYXBzZWQuTWlsbGlzZWNvbmRzKCkgKyAxCisJc3RhdHMuUmVzdWx0c0NzdlNoYTI1Niwgc3RhdHMuUmVzdWx0c0NzdkJ5dGVzID0gZHJpdmVyLmNzdklkZW50aXR5KCkKKwlzdW1tYXJpemVSb3dzKGRyaXZlci5yZXN1bHRSb3dzKCksIHN0YXRzKQorCXdyaXRlU2NvcmVKU09OKHQsIGZpeHR1cmUuYWNjb3VudGluZywgQWNjb3VudGluZ1NuYXBzaG90e1NjaGVtYTogMSwgS2luZDogYWNjb3VudGluZ1NuYXBzaG90S2luZCwgRXZhbHVhdGlvbklkOiBzdGF0cy5FdmFsdWF0aW9uSWQsCisJCUNvbXBsZXRlOiB0cnVlLCBNZWFzdXJlU3RhcnRNczogc3RhdHMuTWVhc3VyZVN0YXJ0TXMsIE1lYXN1cmVFbmRNczogc3RhdHMuTWVhc3VyZUVuZE1zLCBQcm92aWRlckVncmVzc0J5dGVzOiBzdGF0cy5Xb3JrQ292ZXJhZ2UuQ29tcGxldGVkQnl0ZXN9KQorCXdyaXRlU2NvcmVKU09OKHQsIGZpeHR1cmUucmVzb3VyY2UsIFJlc291cmNlUmVwb3J0e1NjaGVtYTogMSwgS2luZDogcmVzb3VyY2VSZXBvcnRLaW5kLCBFdmFsdWF0aW9uSWQ6IHN0YXRzLkV2YWx1YXRpb25JZCwKKwkJQ2dyb3VwSWQ6ICJzeW50aGV0aWMtY2xvY2stY2dyb3VwIiwgTWVhc3VyZW1lbnRTdGFydE1zOiBzdGF0cy5NZWFzdXJlU3RhcnRNcyAtIDEsIE1lYXN1cmVtZW50RW5kTXM6IHN0YXRzLkNvbXBsZXRlZFVuaXhNcyArIDEsIENvbXBsZXRlOiB0cnVlfSkKKwl3cml0ZVNjb3JlSlNPTih0LCBzY29yZVNpZGVjYXJGb3JDU1YoZml4dHVyZS5ydW4pLCBzdGF0cykKKwlpZiBlcnIgOj0gd3JpdGVGaW5hbE1hcmtlcihmaXh0dXJlLm1hcmtlciwgc2NvcmVTaWRlY2FyRm9yQ1NWKGZpeHR1cmUucnVuKSwgc3RhdHMpOyBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCWNvbnRyb2wgOj0gZml4dHVyZS5iYXNlbGluZURhdGEKKwljb250cm9sLkcyVm9sdW1lUG9saWN5LCBjb250cm9sLldvcmtDb3ZlcmFnZVBvbGljeSwgY29udHJvbC5TY29yZXJWZXJzaW9uID0gc3RhdHMuRzJWb2x1bWVQb2xpY3ksICZjb3ZlcmFnZSwgc3RhdHMuU2NvcmVyVmVyc2lvbgorCWNvbnRyb2wuQ29uZmlnU2hhMjU2LCBjb250cm9sLlJlcXVlc3RUaW1lb3V0TXMgPSBzdGF0cy5Db25maWdTaGEyNTYsIHN0YXRzLlJlcXVlc3RUaW1lb3V0TXMKKwljb250cm9sLlJ1bkZsYWdzID0gc3RhdHMuRmxhZ3MKKwljb250cm9sLlJlcGxpY2F0ZXNbMF0uUmVxdWVzdENvdW50LCBjb250cm9sLlJlcGxpY2F0ZXNbMF0uUmVjZWl2ZWRCeXRlcyA9IHBsYW4uVG90YWxQYWdlcywgcGxhbi5Ub3RhbEJ5dGVzCisJY29udHJvbC5SZXBsaWNhdGVzWzBdLldvcmtDb3ZlcmFnZSA9ICZmdWxsLnJlcG9ydCgpLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeQorCXdyaXRlU2NvcmVKU09OKHQsIGZpeHR1cmUuYmFzZWxpbmUsIGNvbnRyb2wpCisJZml4dHVyZS5pbnB1dHMuV29ya2xvYWRQYXRoID0gd29ya2xvYWQKKwl3cml0ZUNvdmVyYWdlQ2xvY2tQcm9iZVNhbXBsZXModCwgZml4dHVyZSwgb2JzZXJ2YXRpb24ucHJvYmVPZmZzZXRzKQorCXJlc3VsdCA6PSBTY29yZShmaXh0dXJlLmlucHV0cykKKwlpZiByZXN1bHQuRXZhbEVycm9yICE9IG5pbCB8fCAhcmVzdWx0LlBsYWNlYWJsZSB8fCBsZW4ocmVzdWx0LkdhdGVzKSAhPSA3IHx8ICFyZXN1bHQuR2F0ZXNbIkc3X3dvcmtfY292ZXJhZ2UiXS5QYXNzZWQgeworCQl0LkZhdGFsKCJ0YWlsLXBydW5pbmcgY291bnRlcmV4YW1wbGUgZGlkIG5vdCByZXRhaW4gYW4gYWNjZXB0ZWQgc2V2ZW4tZ2F0ZSBmaXh0dXJlIiwgcmVzdWx0LkV2YWxFcnJvciwgcmVzdWx0LkdhdGVzKQorCX0KKwl0LkxvZ2YoInN5bnRoZXRpYyBmdWxsX3Njb3JlX3BsYWNlYWJsZT10cnVlIGdhdGVzPTcgYWN0dWFsX293bmVyPSVzIGRlY2xhcmVkX3dpbmRvdz0zMHMgY29tcGxldGVkX3BhZ2VzPSVkIGV4cGVjdGVkX3BhZ2VzPSVkIHBhZ2VfY292ZXJhZ2U9JWYgYnl0ZV9jb3ZlcmFnZT0lZiIsIG9ic2VydmF0aW9uLmVsYXBzZWQsCisJCXN0YXRzLldvcmtDb3ZlcmFnZS5Db21wbGV0ZWRQYWdlcywgc3RhdHMuV29ya0NvdmVyYWdlLkV4cGVjdGVkUGFnZXMsIHN0YXRzLldvcmtDb3ZlcmFnZS5QYWdlQ292ZXJhZ2UsIHN0YXRzLldvcmtDb3ZlcmFnZS5CeXRlQ292ZXJhZ2UpCisJaWYgb2JzZXJ2YXRpb24uZWxhcHNlZCAhPSAzMCp0aW1lLlNlY29uZCB8fCBzdGF0cy5Xb3JrQ292ZXJhZ2UuQ29tcGxldGVkUGFnZXMgIT0gc3RhdHMuV29ya0NvdmVyYWdlLkV4cGVjdGVkUGFnZXMgfHwKKwkJc3RhdHMuV29ya0NvdmVyYWdlLkNvbXBsZXRlZEJ5dGVzICE9IHN0YXRzLldvcmtDb3ZlcmFnZS5FeHBlY3RlZEJ5dGVzIHsKKwkJdC5GYXRhbCgiZWRpdGFibGUgcHJvZHVjdCBjbG9jayBwcnVuZWQgb2ZmZXJlZCB3b3JrIGRlc3BpdGUgYWNjZXB0ZWQgc3VjY2VzcyB2b2x1bWUgYW5kIGNvdmVyYWdlIGdhdGVzIiwgb2JzZXJ2YXRpb24uZWxhcHNlZCkKKwl9Cit9CisKKy8vIEEgYmFja3dhcmQgcHJvZHVjdCBjbG9jayBjYW5ub3QgZXh0ZW5kIHRoZSBmaXhlZCBtZWFzdXJlbWVudCBvd25lciBlaXRoZXIuCitmdW5jIFRlc3RDb3ZlcmFnZVJ1bkNsb2NrQ2Fubm90RXh0ZW5kTWVhc3VyZW1lbnQodCAqdGVzdGluZy5UKSB7CisJY292ZXJhZ2UgOj0gbW9kZWwuRGVmYXVsdENvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5KCkKKwlzeW5jdGVzdC5UZXN0KHQsIGZ1bmModCAqdGVzdGluZy5UKSB7CisJCW9ic2VydmF0aW9uIDo9IG9ic2VydmVDb3ZlcmFnZVJ1bkNsb2NrKHQsICZjb3ZlcmFnZSwgMip0aW1lLlNlY29uZCwgLTgwKnRpbWUuTWlsbGlzZWNvbmQpCisJCWlmIG9ic2VydmF0aW9uLmVsYXBzZWQgIT0gMip0aW1lLlNlY29uZCB8fCBvYnNlcnZhdGlvbi5wcm9kdWN0Q2xvY2tDYWxscyAhPSAwIHsKKwkJCXQuRmF0YWwoImVkaXRhYmxlIHByb2R1Y3QgY2xvY2sgZXh0ZW5kZWQgdGhlIGNvdmVyYWdlIG93bmVyIiwgb2JzZXJ2YXRpb24uZWxhcHNlZCwgb2JzZXJ2YXRpb24ucHJvZHVjdENsb2NrQ2FsbHMpCisJCX0KKwl9KQorfQorCisvLyBCYXJyaWVyIGFuZCBjb21wbGV0aW9uIHRpbWVzdGFtcHMgdXNlIHRoZSBzYW1lIHByb3RlY3RlZCBzdGFuZGFyZCBjbG9jazsKKy8vIHRoaXMgYWxzbyBwcm92ZXMgYSBwcm9kdWN0IGNhbGxiYWNrIGlzIG5vdCBldmFsdWF0ZWQgZm9yIGl0cyBzaWRlIGVmZmVjdHMuCitmdW5jIFRlc3RDb3ZlcmFnZVJ1bkNsb2NrT3duc0JhcnJpZXJBbmRDb21wbGV0aW9uKHQgKnRlc3RpbmcuVCkgeworCWNvdmVyYWdlIDo9IG1vZGVsLkRlZmF1bHRDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSgpCisJc3luY3Rlc3QuVGVzdCh0LCBmdW5jKHQgKnRlc3RpbmcuVCkgeworCQlwcm9kdWN0Q2FsbHMgOj0gMAorCQlwb2lzb24gOj0gZnVuYygpIHRpbWUuVGltZSB7IHByb2R1Y3RDYWxscysrOyByZXR1cm4gdGltZS5Ob3coKS5BZGQoMjQgKiB0aW1lLkhvdXIpIH0KKwkJc3RhcnQgOj0gcnVuQ2xvY2tOb3coJmNvdmVyYWdlLCBwb2lzb24pCisJCWlmIHN0YXJ0ICE9IHRpbWUuTm93KCkgfHwgcHJvZHVjdENhbGxzICE9IDAgeworCQkJdC5GYXRhbCgicHJvZHVjdCBjb2RlIGNob3NlIHRoZSBjb3ZlcmFnZSBiYXJyaWVyIG9yIHdhcyBldmFsdWF0ZWQiKQorCQl9CisJCXRpbWUuU2xlZXAoMTIzICogdGltZS5OYW5vc2Vjb25kKQorCQljb21wbGV0ZSA6PSBydW5DbG9ja05vdygmY292ZXJhZ2UsIHBvaXNvbikKKwkJaWYgY29tcGxldGUgIT0gdGltZS5Ob3coKSB8fCBjb21wbGV0ZS5TdWIoc3RhcnQpICE9IDEyMyp0aW1lLk5hbm9zZWNvbmQgfHwgcHJvZHVjdENhbGxzICE9IDAgeworCQkJdC5GYXRhbCgicHJvZHVjdCBjb2RlIGNob3NlIGNvdmVyYWdlIGNvbXBsZXRpb24gb3Igc3RyaXBwZWQgaXRzIG1vbm90b25pYyBvd25lciIpCisJCX0KKwl9KQorfQorCisvLyBIaXN0b3JpY2FsIG9taXNzaW9uIHJldGFpbnMgdGhlIGV4YWN0IHByb2R1Y3QgdmFsdWUsIGxvY2F0aW9uLCBwcmVjaXNpb24sCisvLyBjYWxsYmFjayBjb3VudCBhbmQgcmVtYWluaW5nLXRpbWUgYmVoYXZpb3I7IG5vIGVwb2NoLW9uZSBjbG9jayBpcyByZXBsYWNlZC4KK2Z1bmMgVGVzdENvdmVyYWdlUnVuQ2xvY2tQcmVzZXJ2ZXNMZWdhY3lQcm9kdWN0Q2xvY2sodCAqdGVzdGluZy5UKSB7CisJZXhwZWN0ZWQgOj0gdGltZS5Vbml4KDEwMDAsIDEyMzQ1NjAwMCkuVVRDKCkKKwljYWxscyA6PSAwCisJaWYgYWN0dWFsIDo9IHJ1bkNsb2NrTm93KG5pbCwgZnVuYygpIHRpbWUuVGltZSB7IGNhbGxzKys7IHJldHVybiBleHBlY3RlZCB9KTsgYWN0dWFsICE9IGV4cGVjdGVkIHx8IGNhbGxzICE9IDEgeworCQl0LkZhdGFsKCJuaWwgY292ZXJhZ2UgY2hhbmdlZCB0aGUgaGlzdG9yaWNhbCBwcm9kdWN0IGNsb2NrIiwgYWN0dWFsLCBjYWxscykKKwl9CisJc3luY3Rlc3QuVGVzdCh0LCBmdW5jKHQgKnRlc3RpbmcuVCkgeworCQlvYnNlcnZhdGlvbiA6PSBvYnNlcnZlQ292ZXJhZ2VSdW5DbG9jayh0LCBuaWwsIDIqdGltZS5TZWNvbmQsIDgwKnRpbWUuTWlsbGlzZWNvbmQpCisJCWlmIG9ic2VydmF0aW9uLmVsYXBzZWQgIT0gMTkyMCp0aW1lLk1pbGxpc2Vjb25kIHx8IG9ic2VydmF0aW9uLnByb2R1Y3RDbG9ja0NhbGxzID09IDAgeworCQkJdC5GYXRhbCgicHJvc3BlY3RpdmUgY2xvY2sgZml4IHNpbGVudGx5IGNoYW5nZWQgdGhlIGxlZ2FjeSBvd25lciIsIG9ic2VydmF0aW9uLmVsYXBzZWQsIG9ic2VydmF0aW9uLnByb2R1Y3RDbG9ja0NhbGxzKQorCQl9CisJfSkKK30KKworLy8gQ2FuY2VsaW5nIHRoZSBvcmlnaW5hbCBvd25lciBzdGlsbCBpbnRlcnJ1cHRzIGFuIG91dHN0YW5kaW5nIHJlYWwgdGltZXI7CisvLyBhIHByb3RlY3RlZCBjbG9jayBzdXBwbGllcyBubyBuZXcgbGlmZXRpbWUsIHJldHJ5IG9yIHJlcGxhY2VtZW50IGRlYWRsaW5lLgorZnVuYyBUZXN0Q292ZXJhZ2VSdW5DbG9ja1JldGFpbnNQYXJlbnRDYW5jZWxsYXRpb24odCAqdGVzdGluZy5UKSB7CisJY292ZXJhZ2UgOj0gbW9kZWwuRGVmYXVsdENvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5KCkKKwlzeW5jdGVzdC5UZXN0KHQsIGZ1bmModCAqdGVzdGluZy5UKSB7CisJCWN0eCwgY2FuY2VsIDo9IGNvbnRleHQuV2l0aENhbmNlbCh0LkNvbnRleHQoKSkKKwkJZG9uZSA6PSBtYWtlKGNoYW4gZXJyb3IsIDEpCisJCWpvaW5lZCA6PSBtYWtlKGNoYW4gc3RydWN0e30pCisJCXN0YXJ0IDo9IHJ1bkNsb2NrTm93KCZjb3ZlcmFnZSwgdGltZS5Ob3cpCisJCWdvIGZ1bmMoKSB7CisJCQlkZWZlciBjbG9zZShqb2luZWQpCisJCQlkb25lIDwtIHdhaXRQaGFzZShjdHgsIHN0YXJ0LkFkZCgyKnRpbWUuU2Vjb25kKS5TdWIocnVuQ2xvY2tOb3coJmNvdmVyYWdlLCB0aW1lLk5vdykpKQorCQl9KCkKKwkJdC5DbGVhbnVwKGZ1bmMoKSB7IGNhbmNlbCgpOyA8LWpvaW5lZCB9KQorCQlzeW5jdGVzdC5XYWl0KCkKKwkJY2FuY2VsKCkKKwkJaWYgZXJyIDo9IDwtZG9uZTsgIWVycm9ycy5JcyhlcnIsIGNvbnRleHQuQ2FuY2VsZWQpIHx8IHRpbWUuTm93KCkgIT0gc3RhcnQgeworCQkJdC5GYXRhbCgicHJvdGVjdGVkIGNsb2NrIHdpZGVuZWQgaXRzIGNhbmNlbGVkIG9yaWdpbmFsIG93bmVyIiwgZXJyKQorCQl9CisJCTwtam9pbmVkCisJfSkKK30KZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvc2NvcmUuZ28gYi9jb25uZWN0L3NpbS1sYXRlbmN5L3Njb3JlLmdvCmluZGV4IDVhZmM4NjA2OTdjMTc0YzNjYmNkYTY0Y2JjZGNmYTA1NmE5NTEzNjUuLmVhNjNjYjgwMzk0MGE4NTAzZDY4YjU0ZjZjMTY0ZjllZDk0MmFlOWQgMTAwNjQ0Ci0tLSBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvc2NvcmUuZ28KKysrIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9zY29yZS5nbwpAQCAtNDgsMjkgKzQ4LDMyIEBAIHZhciBzY29yZUxpdmVNZXRyaWNOYW1lcyA9IFtdc3RyaW5newogLy8gU2NvcmVCYXNlbGluZVJlcGxpY2F0ZSBjb250YWlucyB0cnVzdGVkIHNhbWUtcm91bmQgYmFzZWxpbmUgZGlhZ25vc3RpY3MgZm9yCiAvLyBvbmUgcmVwbGljYXRlLiBUaGUgc2NvcmVyIHJlY29tcHV0ZXMgZXZlcnkgYWdncmVnYXRlIGZyb20gdGhlc2UgdmFsdWVzLgogdHlwZSBTY29yZUJhc2VsaW5lUmVwbGljYXRlIHN0cnVjdCB7Ci0JUmF3U2NvcmUgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDY0ICAgICAgICAgICAgICAgICAgYGpzb246InJhd19zY29yZSJgCi0JU3VjY2Vzc1JhdGUgICAgICAgICAgICAgICAgICAgICBmbG9hdDY0ICAgICAgICAgICAgICAgICAgYGpzb246InN1Y2Nlc3NfcmF0ZSJgCi0JUmVxdWVzdENvdW50ICAgICAgICAgICAgICAgICAgICBpbnQ2NCAgICAgICAgICAgICAgICAgICAgYGpzb246InJlcXVlc3RfY291bnQiYAotCVJlY2VpdmVkQnl0ZXMgICAgICAgICAgICAgICAgICAgaW50NjQgICAgICAgICAgICAgICAgICAgIGBqc29uOiJyZWNlaXZlZF9ieXRlcyJgCi0JRmluZFByb3ZpZGVyc0xvYWRQOTVNcyAgICAgICAgICBmbG9hdDY0ICAgICAgICAgICAgICAgICAgYGpzb246ImZpbmRwcm92aWRlcnNfbG9hZF9wOTVfbXMiYAotCUZpbmRQcm92aWRlcnNQb29sUDA1ICAgICAgICAgICAgZmxvYXQ2NCAgICAgICAgICAgICAgICAgIGBqc29uOiJmaW5kcHJvdmlkZXJzX3Bvb2xfcDA1ImAKLQlGaW5kUHJvdmlkZXJzU2FtcGxlU3BhbkZyYWN0aW9uIGZsb2F0NjQgICAgICAgICAgICAgICAgICBganNvbjoiZmluZHByb3ZpZGVyc19zYW1wbGVfc3Bhbl9mcmFjdGlvbiJgCi0JTGl2ZU1ldHJpY3MgICAgICAgICAgICAgICAgICAgICBtYXBbc3RyaW5nXU1ldHJpY1N1bW1hcnkgYGpzb246ImxpdmVfbWV0cmljcyxvbWl0ZW1wdHkiYAorCVdvcmtDb3ZlcmFnZSAgICAgICAgICAgICAgICAgICAgKm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeSBganNvbjoid29ya19jb3ZlcmFnZSxvbWl0ZW1wdHkiYAorCVJhd1Njb3JlICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoicmF3X3Njb3JlImAKKwlTdWNjZXNzUmF0ZSAgICAgICAgICAgICAgICAgICAgIGZsb2F0NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InN1Y2Nlc3NfcmF0ZSJgCisJUmVxdWVzdENvdW50ICAgICAgICAgICAgICAgICAgICBpbnQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJyZXF1ZXN0X2NvdW50ImAKKwlSZWNlaXZlZEJ5dGVzICAgICAgICAgICAgICAgICAgIGludDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InJlY2VpdmVkX2J5dGVzImAKKwlGaW5kUHJvdmlkZXJzTG9hZFA5NU1zICAgICAgICAgIGZsb2F0NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246ImZpbmRwcm92aWRlcnNfbG9hZF9wOTVfbXMiYAorCUZpbmRQcm92aWRlcnNQb29sUDA1ICAgICAgICAgICAgZmxvYXQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiZmluZHByb3ZpZGVyc19wb29sX3AwNSJgCisJRmluZFByb3ZpZGVyc1NhbXBsZVNwYW5GcmFjdGlvbiBmbG9hdDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJmaW5kcHJvdmlkZXJzX3NhbXBsZV9zcGFuX2ZyYWN0aW9uImAKKwlMaXZlTWV0cmljcyAgICAgICAgICAgICAgICAgICAgIG1hcFtzdHJpbmddTWV0cmljU3VtbWFyeSAgICAgICAgICAgICAgYGpzb246ImxpdmVfbWV0cmljcyxvbWl0ZW1wdHkiYAogfQogCiAvLyBTY29yZUJhc2VsaW5lTWFuaWZlc3QgaXMgdGhlIGF1dGhlbnRpY2F0ZWQgaGlkZGVuLXNlZWQgcm91bmQgY29udHJhY3QKIC8vIGNvbnN1bWVkIGJ5IHNjb3JlLiBSZXBsaWNhdGVzIGFuZCB0YWtlb3ZlciBtYXJnaW4gYXJlIGRlbGliZXJhdGVseSBkYXRhLAogLy8gbm90IENMSSBrbm9iczogdGhleSBhcmUgZnJvemVuIG9uY2UgZm9yIGEgcm91bmQgYWZ0ZXIgY2FsaWJyYXRpb24uCiB0eXBlIFNjb3JlQmFzZWxpbmVNYW5pZmVzdCBzdHJ1Y3QgewotCVNjb3JlU2NoZW1hICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJzY29yZV9zY2hlbWEiYAotCUtpbmQgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgIGBqc29uOiJraW5kImAKLQlTY29yZXJWZXJzaW9uICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICBganNvbjoic2NvcmVyX3ZlcnNpb24iYAotCVJvdW5kSWQgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgIGBqc29uOiJyb3VuZF9pZCJgCi0JQ29uZmlnU2hhMjU2ICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgYGpzb246ImNvbmZpZ19zaGEyNTYiYAotCVJlcXVlc3RUaW1lb3V0TXMgaW50NjQgICAgICAgICAgICAgICAgICAgIGBqc29uOiJyZXF1ZXN0X3RpbWVvdXRfbXMiYAotCVJ1bkZsYWdzICAgICAgICAgbWFwW3N0cmluZ11zdHJpbmcgICAgICAgIGBqc29uOiJydW5fZmxhZ3MiYAotCVRha2VvdmVyTWFyZ2luICAgZmxvYXQ2NCAgICAgICAgICAgICAgICAgIGBqc29uOiJ0YWtlb3Zlcl9tYXJnaW4iYAotCVJlcGxpY2F0ZXMgICAgICAgW11TY29yZUJhc2VsaW5lUmVwbGljYXRlIGBqc29uOiJyZXBsaWNhdGVzImAKKwlHMlZvbHVtZVBvbGljeSAgICAgbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeSAgICAgIGBqc29uOiJnMl92b2x1bWVfcG9saWN5LG9taXRlbXB0eSJgCisJV29ya0NvdmVyYWdlUG9saWN5ICptb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSBganNvbjoid29ya19jb3ZlcmFnZV9wb2xpY3ksb21pdGVtcHR5ImAKKwlTY29yZVNjaGVtYSAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJzY29yZV9zY2hlbWEiYAorCUtpbmQgICAgICAgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246ImtpbmQiYAorCVNjb3JlclZlcnNpb24gICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InNjb3Jlcl92ZXJzaW9uImAKKwlSb3VuZElkICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJyb3VuZF9pZCJgCisJQ29uZmlnU2hhMjU2ICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiY29uZmlnX3NoYTI1NiJgCisJUmVxdWVzdFRpbWVvdXRNcyAgIGludDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoicmVxdWVzdF90aW1lb3V0X21zImAKKwlSdW5GbGFncyAgICAgICAgICAgbWFwW3N0cmluZ11zdHJpbmcgICAgICAgICAgICAgICAgICAgIGBqc29uOiJydW5fZmxhZ3MiYAorCVRha2VvdmVyTWFyZ2luICAgICBmbG9hdDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InRha2VvdmVyX21hcmdpbiJgCisJUmVwbGljYXRlcyAgICAgICAgIFtdU2NvcmVCYXNlbGluZVJlcGxpY2F0ZSAgICAgICAgICAgICBganNvbjoicmVwbGljYXRlcyJgCiB9CiAKIHR5cGUgQWNjb3VudGluZ1NuYXBzaG90IHN0cnVjdCB7CkBAIC0xMDEsNiArMTA0LDcgQEAgdHlwZSBSZXNvdXJjZVJlcG9ydCBzdHJ1Y3QgewogfQogCiB0eXBlIFNjb3JlSW5wdXRzIHN0cnVjdCB7CisJV29ya2xvYWRQYXRoICAgICBzdHJpbmcKIAlSdW5zICAgICAgICAgICAgIFtdc3RyaW5nCiAJU3RkZXJyICAgICAgICAgICBbXXN0cmluZwogCUFjY291bnRpbmcgICAgICAgW11zdHJpbmcKQEAgLTExNSwxNCArMTE5LDE3IEBAIHR5cGUgU2NvcmVJbnB1dHMgc3RydWN0IHsKIC8vIGNvbnRyYWN0IGlzIGRlcml2ZWQgZnJvbSB0aGUgZmlyc3QgcnVuIGFuZCBjcm9zcy1jaGVja2VkIGFjcm9zcyBldmVyeQogLy8gcmVwbGljYXRlIGJlZm9yZSB0aGUgbWFuaWZlc3QgaXMgZW1pdHRlZC4KIHR5cGUgU2NvcmVCYXNlbGluZUlucHV0cyBzdHJ1Y3QgewotCVJ1bnMgICAgICAgICAgICBbXXN0cmluZwotCVN0ZGVyciAgICAgICAgICBbXXN0cmluZwotCUFjY291bnRpbmcgICAgICBbXXN0cmluZwotCVNhbXBsZXMgICAgICAgICBbXXN0cmluZwotCVJlc291cmNlUmVwb3J0cyBbXXN0cmluZwotCU1hcmtlcnMgICAgICAgICBbXXN0cmluZwotCVJvdW5kSWQgICAgICAgICBzdHJpbmcKLQlUYWtlb3Zlck1hcmdpbiAgZmxvYXQ2NAorCUcyVm9sdW1lUG9saWN5ICAgICBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5CisJV29ya0NvdmVyYWdlUG9saWN5ICptb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeQorCVdvcmtsb2FkUGF0aCAgICAgICBzdHJpbmcKKwlSdW5zICAgICAgICAgICAgICAgW11zdHJpbmcKKwlTdGRlcnIgICAgICAgICAgICAgW11zdHJpbmcKKwlBY2NvdW50aW5nICAgICAgICAgW11zdHJpbmcKKwlTYW1wbGVzICAgICAgICAgICAgW11zdHJpbmcKKwlSZXNvdXJjZVJlcG9ydHMgICAgW11zdHJpbmcKKwlNYXJrZXJzICAgICAgICAgICAgW11zdHJpbmcKKwlSb3VuZElkICAgICAgICAgICAgc3RyaW5nCisJVGFrZW92ZXJNYXJnaW4gICAgIGZsb2F0NjQKIH0KIAogdHlwZSBTY29yZUV2YWxFcnJvciBzdHJ1Y3QgewpAQCAtMTM3LDQ0ICsxNDQsNDkgQEAgdHlwZSBTY29yZUdhdGUgc3RydWN0IHsKIH0KIAogdHlwZSBTY29yZVJlcGxpY2F0ZURpYWdub3N0aWNzIHN0cnVjdCB7Ci0JRXZhbHVhdGlvbklkICAgICAgICAgICAgICAgICAgICBzdHJpbmcgICBganNvbjoiZXZhbHVhdGlvbl9pZCJgCi0JUmF3U2NvcmUgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDY0ICBganNvbjoicmF3X3Njb3JlImAKLQlTdWNjZXNzUmF0ZSAgICAgICAgICAgICAgICAgICAgIGZsb2F0NjQgIGBqc29uOiJzdWNjZXNzX3JhdGUiYAotCVJlcXVlc3RDb3VudCAgICAgICAgICAgICAgICAgICAgaW50NjQgICAgYGpzb246InJlcXVlc3RfY291bnQiYAotCVJlY2VpdmVkQnl0ZXMgICAgICAgICAgICAgICAgICAgaW50NjQgICAgYGpzb246InJlY2VpdmVkX2J5dGVzImAKLQlQcm92aWRlckVncmVzc0J5dGVzICAgICAgICAgICAgIGludDY0ICAgIGBqc29uOiJwcm92aWRlcl9lZ3Jlc3NfYnl0ZXMiYAotCUFjY291bnRpbmdDb3ZlcmFnZSAgICAgICAgICAgICAgZmxvYXQ2NCAgYGpzb246ImFjY291bnRpbmdfY292ZXJhZ2UiYAotCUZpbmRQcm92aWRlcnNTYW1wbGVzICAgICAgICAgICAgaW50NjQgICAgYGpzb246ImZpbmRwcm92aWRlcnNfc2FtcGxlcyJgCi0JRmluZFByb3ZpZGVyc0VtcHR5UG9vbHMgICAgICAgICBpbnQ2NCAgICBganNvbjoiZmluZHByb3ZpZGVyc19lbXB0eV9wb29scyJgCi0JRmluZFByb3ZpZGVyc0xvYWRQOTVNcyAgICAgICAgICBmbG9hdDY0ICBganNvbjoiZmluZHByb3ZpZGVyc19sb2FkX3A5NV9tcyJgCi0JRmluZFByb3ZpZGVyc1Bvb2xQMDUgICAgICAgICAgICBmbG9hdDY0ICBganNvbjoiZmluZHByb3ZpZGVyc19wb29sX3AwNSJgCi0JRmluZFByb3ZpZGVyc1NhbXBsZVNwYW5GcmFjdGlvbiBmbG9hdDY0ICBganNvbjoiZmluZHByb3ZpZGVyc19zYW1wbGVfc3Bhbl9mcmFjdGlvbiJgCi0JU3RhYmlsaXR5RmluZGluZ3MgICAgICAgICAgICAgICBbXXN0cmluZyBganNvbjoic3RhYmlsaXR5X2ZpbmRpbmdzImAKLQlSZXNvdXJjZUZpbmRpbmdzICAgICAgICAgICAgICAgIFtdc3RyaW5nIGBqc29uOiJyZXNvdXJjZV9maW5kaW5ncyJgCisJV29ya0NvdmVyYWdlICAgICAgICAgICAgICAgICAgICAqbW9kZWwuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5IGBqc29uOiJ3b3JrX2NvdmVyYWdlLG9taXRlbXB0eSJgCisJRXZhbHVhdGlvbklkICAgICAgICAgICAgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJldmFsdWF0aW9uX2lkImAKKwlSYXdTY29yZSAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InJhd19zY29yZSJgCisJU3VjY2Vzc1JhdGUgICAgICAgICAgICAgICAgICAgICBmbG9hdDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJzdWNjZXNzX3JhdGUiYAorCVJlcXVlc3RDb3VudCAgICAgICAgICAgICAgICAgICAgaW50NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoicmVxdWVzdF9jb3VudCJgCisJUmVjZWl2ZWRCeXRlcyAgICAgICAgICAgICAgICAgICBpbnQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJyZWNlaXZlZF9ieXRlcyJgCisJUHJvdmlkZXJFZ3Jlc3NCeXRlcyAgICAgICAgICAgICBpbnQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJwcm92aWRlcl9lZ3Jlc3NfYnl0ZXMiYAorCUFjY291bnRpbmdDb3ZlcmFnZSAgICAgICAgICAgICAgZmxvYXQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiYWNjb3VudGluZ19jb3ZlcmFnZSJgCisJRmluZFByb3ZpZGVyc1NhbXBsZXMgICAgICAgICAgICBpbnQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJmaW5kcHJvdmlkZXJzX3NhbXBsZXMiYAorCUZpbmRQcm92aWRlcnNFbXB0eVBvb2xzICAgICAgICAgaW50NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiZmluZHByb3ZpZGVyc19lbXB0eV9wb29scyJgCisJRmluZFByb3ZpZGVyc0xvYWRQOTVNcyAgICAgICAgICBmbG9hdDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJmaW5kcHJvdmlkZXJzX2xvYWRfcDk1X21zImAKKwlGaW5kUHJvdmlkZXJzUG9vbFAwNSAgICAgICAgICAgIGZsb2F0NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246ImZpbmRwcm92aWRlcnNfcG9vbF9wMDUiYAorCUZpbmRQcm92aWRlcnNTYW1wbGVTcGFuRnJhY3Rpb24gZmxvYXQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiZmluZHByb3ZpZGVyc19zYW1wbGVfc3Bhbl9mcmFjdGlvbiJgCisJU3RhYmlsaXR5RmluZGluZ3MgICAgICAgICAgICAgICBbXXN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJzdGFiaWxpdHlfZmluZGluZ3MiYAorCVJlc291cmNlRmluZGluZ3MgICAgICAgICAgICAgICAgW11zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoicmVzb3VyY2VfZmluZGluZ3MiYAogfQogCiB0eXBlIFNjb3JlQWdncmVnYXRlRGlhZ25vc3RpY3Mgc3RydWN0IHsKLQlSYXdTY29yZSAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0NjQgYGpzb246InJhd19zY29yZSJgCi0JU3VjY2Vzc1JhdGUgICAgICAgICAgICAgICAgICAgICBmbG9hdDY0IGBqc29uOiJzdWNjZXNzX3JhdGUiYAotCVJlcXVlc3RDb3VudCAgICAgICAgICAgICAgICAgICAgZmxvYXQ2NCBganNvbjoicmVxdWVzdF9jb3VudCJgCi0JUmVjZWl2ZWRCeXRlcyAgICAgICAgICAgICAgICAgICBmbG9hdDY0IGBqc29uOiJyZWNlaXZlZF9ieXRlcyJgCi0JQWNjb3VudGluZ0NvdmVyYWdlICAgICAgICAgICAgICBmbG9hdDY0IGBqc29uOiJhY2NvdW50aW5nX2NvdmVyYWdlLG9taXRlbXB0eSJgCi0JRmluZFByb3ZpZGVyc0xvYWRQOTVNcyAgICAgICAgICBmbG9hdDY0IGBqc29uOiJmaW5kcHJvdmlkZXJzX2xvYWRfcDk1X21zImAKLQlGaW5kUHJvdmlkZXJzUG9vbFAwNSAgICAgICAgICAgIGZsb2F0NjQgYGpzb246ImZpbmRwcm92aWRlcnNfcG9vbF9wMDUiYAotCUZpbmRQcm92aWRlcnNTYW1wbGVTcGFuRnJhY3Rpb24gZmxvYXQ2NCBganNvbjoiZmluZHByb3ZpZGVyc19zYW1wbGVfc3Bhbl9mcmFjdGlvbiJgCisJV29ya0NvdmVyYWdlICAgICAgICAgICAgICAgICAgICAqbW9kZWwuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5IGBqc29uOiJ3b3JrX2NvdmVyYWdlLG9taXRlbXB0eSJgCisJUmF3U2NvcmUgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJyYXdfc2NvcmUiYAorCVN1Y2Nlc3NSYXRlICAgICAgICAgICAgICAgICAgICAgZmxvYXQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoic3VjY2Vzc19yYXRlImAKKwlSZXF1ZXN0Q291bnQgICAgICAgICAgICAgICAgICAgIGZsb2F0NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InJlcXVlc3RfY291bnQiYAorCVJlY2VpdmVkQnl0ZXMgICAgICAgICAgICAgICAgICAgZmxvYXQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoicmVjZWl2ZWRfYnl0ZXMiYAorCUFjY291bnRpbmdDb3ZlcmFnZSAgICAgICAgICAgICAgZmxvYXQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiYWNjb3VudGluZ19jb3ZlcmFnZSxvbWl0ZW1wdHkiYAorCUZpbmRQcm92aWRlcnNMb2FkUDk1TXMgICAgICAgICAgZmxvYXQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiZmluZHByb3ZpZGVyc19sb2FkX3A5NV9tcyJgCisJRmluZFByb3ZpZGVyc1Bvb2xQMDUgICAgICAgICAgICBmbG9hdDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJmaW5kcHJvdmlkZXJzX3Bvb2xfcDA1ImAKKwlGaW5kUHJvdmlkZXJzU2FtcGxlU3BhbkZyYWN0aW9uIGZsb2F0NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246ImZpbmRwcm92aWRlcnNfc2FtcGxlX3NwYW5fZnJhY3Rpb24iYAogfQogCiB0eXBlIFNjb3JlRGlhZ25vc3RpY3Mgc3RydWN0IHsKLQlSb3VuZElkICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJyb3VuZF9pZCxvbWl0ZW1wdHkiYAotCUJhc2VsaW5lU2hhMjU2ICAgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgYGpzb246ImJhc2VsaW5lX3NoYTI1NixvbWl0ZW1wdHkiYAotCVJlcGxpY2F0ZUNvdW50ICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InJlcGxpY2F0ZV9jb3VudCxvbWl0ZW1wdHkiYAotCVJlcXVlc3RUaW1lb3V0TXMgICAgICAgICBpbnQ2NCAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InJlcXVlc3RfdGltZW91dF9tcyxvbWl0ZW1wdHkiYAotCVRha2VvdmVyTWFyZ2luICAgICAgICAgICBmbG9hdDY0ICAgICAgICAgICAgICAgICAgICAgYGpzb246InRha2VvdmVyX21hcmdpbixvbWl0ZW1wdHkiYAotCUJhc2VsaW5lVGFrZW92ZXJSYXdNYXggICBmbG9hdDY0ICAgICAgICAgICAgICAgICAgICAgYGpzb246ImJhc2VsaW5lX3Rha2VvdmVyX3Jhd19tYXgsb21pdGVtcHR5ImAKLQlCYXNlbGluZVRha2VvdmVyRWxpZ2libGUgKmJvb2wgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJiYXNlbGluZV90YWtlb3Zlcl9lbGlnaWJsZSxvbWl0ZW1wdHkiYAotCUJhc2VsaW5lICAgICAgICAgICAgICAgICAqU2NvcmVBZ2dyZWdhdGVEaWFnbm9zdGljcyAgYGpzb246ImJhc2VsaW5lLG9taXRlbXB0eSJgCi0JQ2FuZGlkYXRlICAgICAgICAgICAgICAgICpTY29yZUFnZ3JlZ2F0ZURpYWdub3N0aWNzICBganNvbjoiY2FuZGlkYXRlLG9taXRlbXB0eSJgCi0JUmVwbGljYXRlcyAgICAgICAgICAgICAgIFtdU2NvcmVSZXBsaWNhdGVEaWFnbm9zdGljcyBganNvbjoicmVwbGljYXRlcyxvbWl0ZW1wdHkiYAorCUcyVm9sdW1lUG9saWN5ICAgICAgICAgICBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5ICAgICAgYGpzb246ImcyX3ZvbHVtZV9wb2xpY3ksb21pdGVtcHR5ImAKKwlXb3JrQ292ZXJhZ2VQb2xpY3kgICAgICAgKm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5IGBqc29uOiJ3b3JrX2NvdmVyYWdlX3BvbGljeSxvbWl0ZW1wdHkiYAorCVNjb3JlclZlcnNpb24gICAgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InNjb3Jlcl92ZXJzaW9uLG9taXRlbXB0eSJgCisJUm91bmRJZCAgICAgICAgICAgICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoicm91bmRfaWQsb21pdGVtcHR5ImAKKwlCYXNlbGluZVNoYTI1NiAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJiYXNlbGluZV9zaGEyNTYsb21pdGVtcHR5ImAKKwlSZXBsaWNhdGVDb3VudCAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJyZXBsaWNhdGVfY291bnQsb21pdGVtcHR5ImAKKwlSZXF1ZXN0VGltZW91dE1zICAgICAgICAgaW50NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJyZXF1ZXN0X3RpbWVvdXRfbXMsb21pdGVtcHR5ImAKKwlUYWtlb3Zlck1hcmdpbiAgICAgICAgICAgZmxvYXQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJ0YWtlb3Zlcl9tYXJnaW4sb21pdGVtcHR5ImAKKwlCYXNlbGluZVRha2VvdmVyUmF3TWF4ICAgZmxvYXQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJiYXNlbGluZV90YWtlb3Zlcl9yYXdfbWF4LG9taXRlbXB0eSJgCisJQmFzZWxpbmVUYWtlb3ZlckVsaWdpYmxlICpib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiYmFzZWxpbmVfdGFrZW92ZXJfZWxpZ2libGUsb21pdGVtcHR5ImAKKwlCYXNlbGluZSAgICAgICAgICAgICAgICAgKlNjb3JlQWdncmVnYXRlRGlhZ25vc3RpY3MgICAgICAgICAgIGBqc29uOiJiYXNlbGluZSxvbWl0ZW1wdHkiYAorCUNhbmRpZGF0ZSAgICAgICAgICAgICAgICAqU2NvcmVBZ2dyZWdhdGVEaWFnbm9zdGljcyAgICAgICAgICAgYGpzb246ImNhbmRpZGF0ZSxvbWl0ZW1wdHkiYAorCVJlcGxpY2F0ZXMgICAgICAgICAgICAgICBbXVNjb3JlUmVwbGljYXRlRGlhZ25vc3RpY3MgICAgICAgICAgYGpzb246InJlcGxpY2F0ZXMsb21pdGVtcHR5ImAKIH0KIAogdHlwZSBTY29yZVJlc3VsdCBzdHJ1Y3QgewpAQCAtMjU1LDYgKzI2Nyw3IEBAIGZ1bmMgU2NvcmUoaW5wdXRzIFNjb3JlSW5wdXRzKSAqU2NvcmVSZXN1bHQgewogCQkJaW5wdXRzLk1hcmtlcnNbaV0sCiAJCQliYXNlbGluZSwKIAkJCWZhbHNlLAorCQkJaW5wdXRzLldvcmtsb2FkUGF0aCwKIAkJKQogCQlpZiBlcnIgIT0gbmlsIHsKIAkJCXJldHVybiBpbmZyYXN0cnVjdHVyZVNjb3JlKGVycikKQEAgLTI2OSwxMiArMjgyLDE3IEBAIGZ1bmMgU2NvcmUoaW5wdXRzIFNjb3JlSW5wdXRzKSAqU2NvcmVSZXN1bHQgewogCWJhc2VBZ2dyZWdhdGUgOj0gYWdncmVnYXRlQmFzZWxpbmUoYmFzZWxpbmUuUmVwbGljYXRlcykKIAljYW5kaWRhdGVBZ2dyZWdhdGUgOj0gYWdncmVnYXRlQ2FuZGlkYXRlKHJlcGxpY2F0ZXMpCiAJc2lnbmlmaWNhbmNlIDo9IHNjb3JlU2lnbmlmaWNhbmNlKGJhc2VsaW5lLlJlcGxpY2F0ZXMsIHJlcGxpY2F0ZXMsIGJhc2VsaW5lLlRha2VvdmVyTWFyZ2luKQotCWdhdGVzIDo9IGJ1aWxkU2NvcmVHYXRlcyhiYXNlQWdncmVnYXRlLCBjYW5kaWRhdGVBZ2dyZWdhdGUsIHJlcGxpY2F0ZXMpCisJZ2F0ZXMgOj0gYnVpbGRTY29yZUdhdGVzKGJhc2VBZ2dyZWdhdGUsIGNhbmRpZGF0ZUFnZ3JlZ2F0ZSwgcmVwbGljYXRlcywgYmFzZWxpbmUuRzJWb2x1bWVQb2xpY3kpCisJaWYgYmFzZWxpbmUuV29ya0NvdmVyYWdlUG9saWN5ICE9IG5pbCB7CisJCWdhdGVzWyJHN193b3JrX2NvdmVyYWdlIl0gPSB3b3JrQ292ZXJhZ2VHYXRlKGJhc2VsaW5lLldvcmtDb3ZlcmFnZVBvbGljeSwgYmFzZUFnZ3JlZ2F0ZS5Xb3JrQ292ZXJhZ2UsIGNhbmRpZGF0ZUFnZ3JlZ2F0ZS5Xb3JrQ292ZXJhZ2UpCisJfQogCXJhd1Njb3JlIDo9IGNhbmRpZGF0ZUFnZ3JlZ2F0ZS5SYXdTY29yZQogCW5vcm1hbGl6ZWQgOj0gY2xhbXBTY29yZSgxMDAqYmFzZUFnZ3JlZ2F0ZS5SYXdTY29yZS9yYXdTY29yZSwgMSwgMjAwKQogCXRha2VvdmVyUmF3TWF4IDo9IGJhc2VBZ2dyZWdhdGUuUmF3U2NvcmUgKiAoMSAtIGJhc2VsaW5lLlRha2VvdmVyTWFyZ2luKQogCiAJZGlhZ25vc3RpY3MgOj0gU2NvcmVEaWFnbm9zdGljc3sKKwkJRzJWb2x1bWVQb2xpY3k6ICAgICAgICAgYmFzZWxpbmUuRzJWb2x1bWVQb2xpY3ksCisJCVdvcmtDb3ZlcmFnZVBvbGljeTogICAgIGJhc2VsaW5lLldvcmtDb3ZlcmFnZVBvbGljeS5DbG9uZSgpLAogCQlSb3VuZElkOiAgICAgICAgICAgICAgICBiYXNlbGluZS5Sb3VuZElkLAogCQlCYXNlbGluZVNoYTI1NjogICAgICAgICBiYXNlbGluZVNoYTI1NiwKIAkJUmVwbGljYXRlQ291bnQ6ICAgICAgICAgbGVuKHJlcGxpY2F0ZXMpLApAQCAtMjg0LDYgKzMwMiw5IEBAIGZ1bmMgU2NvcmUoaW5wdXRzIFNjb3JlSW5wdXRzKSAqU2NvcmVSZXN1bHQgewogCQlCYXNlbGluZTogICAgICAgICAgICAgICAmYmFzZUFnZ3JlZ2F0ZS5TY29yZUFnZ3JlZ2F0ZURpYWdub3N0aWNzLAogCQlDYW5kaWRhdGU6ICAgICAgICAgICAgICAmY2FuZGlkYXRlQWdncmVnYXRlLAogCX0KKwlpZiBiYXNlbGluZS5HMlZvbHVtZVBvbGljeSAhPSBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TGVnYWN5IHsKKwkJZGlhZ25vc3RpY3MuU2NvcmVyVmVyc2lvbiA9IGJhc2VsaW5lLlNjb3JlclZlcnNpb24KKwl9CiAJZm9yIF8sIHJlcGxpY2F0ZSA6PSByYW5nZSByZXBsaWNhdGVzIHsKIAkJZGlhZ25vc3RpY3MuUmVwbGljYXRlcyA9IGFwcGVuZChkaWFnbm9zdGljcy5SZXBsaWNhdGVzLCByZXBsaWNhdGUuZGlhZ25vc3RpY3MpCiAJfQpAQCAtMjk2LDcgKzMxNyw3IEBAIGZ1bmMgU2NvcmUoaW5wdXRzIFNjb3JlSW5wdXRzKSAqU2NvcmVSZXN1bHQgewogCQlTaWduaWZpY2FuY2U6ICAgIHNpZ25pZmljYW5jZSwKIAkJRGlhZ25vc3RpY3M6ICAgICBkaWFnbm9zdGljcywKIAl9Ci0JcmVzdWx0LlBsYWNlYWJsZSA9IGFsbFNjb3JlR2F0ZXNQYXNzKGdhdGVzKQorCXJlc3VsdC5QbGFjZWFibGUgPSBhbGxTY29yZUdhdGVzUGFzcyhnYXRlcywgYmFzZWxpbmUuV29ya0NvdmVyYWdlUG9saWN5KQogCWlmICFnYXRlc1siRzVfc3RhYmlsaXR5Il0uUGFzc2VkIHsKIAkJcmVzdWx0LlBsYWNlYWJsZSA9IGZhbHNlCiAJCXJlc3VsdC5FdmFsRXJyb3IgPSAmU2NvcmVFdmFsRXJyb3J7CkBAIC0zNTUsNiArMzc2LDEwIEBAIGZ1bmMgQnVpbGRTY29yZUJhc2VsaW5lKGlucHV0cyBTY29yZUJhc2VsaW5lSW5wdXRzKSAoKlNjb3JlQmFzZWxpbmVNYW5pZmVzdCwgZXJyCiAJaWYgIWZpbml0ZShpbnB1dHMuVGFrZW92ZXJNYXJnaW4pIHx8IGlucHV0cy5UYWtlb3Zlck1hcmdpbiA8IDAgfHwgMC41IDwgaW5wdXRzLlRha2VvdmVyTWFyZ2luIHsKIAkJcmV0dXJuIG5pbCwgc2NvcmVFcnJvcigiaW52YWxpZF9iYXNlbGluZSIsICJiYXNlbGluZSB0YWtlb3ZlciBtYXJnaW4gaXMgb3V0c2lkZSBbMCwgMC41XSIpCiAJfQorCXNjb3JlclZlcnNpb24sIGVyciA6PSBtb2RlbC5Db21wZXRpdGlvblNjb3JlclZlcnNpb25Gb3JXb3JrQ292ZXJhZ2UoaW5wdXRzLkcyVm9sdW1lUG9saWN5LCBpbnB1dHMuV29ya0NvdmVyYWdlUG9saWN5KQorCWlmIGVyciAhPSBuaWwgeworCQlyZXR1cm4gbmlsLCBzY29yZUVycm9yKCJpbnZhbGlkX2cyX3ZvbHVtZV9wb2xpY3kiLCAiYmFzZWxpbmUgZzIgdm9sdW1lIHBvbGljeSBpcyB1bnN1cHBvcnRlZCIpCisJfQogCiAJZmlyc3QsIF8sIGVyciA6PSByZWFkT2ZmaWNpYWxSdW5TaWRlY2FyKGlucHV0cy5SdW5zWzBdKQogCWlmIGVyciAhPSBuaWwgewpAQCAtMzcyLDYgKzM5Nyw5IEBAIGZ1bmMgQnVpbGRTY29yZUJhc2VsaW5lKGlucHV0cyBTY29yZUJhc2VsaW5lSW5wdXRzKSAoKlNjb3JlQmFzZWxpbmVNYW5pZmVzdCwgZXJyCiAJCWlucHV0cy5UYWtlb3Zlck1hcmdpbiwKIAkJbmlsLAogCSkKKwljb250cmFjdC5HMlZvbHVtZVBvbGljeSA9IGlucHV0cy5HMlZvbHVtZVBvbGljeQorCWNvbnRyYWN0LldvcmtDb3ZlcmFnZVBvbGljeSA9IGlucHV0cy5Xb3JrQ292ZXJhZ2VQb2xpY3kuQ2xvbmUoKQorCWNvbnRyYWN0LlNjb3JlclZlcnNpb24gPSBzY29yZXJWZXJzaW9uCiAKIAlyZXBsaWNhdGVzIDo9IG1ha2UoW11TY29yZUJhc2VsaW5lUmVwbGljYXRlLCAwLCB3YW50KQogCWV2YWx1YXRpb25JZHMgOj0gbWFwW3N0cmluZ11ib29se30KQEAgLTM4NSw2ICs0MTMsNyBAQCBmdW5jIEJ1aWxkU2NvcmVCYXNlbGluZShpbnB1dHMgU2NvcmVCYXNlbGluZUlucHV0cykgKCpTY29yZUJhc2VsaW5lTWFuaWZlc3QsIGVycgogCQkJaW5wdXRzLk1hcmtlcnNbaV0sCiAJCQljb250cmFjdCwKIAkJCXRydWUsCisJCQlpbnB1dHMuV29ya2xvYWRQYXRoLAogCQkpCiAJCWlmIGVyciAhPSBuaWwgewogCQkJcmV0dXJuIG5pbCwgZXJyCkBAIC00MjEsNiArNDUwLDcgQEAgZnVuYyBCdWlsZFNjb3JlQmFzZWxpbmUoaW5wdXRzIFNjb3JlQmFzZWxpbmVJbnB1dHMpICgqU2NvcmVCYXNlbGluZU1hbmlmZXN0LCBlcnIKIAkJCXJldHVybiBuaWwsIHNjb3JlRXJyb3IoImJhc2VsaW5lX2dhdGVfZmFpbGVkIiwgImJhc2VsaW5lIHJlcGxpY2F0ZSAlZCBoYXMgYW4gaW52YWxpZCBtZWFzdXJlZCB3b3JrbG9hZCIsIGkrMSkKIAkJfQogCQlyZXBsaWNhdGVzID0gYXBwZW5kKHJlcGxpY2F0ZXMsIFNjb3JlQmFzZWxpbmVSZXBsaWNhdGV7CisJCQlXb3JrQ292ZXJhZ2U6ICAgICAgICAgICAgICAgICAgICBkaWFnbm9zdGljLldvcmtDb3ZlcmFnZSwKIAkJCVJhd1Njb3JlOiAgICAgICAgICAgICAgICAgICAgICAgIGRpYWdub3N0aWMuUmF3U2NvcmUsCiAJCQlTdWNjZXNzUmF0ZTogICAgICAgICAgICAgICAgICAgICBkaWFnbm9zdGljLlN1Y2Nlc3NSYXRlLAogCQkJUmVxdWVzdENvdW50OiAgICAgICAgICAgICAgICAgICAgZGlhZ25vc3RpYy5SZXF1ZXN0Q291bnQsCkBAIC00ODcsNyArNTE3LDExIEBAIGZ1bmMgdmFsaWRhdGVTY29yZUJhc2VsaW5lKGJhc2VsaW5lICpTY29yZUJhc2VsaW5lTWFuaWZlc3QpIGVycm9yIHsKIAlpZiBiYXNlbGluZS5TY29yZVNjaGVtYSAhPSBhcGV4U2NvcmVTY2hlbWEgfHwgYmFzZWxpbmUuS2luZCAhPSBzY29yZUJhc2VsaW5lS2luZCB7CiAJCXJldHVybiBzY29yZUVycm9yKCJpbnZhbGlkX2Jhc2VsaW5lIiwgImJhc2VsaW5lIG1hbmlmZXN0IGhhcyB0aGUgd3Jvbmcga2luZCBvciBzY29yZSBzY2hlbWEiKQogCX0KLQlpZiBiYXNlbGluZS5TY29yZXJWZXJzaW9uICE9IG9mZmljaWFsU2NvcmVyVmVyc2lvbiB7CisJc2NvcmVyVmVyc2lvbiwgZXJyIDo9IG1vZGVsLkNvbXBldGl0aW9uU2NvcmVyVmVyc2lvbkZvcldvcmtDb3ZlcmFnZShiYXNlbGluZS5HMlZvbHVtZVBvbGljeSwgYmFzZWxpbmUuV29ya0NvdmVyYWdlUG9saWN5KQorCWlmIGVyciAhPSBuaWwgeworCQlyZXR1cm4gc2NvcmVFcnJvcigiaW52YWxpZF9nMl92b2x1bWVfcG9saWN5IiwgImJhc2VsaW5lIGcyIHZvbHVtZSBwb2xpY3kgaXMgdW5zdXBwb3J0ZWQiKQorCX0KKwlpZiBiYXNlbGluZS5TY29yZXJWZXJzaW9uICE9IHNjb3JlclZlcnNpb24gewogCQlyZXR1cm4gc2NvcmVFcnJvcigic2NvcmVyX3ZlcnNpb25fbWlzbWF0Y2giLCAiYmFzZWxpbmUgbWFuaWZlc3QgcmVxdWlyZXMgYSBkaWZmZXJlbnQgc2NvcmVyIHZlcnNpb24iKQogCX0KIAlpZiAhc2NvcmVSb3VuZElkUGF0dGVybi5NYXRjaFN0cmluZyhiYXNlbGluZS5Sb3VuZElkKSB7CkBAIC01MDksNiArNTQzLDE1IEBAIGZ1bmMgdmFsaWRhdGVTY29yZUJhc2VsaW5lKGJhc2VsaW5lICpTY29yZUJhc2VsaW5lTWFuaWZlc3QpIGVycm9yIHsKIAkJcmV0dXJuIHNjb3JlRXJyb3IoImludmFsaWRfYmFzZWxpbmUiLCAiYmFzZWxpbmUgcmVwbGljYXRlIGNvdW50IG11c3QgYmUgb2RkIGFuZCBwb3NpdGl2ZSIpCiAJfQogCWZvciBfLCByZXBsaWNhdGUgOj0gcmFuZ2UgYmFzZWxpbmUuUmVwbGljYXRlcyB7CisJCWlmIGJhc2VsaW5lLldvcmtDb3ZlcmFnZVBvbGljeSAhPSBuaWwgeworCQkJY292ZXJhZ2UgOj0gcmVwbGljYXRlLldvcmtDb3ZlcmFnZQorCQkJaWYgbW9kZWwuVmFsaWRhdGVDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnkoY292ZXJhZ2UpICE9IG5pbCB8fAorCQkJCWNvdmVyYWdlLkNvbXBsZXRlZFBhZ2VzIDw9IDAgfHwgY292ZXJhZ2UuQ29tcGxldGVkQnl0ZXMgPD0gMCB7CisJCQkJcmV0dXJuIHNjb3JlRXJyb3IoImludmFsaWRfYmFzZWxpbmVfY292ZXJhZ2UiLCAiYmFzZWxpbmUgY292ZXJhZ2UgaXMgbWlzc2luZyBvciBjb250YWlucyBubyBjb21wbGV0ZWQgZXhwZWN0ZWQgd29yayIpCisJCQl9CisJCX0gZWxzZSBpZiByZXBsaWNhdGUuV29ya0NvdmVyYWdlICE9IG5pbCB7CisJCQlyZXR1cm4gc2NvcmVFcnJvcigidW5leHBlY3RlZF93b3JrX2NvdmVyYWdlIiwgImhpc3RvcmljYWwgYmFzZWxpbmUgaGFzIHByb3NwZWN0aXZlIGNvdmVyYWdlIGRpYWdub3N0aWNzIikKKwkJfQogCQlpZiAhZmluaXRlUG9zaXRpdmUocmVwbGljYXRlLlJhd1Njb3JlKSB8fAogCQkJZmxvYXQ2NChiYXNlbGluZS5SZXF1ZXN0VGltZW91dE1zKSA8IHJlcGxpY2F0ZS5SYXdTY29yZSB8fAogCQkJIWZpbml0ZShyZXBsaWNhdGUuU3VjY2Vzc1JhdGUpIHx8IHJlcGxpY2F0ZS5TdWNjZXNzUmF0ZSA8IDAuOTcgfHwgMSA8IHJlcGxpY2F0ZS5TdWNjZXNzUmF0ZSB8fApAQCAtNTI2LDYgKzU2OSw5IEBAIGZ1bmMgdmFsaWRhdGVTY29yZUJhc2VsaW5lKGJhc2VsaW5lICpTY29yZUJhc2VsaW5lTWFuaWZlc3QpIGVycm9yIHsKIAkJCX0KIAkJfQogCX0KKwlpZiBiYXNlbGluZS5Xb3JrQ292ZXJhZ2VQb2xpY3kgIT0gbmlsICYmIGFnZ3JlZ2F0ZUJhc2VsaW5lKGJhc2VsaW5lLlJlcGxpY2F0ZXMpLldvcmtDb3ZlcmFnZSA9PSBuaWwgeworCQlyZXR1cm4gc2NvcmVFcnJvcigiaW52YWxpZF9iYXNlbGluZV9jb3ZlcmFnZSIsICJiYXNlbGluZSByZXBsaWNhdGVzIGRvIG5vdCBzaGFyZSBvbmUgaW5kZXBlbmRlbnQgb2ZmZXJlZC13b3JrIHBsYW4iKQorCX0KIAlyZXR1cm4gbmlsCiB9CiAKQEAgLTYwOSw2ICs2NTUsNyBAQCBmdW5jIHNjb3JlTGl2ZU1ldHJpY3NGcm9tUm93cyhydW5TdGF0cyAqUnVuU3RhdHMsIHJvd3MgW11yZXN1bHRSb3cpIChtYXBbc3RyaW5nXQogfQogCiBmdW5jIGFnZ3JlZ2F0ZUJhc2VsaW5lKHJlcGxpY2F0ZXMgW11TY29yZUJhc2VsaW5lUmVwbGljYXRlKSBiYXNlbGluZUFnZ3JlZ2F0ZSB7CisJd29ya0NvdmVyYWdlIDo9IFtdKm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeXt9CiAJcmF3U2NvcmVzIDo9IG1ha2UoW11mbG9hdDY0LCAwLCBsZW4ocmVwbGljYXRlcykpCiAJc3VjY2Vzc1JhdGVzIDo9IG1ha2UoW11mbG9hdDY0LCAwLCBsZW4ocmVwbGljYXRlcykpCiAJcmVxdWVzdENvdW50cyA6PSBtYWtlKFtdZmxvYXQ2NCwgMCwgbGVuKHJlcGxpY2F0ZXMpKQpAQCAtNjE3LDYgKzY2NCw3IEBAIGZ1bmMgYWdncmVnYXRlQmFzZWxpbmUocmVwbGljYXRlcyBbXVNjb3JlQmFzZWxpbmVSZXBsaWNhdGUpIGJhc2VsaW5lQWdncmVnYXRlIHsKIAlwb29sUDA1cyA6PSBtYWtlKFtdZmxvYXQ2NCwgMCwgbGVuKHJlcGxpY2F0ZXMpKQogCXNhbXBsZVNwYW5GcmFjdGlvbiA6PSBtYXRoLkluZigxKQogCWZvciBfLCByZXBsaWNhdGUgOj0gcmFuZ2UgcmVwbGljYXRlcyB7CisJCXdvcmtDb3ZlcmFnZSA9IGFwcGVuZCh3b3JrQ292ZXJhZ2UsIHJlcGxpY2F0ZS5Xb3JrQ292ZXJhZ2UpCiAJCXJhd1Njb3JlcyA9IGFwcGVuZChyYXdTY29yZXMsIHJlcGxpY2F0ZS5SYXdTY29yZSkKIAkJc3VjY2Vzc1JhdGVzID0gYXBwZW5kKHN1Y2Nlc3NSYXRlcywgcmVwbGljYXRlLlN1Y2Nlc3NSYXRlKQogCQlyZXF1ZXN0Q291bnRzID0gYXBwZW5kKHJlcXVlc3RDb3VudHMsIGZsb2F0NjQocmVwbGljYXRlLlJlcXVlc3RDb3VudCkpCkBAIC02MjYsNiArNjc0LDcgQEAgZnVuYyBhZ2dyZWdhdGVCYXNlbGluZShyZXBsaWNhdGVzIFtdU2NvcmVCYXNlbGluZVJlcGxpY2F0ZSkgYmFzZWxpbmVBZ2dyZWdhdGUgewogCQlzYW1wbGVTcGFuRnJhY3Rpb24gPSBtYXRoLk1pbihzYW1wbGVTcGFuRnJhY3Rpb24sIHJlcGxpY2F0ZS5GaW5kUHJvdmlkZXJzU2FtcGxlU3BhbkZyYWN0aW9uKQogCX0KIAlyZXR1cm4gYmFzZWxpbmVBZ2dyZWdhdGV7U2NvcmVBZ2dyZWdhdGVEaWFnbm9zdGljczogU2NvcmVBZ2dyZWdhdGVEaWFnbm9zdGljc3sKKwkJV29ya0NvdmVyYWdlOiAgICAgICAgICAgICAgICAgICAgbWVkaWFuV29ya0NvdmVyYWdlKHdvcmtDb3ZlcmFnZSksCiAJCVJhd1Njb3JlOiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JlTWVkaWFuKHJhd1Njb3JlcyksCiAJCVN1Y2Nlc3NSYXRlOiAgICAgICAgICAgICAgICAgICAgIHNjb3JlTWVkaWFuKHN1Y2Nlc3NSYXRlcyksCiAJCVJlcXVlc3RDb3VudDogICAgICAgICAgICAgICAgICAgIHNjb3JlTWVkaWFuKHJlcXVlc3RDb3VudHMpLApAQCAtNjM3LDYgKzY4Niw3IEBAIGZ1bmMgYWdncmVnYXRlQmFzZWxpbmUocmVwbGljYXRlcyBbXVNjb3JlQmFzZWxpbmVSZXBsaWNhdGUpIGJhc2VsaW5lQWdncmVnYXRlIHsKIH0KIAogZnVuYyBhZ2dyZWdhdGVDYW5kaWRhdGUocmVwbGljYXRlcyBbXWNhbmRpZGF0ZVJlcGxpY2F0ZSkgU2NvcmVBZ2dyZWdhdGVEaWFnbm9zdGljcyB7CisJd29ya0NvdmVyYWdlIDo9IFtdKm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeXt9CiAJcmF3U2NvcmVzIDo9IG1ha2UoW11mbG9hdDY0LCAwLCBsZW4ocmVwbGljYXRlcykpCiAJc3VjY2Vzc1JhdGVzIDo9IG1ha2UoW11mbG9hdDY0LCAwLCBsZW4ocmVwbGljYXRlcykpCiAJcmVxdWVzdENvdW50cyA6PSBtYWtlKFtdZmxvYXQ2NCwgMCwgbGVuKHJlcGxpY2F0ZXMpKQpAQCAtNjQ3LDYgKzY5Nyw3IEBAIGZ1bmMgYWdncmVnYXRlQ2FuZGlkYXRlKHJlcGxpY2F0ZXMgW11jYW5kaWRhdGVSZXBsaWNhdGUpIFNjb3JlQWdncmVnYXRlRGlhZ25vc3RpCiAJc2FtcGxlU3BhbkZyYWN0aW9uIDo9IG1hdGguSW5mKDEpCiAJZm9yIF8sIHJlcGxpY2F0ZSA6PSByYW5nZSByZXBsaWNhdGVzIHsKIAkJZGlhZ25vc3RpYyA6PSByZXBsaWNhdGUuZGlhZ25vc3RpY3MKKwkJd29ya0NvdmVyYWdlID0gYXBwZW5kKHdvcmtDb3ZlcmFnZSwgZGlhZ25vc3RpYy5Xb3JrQ292ZXJhZ2UpCiAJCXJhd1Njb3JlcyA9IGFwcGVuZChyYXdTY29yZXMsIGRpYWdub3N0aWMuUmF3U2NvcmUpCiAJCXN1Y2Nlc3NSYXRlcyA9IGFwcGVuZChzdWNjZXNzUmF0ZXMsIGRpYWdub3N0aWMuU3VjY2Vzc1JhdGUpCiAJCXJlcXVlc3RDb3VudHMgPSBhcHBlbmQocmVxdWVzdENvdW50cywgZmxvYXQ2NChkaWFnbm9zdGljLlJlcXVlc3RDb3VudCkpCkBAIC02NjMsNiArNzE0LDcgQEAgZnVuYyBhZ2dyZWdhdGVDYW5kaWRhdGUocmVwbGljYXRlcyBbXWNhbmRpZGF0ZVJlcGxpY2F0ZSkgU2NvcmVBZ2dyZWdhdGVEaWFnbm9zdGkKIAkJc2FtcGxlU3BhbkZyYWN0aW9uID0gMAogCX0KIAlyZXR1cm4gU2NvcmVBZ2dyZWdhdGVEaWFnbm9zdGljc3sKKwkJV29ya0NvdmVyYWdlOiAgICAgICAgICAgICAgICAgICAgbWVkaWFuV29ya0NvdmVyYWdlKHdvcmtDb3ZlcmFnZSksCiAJCVJhd1Njb3JlOiAgICAgICAgICAgICAgICAgICAgICAgIHNjb3JlTWVkaWFuKHJhd1Njb3JlcyksCiAJCVN1Y2Nlc3NSYXRlOiAgICAgICAgICAgICAgICAgICAgIHNjb3JlTWVkaWFuKHN1Y2Nlc3NSYXRlcyksCiAJCVJlcXVlc3RDb3VudDogICAgICAgICAgICAgICAgICAgIHNjb3JlTWVkaWFuKHJlcXVlc3RDb3VudHMpLApAQCAtNjgzLDYgKzczNSw3IEBAIGZ1bmMgYnVpbGRTY29yZUdhdGVzKAogCWJhc2VsaW5lIGJhc2VsaW5lQWdncmVnYXRlLAogCWNhbmRpZGF0ZSBTY29yZUFnZ3JlZ2F0ZURpYWdub3N0aWNzLAogCXJlcGxpY2F0ZXMgW11jYW5kaWRhdGVSZXBsaWNhdGUsCisJZzJQb2xpY3kgbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeSwKICkgbWFwW3N0cmluZ11TY29yZUdhdGUgewogCWcxQWJzb2x1dGVNaW4gOj0gMC45NwogCWcxUmVsYXRpdmVNaW4gOj0gYmFzZWxpbmUuU3VjY2Vzc1JhdGUgLSAwLjAxCkBAIC02OTIsOCArNzQ1LDI0IEBAIGZ1bmMgYnVpbGRTY29yZUdhdGVzKAogCXJlcXVlc3RNYXggOj0gMS4wNSAqIGJhc2VsaW5lLlJlcXVlc3RDb3VudAogCWJ5dGVzTWluIDo9IDAuOTUgKiBiYXNlbGluZS5SZWNlaXZlZEJ5dGVzCiAJYnl0ZXNNYXggOj0gMS4wNSAqIGJhc2VsaW5lLlJlY2VpdmVkQnl0ZXMKLQlnMiA6PSByZXF1ZXN0TWluIDw9IGNhbmRpZGF0ZS5SZXF1ZXN0Q291bnQgJiYgY2FuZGlkYXRlLlJlcXVlc3RDb3VudCA8PSByZXF1ZXN0TWF4ICYmCi0JCWJ5dGVzTWluIDw9IGNhbmRpZGF0ZS5SZWNlaXZlZEJ5dGVzICYmIGNhbmRpZGF0ZS5SZWNlaXZlZEJ5dGVzIDw9IGJ5dGVzTWF4CisJZzIgOj0gZmluaXRlUG9zaXRpdmUoYmFzZWxpbmUuUmVxdWVzdENvdW50KSAmJiBmaW5pdGVQb3NpdGl2ZShiYXNlbGluZS5SZWNlaXZlZEJ5dGVzKSAmJgorCQlmaW5pdGVQb3NpdGl2ZShjYW5kaWRhdGUuUmVxdWVzdENvdW50KSAmJiBmaW5pdGVQb3NpdGl2ZShjYW5kaWRhdGUuUmVjZWl2ZWRCeXRlcykgJiYKKwkJcmVxdWVzdE1pbiA8PSBjYW5kaWRhdGUuUmVxdWVzdENvdW50ICYmIGJ5dGVzTWluIDw9IGNhbmRpZGF0ZS5SZWNlaXZlZEJ5dGVzCisJZzJEZXRhaWxzIDo9IG1hcFtzdHJpbmddYW55eworCQkiY2FuZGlkYXRlX3JlcXVlc3RzIjogY2FuZGlkYXRlLlJlcXVlc3RDb3VudCwKKwkJInJlcXVlc3RfbWluIjogICAgICAgIHJlcXVlc3RNaW4sCisJCSJjYW5kaWRhdGVfYnl0ZXMiOiAgICBjYW5kaWRhdGUuUmVjZWl2ZWRCeXRlcywKKwkJImJ5dGVzX21pbiI6ICAgICAgICAgIGJ5dGVzTWluLAorCX0KKwlzd2l0Y2ggZzJQb2xpY3kgeworCWNhc2UgbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeUxlZ2FjeToKKwkJZzIgPSBnMiAmJiBjYW5kaWRhdGUuUmVxdWVzdENvdW50IDw9IHJlcXVlc3RNYXggJiYgY2FuZGlkYXRlLlJlY2VpdmVkQnl0ZXMgPD0gYnl0ZXNNYXgKKwkJZzJEZXRhaWxzWyJyZXF1ZXN0X21heCJdLCBnMkRldGFpbHNbImJ5dGVzX21heCJdID0gcmVxdWVzdE1heCwgYnl0ZXNNYXgKKwljYXNlIG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lNaW5pbXVtV29yazoKKwkJZzJEZXRhaWxzWyJwb2xpY3kiXSA9IGcyUG9saWN5CisJZGVmYXVsdDoKKwkJZzIgPSBmYWxzZQorCX0KIAogCWczIDo9IDAuOTUgPD0gY2FuZGlkYXRlLkFjY291bnRpbmdDb3ZlcmFnZQogCkBAIC03MzEsMTUgKzgwMCw4IEBAIGZ1bmMgYnVpbGRTY29yZUdhdGVzKAogCQkJfSwKIAkJfSwKIAkJIkcyX3ZvbHVtZSI6IHsKLQkJCVBhc3NlZDogZzIsCi0JCQlEZXRhaWxzOiBtYXBbc3RyaW5nXWFueXsKLQkJCQkiY2FuZGlkYXRlX3JlcXVlc3RzIjogY2FuZGlkYXRlLlJlcXVlc3RDb3VudCwKLQkJCQkicmVxdWVzdF9taW4iOiAgICAgICAgcmVxdWVzdE1pbiwKLQkJCQkicmVxdWVzdF9tYXgiOiAgICAgICAgcmVxdWVzdE1heCwKLQkJCQkiY2FuZGlkYXRlX2J5dGVzIjogICAgY2FuZGlkYXRlLlJlY2VpdmVkQnl0ZXMsCi0JCQkJImJ5dGVzX21pbiI6ICAgICAgICAgIGJ5dGVzTWluLAotCQkJCSJieXRlc19tYXgiOiAgICAgICAgICBieXRlc01heCwKLQkJCX0sCisJCQlQYXNzZWQ6ICBnMiwKKwkJCURldGFpbHM6IGcyRGV0YWlscywKIAkJfSwKIAkJIkczX3BhdGhfaW50ZWdyaXR5IjogewogCQkJUGFzc2VkOiBnMywKQEAgLTc4MCw3ICs4NDIsMTIgQEAgZnVuYyBidWlsZFNjb3JlR2F0ZXMoCiAJfQogfQogCi1mdW5jIGFsbFNjb3JlR2F0ZXNQYXNzKGdhdGVzIG1hcFtzdHJpbmddU2NvcmVHYXRlKSBib29sIHsKK2Z1bmMgYWxsU2NvcmVHYXRlc1Bhc3MoZ2F0ZXMgbWFwW3N0cmluZ11TY29yZUdhdGUsIGNvdmVyYWdlUG9saWNpZXMgLi4uKm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5KSBib29sIHsKKwlpZiBsZW4oY292ZXJhZ2VQb2xpY2llcykgIT0gMCAmJiBjb3ZlcmFnZVBvbGljaWVzWzBdICE9IG5pbCB7CisJCWlmIGdhdGUsIG9rIDo9IGdhdGVzWyJHN193b3JrX2NvdmVyYWdlIl07ICFvayB8fCAhZ2F0ZS5QYXNzZWQgeworCQkJcmV0dXJuIGZhbHNlCisJCX0KKwl9CiAJZm9yIF8sIG5hbWUgOj0gcmFuZ2UgW11zdHJpbmd7CiAJCSJHMV9zdWNjZXNzIiwKIAkJIkcyX3ZvbHVtZSIsCkBAIC04MTYsNiArODgzLDcgQEAgZnVuYyBzY29yZVJlcGxpY2F0ZSgKIAltYXJrZXJQYXRoIHN0cmluZywKIAliYXNlbGluZSAqU2NvcmVCYXNlbGluZU1hbmlmZXN0LAogCWNhcHR1cmVMaXZlTWV0cmljcyBib29sLAorCXdvcmtsb2FkUGF0aHMgLi4uc3RyaW5nLAogKSAoY2FuZGlkYXRlUmVwbGljYXRlLCBlcnJvcikgewogCXZhciBvdXQgY2FuZGlkYXRlUmVwbGljYXRlCiAJLy8gUmVhZCB0aGUgdHJ1c3RlZCBjZ3JvdXAvcHJvY2VzcyByZXBvcnQgZmlyc3QuIEl0IGxldHMgYSBjcmFzaC9PT00gcmVtYWluIGEKQEAgLTg4Miw2ICs5NTAsMTQgQEAgZnVuYyBzY29yZVJlcGxpY2F0ZSgKIAlpZiBjc3ZTaGEyNTYgIT0gcnVuU3RhdHMuUmVzdWx0c0NzdlNoYTI1NiB8fCBjc3ZCeXRlcyAhPSBydW5TdGF0cy5SZXN1bHRzQ3N2Qnl0ZXMgewogCQlyZXR1cm4gb3V0LCBzY29yZUVycm9yKCJyZXN1bHRzX2lkZW50aXR5X21pc21hdGNoIiwgInJlc3VsdHMgQ1NWIGRvZXMgbm90IG1hdGNoIHRoZSBjb21wbGV0ZWQgcnVuIG1hbmlmZXN0IikKIAl9CisJd29ya2xvYWRQYXRoIDo9ICIiCisJaWYgbGVuKHdvcmtsb2FkUGF0aHMpID09IDEgeworCQl3b3JrbG9hZFBhdGggPSB3b3JrbG9hZFBhdGhzWzBdCisJfQorCXdvcmtDb3ZlcmFnZSwgZXJyIDo9IHNjb3JlV29ya0NvdmVyYWdlKHJ1blN0YXRzLCByb3dzLCB3b3JrbG9hZFBhdGgsIGJhc2VsaW5lKQorCWlmIGVyciAhPSBuaWwgeworCQlyZXR1cm4gb3V0LCBlcnIKKwl9CiAJcm93TWV0cmljcywgZXJyIDo9IHNjb3JlUm93cyhyb3dzLCBydW5TdGF0cykKIAlpZiBlcnIgIT0gbmlsIHsKIAkJcmV0dXJuIG91dCwgZXJyCkBAIC05NDIsNiArMTAxOCw3IEBAIGZ1bmMgc2NvcmVSZXBsaWNhdGUoCiAJcmVzb3VyY2VGaW5kaW5ncyA6PSBwcmVSdW5SZXNvdXJjZUZpbmRpbmdzCiAKIAlvdXQuZGlhZ25vc3RpY3MgPSBTY29yZVJlcGxpY2F0ZURpYWdub3N0aWNzeworCQlXb3JrQ292ZXJhZ2U6ICAgICAgICAgICAgICAgICAgICB3b3JrQ292ZXJhZ2UsCiAJCUV2YWx1YXRpb25JZDogICAgICAgICAgICAgICAgICAgIHJ1blN0YXRzLkV2YWx1YXRpb25JZCwKIAkJUmF3U2NvcmU6ICAgICAgICAgICAgICAgICAgICAgICAgcm93TWV0cmljcy5SYXdTY29yZSwKIAkJU3VjY2Vzc1JhdGU6ICAgICAgICAgICAgICAgICAgICAgcm93TWV0cmljcy5TdWNjZXNzUmF0ZSwKQEAgLTk4MSwxMCArMTA1OCwyNCBAQCBmdW5jIHNhbWVBcnRpZmFjdFBhdGgoYSBzdHJpbmcsIGIgc3RyaW5nKSBib29sIHsKIH0KIAogZnVuYyB2YWxpZGF0ZVJ1bkNvbnRyYWN0KHJ1blN0YXRzICpSdW5TdGF0cywgYmFzZWxpbmUgKlNjb3JlQmFzZWxpbmVNYW5pZmVzdCkgZXJyb3IgewotCWlmIHJ1blN0YXRzLlNjaGVtYSAhPSBydW5TdGF0c1NjaGVtYSB8fCBydW5TdGF0cy5LaW5kICE9IHJ1blN0YXRzS2luZCB7CisJd2FudFNjaGVtYSA6PSBydW5TdGF0c1NjaGVtYQorCWlmIGJhc2VsaW5lLldvcmtDb3ZlcmFnZVBvbGljeSAhPSBuaWwgeworCQl3YW50U2NoZW1hID0gMworCX0KKwlpZiBydW5TdGF0cy5TY2hlbWEgIT0gd2FudFNjaGVtYSB8fCBydW5TdGF0cy5LaW5kICE9IHJ1blN0YXRzS2luZCB7CiAJCXJldHVybiBzY29yZUVycm9yKCJhcnRpZmFjdF9zY2hlbWFfbWlzbWF0Y2giLCAib2ZmaWNpYWwgc2NvcmluZyByZXF1aXJlcyBhIHNjaGVtYS0yIHJ1biBtYW5pZmVzdCIpCiAJfQotCWlmIHJ1blN0YXRzLlNjb3JlU2NoZW1hICE9IGFwZXhTY29yZVNjaGVtYSB8fCBydW5TdGF0cy5TY29yZXJWZXJzaW9uICE9IG9mZmljaWFsU2NvcmVyVmVyc2lvbiB7CisJc2NvcmVyVmVyc2lvbiwgZXJyIDo9IG1vZGVsLkNvbXBldGl0aW9uU2NvcmVyVmVyc2lvbkZvcldvcmtDb3ZlcmFnZShydW5TdGF0cy5HMlZvbHVtZVBvbGljeSwgcnVuU3RhdHMuV29ya0NvdmVyYWdlUG9saWN5KQorCWlmIGVyciAhPSBuaWwgeworCQlyZXR1cm4gc2NvcmVFcnJvcigiaW52YWxpZF9nMl92b2x1bWVfcG9saWN5IiwgInJ1biBnMiB2b2x1bWUgcG9saWN5IGlzIHVuc3VwcG9ydGVkIikKKwl9CisJaWYgcnVuU3RhdHMuRzJWb2x1bWVQb2xpY3kgIT0gYmFzZWxpbmUuRzJWb2x1bWVQb2xpY3kgeworCQlyZXR1cm4gc2NvcmVFcnJvcigiZzJfdm9sdW1lX3BvbGljeV9taXNtYXRjaCIsICJydW4gZzIgdm9sdW1lIHBvbGljeSBkb2VzIG5vdCBtYXRjaCB0aGUgYXV0aGVudGljYXRlZCBiYXNlbGluZSIpCisJfQorCWlmICFyZWZsZWN0LkRlZXBFcXVhbChydW5TdGF0cy5Xb3JrQ292ZXJhZ2VQb2xpY3ksIGJhc2VsaW5lLldvcmtDb3ZlcmFnZVBvbGljeSkgeworCQlyZXR1cm4gc2NvcmVFcnJvcigid29ya19jb3ZlcmFnZV9wb2xpY3lfbWlzbWF0Y2giLCAicnVuIGNvdmVyYWdlIHBvbGljeSBkb2VzIG5vdCBtYXRjaCB0aGUgYXV0aGVudGljYXRlZCBiYXNlbGluZSIpCisJfQorCWlmIHJ1blN0YXRzLlNjb3JlU2NoZW1hICE9IGFwZXhTY29yZVNjaGVtYSB8fCBydW5TdGF0cy5TY29yZXJWZXJzaW9uICE9IHNjb3JlclZlcnNpb24gfHwgcnVuU3RhdHMuU2NvcmVyVmVyc2lvbiAhPSBiYXNlbGluZS5TY29yZXJWZXJzaW9uIHsKIAkJcmV0dXJuIHNjb3JlRXJyb3IoInNjb3Jlcl92ZXJzaW9uX21pc21hdGNoIiwgInJ1biBtYW5pZmVzdCB1c2VzIGEgZGlmZmVyZW50IHNjb3JlIHNjaGVtYSBvciBzY29yZXIgdmVyc2lvbiIpCiAJfQogCWlmIHJ1blN0YXRzLkV2YWx1YXRpb25JZCA9PSAiIiB7CkBAIC0xMDM2LDcgKzExMjcsOSBAQCBmdW5jIHZhbGlkYXRlRmluYWxNYXJrZXIocGF0aCBzdHJpbmcsIG1hbmlmZXN0Qnl0ZXMgW11ieXRlLCBydW5TdGF0cyAqUnVuU3RhdHMpCiAJfQogCW1hbmlmZXN0U2hhIDo9IGZtdC5TcHJpbnRmKCIleCIsIHNoYTI1Ni5TdW0yNTYobWFuaWZlc3RCeXRlcykpCiAJaWYgbWFya2VyLlNjaGVtYSAhPSAxIHx8IG1hcmtlci5LaW5kICE9ICJzaW0tbGF0ZW5jeS1jb21wbGV0ZSIgfHwKLQkJbWFya2VyLlNjb3JlU2NoZW1hICE9IGFwZXhTY29yZVNjaGVtYSB8fCBtYXJrZXIuU2NvcmVyVmVyc2lvbiAhPSBvZmZpY2lhbFNjb3JlclZlcnNpb24gfHwKKwkJbWFya2VyLlNjb3JlU2NoZW1hICE9IGFwZXhTY29yZVNjaGVtYSB8fCBtYXJrZXIuU2NvcmVyVmVyc2lvbiAhPSBydW5TdGF0cy5TY29yZXJWZXJzaW9uIHx8CisJCW1hcmtlci5HMlZvbHVtZVBvbGljeSAhPSBydW5TdGF0cy5HMlZvbHVtZVBvbGljeSB8fAorCQkhcmVmbGVjdC5EZWVwRXF1YWwobWFya2VyLldvcmtDb3ZlcmFnZVBvbGljeSwgcnVuU3RhdHMuV29ya0NvdmVyYWdlUG9saWN5KSB8fAogCQltYXJrZXIuRXZhbHVhdGlvbklkICE9IHJ1blN0YXRzLkV2YWx1YXRpb25JZCB8fAogCQltYXJrZXIuUnVuTWFuaWZlc3RTaGEyNTYgIT0gbWFuaWZlc3RTaGEgfHwKIAkJbWFya2VyLlJ1bk1hbmlmZXN0Qnl0ZXMgIT0gaW50NjQobGVuKG1hbmlmZXN0Qnl0ZXMpKSB8fApAQCAtMTE1NCw2ICsxMjQ3LDkgQEAgZnVuYyByZWFkU2NvcmVDU1YocGF0aCBzdHJpbmcpIChbXXJlc3VsdFJvdywgc3RyaW5nLCBpbnQ2NCwgZXJyb3IpIHsKIAkJYWRkRGlnZXN0TGluZShsaW5lKQogCQlyb3dzID0gYXBwZW5kKHJvd3MsIHJlc3VsdFJvd3sKIAkJCXRTdGFydE1zOiB0U3RhcnRNcywKKwkJCWNsaWVudDogICByZWNvcmRbMV0sCisJCQlwYXRoOiAgICAgcmVjb3JkWzJdLAorCQkJZGVwdGg6ICAgIGludChkZXB0aCksCiAJCQlzdGF0dXM6ICAgc3RhdHVzLAogCQkJYnl0ZXM6ICAgIHJlY2VpdmVkLAogCQkJdHRmYk1zOiAgIHR0ZmIsCkBAIC0xNTQyLDE0ICsxNjM4LDE3IEBAIGZ1bmMgbWFyc2hhbFNjb3JlQmFzZWxpbmUoYmFzZWxpbmUgKlNjb3JlQmFzZWxpbmVNYW5pZmVzdCkgKFtdYnl0ZSwgZXJyb3IpIHsKIAogZnVuYyBydW5TY29yZUJhc2VsaW5lKG9wdHMgZG9jb3B0Lk9wdHMpIHsKIAlpbnB1dHMgOj0gU2NvcmVCYXNlbGluZUlucHV0c3sKLQkJUnVuczogICAgICAgICAgICBzcGxpdFBhdGhzKG9wdFN0cmluZyhvcHRzLCAiLS1ydW4iLCAiIikpLAotCQlTdGRlcnI6ICAgICAgICAgIHNwbGl0UGF0aHMob3B0U3RyaW5nKG9wdHMsICItLXN0ZGVyciIsICIiKSksCi0JCUFjY291bnRpbmc6ICAgICAgc3BsaXRQYXRocyhvcHRTdHJpbmcob3B0cywgIi0tYWNjb3VudGluZyIsICIiKSksCi0JCVNhbXBsZXM6ICAgICAgICAgc3BsaXRQYXRocyhvcHRTdHJpbmcob3B0cywgIi0tc2FtcGxlcyIsICIiKSksCi0JCVJlc291cmNlUmVwb3J0czogc3BsaXRQYXRocyhvcHRTdHJpbmcob3B0cywgIi0tcmVzb3VyY2UtcmVwb3J0IiwgIiIpKSwKLQkJTWFya2VyczogICAgICAgICBzcGxpdFBhdGhzKG9wdFN0cmluZyhvcHRzLCAiLS1tYXJrZXIiLCAiIikpLAotCQlSb3VuZElkOiAgICAgICAgIG9wdFN0cmluZyhvcHRzLCAiLS1yb3VuZC1pZCIsICIiKSwKLQkJVGFrZW92ZXJNYXJnaW46ICBvcHRGbG9hdChvcHRzLCAiLS10YWtlb3Zlci1tYXJnaW4iLCBtYXRoLk5hTigpKSwKKwkJRzJWb2x1bWVQb2xpY3k6ICAgICBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5KG9wdFN0cmluZyhvcHRzLCAiLS1nMi12b2x1bWUtcG9saWN5IiwgIiIpKSwKKwkJV29ya0NvdmVyYWdlUG9saWN5OiBjb3ZlcmFnZVBvbGljeU9wdGlvbihvcHRzKSwKKwkJV29ya2xvYWRQYXRoOiAgICAgICBvcHRTdHJpbmcob3B0cywgIi0tcHJvdmlkZXJzIiwgIiIpLAorCQlSdW5zOiAgICAgICAgICAgICAgIHNwbGl0UGF0aHMob3B0U3RyaW5nKG9wdHMsICItLXJ1biIsICIiKSksCisJCVN0ZGVycjogICAgICAgICAgICAgc3BsaXRQYXRocyhvcHRTdHJpbmcob3B0cywgIi0tc3RkZXJyIiwgIiIpKSwKKwkJQWNjb3VudGluZzogICAgICAgICBzcGxpdFBhdGhzKG9wdFN0cmluZyhvcHRzLCAiLS1hY2NvdW50aW5nIiwgIiIpKSwKKwkJU2FtcGxlczogICAgICAgICAgICBzcGxpdFBhdGhzKG9wdFN0cmluZyhvcHRzLCAiLS1zYW1wbGVzIiwgIiIpKSwKKwkJUmVzb3VyY2VSZXBvcnRzOiAgICBzcGxpdFBhdGhzKG9wdFN0cmluZyhvcHRzLCAiLS1yZXNvdXJjZS1yZXBvcnQiLCAiIikpLAorCQlNYXJrZXJzOiAgICAgICAgICAgIHNwbGl0UGF0aHMob3B0U3RyaW5nKG9wdHMsICItLW1hcmtlciIsICIiKSksCisJCVJvdW5kSWQ6ICAgICAgICAgICAgb3B0U3RyaW5nKG9wdHMsICItLXJvdW5kLWlkIiwgIiIpLAorCQlUYWtlb3Zlck1hcmdpbjogICAgIG9wdEZsb2F0KG9wdHMsICItLXRha2VvdmVyLW1hcmdpbiIsIG1hdGguTmFOKCkpLAogCX0KIAliYXNlbGluZSwgZXJyIDo9IEJ1aWxkU2NvcmVCYXNlbGluZShpbnB1dHMpCiAJaWYgZXJyICE9IG5pbCB7CkBAIC0xNjE0LDYgKzE3MTMsNyBAQCBmdW5jIHJ1blNjb3JlUHJvZ3Jlc3Mob3B0cyBkb2NvcHQuT3B0cykgewogCiBmdW5jIHJ1blNjb3JlKG9wdHMgZG9jb3B0Lk9wdHMpIHsKIAlpbnB1dHMgOj0gU2NvcmVJbnB1dHN7CisJCVdvcmtsb2FkUGF0aDogICAgIG9wdFN0cmluZyhvcHRzLCAiLS1wcm92aWRlcnMiLCAiIiksCiAJCVJ1bnM6ICAgICAgICAgICAgIHNwbGl0UGF0aHMob3B0U3RyaW5nKG9wdHMsICItLXJ1biIsICIiKSksCiAJCVN0ZGVycjogICAgICAgICAgIHNwbGl0UGF0aHMob3B0U3RyaW5nKG9wdHMsICItLXN0ZGVyciIsICIiKSksCiAJCUFjY291bnRpbmc6ICAgICAgIHNwbGl0UGF0aHMob3B0U3RyaW5nKG9wdHMsICItLWFjY291bnRpbmciLCAiIikpLApkaWZmIC0tZ2l0IGEvY29ubmVjdC9zaW0tbGF0ZW5jeS9zY29yZV9nMl9wb2xpY3lfdGVzdC5nbyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvc2NvcmVfZzJfcG9saWN5X3Rlc3QuZ28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzIxMTY3MTU1YTY1YjQ4MzE4NTM0NjAxZDc4NTNmYzRmODc0YTllZAotLS0gL2Rldi9udWxsCisrKyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvc2NvcmVfZzJfcG9saWN5X3Rlc3QuZ28KQEAgLTAsMCArMSwyMTAgQEAKKy8vIFBvbGljeS1zcGVjaWZpYyByZWR1Y2VycyBhbmQgYXV0aGVudGljYXRlZCByZXBsYXkgcHJlc2VydmUgdmVyc2lvbi1vbmUKKy8vIHNjb3Jpbmcgd2hpbGUgbWFraW5nIHRoZSBwcm9zcGVjdGl2ZSBtaW5pbXVtLXdvcmsgY29udHJhY3QgZXhwbGljaXQuCitwYWNrYWdlIG1haW4KKworaW1wb3J0ICgKKwkiYnl0ZXMiCisJImVuY29kaW5nL2pzb24iCisJIm1hdGgiCisJIm9zIgorCSJyZWZsZWN0IgorCSJ0ZXN0aW5nIgorCisJImdpdGh1Yi5jb20vdXJuZXR3b3JrL3NlcnZlci9tb2RlbCIKKykKKworLy8gUmUtc2lnbnMgb25seSBvd25lZCBzeW50aGV0aWMgc2lkZWNhcnMgYWZ0ZXIgY2hhbmdpbmcgdGhlaXIgcG9saWN5IGlkZW50aXR5LgorZnVuYyBzZXRTY29yZUZpeHR1cmVHMlBvbGljeSh0ICp0ZXN0aW5nLlQsIGZpeHR1cmUgKnNjb3JlRml4dHVyZSwgcG9saWN5IG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3kpIHsKKwl0LkhlbHBlcigpCisJdmVyc2lvbiwgZXJyIDo9IG1vZGVsLkNvbXBldGl0aW9uU2NvcmVyVmVyc2lvbkZvckcyUG9saWN5KHBvbGljeSkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCWZpeHR1cmUucnVuU3RhdHMuRzJWb2x1bWVQb2xpY3ksIGZpeHR1cmUucnVuU3RhdHMuU2NvcmVyVmVyc2lvbiA9IHBvbGljeSwgdmVyc2lvbgorCXdyaXRlU2NvcmVKU09OKHQsIHNjb3JlU2lkZWNhckZvckNTVihmaXh0dXJlLnJ1biksIGZpeHR1cmUucnVuU3RhdHMpCisJaWYgZXJyIDo9IHdyaXRlRmluYWxNYXJrZXIoZml4dHVyZS5tYXJrZXIsIHNjb3JlU2lkZWNhckZvckNTVihmaXh0dXJlLnJ1biksIGZpeHR1cmUucnVuU3RhdHMpOyBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCWZpeHR1cmUuYmFzZWxpbmVEYXRhLkcyVm9sdW1lUG9saWN5LCBmaXh0dXJlLmJhc2VsaW5lRGF0YS5TY29yZXJWZXJzaW9uID0gcG9saWN5LCB2ZXJzaW9uCisJd3JpdGVTY29yZUpTT04odCwgZml4dHVyZS5iYXNlbGluZSwgZml4dHVyZS5iYXNlbGluZURhdGEpCit9CisKKy8vIEJvdGggY291bnRzIGhhdmUgaW5jbHVzaXZlIGZsb29yczsgcmVtb3ZpbmcgYW4gdXBwZXIgYm91bmQgbXVzdCBub3QgcmVtb3ZlCisvLyB0aGUgb3RoZXIgZmxvb3IsIGludHJvZHVjZSBhIHplcm8td29yayBwYXNzLCBvciBhbHRlciBhbm90aGVyIGdhdGUuCitmdW5jIFRlc3RTY29yZUcyTWluaW11bVdvcmtCb3VuZGFyaWVzQW5kTGVnYWN5VXBwZXJCb3VuZHModCAqdGVzdGluZy5UKSB7CisJYmFzZWxpbmUgOj0gYmFzZWxpbmVBZ2dyZWdhdGV7U2NvcmVBZ2dyZWdhdGVEaWFnbm9zdGljczogU2NvcmVBZ2dyZWdhdGVEaWFnbm9zdGljc3tSZXF1ZXN0Q291bnQ6IDEwMCwgUmVjZWl2ZWRCeXRlczogMTAwMH19CisJY2FzZXMgOj0gW11zdHJ1Y3QgeworCQluYW1lICAgICAgICAgICAgICAgICAgICBzdHJpbmcKKwkJcmVxdWVzdHMsIHJlY2VpdmVkQnl0ZXMgZmxvYXQ2NAorCQlsZWdhY3ksIG1pbmltdW1Xb3JrICAgICBib29sCisJfXsKKwkJe25hbWU6ICJleGFjdCBmbG9vciIsIHJlcXVlc3RzOiA5NSwgcmVjZWl2ZWRCeXRlczogOTUwLCBsZWdhY3k6IHRydWUsIG1pbmltdW1Xb3JrOiB0cnVlfSwKKwkJe25hbWU6ICJyZXF1ZXN0IGJlbG93IGZsb29yIiwgcmVxdWVzdHM6IG1hdGguTmV4dGFmdGVyKDk1LCAwKSwgcmVjZWl2ZWRCeXRlczogOTUwfSwKKwkJe25hbWU6ICJieXRlIGJlbG93IGZsb29yIiwgcmVxdWVzdHM6IDk1LCByZWNlaXZlZEJ5dGVzOiBtYXRoLk5leHRhZnRlcig5NTAsIDApfSwKKwkJe25hbWU6ICJleGFjdCBoaXN0b3JpY2FsIHVwcGVyIiwgcmVxdWVzdHM6IDEwNSwgcmVjZWl2ZWRCeXRlczogMTA1MCwgbGVnYWN5OiB0cnVlLCBtaW5pbXVtV29yazogdHJ1ZX0sCisJCXtuYW1lOiAicmVxdWVzdCBhYm92ZSBoaXN0b3JpY2FsIHVwcGVyIiwgcmVxdWVzdHM6IG1hdGguTmV4dGFmdGVyKDEwNSwgbWF0aC5JbmYoMSkpLCByZWNlaXZlZEJ5dGVzOiAxMDAwLCBtaW5pbXVtV29yazogdHJ1ZX0sCisJCXtuYW1lOiAiYnl0ZSBhYm92ZSBoaXN0b3JpY2FsIHVwcGVyIiwgcmVxdWVzdHM6IDEwMCwgcmVjZWl2ZWRCeXRlczogbWF0aC5OZXh0YWZ0ZXIoMTA1MCwgbWF0aC5JbmYoMSkpLCBtaW5pbXVtV29yazogdHJ1ZX0sCisJCXtuYW1lOiAiYm90aCBtdWNoIGxhcmdlciIsIHJlcXVlc3RzOiAxMDAwMDAwLCByZWNlaXZlZEJ5dGVzOiAxMDAwMDAwMCwgbWluaW11bVdvcms6IHRydWV9LAorCQl7bmFtZTogImxhcmdlIHJlcXVlc3RzIGNhbm5vdCBoaWRlIG1pc3NpbmcgYnl0ZXMiLCByZXF1ZXN0czogMTAwMDAwMCwgcmVjZWl2ZWRCeXRlczogOTQ5fSwKKwkJe25hbWU6ICJsYXJnZSBieXRlcyBjYW5ub3QgaGlkZSBtaXNzaW5nIHJlcXVlc3RzIiwgcmVxdWVzdHM6IDk0LCByZWNlaXZlZEJ5dGVzOiAxMDAwMDAwMH0sCisJCXtuYW1lOiAiemVybyByZXF1ZXN0cyIsIHJlcXVlc3RzOiAwLCByZWNlaXZlZEJ5dGVzOiAxMDAwfSwKKwkJe25hbWU6ICJ6ZXJvIGJ5dGVzIiwgcmVxdWVzdHM6IDEwMCwgcmVjZWl2ZWRCeXRlczogMH0sCisJCXtuYW1lOiAibm9uZmluaXRlIHJlcXVlc3RzIiwgcmVxdWVzdHM6IG1hdGguSW5mKDEpLCByZWNlaXZlZEJ5dGVzOiAxMDAwfSwKKwkJe25hbWU6ICJub25maW5pdGUgYnl0ZXMiLCByZXF1ZXN0czogMTAwLCByZWNlaXZlZEJ5dGVzOiBtYXRoLk5hTigpfSwKKwl9CisJZm9yIF8sIGMgOj0gcmFuZ2UgY2FzZXMgeworCQljYW5kaWRhdGUgOj0gU2NvcmVBZ2dyZWdhdGVEaWFnbm9zdGljc3tSZXF1ZXN0Q291bnQ6IGMucmVxdWVzdHMsIFJlY2VpdmVkQnl0ZXM6IGMucmVjZWl2ZWRCeXRlc30KKwkJbGVnYWN5IDo9IGJ1aWxkU2NvcmVHYXRlcyhiYXNlbGluZSwgY2FuZGlkYXRlLCBuaWwsIG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lMZWdhY3kpCisJCW1pbmltdW1Xb3JrIDo9IGJ1aWxkU2NvcmVHYXRlcyhiYXNlbGluZSwgY2FuZGlkYXRlLCBuaWwsIG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lNaW5pbXVtV29yaykKKwkJaWYgbGVnYWN5WyJHMl92b2x1bWUiXS5QYXNzZWQgIT0gYy5sZWdhY3kgfHwgbWluaW11bVdvcmtbIkcyX3ZvbHVtZSJdLlBhc3NlZCAhPSBjLm1pbmltdW1Xb3JrIHsKKwkJCXQuRXJyb3JmKCIlczogbGVnYWN5PSV0IG1pbmltdW0td29yaz0ldCIsIGMubmFtZSwgbGVnYWN5WyJHMl92b2x1bWUiXS5QYXNzZWQsIG1pbmltdW1Xb3JrWyJHMl92b2x1bWUiXS5QYXNzZWQpCisJCX0KKwkJZm9yIG5hbWUsIGdhdGUgOj0gcmFuZ2UgbGVnYWN5IHsKKwkJCWlmIG5hbWUgIT0gIkcyX3ZvbHVtZSIgJiYgIXJlZmxlY3QuRGVlcEVxdWFsKGdhdGUsIG1pbmltdW1Xb3JrW25hbWVdKSB7CisJCQkJdC5FcnJvcmYoIiVzOiBwb2xpY3kgY2hhbmdlZCB1bnJlbGF0ZWQgZ2F0ZSAlcyIsIGMubmFtZSwgbmFtZSkKKwkJCX0KKwkJfQorCQlpZiBfLCBwcmVzZW50IDo9IG1pbmltdW1Xb3JrWyJHMl92b2x1bWUiXS5EZXRhaWxzWyJyZXF1ZXN0X21heCJdOyBwcmVzZW50IHsKKwkJCXQuRXJyb3IoIm1pbmltdW0td29yayBkaWFnbm9zdGljcyByZXRhaW5lZCBhIHJlcXVlc3QgdXBwZXIgYm91bmQiKQorCQl9CisJCWlmIF8sIHByZXNlbnQgOj0gbWluaW11bVdvcmtbIkcyX3ZvbHVtZSJdLkRldGFpbHNbImJ5dGVzX21heCJdOyBwcmVzZW50IHsKKwkJCXQuRXJyb3IoIm1pbmltdW0td29yayBkaWFnbm9zdGljcyByZXRhaW5lZCBhIGJ5dGUgdXBwZXIgYm91bmQiKQorCQl9CisJfQorfQorCisvLyBUaGUgcG9saWN5IHJlbWFpbnMgYSBtZWRpYW4tdG8tbWVkaWFuIGNvbnRyYWN0LCBub3QgYSBuZXcgcGVyLXJlcGxpY2F0ZSBnYXRlLgorZnVuYyBUZXN0U2NvcmVHMk1pbmltdW1Xb3JrVXNlc0luZGVwZW5kZW50TWVkaWFucyh0ICp0ZXN0aW5nLlQpIHsKKwliYXNlbGluZSA6PSBhZ2dyZWdhdGVCYXNlbGluZShbXVNjb3JlQmFzZWxpbmVSZXBsaWNhdGV7CisJCXtSZXF1ZXN0Q291bnQ6IDEsIFJlY2VpdmVkQnl0ZXM6IDEwMDAwMH0sCisJCXtSZXF1ZXN0Q291bnQ6IDEwMCwgUmVjZWl2ZWRCeXRlczogMTAwMH0sCisJCXtSZXF1ZXN0Q291bnQ6IDEwMDAwLCBSZWNlaXZlZEJ5dGVzOiAxfSwKKwl9KQorCWNhbmRpZGF0ZSA6PSBhZ2dyZWdhdGVDYW5kaWRhdGUoW11jYW5kaWRhdGVSZXBsaWNhdGV7CisJCXtkaWFnbm9zdGljczogU2NvcmVSZXBsaWNhdGVEaWFnbm9zdGljc3tSZXF1ZXN0Q291bnQ6IDEsIFJlY2VpdmVkQnl0ZXM6IDk1MDAwfX0sCisJCXtkaWFnbm9zdGljczogU2NvcmVSZXBsaWNhdGVEaWFnbm9zdGljc3tSZXF1ZXN0Q291bnQ6IDk1LCBSZWNlaXZlZEJ5dGVzOiA5NTB9fSwKKwkJe2RpYWdub3N0aWNzOiBTY29yZVJlcGxpY2F0ZURpYWdub3N0aWNze1JlcXVlc3RDb3VudDogOTUwMCwgUmVjZWl2ZWRCeXRlczogMX19LAorCX0pCisJZ2F0ZSA6PSBidWlsZFNjb3JlR2F0ZXMoYmFzZWxpbmUsIGNhbmRpZGF0ZSwgbmlsLCBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TWluaW11bVdvcmspWyJHMl92b2x1bWUiXQorCWlmICFnYXRlLlBhc3NlZCB8fCBnYXRlLkRldGFpbHNbInJlcXVlc3RfbWluIl0gIT0gOTUuMCB8fCBnYXRlLkRldGFpbHNbImJ5dGVzX21pbiJdICE9IDk1MC4wIHsKKwkJdC5GYXRhbGYoImluZGVwZW5kZW50IG1lZGlhbnMgd2VyZSBub3QgcmV0YWluZWQ6ICUrdiIsIGdhdGUpCisJfQorfQorCisvLyBJbnZhbGlkIHBvbGljeSBvciByZWZlcmVuY2UgZGF0YSBjYW5ub3QgdHVybiBhbiBhYnNlbnQgZmxvb3IgaW50byBhIHBhc3MuCitmdW5jIFRlc3RTY29yZUcyUmVqZWN0c0ludmFsaWRQb2xpY3lBbmRaZXJvQmFzZWxpbmUodCAqdGVzdGluZy5UKSB7CisJcG9zaXRpdmUgOj0gU2NvcmVBZ2dyZWdhdGVEaWFnbm9zdGljc3tSZXF1ZXN0Q291bnQ6IDEwMCwgUmVjZWl2ZWRCeXRlczogMTAwMH0KKwlpZiBidWlsZFNjb3JlR2F0ZXMoYmFzZWxpbmVBZ2dyZWdhdGV7U2NvcmVBZ2dyZWdhdGVEaWFnbm9zdGljczogcG9zaXRpdmV9LCBwb3NpdGl2ZSwgbmlsLCAidW5rbm93bi8xIilbIkcyX3ZvbHVtZSJdLlBhc3NlZCB7CisJCXQuRmF0YWwoInVua25vd24gZzIgcG9saWN5IHBhc3NlZCIpCisJfQorCWZvciBfLCBiYXNlbGluZSA6PSByYW5nZSBbXVNjb3JlQWdncmVnYXRlRGlhZ25vc3RpY3N7e1JlcXVlc3RDb3VudDogMCwgUmVjZWl2ZWRCeXRlczogMTAwMH0sIHtSZXF1ZXN0Q291bnQ6IDEwMCwgUmVjZWl2ZWRCeXRlczogMH0sIHtSZXF1ZXN0Q291bnQ6IG1hdGguTmFOKCksIFJlY2VpdmVkQnl0ZXM6IDEwMDB9fSB7CisJCWlmIGJ1aWxkU2NvcmVHYXRlcyhiYXNlbGluZUFnZ3JlZ2F0ZXtTY29yZUFnZ3JlZ2F0ZURpYWdub3N0aWNzOiBiYXNlbGluZX0sIHBvc2l0aXZlLCBuaWwsIG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lNaW5pbXVtV29yaylbIkcyX3ZvbHVtZSJdLlBhc3NlZCB7CisJCQl0LkZhdGFsKCJpbnZhbGlkIGJhc2VsaW5lIHBhc3NlZCBtaW5pbXVtLXdvcmsgZ2F0ZSIpCisJCX0KKwl9Cit9CisKKy8vIEZ1bGwgYXJ0aWZhY3QgcmVwbGF5IHByb3ZlcyB0aGUgbGFyZ2VyIHdvcmtsb2FkIGlzIGFkbWl0dGVkIG9ubHkgYnkgdGhlIG5ldworLy8gdmVyc2lvbjsgbm8gbGl2ZSB3b3JrbG9hZCBvciBtZWFzdXJlbWVudCBpcyBuZWVkZWQgYnkgdGhpcyByZWdyZXNzaW9uLgorZnVuYyBUZXN0U2NvcmVHMk1pbmltdW1Xb3JrQXV0aGVudGljYXRlZFJlcGxheSh0ICp0ZXN0aW5nLlQpIHsKKwlvcHRpb25zIDo9IGRlZmF1bHRTY29yZUZpeHR1cmVPcHRpb25zKCkKKwlvcHRpb25zLnJvd0NvdW50LCBvcHRpb25zLmFjY291bnRpbmdCeXRlcyA9IDIwMCwgMjAwMDAKKwlmaXh0dXJlIDo9IG5ld1Njb3JlRml4dHVyZSh0LCBvcHRpb25zKQorCWxlZ2FjeSA6PSBTY29yZShmaXh0dXJlLmlucHV0cykKKwlpZiBsZWdhY3kuRXZhbEVycm9yICE9IG5pbCB8fCBsZWdhY3kuR2F0ZXNbIkcyX3ZvbHVtZSJdLlBhc3NlZCB8fCBsZWdhY3kuUGxhY2VhYmxlIHsKKwkJdC5GYXRhbGYoImxlZ2FjeSB1cHBlciBib3VuZHMgY2hhbmdlZDogJSt2IiwgbGVnYWN5KQorCX0KKwlzZXRTY29yZUZpeHR1cmVHMlBvbGljeSh0LCBmaXh0dXJlLCBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TWluaW11bVdvcmspCisJbWluaW11bVdvcmsgOj0gU2NvcmUoZml4dHVyZS5pbnB1dHMpCisJaWYgbWluaW11bVdvcmsuRXZhbEVycm9yICE9IG5pbCB8fCAhbWluaW11bVdvcmsuR2F0ZXNbIkcyX3ZvbHVtZSJdLlBhc3NlZCB8fCAhbWluaW11bVdvcmsuUGxhY2VhYmxlIHx8CisJCW1pbmltdW1Xb3JrLkRpYWdub3N0aWNzLkcyVm9sdW1lUG9saWN5ICE9IG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lNaW5pbXVtV29yayB8fAorCQltaW5pbXVtV29yay5EaWFnbm9zdGljcy5TY29yZXJWZXJzaW9uICE9IG1vZGVsLkNvbXBldGl0aW9uTWluaW11bVdvcmtTY29yZXJWZXJzaW9uIHsKKwkJdC5GYXRhbGYoIm5ldyBwb2xpY3kgZmFpbGVkIGF1dGhlbnRpY2F0ZWQgbGFyZ2VyLXdvcmsgcmVwbGF5OiAlK3YiLCBtaW5pbXVtV29yaykKKwl9CisJZmlyc3QsIGVyciA6PSBtYXJzaGFsU2NvcmVSZXN1bHQobWluaW11bVdvcmspCisJaWYgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoZXJyKQorCX0KKwlzZWNvbmQsIGVyciA6PSBtYXJzaGFsU2NvcmVSZXN1bHQoU2NvcmUoZml4dHVyZS5pbnB1dHMpKQorCWlmIGVyciAhPSBuaWwgfHwgIWJ5dGVzLkVxdWFsKGZpcnN0LCBzZWNvbmQpIHsKKwkJdC5GYXRhbCgiaWRlbnRpY2FsIGltbXV0YWJsZSBhcnRpZmFjdHMgZGlkIG5vdCByZXBsYXkgYnl0ZS1pZGVudGljYWxseSIsIGVycikKKwl9Cit9CisKKy8vIFRoZSBidWlsZGVyIGJpbmRzIHRoZSBzYW1lIHBvbGljeSBhcyBldmVyeSBydW47IGEgQ0xJIGtub2IgYWxvbmUgY2Fubm90CisvLyByZWxhYmVsIG9sZCBtZWFzdXJlbWVudHMgb3IgYmxlc3MgYW4gdW5zdXBwb3J0ZWQgcG9saWN5LgorZnVuYyBUZXN0QnVpbGRTY29yZUJhc2VsaW5lQ2Fycmllc0cyUG9saWN5QW5kUmVqZWN0c01pc21hdGNoZXModCAqdGVzdGluZy5UKSB7CisJZml4dHVyZSA6PSBuZXdTY29yZUZpeHR1cmUodCwgYmFzZWxpbmVTY29yZUZpeHR1cmVPcHRpb25zKCkpCisJaW5wdXRzIDo9IGJhc2VsaW5lSW5wdXRzRnJvbUZpeHR1cmUoZml4dHVyZSkKKwlpbnB1dHMuRzJWb2x1bWVQb2xpY3kgPSBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TWluaW11bVdvcmsKKwlpZiBfLCBlcnIgOj0gQnVpbGRTY29yZUJhc2VsaW5lKGlucHV0cyk7IGVyciA9PSBuaWwgeworCQl0LkZhdGFsKCJtaW5pbXVtLXdvcmsgYnVpbGRlciBhY2NlcHRlZCB2ZXJzaW9uLW9uZSBydW5zIikKKwl9CisJc2V0U2NvcmVGaXh0dXJlRzJQb2xpY3kodCwgZml4dHVyZSwgbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeU1pbmltdW1Xb3JrKQorCWJhc2VsaW5lLCBlcnIgOj0gQnVpbGRTY29yZUJhc2VsaW5lKGlucHV0cykKKwlpZiBlcnIgIT0gbmlsIHx8IGJhc2VsaW5lLkcyVm9sdW1lUG9saWN5ICE9IGlucHV0cy5HMlZvbHVtZVBvbGljeSB8fCBiYXNlbGluZS5TY29yZXJWZXJzaW9uICE9IG1vZGVsLkNvbXBldGl0aW9uTWluaW11bVdvcmtTY29yZXJWZXJzaW9uIHsKKwkJdC5GYXRhbGYoImJ1aWxkZXIgbG9zdCB0aGUgZnJvemVuIG5ldyBwb2xpY3k6ICUrdiAldiIsIGJhc2VsaW5lLCBlcnIpCisJfQorCWlucHV0cy5HMlZvbHVtZVBvbGljeSA9ICJ1bmtub3duLzEiCisJaWYgXywgZXJyIDo9IEJ1aWxkU2NvcmVCYXNlbGluZShpbnB1dHMpOyBlcnIgPT0gbmlsIHsKKwkJdC5GYXRhbCgidW5rbm93biBidWlsZGVyIHBvbGljeSBhY2NlcHRlZCIpCisJfQorfQorCisvLyBCYXNlbGluZSwgcnVuIGFuZCBjb21wbGV0aW9uIG1hcmtlciBhcmUgc2VwYXJhdGUgYXV0aGVudGljYXRlZCBib3VuZGFyaWVzLgorZnVuYyBUZXN0U2NvcmVHMlBvbGljeU1pc21hdGNoRmFpbHNDbG9zZWQodCAqdGVzdGluZy5UKSB7CisJZm9yIF8sIGJvdW5kYXJ5IDo9IHJhbmdlIFtdc3RyaW5neyJiYXNlbGluZSBwb2xpY3kiLCAiYmFzZWxpbmUgdmVyc2lvbiIsICJydW4gcG9saWN5IiwgIm1hcmtlciBwb2xpY3kifSB7CisJCWZpeHR1cmUgOj0gbmV3U2NvcmVGaXh0dXJlKHQsIGRlZmF1bHRTY29yZUZpeHR1cmVPcHRpb25zKCkpCisJCXNldFNjb3JlRml4dHVyZUcyUG9saWN5KHQsIGZpeHR1cmUsIG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lNaW5pbXVtV29yaykKKwkJc3dpdGNoIGJvdW5kYXJ5IHsKKwkJY2FzZSAiYmFzZWxpbmUgcG9saWN5IjoKKwkJCWZpeHR1cmUuYmFzZWxpbmVEYXRhLkcyVm9sdW1lUG9saWN5ID0gInVua25vd24vMSIKKwkJCXdyaXRlU2NvcmVKU09OKHQsIGZpeHR1cmUuYmFzZWxpbmUsIGZpeHR1cmUuYmFzZWxpbmVEYXRhKQorCQljYXNlICJiYXNlbGluZSB2ZXJzaW9uIjoKKwkJCWZpeHR1cmUuYmFzZWxpbmVEYXRhLlNjb3JlclZlcnNpb24gPSBvZmZpY2lhbFNjb3JlclZlcnNpb24KKwkJCXdyaXRlU2NvcmVKU09OKHQsIGZpeHR1cmUuYmFzZWxpbmUsIGZpeHR1cmUuYmFzZWxpbmVEYXRhKQorCQljYXNlICJydW4gcG9saWN5IjoKKwkJCWZpeHR1cmUucnVuU3RhdHMuRzJWb2x1bWVQb2xpY3kgPSAiIgorCQkJd3JpdGVTY29yZUpTT04odCwgc2NvcmVTaWRlY2FyRm9yQ1NWKGZpeHR1cmUucnVuKSwgZml4dHVyZS5ydW5TdGF0cykKKwkJY2FzZSAibWFya2VyIHBvbGljeSI6CisJCQl2YXIgbWFya2VyIHJ1bkZpbmFsTWFya2VyCisJCQljb250ZW50LCBlcnIgOj0gb3MuUmVhZEZpbGUoZml4dHVyZS5tYXJrZXIpCisJCQlpZiBlcnIgIT0gbmlsIHx8IGpzb24uVW5tYXJzaGFsKGNvbnRlbnQsICZtYXJrZXIpICE9IG5pbCB7CisJCQkJdC5GYXRhbCgiY2Fubm90IHJlYWQgc3ludGhldGljIG1hcmtlciIsIGVycikKKwkJCX0KKwkJCW1hcmtlci5HMlZvbHVtZVBvbGljeSA9ICIiCisJCQl3cml0ZVNjb3JlSlNPTih0LCBmaXh0dXJlLm1hcmtlciwgbWFya2VyKQorCQl9CisJCXJlc3VsdCA6PSBTY29yZShmaXh0dXJlLmlucHV0cykKKwkJaWYgcmVzdWx0LkV2YWxFcnJvciA9PSBuaWwgfHwgcmVzdWx0LkV2YWxFcnJvci5LaW5kICE9ICJpbmZyYXN0cnVjdHVyZSIgfHwgcmVzdWx0LlBsYWNlYWJsZSB7CisJCQl0LkVycm9yZigiJXMgbWlzbWF0Y2ggYWNjZXB0ZWQ6ICUrdiIsIGJvdW5kYXJ5LCByZXN1bHQpCisJCX0KKwl9Cit9CisKKy8vIFRoZSBuZXcgb3B0aW9uYWwgZmllbGRzIGRvIG5vdCBwZXJ0dXJiIGhpc3RvcmljYWwgY2Fub25pY2FsIGFydGlmYWN0IGJ5dGVzLgorZnVuYyBUZXN0U2NvcmVHMkxlZ2FjeUNvZGVjQnl0ZXNBbmRSZXBsYXkodCAqdGVzdGluZy5UKSB7CisJYmFzZWxpbmUsIGVyciA6PSBqc29uLk1hcnNoYWwoU2NvcmVCYXNlbGluZU1hbmlmZXN0e30pCisJaWYgZXJyICE9IG5pbCB8fCBzdHJpbmcoYmFzZWxpbmUpICE9IGB7InNjb3JlX3NjaGVtYSI6MCwia2luZCI6IiIsInNjb3Jlcl92ZXJzaW9uIjoiIiwicm91bmRfaWQiOiIiLCJjb25maWdfc2hhMjU2IjoiIiwicmVxdWVzdF90aW1lb3V0X21zIjowLCJydW5fZmxhZ3MiOm51bGwsInRha2VvdmVyX21hcmdpbiI6MCwicmVwbGljYXRlcyI6bnVsbH1gIHsKKwkJdC5GYXRhbCgibGVnYWN5IGJhc2VsaW5lIGNvZGVjIGNoYW5nZWQiLCBzdHJpbmcoYmFzZWxpbmUpLCBlcnIpCisJfQorCW1hcmtlciwgZXJyIDo9IGpzb24uTWFyc2hhbChydW5GaW5hbE1hcmtlcnt9KQorCWlmIGVyciAhPSBuaWwgfHwgc3RyaW5nKG1hcmtlcikgIT0gYHsic2NoZW1hIjowLCJraW5kIjoiIiwic2NvcmVfc2NoZW1hIjowLCJzY29yZXJfdmVyc2lvbiI6IiIsImV2YWx1YXRpb25faWQiOiIiLCJydW5fbWFuaWZlc3Rfc2hhMjU2IjoiIiwicnVuX21hbmlmZXN0X2J5dGVzIjowLCJjb21wbGV0ZWRfdW5peF9tcyI6MH1gIHsKKwkJdC5GYXRhbCgibGVnYWN5IG1hcmtlciBjb2RlYyBjaGFuZ2VkIiwgc3RyaW5nKG1hcmtlciksIGVycikKKwl9CisJZml4dHVyZSA6PSBuZXdTY29yZUZpeHR1cmUodCwgZGVmYXVsdFNjb3JlRml4dHVyZU9wdGlvbnMoKSkKKwlmb3IgXywgcGF0aCA6PSByYW5nZSBbXXN0cmluZ3tmaXh0dXJlLmJhc2VsaW5lLCBzY29yZVNpZGVjYXJGb3JDU1YoZml4dHVyZS5ydW4pLCBmaXh0dXJlLm1hcmtlcn0geworCQljb250ZW50LCBlcnIgOj0gb3MuUmVhZEZpbGUocGF0aCkKKwkJaWYgZXJyICE9IG5pbCB8fCBieXRlcy5Db250YWlucyhjb250ZW50LCBbXWJ5dGUoImcyX3ZvbHVtZV9wb2xpY3kiKSkgeworCQkJdC5GYXRhbCgibGVnYWN5IGFydGlmYWN0IGFjcXVpcmVkIGEgcG9saWN5IGZpZWxkIiwgcGF0aCwgZXJyKQorCQl9CisJfQorCXJlc3VsdCA6PSBTY29yZShmaXh0dXJlLmlucHV0cykKKwljb250ZW50LCBlcnIgOj0gbWFyc2hhbFNjb3JlUmVzdWx0KHJlc3VsdCkKKwlpZiBlcnIgIT0gbmlsIHx8IHJlc3VsdC5FdmFsRXJyb3IgIT0gbmlsIHx8IGJ5dGVzLkNvbnRhaW5zKGNvbnRlbnQsIFtdYnl0ZSgiZzJfdm9sdW1lX3BvbGljeSIpKSB8fCBieXRlcy5Db250YWlucyhjb250ZW50LCBbXWJ5dGUoInNjb3Jlcl92ZXJzaW9uIikpIHsKKwkJdC5GYXRhbCgibGVnYWN5IHNjb3JlIG91dHB1dCBhY3F1aXJlZCBwb2xpY3kvdmVyc2lvbiBkaWFnbm9zdGljcyIsIGVycikKKwl9CisJaWYgbGVuKHJlc3VsdC5HYXRlc1siRzJfdm9sdW1lIl0uRGV0YWlscykgIT0gNiB8fCByZXN1bHQuR2F0ZXNbIkcyX3ZvbHVtZSJdLkRldGFpbHNbInJlcXVlc3RfbWF4Il0gIT0gMTA1LjAgfHwgcmVzdWx0LkdhdGVzWyJHMl92b2x1bWUiXS5EZXRhaWxzWyJieXRlc19tYXgiXSAhPSAxMDUwMC4wIHsKKwkJdC5GYXRhbCgibGVnYWN5IGJvdW5kIGRpYWdub3N0aWNzIGNoYW5nZWQiKQorCX0KK30KZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvc2NvcmVfdGVzdC5nbyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvc2NvcmVfdGVzdC5nbwppbmRleCA2NGYwNTVlYzVlZWI5OWY5YjIyNmU2ZWY1OTA2MjdhYTFiMGI0ZTczLi4xOGUxMTMwZmM1Zjg1NzJkYzY5NDQxYWViODcwZGZlYjIxMTFlNWYyIDEwMDY0NAotLS0gYS9jb25uZWN0L3NpbS1sYXRlbmN5L3Njb3JlX3Rlc3QuZ28KKysrIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9zY29yZV90ZXN0LmdvCkBAIC02OTgsNyArNjk4LDcgQEAgZnVuYyBUZXN0U2NvcmVHYXRlQm91bmRhcmllc0luY2x1c2l2ZSh0ICp0ZXN0aW5nLlQpIHsKIAkJc3RhYmlsaXR5T0s6IHRydWUsCiAJCXJlc291cmNlc09LOiB0cnVlLAogCX19Ci0JZ2F0ZXMgOj0gYnVpbGRTY29yZUdhdGVzKGJhc2VsaW5lLCBjYW5kaWRhdGUsIHJlcGxpY2F0ZXMpCisJZ2F0ZXMgOj0gYnVpbGRTY29yZUdhdGVzKGJhc2VsaW5lLCBjYW5kaWRhdGUsIHJlcGxpY2F0ZXMsICIiKQogCWZvciBuYW1lLCBnYXRlIDo9IHJhbmdlIGdhdGVzIHsKIAkJaWYgIWdhdGUuUGFzc2VkIHsKIAkJCXQuRmF0YWxmKCJpbmNsdXNpdmUgYm91bmRhcnkgZmFpbGVkICVzOiAlK3YiLCBuYW1lLCBnYXRlKQpkaWZmIC0tZ2l0IGEvY29ubmVjdC9zaW0tbGF0ZW5jeS9zY29yZV93b3JrX2NvdmVyYWdlLmdvIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9zY29yZV93b3JrX2NvdmVyYWdlLmdvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjOWNiZTZmZDM4N2VmMTc1ZmU3ODE4MWE4MjBlODlkMjM1YTg3M2YKLS0tIC9kZXYvbnVsbAorKysgYi9jb25uZWN0L3NpbS1sYXRlbmN5L3Njb3JlX3dvcmtfY292ZXJhZ2UuZ28KQEAgLTAsMCArMSwxNDQgQEAKK3BhY2thZ2UgbWFpbgorCisvLyBHNyBhZGRzIGFuIGluZGVwZW5kZW50IGNvbXBsZXRpb24gZmxvb3Igd2l0aG91dCBjaGFuZ2luZyB0aGUgcmF3IGxhdGVuY3kKKy8vIG9iamVjdGl2ZSBvciBHMS9HMi4gVHJ1c3RlZCB3b3JrbG9hZCBieXRlcyByZWdlbmVyYXRlIHRoZSBvZmZlcmVkIGNvaG9ydC4KKworaW1wb3J0ICgKKwkiY3J5cHRvL3NoYTI1NiIKKwkiZm10IgorCSJyZWZsZWN0IgorCSJzbGljZXMiCisJInN0cmNvbnYiCisJInRpbWUiCisKKwkiZ2l0aHViLmNvbS91cm5ldHdvcmsvc2VydmVyL21vZGVsIgorKQorCisvLyBBIG1pc3Npbmcgd29ya2xvYWQgaXMgbmV2ZXIgcmVjb25zdHJ1Y3RlZCBmcm9tIGEgY2FuZGlkYXRlJ3MgY291bnRlcnMgb3IKKy8vIGVjaG9lZCBzZWVkLiBUaGUgZXZhbHVhdG9yIG11c3QgcmV0YWluIHRoZSBleGFjdCBhdXRoZW50aWNhdGVkIHByb3ZpZGVycy4KK2Z1bmMgc2NvcmVXb3JrQ292ZXJhZ2Uoc3RhdHMgKlJ1blN0YXRzLCByb3dzIFtdcmVzdWx0Um93LCB3b3JrbG9hZFBhdGggc3RyaW5nLCBiYXNlbGluZSAqU2NvcmVCYXNlbGluZU1hbmlmZXN0KSAoKm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeSwgZXJyb3IpIHsKKwlpZiBzdGF0cy5Xb3JrQ292ZXJhZ2VQb2xpY3kgPT0gbmlsIHsKKwkJaWYgc3RhdHMuV29ya0NvdmVyYWdlICE9IG5pbCB7CisJCQlyZXR1cm4gbmlsLCBzY29yZUVycm9yKCJ1bmV4cGVjdGVkX3dvcmtfY292ZXJhZ2UiLCAiaGlzdG9yaWNhbCBydW4gaGFzIGEgcHJvc3BlY3RpdmUgd29yayBsZWRnZXIiKQorCQl9CisJCXJldHVybiBuaWwsIG5pbAorCX0KKwlpZiB3b3JrbG9hZFBhdGggPT0gIiIgfHwgc3RhdHMuV29ya0NvdmVyYWdlID09IG5pbCB7CisJCXJldHVybiBuaWwsIHNjb3JlRXJyb3IoIm1pc3Npbmdfd29ya19pbnZlbnRvcnkiLCAiY292ZXJhZ2Ugc2NvcmluZyByZXF1aXJlcyB0aGUgYXV0aGVudGljYXRlZCB3b3JrbG9hZCBhbmQgY29tcGxldGlvbiBsZWRnZXIiKQorCX0KKwljb250ZW50LCBlcnIgOj0gcmVhZEJvdW5kZWRGaWxlKHdvcmtsb2FkUGF0aCwgImNvdmVyYWdlIHdvcmtsb2FkIikKKwlpZiBlcnIgIT0gbmlsIHsKKwkJcmV0dXJuIG5pbCwgZXJyCisJfQorCWlmIGZtdC5TcHJpbnRmKCIleCIsIHNoYTI1Ni5TdW0yNTYoY29udGVudCkpICE9IHN0YXRzLkNvbmZpZ1NoYTI1NiB7CisJCXJldHVybiBuaWwsIHNjb3JlRXJyb3IoIndvcmtsb2FkX21pc21hdGNoIiwgImNvdmVyYWdlIHdvcmtsb2FkIGRvZXMgbm90IG1hdGNoIHRoZSBmcm96ZW4gcHJvdmlkZXJzIGRpZ2VzdCIpCisJfQorCWNvbmZpZywgZXJyIDo9IGRlY29kZUNvbmZpZyhjb250ZW50KQorCWlmIGVyciAhPSBuaWwgfHwgY29uZmlnLlNlZWQgIT0gc3RhdHMuU2VlZCB8fCBzdGF0cy5DbGllbnRzUG9vbCAhPSBjb25maWcuQ2xpZW50cy5Qb29sU2l6ZSB8fCBzdGF0cy5DbGllbnRzRXN0YWJsaXNoZWQgIT0gY29uZmlnLkNsaWVudHMuUG9vbFNpemUgeworCQlyZXR1cm4gbmlsLCBzY29yZUVycm9yKCJ3b3JrbG9hZF9taXNtYXRjaCIsICJjb3ZlcmFnZSB3b3JrbG9hZCBzZWVkIG9yIHJlcHJlc2VudGF0aW9uIGlzIGludmFsaWQiKQorCX0KKwlkdXJhdGlvbiwgZHVyYXRpb25FcnIgOj0gdGltZS5QYXJzZUR1cmF0aW9uKHN0YXRzLkZsYWdzWyJkdXJhdGlvbiJdKQorCXRpbWVvdXQsIHRpbWVvdXRFcnIgOj0gdGltZS5QYXJzZUR1cmF0aW9uKHN0YXRzLkZsYWdzWyJyZXF1ZXN0X3RpbWVvdXQiXSkKKwlpZiBkdXJhdGlvbkVyciAhPSBuaWwgfHwgdGltZW91dEVyciAhPSBuaWwgfHwgZHVyYXRpb24gPD0gMCB8fCB0aW1lb3V0IDw9IDAgfHwgdGltZW91dC5NaWxsaXNlY29uZHMoKSAhPSBzdGF0cy5SZXF1ZXN0VGltZW91dE1zIHsKKwkJcmV0dXJuIG5pbCwgc2NvcmVFcnJvcigiaW52YWxpZF93b3JrX2ludmVudG9yeSIsICJjb3ZlcmFnZSB0aW1pbmcgY29udHJhY3QgaXMgaW5jb21wbGV0ZSIpCisJfQorCXBsYW4sIGVyciA6PSBidWlsZFdvcmtDb3ZlcmFnZVBsYW4oY29uZmlnLCBkdXJhdGlvbiwgdGltZW91dCwgZGVmYXVsdFdvcmtDb3ZlcmFnZUxpbWl0cygpKQorCWlmIGVyciAhPSBuaWwgeworCQlyZXR1cm4gbmlsLCBzY29yZUVycm9yKCJpbnZhbGlkX3dvcmtfaW52ZW50b3J5IiwgImF1dGhlbnRpY2F0ZWQgd29ya2xvYWQgY2Fubm90IGJlIGludmVudG9yaWVkOiAldiIsIGVycikKKwl9CisJcmV0dXJuIHZhbGlkYXRlV29ya0NvdmVyYWdlUmVwb3J0KHN0YXRzLCByb3dzLCBwbGFuLCBiYXNlbGluZSkKK30KKworLy8gUmVnZW5lcmF0ZXMgY3JlZGl0IGZyb20gZXhhY3QgQ1NWIHJlY29yZHMgYW5kIG5hbm9zZWNvbmQgZGVhZGxpbmUgZmFjdHMuCisvLyBJbiBwYXJ0aWN1bGFyLCBtaXNzaW5nIGRlc2NlbmRhbnRzIGFuZCBuZXZlci1sYXVuY2hlZCByb290cyBzdGF5IG1pc3NpbmcuCitmdW5jIHZhbGlkYXRlV29ya0NvdmVyYWdlUmVwb3J0KHN0YXRzICpSdW5TdGF0cywgcm93cyBbXXJlc3VsdFJvdywgcGxhbiAqd29ya0NvdmVyYWdlUGxhbiwgYmFzZWxpbmUgKlNjb3JlQmFzZWxpbmVNYW5pZmVzdCkgKCptb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnksIGVycm9yKSB7CisJcmVwb3J0IDo9IHN0YXRzLldvcmtDb3ZlcmFnZQorCWlmIHJlcG9ydCA9PSBuaWwgfHwgcmVwb3J0LktpbmQgIT0gcGxhbi5LaW5kIHx8IG1vZGVsLlZhbGlkYXRlQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5KCZyZXBvcnQuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5KSAhPSBuaWwgfHwKKwkJcmVwb3J0LlBsYW5TaGEyNTYgIT0gcGxhbi5TaGEyNTYgfHwgcmVwb3J0Lk1lYXN1cmVTdGFydFVuaXhOcyA8PSAwIHx8IHJlcG9ydC5NZWFzdXJlU3RhcnRVbml4TnMvaW50NjQodGltZS5NaWxsaXNlY29uZCkgIT0gc3RhdHMuTWVhc3VyZVN0YXJ0TXMgfHwKKwkJKHJlcG9ydC5NZWFzdXJlU3RhcnRVbml4TnMrcGxhbi5EdXJhdGlvbk5zKS9pbnQ2NCh0aW1lLk1pbGxpc2Vjb25kKSAhPSBzdGF0cy5NZWFzdXJlRW5kTXMgfHwKKwkJaW50NjQobGVuKHJlcG9ydC5Db21wbGV0aW9ucykpID4gcGxhbi5Ub3RhbFBhZ2VzIHsKKwkJcmV0dXJuIG5pbCwgc2NvcmVFcnJvcigiaW52YWxpZF93b3JrX2NvdmVyYWdlIiwgImNvbXBsZXRpb24gbGVkZ2VyIGRvZXMgbm90IG1hdGNoIHRoZSBpbmRlcGVuZGVudGx5IG9mZmVyZWQgY29ob3J0IikKKwl9CisJY29sbGVjdG9yLCBlcnIgOj0gbmV3V29ya0NvdmVyYWdlQ29sbGVjdG9yKHBsYW4sIHRpbWUuVW5peCgwLCByZXBvcnQuTWVhc3VyZVN0YXJ0VW5peE5zKSkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJcmV0dXJuIG5pbCwgc2NvcmVFcnJvcigiaW52YWxpZF93b3JrX2NvdmVyYWdlIiwgImNvbXBsZXRpb24gbGVkZ2VyIGhhcyBhbiBpbnZhbGlkIGJhcnJpZXIiKQorCX0KKwlpZiBiYXNlbGluZSAhPSBuaWwgJiYgbGVuKGJhc2VsaW5lLlJlcGxpY2F0ZXMpICE9IDAgeworCQljb250cm9sIDo9IGJhc2VsaW5lLlJlcGxpY2F0ZXNbMF0uV29ya0NvdmVyYWdlCisJCWlmIGNvbnRyb2wgPT0gbmlsIHx8IGNvbnRyb2wuUGxhblNoYTI1NiAhPSBwbGFuLlNoYTI1NiB7CisJCQlyZXR1cm4gbmlsLCBzY29yZUVycm9yKCJ3b3JrX2ludmVudG9yeV9taXNtYXRjaCIsICJjYW5kaWRhdGUgb2ZmZXJlZCBjb2hvcnQgZGlmZmVycyBmcm9tIHRoZSBhdXRoZW50aWNhdGVkIGJhc2VsaW5lIikKKwkJfQorCX0KKwl1c2VkUm93cyA6PSBtYXBbaW50XWJvb2x7fQorCWZvciBfLCBjb21wbGV0aW9uIDo9IHJhbmdlIHJlcG9ydC5Db21wbGV0aW9ucyB7CisJCWlmIGNvbXBsZXRpb24uUm9vdCA8IDAgfHwgbGVuKHBsYW4uUm9vdHMpIDw9IGNvbXBsZXRpb24uUm9vdCB8fCBjb21wbGV0aW9uLlBhZ2UgPCAwIHx8IGxlbihwbGFuLlJvb3RzW2NvbXBsZXRpb24uUm9vdF0uUGFnZXMpIDw9IGNvbXBsZXRpb24uUGFnZSB8fAorCQkJY29tcGxldGlvbi5Sb3cgPCAwIHx8IGxlbihyb3dzKSA8PSBjb21wbGV0aW9uLlJvdyB8fCB1c2VkUm93c1tjb21wbGV0aW9uLlJvd10gfHwgY29tcGxldGlvbi5TdGFydGVkVW5peE5zIDw9IDAgfHwgY29tcGxldGlvbi5Db21wbGV0ZWRVbml4TnMgPCBjb21wbGV0aW9uLlN0YXJ0ZWRVbml4TnMgeworCQkJcmV0dXJuIG5pbCwgc2NvcmVFcnJvcigiaW52YWxpZF93b3JrX2NvdmVyYWdlIiwgImNvbXBsZXRpb24gbGVkZ2VyIGhhcyBhIGR1cGxpY2F0ZSBvciB1bmtub3duIGNvbXBsZXRpb24iKQorCQl9CisJCXBhZ2UsIHJvdyA6PSBwbGFuLlJvb3RzW2NvbXBsZXRpb24uUm9vdF0uUGFnZXNbY29tcGxldGlvbi5QYWdlXSwgcm93c1tjb21wbGV0aW9uLlJvd10KKwkJZHVyYXRpb25UZXh0IDo9IGZtdC5TcHJpbnRmKCIlLjNmIiwgZmxvYXQ2NChjb21wbGV0aW9uLkNvbXBsZXRlZFVuaXhOcy1jb21wbGV0aW9uLlN0YXJ0ZWRVbml4TnMpL2Zsb2F0NjQodGltZS5NaWxsaXNlY29uZCkpCisJCW1pbGxpcywgcGFyc2VFcnIgOj0gc3RyY29udi5QYXJzZUZsb2F0KGR1cmF0aW9uVGV4dCwgNjQpCisJCWlmIHBhcnNlRXJyICE9IG5pbCB8fCByb3cucGF0aCAhPSBwYWdlLlVyaSB8fCByb3cuZGVwdGggIT0gcGFnZS5EZXB0aCB8fCByb3cuc3RhdHVzICE9IDIwMCB8fCByb3cuYnl0ZXMgIT0gcGFnZS5CeXRlcyB8fAorCQkJcm93LnRTdGFydE1zICE9IGNvbXBsZXRpb24uU3RhcnRlZFVuaXhOcy9pbnQ2NCh0aW1lLk1pbGxpc2Vjb25kKSB8fCByb3cudG90YWxNcyAhPSBtaWxsaXMgfHwKKwkJCSFjb2xsZWN0b3IucmVjb3JkKGNvbXBsZXRpb24uUm9vdCwgY29tcGxldGlvbi5QYWdlLCBjb21wbGV0aW9uLlJvdywgdGltZS5Vbml4KDAsIGNvbXBsZXRpb24uU3RhcnRlZFVuaXhOcyksIHRpbWUuVW5peCgwLCBjb21wbGV0aW9uLkNvbXBsZXRlZFVuaXhOcykpIHsKKwkJCXJldHVybiBuaWwsIHNjb3JlRXJyb3IoImludmFsaWRfd29ya19jb3ZlcmFnZSIsICJjb21wbGV0aW9uIGRvZXMgbm90IGJpbmQgYSBjb21wbGV0ZSBleHBlY3RlZCByZXNwb25zZSBiZWZvcmUgaXRzIG9yaWdpbmFsIGRlYWRsaW5lIikKKwkJfQorCQl1c2VkUm93c1tjb21wbGV0aW9uLlJvd10gPSB0cnVlCisJfQorCXdhbnQgOj0gY29sbGVjdG9yLnJlcG9ydCgpLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeQorCWlmICFyZWZsZWN0LkRlZXBFcXVhbChyZXBvcnQuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5LCB3YW50KSB7CisJCXJldHVybiBuaWwsIHNjb3JlRXJyb3IoImludmFsaWRfd29ya19jb3ZlcmFnZSIsICJjb21wbGV0aW9uIGNvdW50ZXJzIGRpZmZlciBmcm9tIHRoZWlyIGluZGVwZW5kZW50bHkgcmVjb21wdXRlZCBsZWRnZXIiKQorCX0KKwlyZXR1cm4gJndhbnQsIG5pbAorfQorCisvLyBDb3ZlcmFnZSBpcyBhIHBhaXJlZCBydW4tbGV2ZWwgc3RhdGlzdGljLiBXZSByZXRhaW4gZWFjaCBydW4gc2VwYXJhdGVseSBhbmQKKy8vIGNvbXBhcmUgaXRzIG1lZGlhbiwgbmV2ZXIgcHJldGVuZGluZyByZXF1ZXN0cyBhcmUgaW5kZXBlbmRlbnQgUjkgc2FtcGxlcy4KK2Z1bmMgbWVkaWFuV29ya0NvdmVyYWdlKHZhbHVlcyBbXSptb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnkpICptb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnkgeworCWlmIGxlbih2YWx1ZXMpID09IDAgfHwgbGVuKHZhbHVlcyklMiA9PSAwIHsKKwkJcmV0dXJuIG5pbAorCX0KKwlwYWdlcywgYnl0ZXMgOj0gW11pbnQ2NHt9LCBbXWludDY0e30KKwl2YXIgZmlyc3QgKm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeQorCWZvciBfLCB2YWx1ZSA6PSByYW5nZSB2YWx1ZXMgeworCQlpZiBtb2RlbC5WYWxpZGF0ZUNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeSh2YWx1ZSkgIT0gbmlsIHsKKwkJCXJldHVybiBuaWwKKwkJfQorCQlpZiBmaXJzdCA9PSBuaWwgeworCQkJZmlyc3QgPSB2YWx1ZQorCQl9CisJCWlmIHZhbHVlLlBsYW5TaGEyNTYgIT0gZmlyc3QuUGxhblNoYTI1NiB8fCB2YWx1ZS5PZmZlcmVkUm9vdHMgIT0gZmlyc3QuT2ZmZXJlZFJvb3RzIHx8IHZhbHVlLkV4cGVjdGVkUGFnZXMgIT0gZmlyc3QuRXhwZWN0ZWRQYWdlcyB8fCB2YWx1ZS5FeHBlY3RlZEJ5dGVzICE9IGZpcnN0LkV4cGVjdGVkQnl0ZXMgeworCQkJcmV0dXJuIG5pbAorCQl9CisJCXBhZ2VzID0gYXBwZW5kKHBhZ2VzLCB2YWx1ZS5Db21wbGV0ZWRQYWdlcykKKwkJYnl0ZXMgPSBhcHBlbmQoYnl0ZXMsIHZhbHVlLkNvbXBsZXRlZEJ5dGVzKQorCX0KKwlzbGljZXMuU29ydChwYWdlcykKKwlzbGljZXMuU29ydChieXRlcykKKwlyZXN1bHQgOj0gKmZpcnN0CisJcmVzdWx0LkNvbXBsZXRlZFBhZ2VzLCByZXN1bHQuQ29tcGxldGVkQnl0ZXMgPSBwYWdlc1tsZW4ocGFnZXMpLzJdLCBieXRlc1tsZW4oYnl0ZXMpLzJdCisJcmVzdWx0LlBhZ2VDb3ZlcmFnZSA9IGZsb2F0NjQocmVzdWx0LkNvbXBsZXRlZFBhZ2VzKSAvIGZsb2F0NjQocmVzdWx0LkV4cGVjdGVkUGFnZXMpCisJcmVzdWx0LkJ5dGVDb3ZlcmFnZSA9IGZsb2F0NjQocmVzdWx0LkNvbXBsZXRlZEJ5dGVzKSAvIGZsb2F0NjQocmVzdWx0LkV4cGVjdGVkQnl0ZXMpCisJcmV0dXJuICZyZXN1bHQKK30KKworLy8gRWFjaCBpbmNsdXNpdmUgZmxvb3IgaXMgOTUlIG9mIHRoYXQgZGltZW5zaW9uJ3MgYmFzZWxpbmUgY292ZXJhZ2UuIFRoZXJlCisvLyBpcyBubyB1cHBlci12b2x1bWUgcGVuYWx0eTsgaW5kZXBlbmRlbnQgcnVudGltZSBxdWFsaWZpY2F0aW9uIHJlbWFpbnMgcmVxdWlyZWQuCitmdW5jIHdvcmtDb3ZlcmFnZUdhdGUocG9saWN5ICptb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSwgYmFzZWxpbmUsIGNhbmRpZGF0ZSAqbW9kZWwuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5KSBTY29yZUdhdGUgeworCWdhdGUgOj0gU2NvcmVHYXRle0RldGFpbHM6IG1hcFtzdHJpbmddYW55eyJwb2xpY3kiOiBwb2xpY3ksICJiYXNlbGluZSI6IGJhc2VsaW5lLCAiY2FuZGlkYXRlIjogY2FuZGlkYXRlfX0KKwlpZiBwb2xpY3kgPT0gbmlsIHx8IG1vZGVsLlZhbGlkYXRlQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3kocG9saWN5KSAhPSBuaWwgfHwKKwkJbW9kZWwuVmFsaWRhdGVDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnkoYmFzZWxpbmUpICE9IG5pbCB8fCBtb2RlbC5WYWxpZGF0ZUNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeShjYW5kaWRhdGUpICE9IG5pbCB8fAorCQliYXNlbGluZS5QbGFuU2hhMjU2ICE9IGNhbmRpZGF0ZS5QbGFuU2hhMjU2IHx8IGJhc2VsaW5lLk9mZmVyZWRSb290cyAhPSBjYW5kaWRhdGUuT2ZmZXJlZFJvb3RzIHx8IGJhc2VsaW5lLkV4cGVjdGVkUGFnZXMgIT0gY2FuZGlkYXRlLkV4cGVjdGVkUGFnZXMgfHwgYmFzZWxpbmUuRXhwZWN0ZWRCeXRlcyAhPSBjYW5kaWRhdGUuRXhwZWN0ZWRCeXRlcyB8fAorCQliYXNlbGluZS5Db21wbGV0ZWRQYWdlcyA8PSAwIHx8IGJhc2VsaW5lLkNvbXBsZXRlZEJ5dGVzIDw9IDAgfHwKKwkJY2FuZGlkYXRlLkNvbXBsZXRlZFBhZ2VzID09IDAgfHwgY2FuZGlkYXRlLkNvbXBsZXRlZEJ5dGVzID09IDAgeworCQlyZXR1cm4gZ2F0ZQorCX0KKwlnYXRlLkRldGFpbHNbImJhc2VsaW5lX3BhZ2VfY292ZXJhZ2UiXSA9IGJhc2VsaW5lLlBhZ2VDb3ZlcmFnZQorCWdhdGUuRGV0YWlsc1siY2FuZGlkYXRlX3BhZ2VfY292ZXJhZ2UiXSA9IGNhbmRpZGF0ZS5QYWdlQ292ZXJhZ2UKKwlnYXRlLkRldGFpbHNbInBhZ2VfbWluX2luY2x1c2l2ZSJdID0gYmFzZWxpbmUuUGFnZUNvdmVyYWdlICogcG9saWN5Lk1pbmltdW1QYWdlQ292ZXJhZ2VSYXRpbworCWdhdGUuRGV0YWlsc1siYmFzZWxpbmVfYnl0ZV9jb3ZlcmFnZSJdID0gYmFzZWxpbmUuQnl0ZUNvdmVyYWdlCisJZ2F0ZS5EZXRhaWxzWyJjYW5kaWRhdGVfYnl0ZV9jb3ZlcmFnZSJdID0gY2FuZGlkYXRlLkJ5dGVDb3ZlcmFnZQorCWdhdGUuRGV0YWlsc1siYnl0ZV9taW5faW5jbHVzaXZlIl0gPSBiYXNlbGluZS5CeXRlQ292ZXJhZ2UgKiBwb2xpY3kuTWluaW11bUJ5dGVDb3ZlcmFnZVJhdGlvCisJZ2F0ZS5QYXNzZWQgPSBtb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVBhc3NlZChwb2xpY3ksIGJhc2VsaW5lLCBjYW5kaWRhdGUpCisJcmV0dXJuIGdhdGUKK30KZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvc2NvcmVfd29ya19jb3ZlcmFnZV90ZXN0LmdvIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9zY29yZV93b3JrX2NvdmVyYWdlX3Rlc3QuZ28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzRkNDNiNjg1NDc1ZmEwOGVkNGMxMjMyM2VhOWY3YTA2OTUxYzFiMAotLS0gL2Rldi9udWxsCisrKyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvc2NvcmVfd29ya19jb3ZlcmFnZV90ZXN0LmdvCkBAIC0wLDAgKzEsMzA5IEBACitwYWNrYWdlIG1haW4KKworLy8gQ292ZXJhZ2UgZ2F0ZSBjb250cm9scyBrZWVwIHdvcmsgb21pc3Npb24gZGlzdGluY3QgZnJvbSBkaXNob25lc3R5IGFuZCBmcm9tCisvLyB0aGUgaGlzdG9yaWNhbCBhdHRlbXB0ZWQtcmVxdWVzdCBwOTUvc3VjY2Vzcy92b2x1bWUgcG9wdWxhdGlvbi4KKworaW1wb3J0ICgKKwkiYnVmaW8iCisJImJ5dGVzIgorCSJjcnlwdG8vc2hhMjU2IgorCSJlbmNvZGluZy9qc29uIgorCSJmbXQiCisJIm1hdGgiCisJIm9zIgorCSJwYXRoL2ZpbGVwYXRoIgorCSJzdHJpbmdzIgorCSJ0ZXN0aW5nIgorCSJ0aW1lIgorCisJImdpdGh1Yi5jb20vdXJuZXR3b3JrL3NlcnZlci9tb2RlbCIKKykKKworLy8gQnVpbGRzIGEgY29tcGxldGUgYXV0aGVudGljYXRlZCBzeW50aGV0aWMgYXJ0aWZhY3QgY2hhaW4sIGluY2x1ZGluZyBnZW51aW5lCisvLyB3b3JrbG9hZCBzZXJpYWxpemF0aW9uLCBnZW5lcmF0ZWQgZXhwZWN0ZWQgcGF0aHMsIENTViBpZGVudGl0eSBhbmQgbWFya2VyLgorZnVuYyBjb21wbGV0ZVdvcmtDb3ZlcmFnZVNjb3JlRml4dHVyZSh0ICp0ZXN0aW5nLlQpICpzY29yZUZpeHR1cmUgeworCXQuSGVscGVyKCkKKwlvcHRpb25zIDo9IGJhc2VsaW5lU2NvcmVGaXh0dXJlT3B0aW9ucygpCisJb3B0aW9ucy5zYW1wbGVFbmRPZmZzZXRNcyA9IDE4MTAKKwlmaXh0dXJlIDo9IG5ld1Njb3JlRml4dHVyZSh0LCBvcHRpb25zKQorCWNvbmZpZyA6PSB3b3JrQ292ZXJhZ2VDb25maWdGb3JUZXN0KCkKKwljb25maWcuU2l0ZS5NZWFuRGVwdGggPSAxMDAwCisJY29uZmlnLlNpdGUuTWluQm9keUJ5dGVzLCBjb25maWcuU2l0ZS5NYXhCb2R5Qnl0ZXMgPSB0aHJvdWdocHV0TWluQnl0ZXMrMSwgdGhyb3VnaHB1dE1pbkJ5dGVzKzEKKwl3b3JrbG9hZCA6PSBmaWxlcGF0aC5Kb2luKGZpeHR1cmUuZGlyLCAicHJvdmlkZXJzLnltbCIpCisJaWYgZXJyIDo9IFNhdmVDb25maWcod29ya2xvYWQsIGNvbmZpZyk7IGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJY29udGVudCwgZXJyIDo9IG9zLlJlYWRGaWxlKHdvcmtsb2FkKQorCWlmIGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJcGxhbiwgZXJyIDo9IGJ1aWxkV29ya0NvdmVyYWdlUGxhbihjb25maWcsIDIqdGltZS5TZWNvbmQsIDEyMCp0aW1lLlNlY29uZCwgZGVmYXVsdFdvcmtDb3ZlcmFnZUxpbWl0cygpKQorCWlmIGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJc3RhcnQgOj0gdGltZS5Vbml4TWlsbGkoZml4dHVyZS5ydW5TdGF0cy5NZWFzdXJlU3RhcnRNcykKKwljb2xsZWN0b3IsIGVyciA6PSBuZXdXb3JrQ292ZXJhZ2VDb2xsZWN0b3IocGxhbiwgc3RhcnQpCisJaWYgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoZXJyKQorCX0KKwl2YXIgY3N2IGJ5dGVzLkJ1ZmZlcgorCWRyaXZlciA6PSAmQ2xpZW50RHJpdmVye291dDogYnVmaW8uTmV3V3JpdGVyKCZjc3YpfQorCWRyaXZlci53cml0ZUNzdkhlYWRlcigpCisJZm9yIHJvb3RJbmRleCwgcm9vdCA6PSByYW5nZSBwbGFuLlJvb3RzIHsKKwkJZm9yIHBhZ2VJbmRleCwgcGFnZSA6PSByYW5nZSByb290LlBhZ2VzIHsKKwkJCXN0YXJ0ZWQgOj0gc3RhcnQuQWRkKHRpbWUuRHVyYXRpb24ocm9vdC5PZmZzZXROcykgKyB0aW1lLk1pbGxpc2Vjb25kICsgdGltZS5EdXJhdGlvbihwYWdlLkRlcHRoKSoxMDAqdGltZS5NaWxsaXNlY29uZCkKKwkJCWNvbXBsZXRlZCA6PSBzdGFydGVkLkFkZCgxMDAgKiB0aW1lLk1pbGxpc2Vjb25kKQorCQkJaW5kZXggOj0gZHJpdmVyLndyaXRlQ3N2Um93KHN0YXJ0ZWQsICJzeW50aGV0aWMtY2xpZW50IiwgcGFnZS5VcmksIHBhZ2UuRGVwdGgsIDIwMCwgcGFnZS5CeXRlcywgMTAqdGltZS5NaWxsaXNlY29uZCwgMTAwKnRpbWUuTWlsbGlzZWNvbmQpCisJCQlpZiAhY29sbGVjdG9yLnJlY29yZChyb290SW5kZXgsIHBhZ2VJbmRleCwgaW5kZXgsIHN0YXJ0ZWQsIGNvbXBsZXRlZCkgeworCQkJCXQuRmF0YWwoInN5bnRoZXRpYyBleHBlY3RlZCBjb21wbGV0aW9uIHdhcyBub3QgY3JlZGl0ZWQiKQorCQkJfQorCQl9CisJfQorCWlmIGVyciA6PSBkcml2ZXIuZmx1c2goKTsgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoZXJyKQorCX0KKwlpZiBlcnIgOj0gb3MuV3JpdGVGaWxlKGZpeHR1cmUucnVuLCBjc3YuQnl0ZXMoKSwgMG82MDApOyBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCXBvbGljeSA6PSBtb2RlbC5EZWZhdWx0Q29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3koKQorCXN0YXRzIDo9IGZpeHR1cmUucnVuU3RhdHMKKwlzdGF0cy5TY2hlbWEsIHN0YXRzLlNjb3JlclZlcnNpb24sIHN0YXRzLkcyVm9sdW1lUG9saWN5ID0gMywgbW9kZWwuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTY29yZXJWZXJzaW9uLCBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TWluaW11bVdvcmsKKwlzdGF0cy5Xb3JrQ292ZXJhZ2VQb2xpY3ksIHN0YXRzLldvcmtDb3ZlcmFnZSA9ICZwb2xpY3ksIGNvbGxlY3Rvci5yZXBvcnQoKQorCXN0YXRzLkNvbmZpZ1NoYTI1Niwgc3RhdHMuU2VlZCA9IGZtdC5TcHJpbnRmKCIleCIsIHNoYTI1Ni5TdW0yNTYoY29udGVudCkpLCBjb25maWcuU2VlZAorCXN0YXRzLkNsaWVudHNQb29sLCBzdGF0cy5DbGllbnRzRXN0YWJsaXNoZWQgPSBjb25maWcuQ2xpZW50cy5Qb29sU2l6ZSwgY29uZmlnLkNsaWVudHMuUG9vbFNpemUKKwlzdGF0cy5GbGFnc1siZHVyYXRpb24iXSA9ICIycyIKKwlzdGF0cy5GbGFnc1sicmVxdWVzdF90aW1lb3V0Il0gPSAiMm0wcyIKKwlzdGF0cy5SZXF1ZXN0VGltZW91dE1zID0gMTIwMDAwCisJc3RhdHMuTWVhc3VyZUVuZE1zID0gc3RhcnQuQWRkKDIgKiB0aW1lLlNlY29uZCkuVW5peE1pbGxpKCkKKwlzdGF0cy5SZXN1bHRzQ3N2U2hhMjU2LCBzdGF0cy5SZXN1bHRzQ3N2Qnl0ZXMgPSBkcml2ZXIuY3N2SWRlbnRpdHkoKQorCXN1bW1hcml6ZVJvd3MoZHJpdmVyLnJlc3VsdFJvd3MoKSwgc3RhdHMpCisJaWYgc3RhdHMuUm93cyA8PSBzdGF0cy5Sb3dzSW5XaW5kb3cgeworCQl0LkZhdGFsKCJzeW50aGV0aWMgY292ZXJhZ2UgZml4dHVyZSBkaWQgbm90IGV4ZXJjaXNlIHBvc3Qtd2luZG93IGNyYXdsIGRyYWluIikKKwl9CisJd3JpdGVTY29yZUpTT04odCwgZml4dHVyZS5hY2NvdW50aW5nLCBBY2NvdW50aW5nU25hcHNob3R7U2NoZW1hOiAxLCBLaW5kOiBhY2NvdW50aW5nU25hcHNob3RLaW5kLCBFdmFsdWF0aW9uSWQ6IHN0YXRzLkV2YWx1YXRpb25JZCwgQ29tcGxldGU6IHRydWUsIE1lYXN1cmVTdGFydE1zOiBzdGF0cy5NZWFzdXJlU3RhcnRNcywgTWVhc3VyZUVuZE1zOiBzdGF0cy5NZWFzdXJlRW5kTXMsIFByb3ZpZGVyRWdyZXNzQnl0ZXM6IHBsYW4uVG90YWxCeXRlc30pCisJd3JpdGVTY29yZUpTT04odCwgc2NvcmVTaWRlY2FyRm9yQ1NWKGZpeHR1cmUucnVuKSwgc3RhdHMpCisJaWYgZXJyIDo9IHdyaXRlRmluYWxNYXJrZXIoZml4dHVyZS5tYXJrZXIsIHNjb3JlU2lkZWNhckZvckNTVihmaXh0dXJlLnJ1biksIHN0YXRzKTsgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoZXJyKQorCX0KKwljb250cm9sIDo9IGZpeHR1cmUuYmFzZWxpbmVEYXRhCisJY29udHJvbC5HMlZvbHVtZVBvbGljeSwgY29udHJvbC5Xb3JrQ292ZXJhZ2VQb2xpY3ksIGNvbnRyb2wuU2NvcmVyVmVyc2lvbiA9IHN0YXRzLkcyVm9sdW1lUG9saWN5LCAmcG9saWN5LCBzdGF0cy5TY29yZXJWZXJzaW9uCisJY29udHJvbC5Db25maWdTaGEyNTYgPSBzdGF0cy5Db25maWdTaGEyNTYKKwljb250cm9sLlJlcXVlc3RUaW1lb3V0TXMgPSBzdGF0cy5SZXF1ZXN0VGltZW91dE1zCisJbWVhc3VyZWQsIGVyciA6PSBzY29yZVJvd3MoZHJpdmVyLnJlc3VsdFJvd3MoKSwgc3RhdHMpCisJaWYgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoZXJyKQorCX0KKwljb250cm9sLlJlcGxpY2F0ZXNbMF0uUmVxdWVzdENvdW50LCBjb250cm9sLlJlcGxpY2F0ZXNbMF0uUmVjZWl2ZWRCeXRlcyA9IG1lYXN1cmVkLlJlcXVlc3RDb3VudCwgbWVhc3VyZWQuUmVjZWl2ZWRCeXRlcworCWNvbnRyb2wuUmVwbGljYXRlc1swXS5Xb3JrQ292ZXJhZ2UgPSAmc3RhdHMuV29ya0NvdmVyYWdlLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeQorCXdyaXRlU2NvcmVKU09OKHQsIGZpeHR1cmUuYmFzZWxpbmUsIGNvbnRyb2wpCisJZml4dHVyZS5pbnB1dHMuV29ya2xvYWRQYXRoID0gd29ya2xvYWQKKwlyZXR1cm4gZml4dHVyZQorfQorCisvLyBBIGZ1bGx5IGJvdW5kIG5vLW9wIHJlYWNoZXMgYWxsIHNldmVuIGdhdGVzLCBhbmQgdGhlIHNhbWUgYXJ0aWZhY3QgY2hhaW4KKy8vIHByb2R1Y2VzIGEgZnJlc2ggcHJvc3BlY3RpdmUgYmFzZWxpbmUgcmF0aGVyIHRoYW4gcmVsYWJlbGluZyBhIHYyIGNvbnRyb2wuCitmdW5jIFRlc3RXb3JrQ292ZXJhZ2VTY29yZUFuZEZyZXNoQmFzZWxpbmVBdXRoZW50aWNhdGVGdWxsQXJ0aWZhY3RDaGFpbih0ICp0ZXN0aW5nLlQpIHsKKwlmaXh0dXJlIDo9IGNvbXBsZXRlV29ya0NvdmVyYWdlU2NvcmVGaXh0dXJlKHQpCisJcmVzdWx0IDo9IFNjb3JlKGZpeHR1cmUuaW5wdXRzKQorCWlmIHJlc3VsdC5FdmFsRXJyb3IgIT0gbmlsIHx8ICFyZXN1bHQuUGxhY2VhYmxlIHx8IGxlbihyZXN1bHQuR2F0ZXMpICE9IDcgfHwgcmVzdWx0LkRpYWdub3N0aWNzLldvcmtDb3ZlcmFnZVBvbGljeSA9PSBuaWwgeworCQl0LkZhdGFsKCJjb21wbGV0ZSBuby1vcCBmYWlsZWQgdGhlIHNldmVuLWdhdGUgY29udHJhY3QiLCByZXN1bHQuRXZhbEVycm9yLCByZXN1bHQuR2F0ZXMpCisJfQorCWlmIF8sIGVyciA6PSBtYXJzaGFsU2NvcmVSZXN1bHQocmVzdWx0KTsgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoInNoYXJlZCBzY29yZSBjb25zdW1lciByZWplY3RlZCB0aGUgbmV3IGluc3RydW1lbnQgY29udHJhY3QiLCBlcnIpCisJfQorCWlucHV0cyA6PSBiYXNlbGluZUlucHV0c0Zyb21GaXh0dXJlKGZpeHR1cmUpCisJaW5wdXRzLkcyVm9sdW1lUG9saWN5LCBpbnB1dHMuV29ya0NvdmVyYWdlUG9saWN5LCBpbnB1dHMuV29ya2xvYWRQYXRoID0gbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeU1pbmltdW1Xb3JrLCBmaXh0dXJlLnJ1blN0YXRzLldvcmtDb3ZlcmFnZVBvbGljeSwgZml4dHVyZS5pbnB1dHMuV29ya2xvYWRQYXRoCisJYmFzZWxpbmUsIGVyciA6PSBCdWlsZFNjb3JlQmFzZWxpbmUoaW5wdXRzKQorCWlmIGVyciAhPSBuaWwgfHwgYmFzZWxpbmUuU2NvcmVyVmVyc2lvbiAhPSBtb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVNjb3JlclZlcnNpb24gfHwgYmFzZWxpbmUuV29ya0NvdmVyYWdlUG9saWN5ID09IG5pbCB8fCBsZW4oYmFzZWxpbmUuUmVwbGljYXRlcykgIT0gMSB8fCBiYXNlbGluZS5SZXBsaWNhdGVzWzBdLldvcmtDb3ZlcmFnZSA9PSBuaWwgeworCQl0LkZhdGFsKCJmcmVzaCBjb3ZlcmFnZSBiYXNlbGluZSBkaWQgbm90IGJpbmQgaXRzIGluZGVwZW5kZW50IGV4cGVjdGVkIHdvcmsiLCBlcnIpCisJfQorfQorCisvLyBNaXNzaW5nIHdvcmtsb2FkLCBwb2xpY3ksIGxlZGdlciBvciBtYXJrZXIgcHJvdmVuYW5jZSBmYWlscyBjbG9zZWQgYmVmb3JlIGEKKy8vIHBsYWNlYWJsZSBzY29yZSBjYW4gbGVhdmUgdGhlIHByaXN0aW5lIHNjb3Jlci4KK2Z1bmMgVGVzdFdvcmtDb3ZlcmFnZVNjb3JlUmVqZWN0c01pc3NpbmdBbmRNaXhlZFByb3ZlbmFuY2UodCAqdGVzdGluZy5UKSB7CisJZm9yIF8sIG11dGF0ZSA6PSByYW5nZSBbXWZ1bmMoKnNjb3JlRml4dHVyZSl7CisJCWZ1bmMoZml4dHVyZSAqc2NvcmVGaXh0dXJlKSB7IGZpeHR1cmUuaW5wdXRzLldvcmtsb2FkUGF0aCA9ICIiIH0sCisJCWZ1bmMoZml4dHVyZSAqc2NvcmVGaXh0dXJlKSB7IGZpeHR1cmUuaW5wdXRzLldvcmtsb2FkUGF0aCA9IGZpeHR1cmUuc3RkZXJyIH0sCisJCWZ1bmMoZml4dHVyZSAqc2NvcmVGaXh0dXJlKSB7IGZpeHR1cmUucnVuU3RhdHMuV29ya0NvdmVyYWdlID0gbmlsIH0sCisJCWZ1bmMoZml4dHVyZSAqc2NvcmVGaXh0dXJlKSB7IGZpeHR1cmUucnVuU3RhdHMuV29ya0NvdmVyYWdlUG9saWN5ID0gbmlsIH0sCisJCWZ1bmMoZml4dHVyZSAqc2NvcmVGaXh0dXJlKSB7IGZpeHR1cmUucnVuU3RhdHMuU2NoZW1hID0gMiB9LAorCQlmdW5jKGZpeHR1cmUgKnNjb3JlRml4dHVyZSkgeworCQkJZml4dHVyZS5ydW5TdGF0cy5TY29yZXJWZXJzaW9uID0gbW9kZWwuQ29tcGV0aXRpb25NaW5pbXVtV29ya1Njb3JlclZlcnNpb24KKwkJfSwKKwkJZnVuYyhmaXh0dXJlICpzY29yZUZpeHR1cmUpIHsgZml4dHVyZS5iYXNlbGluZURhdGEuV29ya0NvdmVyYWdlUG9saWN5ID0gbmlsIH0sCisJCWZ1bmMoZml4dHVyZSAqc2NvcmVGaXh0dXJlKSB7IGZpeHR1cmUuYmFzZWxpbmVEYXRhLlJlcGxpY2F0ZXNbMF0uV29ya0NvdmVyYWdlID0gbmlsIH0sCisJfSB7CisJCWZpeHR1cmUgOj0gY29tcGxldGVXb3JrQ292ZXJhZ2VTY29yZUZpeHR1cmUodCkKKwkJbXV0YXRlKGZpeHR1cmUpCisJCXdyaXRlU2NvcmVKU09OKHQsIHNjb3JlU2lkZWNhckZvckNTVihmaXh0dXJlLnJ1biksIGZpeHR1cmUucnVuU3RhdHMpCisJCXdyaXRlU2NvcmVKU09OKHQsIGZpeHR1cmUuYmFzZWxpbmUsIGZpeHR1cmUuYmFzZWxpbmVEYXRhKQorCQlpZiBlcnIgOj0gd3JpdGVGaW5hbE1hcmtlcihmaXh0dXJlLm1hcmtlciwgc2NvcmVTaWRlY2FyRm9yQ1NWKGZpeHR1cmUucnVuKSwgZml4dHVyZS5ydW5TdGF0cyk7IGVyciAhPSBuaWwgeworCQkJdC5GYXRhbChlcnIpCisJCX0KKwkJaWYgcmVzdWx0IDo9IFNjb3JlKGZpeHR1cmUuaW5wdXRzKTsgcmVzdWx0LkV2YWxFcnJvciA9PSBuaWwgfHwgcmVzdWx0LlBsYWNlYWJsZSB7CisJCQl0LkZhdGFsKCJtaXhlZCBjb3ZlcmFnZSBwcm92ZW5hbmNlIHByb2R1Y2VkIGEgcGxhY2VhYmxlIHJlc3VsdCIpCisJCX0KKwl9Cit9CisKKy8vIFVuaWZvcm0gYnl0ZXMgbWFrZSBlYWNoIGRpbWVuc2lvbiBpbmRlcGVuZGVudGx5IGFkanVzdGFibGUgaW4gZ2F0ZSB0ZXN0cy4KK2Z1bmMgd29ya0NvdmVyYWdlU3VtbWFyeUZvclRlc3QoY29tcGxldGVkUGFnZXMsIGNvbXBsZXRlZEJ5dGVzIGludDY0KSAqbW9kZWwuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5IHsKKwlyZXR1cm4gJm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeXtQbGFuU2hhMjU2OiBzdHJpbmdzLlJlcGVhdCgiYSIsIDY0KSwgT2ZmZXJlZFJvb3RzOiAxMDAsIEV4cGVjdGVkUGFnZXM6IDEwMDAwLCBFeHBlY3RlZEJ5dGVzOiAxMDAwMDAwLCBDb21wbGV0ZWRQYWdlczogY29tcGxldGVkUGFnZXMsIENvbXBsZXRlZEJ5dGVzOiBjb21wbGV0ZWRCeXRlcywgUGFnZUNvdmVyYWdlOiBmbG9hdDY0KGNvbXBsZXRlZFBhZ2VzKSAvIDEwMDAwLCBCeXRlQ292ZXJhZ2U6IGZsb2F0NjQoY29tcGxldGVkQnl0ZXMpIC8gMTAwMDAwMH0KK30KKworLy8gQSBmYWlsZWQgcGFyZW50IGNhbiBlcmFzZSBhIGxhcmdlIHBvc3Qtd2luZG93IHN1YnRyZWUgd2hpbGUgcmV0YWluaW5nIHRoZQorLy8gc2FtZSBpbi13aW5kb3cgYXR0ZW1wdHMgYW5kIGJ5dGVzLiBUaG9zZSBvbGQgY291bnRlcnMgZG8gbm90IGNlcnRpZnkgd29yay4KKy8vIFRoZSBmaXh0dXJlcyBkZWxpYmVyYXRlbHkgbG9zZSBtdWNoIG1vcmUgdGhhbiBlaXRoZXIgcHJvcG9zZWQgdG9sZXJhbmNlLgorZnVuYyBUZXN0V29ya0NvdmVyYWdlUmVqZWN0c1BydW5pbmdUaGF0UGFzc2VzT2xkU3VjY2Vzc0FuZFZvbHVtZSh0ICp0ZXN0aW5nLlQpIHsKKwliYXNlIDo9IGJhc2VsaW5lQWdncmVnYXRle1Njb3JlQWdncmVnYXRlRGlhZ25vc3RpY3M6IFNjb3JlQWdncmVnYXRlRGlhZ25vc3RpY3N7UmF3U2NvcmU6IDEwMCwgU3VjY2Vzc1JhdGU6IDEsIFJlcXVlc3RDb3VudDogMTAwMCwgUmVjZWl2ZWRCeXRlczogMTAwMDAwLCBGaW5kUHJvdmlkZXJzTG9hZFA5NU1zOiAxLCBGaW5kUHJvdmlkZXJzUG9vbFAwNTogMTAwLCBGaW5kUHJvdmlkZXJzU2FtcGxlU3BhbkZyYWN0aW9uOiAxfX0KKwlwcnVuZWQgOj0gYmFzZS5TY29yZUFnZ3JlZ2F0ZURpYWdub3N0aWNzCisJcHJ1bmVkLlJhd1Njb3JlLCBwcnVuZWQuU3VjY2Vzc1JhdGUgPSA1MCwgLjk5NQorCW9sZCA6PSBidWlsZFNjb3JlR2F0ZXMoYmFzZSwgcHJ1bmVkLCBuaWwsIG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lNaW5pbXVtV29yaykKKwlpZiAhb2xkWyJHMV9zdWNjZXNzIl0uUGFzc2VkIHx8ICFvbGRbIkcyX3ZvbHVtZSJdLlBhc3NlZCB7CisJCXQuRmF0YWwoImFkdmVyc2FyaWFsIGNvbnRyb2wgZGlkIG5vdCBwYXNzIHRoZSBoaXN0b3JpY2FsIHN1Y2Nlc3Mvdm9sdW1lIGdhdGVzIiwgb2xkKQorCX0KKwlwb2xpY3kgOj0gbW9kZWwuRGVmYXVsdENvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5KCkKKwljb250cm9sIDo9IHdvcmtDb3ZlcmFnZVN1bW1hcnlGb3JUZXN0KDEwMDAwLCAxMDAwMDAwKQorCWlmIHdvcmtDb3ZlcmFnZUdhdGUoJnBvbGljeSwgY29udHJvbCwgd29ya0NvdmVyYWdlU3VtbWFyeUZvclRlc3QoNTAwMCwgNTAwMDAwKSkuUGFzc2VkIHsKKwkJdC5GYXRhbCgiZXJhc2VkIGV4cGVjdGVkIGRlc2NlbmRhbnRzIHBhc3NlZCBpbmRlcGVuZGVudCBjb3ZlcmFnZSIpCisJfQorCWhvbmVzdCA6PSBwcnVuZWQKKwlob25lc3QuU3VjY2Vzc1JhdGUgPSAxCisJb2xkID0gYnVpbGRTY29yZUdhdGVzKGJhc2UsIGhvbmVzdCwgbmlsLCBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TWluaW11bVdvcmspCisJaWYgIW9sZFsiRzFfc3VjY2VzcyJdLlBhc3NlZCB8fCAhb2xkWyJHMl92b2x1bWUiXS5QYXNzZWQgfHwgIXdvcmtDb3ZlcmFnZUdhdGUoJnBvbGljeSwgY29udHJvbCwgY29udHJvbCkuUGFzc2VkIHsKKwkJdC5GYXRhbCgiaG9uZXN0IGZhc3RlciBjb21wbGV0ZSB3b3JrIHdhcyByZWplY3RlZCIpCisJfQorCWlmIHBydW5lZC5SYXdTY29yZSAhPSA1MCB8fCBob25lc3QuUmF3U2NvcmUgIT0gNTAgeworCQl0LkZhdGFsKCJjb3ZlcmFnZSBjaGFuZ2VkIHRoZSByYXcgbGF0ZW5jeSBvYmplY3RpdmUiKQorCX0KK30KKworLy8gUGFnZSBhbmQgYnl0ZSBjb3ZlcmFnZSBhcmUgaW5kZXBlbmRlbnQgaW5jbHVzaXZlIGZsb29ycy4gQ29tcGxldGluZyBtb3JlCisvLyB3b3JrIGlzIG5ldmVyIGFuIHVwcGVyLWJvdW5kIGZhaWx1cmU7IG1pc3Npbmcgb25lIGRpbWVuc2lvbiBjYW5ub3QgaGlkZSBpbgorLy8gYSBzdXJwbHVzIGluIHRoZSBvdGhlciBkaW1lbnNpb24uCitmdW5jIFRlc3RXb3JrQ292ZXJhZ2VHYXRlSW5jbHVzaXZlQm91bmRhcmllc0FuZERlZ2VuZXJhdGVDb250cm9scyh0ICp0ZXN0aW5nLlQpIHsKKwlwb2xpY3kgOj0gbW9kZWwuRGVmYXVsdENvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5KCkKKwliYXNlbGluZSA6PSB3b3JrQ292ZXJhZ2VTdW1tYXJ5Rm9yVGVzdCg4MDAwLCA4MDAwMDApCisJZm9yIHBlcmNlbnRhZ2UgOj0gaW50NjQoMik7IHBlcmNlbnRhZ2UgPD0gMTAwOyBwZXJjZW50YWdlKysgeworCQljb250cm9sIDo9IHdvcmtDb3ZlcmFnZVN1bW1hcnlGb3JUZXN0KHBlcmNlbnRhZ2UqMTAwLCBwZXJjZW50YWdlKjEwMDAwKQorCQljYW5kaWRhdGUgOj0gd29ya0NvdmVyYWdlU3VtbWFyeUZvclRlc3QocGVyY2VudGFnZSo5NSwgcGVyY2VudGFnZSo5NTAwKQorCQlpZiAhd29ya0NvdmVyYWdlR2F0ZSgmcG9saWN5LCBjb250cm9sLCBjYW5kaWRhdGUpLlBhc3NlZCB7CisJCQl0LkZhdGFsKCJleGFjdCBkZWNpbWFsIGluY2x1c2l2ZSBib3VuZGFyeSB3YXMgcm91bmRlZCBpbnRvIGZhaWx1cmUiLCBwZXJjZW50YWdlKQorCQl9CisJfQorCWZvciBfLCB0ZXN0IDo9IHJhbmdlIFtdc3RydWN0IHsKKwkJcGFnZXMsIGJ5dGVzIGludDY0CisJCXBhc3MgICAgICAgICBib29sCisJfXsKKwkJe3BhZ2VzOiA3NjAwLCBieXRlczogNzYwMDAwLCBwYXNzOiB0cnVlfSwKKwkJe3BhZ2VzOiA3NTk5LCBieXRlczogNzYwMDAwLCBwYXNzOiBmYWxzZX0sCisJCXtwYWdlczogNzYwMCwgYnl0ZXM6IDc1OTk5OSwgcGFzczogZmFsc2V9LAorCQl7cGFnZXM6IDc1MDAsIGJ5dGVzOiA3NTAwMDAsIHBhc3M6IGZhbHNlfSwKKwkJe3BhZ2VzOiAxMDAwMCwgYnl0ZXM6IDEwMDAwMDAsIHBhc3M6IHRydWV9LAorCQl7cGFnZXM6IDEwMDAwLCBieXRlczogNzU5OTk5LCBwYXNzOiBmYWxzZX0sCisJCXtwYWdlczogNzU5OSwgYnl0ZXM6IDEwMDAwMDAsIHBhc3M6IGZhbHNlfSwKKwkJe3BhZ2VzOiAwLCBieXRlczogMCwgcGFzczogZmFsc2V9LAorCX0geworCQlpZiBnb3QgOj0gd29ya0NvdmVyYWdlR2F0ZSgmcG9saWN5LCBiYXNlbGluZSwgd29ya0NvdmVyYWdlU3VtbWFyeUZvclRlc3QodGVzdC5wYWdlcywgdGVzdC5ieXRlcykpLlBhc3NlZDsgZ290ICE9IHRlc3QucGFzcyB7CisJCQl0LkZhdGFsKCJpbmRlcGVuZGVudCBpbmNsdXNpdmUgY292ZXJhZ2UgYm91bmRhcnkgY2hhbmdlZCIsIHRlc3QsIGdvdCkKKwkJfQorCX0KKwlmb3IgXywgY29udHJvbCA6PSByYW5nZSBbXSptb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnl7bmlsLCB3b3JrQ292ZXJhZ2VTdW1tYXJ5Rm9yVGVzdCgwLCAwKSwgd29ya0NvdmVyYWdlU3VtbWFyeUZvclRlc3QoMCwgMTAwMDApLCB3b3JrQ292ZXJhZ2VTdW1tYXJ5Rm9yVGVzdCgxMDAsIDApfSB7CisJCWlmIHdvcmtDb3ZlcmFnZUdhdGUoJnBvbGljeSwgY29udHJvbCwgYmFzZWxpbmUpLlBhc3NlZCB7CisJCQl0LkZhdGFsKCJtaXNzaW5nIG9yIHVucmVzb2x2ZWQgYmFzZWxpbmUgYXV0aG9yaXplZCBlbXB0eSB1c2VmdWwgd29yayIpCisJCX0KKwl9CisJaWYgIXdvcmtDb3ZlcmFnZUdhdGUoJnBvbGljeSwgd29ya0NvdmVyYWdlU3VtbWFyeUZvclRlc3QoMTAwLCAxMDAwMCksIGJhc2VsaW5lKS5QYXNzZWQgeworCQl0LkZhdGFsKCJwb3NpdGl2ZSBsb3cgYmFzZWxpbmUgY292ZXJhZ2UgYWNxdWlyZWQgYW4gdW5hcHByb3ZlZCBhYnNvbHV0ZSBmbG9vciIpCisJfQorCWZvciBfLCBtdXRhdGUgOj0gcmFuZ2UgW11mdW5jKCptb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnkpeworCQlmdW5jKHZhbHVlICptb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnkpIHsgdmFsdWUuUGFnZUNvdmVyYWdlID0gbWF0aC5OYU4oKSB9LAorCQlmdW5jKHZhbHVlICptb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnkpIHsgdmFsdWUuQnl0ZUNvdmVyYWdlID0gbWF0aC5JbmYoMSkgfSwKKwkJZnVuYyh2YWx1ZSAqbW9kZWwuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5KSB7IHZhbHVlLlBsYW5TaGEyNTYgPSBzdHJpbmdzLlJlcGVhdCgiYiIsIDY0KSB9LAorCQlmdW5jKHZhbHVlICptb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnkpIHsgdmFsdWUuRXhwZWN0ZWRQYWdlcysrIH0sCisJCWZ1bmModmFsdWUgKm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeSkgeyB2YWx1ZS5PZmZlcmVkUm9vdHMgPSAwIH0sCisJfSB7CisJCWNhbmRpZGF0ZSA6PSAqYmFzZWxpbmUKKwkJbXV0YXRlKCZjYW5kaWRhdGUpCisJCWlmIHdvcmtDb3ZlcmFnZUdhdGUoJnBvbGljeSwgYmFzZWxpbmUsICZjYW5kaWRhdGUpLlBhc3NlZCB7CisJCQl0LkZhdGFsKCJpbnZhbGlkIGNhbmRpZGF0ZSBpbnZlbnRvcnkgcGFzc2VkIikKKwkJfQorCX0KK30KKworLy8gQmV0d2Vlbi1ydW4gbWVkaWFucyByZXRhaW4gYWxsIFI5IGRpYWdub3N0aWNzOyByZXF1ZXN0IGNvdW50cyBhcmUgbm90CisvLyBpbnRlcnByZXRlZCBhcyBpbmRlcGVuZGVudCBldmlkZW5jZSBvZiBzdGF0aXN0aWNhbCBlcXVpdmFsZW5jZS4KK2Z1bmMgVGVzdFdvcmtDb3ZlcmFnZUFnZ3JlZ2F0ZXNJbmRlcGVuZGVudFJ1bk1lZGlhbnModCAqdGVzdGluZy5UKSB7CisJdmFsdWVzIDo9IFtdKm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeXt9CisJZm9yIF8sIGNvbXBsZXRlZCA6PSByYW5nZSBbXWludDY0ezEwMDAsIDIwMDAsIDMwMDAsIDQwMDAsIDUwMDAsIDYwMDAsIDcwMDAsIDgwMDAsIDkwMDB9IHsKKwkJdmFsdWVzID0gYXBwZW5kKHZhbHVlcywgd29ya0NvdmVyYWdlU3VtbWFyeUZvclRlc3QoY29tcGxldGVkLCAoMTAwMDAtY29tcGxldGVkKSoxMDApKQorCX0KKwltZWRpYW4gOj0gbWVkaWFuV29ya0NvdmVyYWdlKHZhbHVlcykKKwlpZiBtZWRpYW4gPT0gbmlsIHx8IG1lZGlhbi5Db21wbGV0ZWRQYWdlcyAhPSA1MDAwIHx8IG1lZGlhbi5Db21wbGV0ZWRCeXRlcyAhPSA1MDAwMDAgfHwgbWVkaWFuLlBhZ2VDb3ZlcmFnZSAhPSAuNSB8fCBtZWRpYW4uQnl0ZUNvdmVyYWdlICE9IC41IHsKKwkJdC5GYXRhbCgiY292ZXJhZ2UgZGlkIG5vdCByZXRhaW4gaW5kZXBlbmRlbnQgcnVuIG1lZGlhbnMiLCBtZWRpYW4pCisJfQorCWlmIG1lZGlhbldvcmtDb3ZlcmFnZSh2YWx1ZXNbOjhdKSAhPSBuaWwgfHwgbWVkaWFuV29ya0NvdmVyYWdlKGFwcGVuZCh2YWx1ZXMsIG5pbCwgbmlsKSkgIT0gbmlsIHsKKwkJdC5GYXRhbCgicGFydGlhbCBvciBpbnZhbGlkIGNvdmVyYWdlIHBvcHVsYXRpb24gcHJvZHVjZWQgYW4gYWdncmVnYXRlIikKKwl9Cit9CisKKy8vIEV4YWN0IENTViBsaW5rYWdlIGFuZCBvcmlnaW5hbCBkZWFkbGluZXMgcmVqZWN0IGR1cGxpY2F0ZSwgcGFydGlhbCwgZm9yZ2VkCisvLyBhbmQgY3Jvc3Mtcm9vdCBjbGFpbXMgZXZlbiB3aGVuIHRoZWlyIHN1bW1hcnkgY291bnRlcnMgbG9vayBwbGF1c2libGUuCitmdW5jIFRlc3RXb3JrQ292ZXJhZ2VMZWRnZXJSZWNvbXB1dGVkQWdhaW5zdEV4cGVjdGVkV29ya0FuZENzdih0ICp0ZXN0aW5nLlQpIHsKKwlwbGFuLCBlcnIgOj0gYnVpbGRXb3JrQ292ZXJhZ2VQbGFuKHdvcmtDb3ZlcmFnZUNvbmZpZ0ZvclRlc3QoKSwgNip0aW1lLlNlY29uZCwgMTIwKnRpbWUuU2Vjb25kLCBkZWZhdWx0V29ya0NvdmVyYWdlTGltaXRzKCkpCisJaWYgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoZXJyKQorCX0KKwlzdGFydCA6PSB0aW1lLlVuaXgoMTAwMCwgNzM3KQorCWNvbGxlY3RvciwgZXJyIDo9IG5ld1dvcmtDb3ZlcmFnZUNvbGxlY3RvcihwbGFuLCBzdGFydCkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCWFkbWlzc2lvbiA6PSBzdGFydC5BZGQodGltZS5EdXJhdGlvbihwbGFuLlJvb3RzWzBdLk9mZnNldE5zKSkKKwlzdGFydGVkLCBjb21wbGV0ZWQgOj0gYWRtaXNzaW9uLkFkZCh0aW1lLk1pbGxpc2Vjb25kKSwgYWRtaXNzaW9uLkFkZCgzKnRpbWUuTWlsbGlzZWNvbmQpCisJaWYgIWNvbGxlY3Rvci5yZWNvcmQoMCwgMCwgMCwgc3RhcnRlZCwgY29tcGxldGVkKSB7CisJCXQuRmF0YWwoInBvc2l0aXZlIGxlZGdlciBmaXh0dXJlIGRpZCBub3QgY29tcGxldGUiKQorCX0KKwlwYWdlIDo9IHBsYW4uUm9vdHNbMF0uUGFnZXNbMF0KKwlyb3dzIDo9IFtdcmVzdWx0Um93e3t0U3RhcnRNczogc3RhcnRlZC5Vbml4TWlsbGkoKSwgY2xpZW50OiAic3ludGhldGljIiwgcGF0aDogcGFnZS5VcmksIGRlcHRoOiBwYWdlLkRlcHRoLCBzdGF0dXM6IDIwMCwgYnl0ZXM6IHBhZ2UuQnl0ZXMsIHRvdGFsTXM6IDJ9fQorCXN0YXRzIDo9ICZSdW5TdGF0c3tNZWFzdXJlU3RhcnRNczogc3RhcnQuVW5peE1pbGxpKCksIE1lYXN1cmVFbmRNczogc3RhcnQuQWRkKDYgKiB0aW1lLlNlY29uZCkuVW5peE1pbGxpKCksIFdvcmtDb3ZlcmFnZTogY29sbGVjdG9yLnJlcG9ydCgpfQorCWlmIF8sIGVyciA6PSB2YWxpZGF0ZVdvcmtDb3ZlcmFnZVJlcG9ydChzdGF0cywgcm93cywgcGxhbiwgbmlsKTsgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoInZhbGlkIGluZGVwZW5kZW50IGNvbXBsZXRpb24gd2FzIHJlamVjdGVkIiwgZXJyKQorCX0KKwlmb3IgXywgbXV0YXRlIDo9IHJhbmdlIFtdZnVuYygqUnVuU3RhdHMsIFtdcmVzdWx0Um93KXsKKwkJZnVuYyhzdGF0cyAqUnVuU3RhdHMsIHJvd3MgW11yZXN1bHRSb3cpIHsgcm93c1swXS5wYXRoID0gIi9wLzAvZm9yZ2VkIiB9LAorCQlmdW5jKHN0YXRzICpSdW5TdGF0cywgcm93cyBbXXJlc3VsdFJvdykgeyByb3dzWzBdLmJ5dGVzLS0gfSwKKwkJZnVuYyhzdGF0cyAqUnVuU3RhdHMsIHJvd3MgW11yZXN1bHRSb3cpIHsgcm93c1swXS5kZXB0aCsrIH0sCisJCWZ1bmMoc3RhdHMgKlJ1blN0YXRzLCByb3dzIFtdcmVzdWx0Um93KSB7IHJvd3NbMF0uc3RhdHVzID0gMCB9LAorCQlmdW5jKHN0YXRzICpSdW5TdGF0cywgcm93cyBbXXJlc3VsdFJvdykgeworCQkJc3RhdHMuV29ya0NvdmVyYWdlLkNvbXBsZXRpb25zID0gYXBwZW5kKHN0YXRzLldvcmtDb3ZlcmFnZS5Db21wbGV0aW9ucywgc3RhdHMuV29ya0NvdmVyYWdlLkNvbXBsZXRpb25zWzBdKQorCQl9LAorCQlmdW5jKHN0YXRzICpSdW5TdGF0cywgcm93cyBbXXJlc3VsdFJvdykgeyBzdGF0cy5Xb3JrQ292ZXJhZ2UuQ29tcGxldGlvbnNbMF0uUm9vdCA9IGxlbihwbGFuLlJvb3RzKSB9LAorCQlmdW5jKHN0YXRzICpSdW5TdGF0cywgcm93cyBbXXJlc3VsdFJvdykgeworCQkJc3RhdHMuV29ya0NvdmVyYWdlLkNvbXBsZXRpb25zWzBdLlN0YXJ0ZWRVbml4TnMgPSBhZG1pc3Npb24uVW5peE5hbm8oKSAtIDEKKwkJfSwKKwkJZnVuYyhzdGF0cyAqUnVuU3RhdHMsIHJvd3MgW11yZXN1bHRSb3cpIHsKKwkJCXN0YXRzLldvcmtDb3ZlcmFnZS5Db21wbGV0aW9uc1swXS5Db21wbGV0ZWRVbml4TnMgPSBhZG1pc3Npb24uQWRkKDEyMCAqIHRpbWUuU2Vjb25kKS5Vbml4TmFubygpCisJCX0sCisJCWZ1bmMoc3RhdHMgKlJ1blN0YXRzLCByb3dzIFtdcmVzdWx0Um93KSB7IHN0YXRzLldvcmtDb3ZlcmFnZS5FeHBlY3RlZFBhZ2VzLS0gfSwKKwkJZnVuYyhzdGF0cyAqUnVuU3RhdHMsIHJvd3MgW11yZXN1bHRSb3cpIHsgc3RhdHMuV29ya0NvdmVyYWdlLkV4cGVjdGVkQnl0ZXMtLSB9LAorCQlmdW5jKHN0YXRzICpSdW5TdGF0cywgcm93cyBbXXJlc3VsdFJvdykgeyBzdGF0cy5Xb3JrQ292ZXJhZ2UuQ29tcGxldGVkUGFnZXMrKyB9LAorCQlmdW5jKHN0YXRzICpSdW5TdGF0cywgcm93cyBbXXJlc3VsdFJvdykgeyBzdGF0cy5Xb3JrQ292ZXJhZ2UuQ29tcGxldGVkQnl0ZXMrKyB9LAorCQlmdW5jKHN0YXRzICpSdW5TdGF0cywgcm93cyBbXXJlc3VsdFJvdykgeyBzdGF0cy5Xb3JrQ292ZXJhZ2UuUGxhblNoYTI1NiA9IHN0cmluZ3MuUmVwZWF0KCJiIiwgNjQpIH0sCisJCWZ1bmMoc3RhdHMgKlJ1blN0YXRzLCByb3dzIFtdcmVzdWx0Um93KSB7CisJCQlzdGF0cy5Xb3JrQ292ZXJhZ2UuTWVhc3VyZVN0YXJ0VW5peE5zICs9IGludDY0KHRpbWUuTWlsbGlzZWNvbmQpCisJCX0sCisJfSB7CisJCWNvbnRlbnQsIF8gOj0ganNvbi5NYXJzaGFsKHN0YXRzKQorCQl2YXIgY2hhbmdlZCBSdW5TdGF0cworCQlpZiBlcnIgOj0ganNvbi5Vbm1hcnNoYWwoY29udGVudCwgJmNoYW5nZWQpOyBlcnIgIT0gbmlsIHsKKwkJCXQuRmF0YWwoZXJyKQorCQl9CisJCWNoYW5nZWRSb3dzIDo9IGFwcGVuZChbXXJlc3VsdFJvd3t9LCByb3dzLi4uKQorCQltdXRhdGUoJmNoYW5nZWQsIGNoYW5nZWRSb3dzKQorCQlpZiBfLCBlcnIgOj0gdmFsaWRhdGVXb3JrQ292ZXJhZ2VSZXBvcnQoJmNoYW5nZWQsIGNoYW5nZWRSb3dzLCBwbGFuLCBuaWwpOyBlcnIgPT0gbmlsIHsKKwkJCXQuRmF0YWwoImNvcnJ1cHRlZCBjb21wbGV0aW9uIGVhcm5lZCB3b3JrIGNyZWRpdCIpCisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9jb25uZWN0L3NpbS1sYXRlbmN5L3NpdGUuZ28gYi9jb25uZWN0L3NpbS1sYXRlbmN5L3NpdGUuZ28KaW5kZXggZTdmNmE4YjVmOWY4NGE2NGU5Y2RjMWI3MzUxMDczYzkwMzEwMmQ4MC4uOTA3ZTU2YmRhYTU3NWI2MGQ5YzUzMWZiMTBkZDFjZTA5NzMzODI3NiAxMDA2NDQKLS0tIGEvY29ubmVjdC9zaW0tbGF0ZW5jeS9zaXRlLmdvCisrKyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvc2l0ZS5nbwpAQCAtMTMzLDIxICsxMzMsMzcgQEAgZnVuYyAoc2VsZiAqc2l0ZUhhbmRsZXIpIFNlcnZlSFRUUCh3IGh0dHAuUmVzcG9uc2VXcml0ZXIsIHIgKmh0dHAuUmVxdWVzdCkgewogCQlzZWxmLndyaXRlUGFnZSh3LCBzaXRlUGFnZXtTaXplOiBzaXRlV2FybXVwQm9keUJ5dGVzfSkKIAkJcmV0dXJuCiAJfQotCXJlbWFpbmluZywgb2sgOj0gc2VsZi5wYXJzZVBhdGgoci5VUkwuUGF0aCkKLQlpZiAhb2sgeworCXBhZ2UsIG9rLCBlcnIgOj0gc2VsZi5kZXNjcmliZVBhZ2Uoci5VUkwuUGF0aCwgci5VUkwuUmVxdWVzdFVSSSgpLCBmdW5jKHNvdXJjZSAqcm5nLCBtZWFuIGZsb2F0NjQpIChpbnQsIGVycm9yKSB7CisJCXJldHVybiBzb3VyY2UuZ2VvbWV0cmljRGVwdGgobWVhbiksIG5pbAorCX0pCisJaWYgIW9rIHx8IGVyciAhPSBuaWwgewogCQlodHRwLk5vdEZvdW5kKHcsIHIpCiAJCXJldHVybgogCX0KKwlzZWxmLndyaXRlUGFnZSh3LCBwYWdlKQorfQorCisvLyBHZW5lcmF0ZXMgZGVzY3JpcHRvcnMgZnJvbSB0cnVzdGVkIHNlZWQvcGF0aCBpbnB1dHMgb25seSwgbmV2ZXIgYSByZWNlaXZlZAorLy8gcGFyZW50IHJlc3BvbnNlLiBUaGUgbGVnYWN5IGNhbGxlciByZXRhaW5zIGl0cyBleGFjdCBkZXB0aCBkcmF3IHNlcXVlbmNlOworLy8gcHJvc3BlY3RpdmUgaW52ZW50b3JpZXMgc3VwcGx5IGEgYm91bmRlZCBlcXVpdmFsZW50IHNhbXBsZXIuCitmdW5jIChzZWxmICpzaXRlSGFuZGxlcikgZGVzY3JpYmVQYWdlKHBhdGgsIHBhZ2VJZGVudGl0eSBzdHJpbmcsIGRyYXdEZXB0aCBmdW5jKCpybmcsIGZsb2F0NjQpIChpbnQsIGVycm9yKSkgKHNpdGVQYWdlLCBib29sLCBlcnJvcikgeworCXJlbWFpbmluZywgb2sgOj0gc2VsZi5wYXJzZVBhdGgocGF0aCkKKwlpZiAhb2sgfHwgZHJhd0RlcHRoID09IG5pbCB7CisJCXJldHVybiBzaXRlUGFnZXt9LCBmYWxzZSwgbmlsCisJfQogCiAJLy8gVGhlIGNsaWVudCBnaXZlcyBlYWNoIGFkbWl0dGVkIGNyYXdsIGEgc3RhYmxlIHF1ZXJ5IGluZGV4LiBJbmNsdWRlIGl0IGluCiAJLy8gdGhlIHJvb3QgaWRlbnRpdHkgc28gZGVwdGggYW5kIGJvZHktc2l6ZSBzYW1wbGluZyBoYXBwZW4gcGVyIGNyYXdsOyBjaGlsZAogCS8vIHRva2VucyBjYXJyeSB0aGF0IGlkZW50aXR5IHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIHRyZWUuCi0JcGFnZUlkZW50aXR5IDo9IHIuVVJMLlJlcXVlc3RVUkkoKQogCXBhZ2VSbmcgOj0gc2VsZi5wYXRoUm5nKHBhZ2VJZGVudGl0eSkKIAotCWlmIHIuVVJMLlBhdGggPT0gIi8iIHsKKwlpZiBwYXRoID09ICIvIiB7CiAJCS8vIGRyYXcgdGhlIGNyYXdsIGRlcHRoIChtZWFuIEspLCBjYXBwZWQKLQkJcmVtYWluaW5nID0gcGFnZVJuZy5nZW9tZXRyaWNEZXB0aChzZWxmLnNpdGUuTWVhbkRlcHRoKQorCQl2YXIgZXJyIGVycm9yCisJCXJlbWFpbmluZywgZXJyID0gZHJhd0RlcHRoKHBhZ2VSbmcsIHNlbGYuc2l0ZS5NZWFuRGVwdGgpCisJCWlmIGVyciAhPSBuaWwgeworCQkJcmV0dXJuIHNpdGVQYWdle30sIGZhbHNlLCBlcnIKKwkJfQogCQlpZiBzaXRlTWF4RGVwdGggPCByZW1haW5pbmcgewogCQkJcmVtYWluaW5nID0gc2l0ZU1heERlcHRoCiAJCX0KQEAgLTE4Niw3ICsyMDIsNyBAQCBmdW5jIChzZWxmICpzaXRlSGFuZGxlcikgU2VydmVIVFRQKHcgaHR0cC5SZXNwb25zZVdyaXRlciwgciAqaHR0cC5SZXF1ZXN0KSB7CiAJCX0KIAl9CiAKLQlzZWxmLndyaXRlUGFnZSh3LCBzaXRlUGFnZXtVcmxzOiB1cmxzLCBTaXplOiBib2R5U2l6ZX0pCisJcmV0dXJuIHNpdGVQYWdle1VybHM6IHVybHMsIFNpemU6IGJvZHlTaXplfSwgdHJ1ZSwgbmlsCiB9CiAKIC8vIFdyaXRlcyB0aGUgcGFnZSBoZWFkZXIgYW5kIGRldGVybWluaXN0aWMgcGFkZGluZyBzaGFyZWQgYnkgc2NvcmVkIGFuZApkaWZmIC0tZ2l0IGEvY29ubmVjdC9zaW0tbGF0ZW5jeS9zb3VyY2VfZXBvY2guZ28gYi9jb25uZWN0L3NpbS1sYXRlbmN5L3NvdXJjZV9lcG9jaC5nbwppbmRleCBkMDI3Y2RjNzI1ZTM1OGViMzVlNWM0MzFlMzcyMDNkNjE3MmU0YzM3Li4xZGFlNGE4MzZhY2I0YjFjY2UxZTI2NmE2Yzg2ZWM2NmI5NzBkZTc5IDEwMDY0NAotLS0gYS9jb25uZWN0L3NpbS1sYXRlbmN5L3NvdXJjZV9lcG9jaC5nbworKysgYi9jb25uZWN0L3NpbS1sYXRlbmN5L3NvdXJjZV9lcG9jaC5nbwpAQCAtMTUsMTIgKzE1LDE0IEBAIGltcG9ydCAoCiAJIm9zIgogCSJvcy9leGVjIgogCSJwYXRoL2ZpbGVwYXRoIgorCSJyZWZsZWN0IgogCSJyZWdleHAiCiAJInN0cmNvbnYiCiAJInN0cmluZ3MiCiAJInRpbWUiCiAKIAkiZ2l0aHViLmNvbS9kb2NvcHQvZG9jb3B0LWdvIgorCSJnaXRodWIuY29tL3VybmV0d29yay9zZXJ2ZXIvbW9kZWwiCiAJImdvcGtnLmluL3lhbWwudjMiCiApCiAKQEAgLTk2LDE0ICs5OCwxNiBAQCBmdW5jIChzZWxmIHNvdXJjZVJlcG9zaXRvcmllcykgY29tbWl0c0Zvck1vZGUoXyBib29sKSBtYXBbc3RyaW5nXXN0cmluZyB7CiB9CiAKIHR5cGUgc291cmNlRXBvY2ggc3RydWN0IHsKLQlFcG9jaCAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIGB5YW1sOiJlcG9jaCJgCi0JS2luZCAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICBgeWFtbDoia2luZCJgCi0JU2lnbmlmaWNhbnRJbXByb3ZlbWVudFBlcmNlbnQgZmxvYXQ2NCAgICAgICAgICAgICBgeWFtbDoic2lnbmlmaWNhbnRfaW1wcm92ZW1lbnRfcGVyY2VudCJgCi0JV2lubmVySm9iSWQgICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICBgeWFtbDoid2lubmVyX2pvYl9pZCxvbWl0ZW1wdHkiYAotCVdpbm5lclNpZ25pZmljYW5jZSAgICAgICAgICAgICpzb3VyY2VTaWduaWZpY2FuY2UgYHlhbWw6Indpbm5lcl9zaWduaWZpY2FuY2Usb21pdGVtcHR5ImAKLQlQcm9tb3RlZEZyb21FcG9jaCAgICAgICAgICAgICAqaW50ICAgICAgICAgICAgICAgIGB5YW1sOiJwcm9tb3RlZF9mcm9tX2Vwb2NoLG9taXRlbXB0eSJgCi0JUHJvbW90ZWRBdCAgICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICBgeWFtbDoicHJvbW90ZWRfYXQsb21pdGVtcHR5ImAKLQlSZXBvc2l0b3JpZXMgICAgICAgICAgICAgICAgICBzb3VyY2VSZXBvc2l0b3JpZXMgIGB5YW1sOiJyZXBvc2l0b3JpZXMiYAorCUcyVm9sdW1lUG9saWN5ICAgICAgICAgICAgICAgIG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3kgICAgICBgeWFtbDoiZzJfdm9sdW1lX3BvbGljeSxvbWl0ZW1wdHkiYAorCVdvcmtDb3ZlcmFnZVBvbGljeSAgICAgICAgICAgICptb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSBgeWFtbDoid29ya19jb3ZlcmFnZV9wb2xpY3ksb21pdGVtcHR5ImAKKwlFcG9jaCAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHlhbWw6ImVwb2NoImAKKwlLaW5kICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHlhbWw6ImtpbmQiYAorCVNpZ25pZmljYW50SW1wcm92ZW1lbnRQZXJjZW50IGZsb2F0NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgeWFtbDoic2lnbmlmaWNhbnRfaW1wcm92ZW1lbnRfcGVyY2VudCJgCisJV2lubmVySm9iSWQgICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB5YW1sOiJ3aW5uZXJfam9iX2lkLG9taXRlbXB0eSJgCisJV2lubmVyU2lnbmlmaWNhbmNlICAgICAgICAgICAgKnNvdXJjZVNpZ25pZmljYW5jZSAgICAgICAgICAgICAgICAgIGB5YW1sOiJ3aW5uZXJfc2lnbmlmaWNhbmNlLG9taXRlbXB0eSJgCisJUHJvbW90ZWRGcm9tRXBvY2ggICAgICAgICAgICAgKmludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB5YW1sOiJwcm9tb3RlZF9mcm9tX2Vwb2NoLG9taXRlbXB0eSJgCisJUHJvbW90ZWRBdCAgICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB5YW1sOiJwcm9tb3RlZF9hdCxvbWl0ZW1wdHkiYAorCVJlcG9zaXRvcmllcyAgICAgICAgICAgICAgICAgIHNvdXJjZVJlcG9zaXRvcmllcyAgICAgICAgICAgICAgICAgICBgeWFtbDoicmVwb3NpdG9yaWVzImAKIH0KIAogLy8gc291cmNlU2lnbmlmaWNhbmNlIHByZXNlcnZlcyB0aGUgd2lubmluZyBldmFsdWF0aW9uIHN0YXRpc3RpY3MgdGhhdCBkZWZpbmUKQEAgLTE1NCwxNyArMTU4LDIwIEBAIHR5cGUgZXZhbHVhdG9yU291cmNlTG9jayBzdHJ1Y3QgewogCURldmVsb3BtZW50U25hcHNob3QgYm9vbCBganNvbjoiZGV2ZWxvcG1lbnRfc25hcHNob3QiYAogCS8vIE9ubHkgYSBuZXdseSBxdWFsaWZpZWQgdHJ1c3RlZCBpbWFnZSBtYXkgb3B0IGludG8gcmVwb3NpdG9yeS13aWRlCiAJLy8gY2FuZGlkYXRlcy4gT21pc3Npb24gcHJlc2VydmVzIGV2ZXJ5IGhpc3RvcmljYWwgc2VydmVyLW9ubHkgaWRlbnRpdHkuCi0JQ2FuZGlkYXRlUGF0aEJhc2Ugc3RyaW5nICAgICAgICAgICAgYGpzb246ImNhbmRpZGF0ZV9wYXRoX2Jhc2Usb21pdGVtcHR5ImAKLQlSZXBvc2l0b3JpZXMgICAgICBtYXBbc3RyaW5nXXN0cmluZyBganNvbjoicmVwb3NpdG9yaWVzImAKKwlDYW5kaWRhdGVQYXRoQmFzZSAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJjYW5kaWRhdGVfcGF0aF9iYXNlLG9taXRlbXB0eSJgCisJUmVwb3NpdG9yaWVzICAgICAgIG1hcFtzdHJpbmddc3RyaW5nICAgICAgICAgICAgICAgICAgICBganNvbjoicmVwb3NpdG9yaWVzImAKKwlXb3JrQ292ZXJhZ2VQb2xpY3kgKm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5IGBqc29uOiJ3b3JrX2NvdmVyYWdlX3BvbGljeSxvbWl0ZW1wdHkiYAogfQogCiB0eXBlIHNvdXJjZVJlY29yZCBzdHJ1Y3QgewotCVNjaGVtYSAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgIGBqc29uOiJzY2hlbWEiYAotCVN0YWdpbmcgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgICAgICAgICAgICAgIGBqc29uOiJzdGFnaW5nLG9taXRlbXB0eSJgCi0JRXBvY2ggICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgYGpzb246ImVwb2NoImAKLQlCcmFuY2ggICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgICAgICAgICAgICBganNvbjoiYnJhbmNoImAKLQlTaWduaWZpY2FudEltcHJvdmVtZW50UGVyY2VudCBmbG9hdDY0ICAgICAgICAgICBganNvbjoic2lnbmlmaWNhbnRfaW1wcm92ZW1lbnRfcGVyY2VudCJgCi0JUmVwb3NpdG9yaWVzICAgICAgICAgICAgICAgICAgbWFwW3N0cmluZ11zdHJpbmcgYGpzb246InJlcG9zaXRvcmllcyJgCisJRzJWb2x1bWVQb2xpY3kgICAgICAgICAgICAgICAgbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeSAgICAgIGBqc29uOiJnMl92b2x1bWVfcG9saWN5LG9taXRlbXB0eSJgCisJV29ya0NvdmVyYWdlUG9saWN5ICAgICAgICAgICAgKm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5IGBqc29uOiJ3b3JrX2NvdmVyYWdlX3BvbGljeSxvbWl0ZW1wdHkiYAorCVNjaGVtYSAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoic2NoZW1hImAKKwlTdGFnaW5nICAgICAgICAgICAgICAgICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InN0YWdpbmcsb21pdGVtcHR5ImAKKwlFcG9jaCAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246ImVwb2NoImAKKwlCcmFuY2ggICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246ImJyYW5jaCJgCisJU2lnbmlmaWNhbnRJbXByb3ZlbWVudFBlcmNlbnQgZmxvYXQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJzaWduaWZpY2FudF9pbXByb3ZlbWVudF9wZXJjZW50ImAKKwlSZXBvc2l0b3JpZXMgICAgICAgICAgICAgICAgICBtYXBbc3RyaW5nXXN0cmluZyAgICAgICAgICAgICAgICAgICAgYGpzb246InJlcG9zaXRvcmllcyJgCiB9CiAKIC8vIHJlYWRTb3VyY2VGaWxlIGJvdW5kcyBvcGVyYXRvciBjb25maWd1cmF0aW9uIGJlZm9yZSBwYXJzaW5nIGl0LgpAQCAtMjYxLDYgKzI2OCw5IEBAIGZ1bmMgdmFsaWRhdGVTb3VyY2VNYW5pZmVzdChtYW5pZmVzdCAqc291cmNlTWFuaWZlc3QpIGVycm9yIHsKIAkJcmV0dXJuIGVycm9ycy5OZXcoInNvdXJjZSBjb25maWcgbXVzdCBjb250YWluIGJhc2VsaW5lIGVwb2NoIDAgYW5kIGF0IG1vc3Qgc2l4IHByb21vdGVkIGVwb2NocyIpCiAJfQogCWZvciBlcG9jaEluZGV4LCBlcG9jaCA6PSByYW5nZSBtYW5pZmVzdC5FdmFsdWF0aW9uU291cmNlLkVwb2NocyB7CisJCWlmIGVwb2NoLkcyVm9sdW1lUG9saWN5ICE9IG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lMZWdhY3kgfHwgZXBvY2guV29ya0NvdmVyYWdlUG9saWN5ICE9IG5pbCB7CisJCQlyZXR1cm4gZXJyb3JzLk5ldygiaGlzdG9yaWNhbCBzY2hlbWEtb25lIHNvdXJjZSBjYW5ub3QgY2FycnkgYSBwcm9zcGVjdGl2ZSBzY29yaW5nIHBvbGljeSIpCisJCX0KIAkJaWYgZXBvY2guUmVwb3NpdG9yaWVzLk9wZXJhdG9yUHJveHkuQ29tbWl0ICE9ICIiIHsKIAkJCXJldHVybiBlcnJvcnMuTmV3KCJzb3VyY2UgY2Fubm90IGluY2x1ZGUgcmV0aXJlZCBvcGVyYXRvci1wcm94eSIpCiAJCX0KQEAgLTM5Miw3ICs0MDIsOSBAQCBmdW5jIChzZWxmICpzb3VyY2VNYW5pZmVzdCkgZXBvY2goZXBvY2hOdW1iZXIgaW50KSAoKnNvdXJjZUVwb2NoLCBlcnJvcikgewogCQkJcmV0dXJuIG5pbCwgZXJyCiAJCX0KIAkJcmV0dXJuICZzb3VyY2VFcG9jaHsKLQkJCUVwb2NoOiBlcG9jaE51bWJlciwgS2luZDogZ2VuZXJhdGlvbi5LaW5kLAorCQkJRzJWb2x1bWVQb2xpY3k6ICAgICBnZW5lcmF0aW9uLkcyVm9sdW1lUG9saWN5LAorCQkJV29ya0NvdmVyYWdlUG9saWN5OiBnZW5lcmF0aW9uLldvcmtDb3ZlcmFnZVBvbGljeSwKKwkJCUVwb2NoOiAgICAgICAgICAgICAgZXBvY2hOdW1iZXIsIEtpbmQ6IGdlbmVyYXRpb24uS2luZCwKIAkJCVNpZ25pZmljYW50SW1wcm92ZW1lbnRQZXJjZW50OiBnZW5lcmF0aW9uLlNpZ25pZmljYW50SW1wcm92ZW1lbnRQZXJjZW50LAogCQkJUmVwb3NpdG9yaWVzOiAgICAgICAgICAgICAgICAgIGdlbmVyYXRpb24uUmVwb3NpdG9yaWVzLAogCQl9LCBuaWwKQEAgLTQ0Niw2ICs0NTgsMTAgQEAgZnVuYyBsb2FkRXZhbHVhdG9yU291cmNlTG9ja0Zvck1vZGUocGF0aCBzdHJpbmcsIHN0YWdpbmcgYm9vbCkgKCpldmFsdWF0b3JTb3VyY2UKIAlpZiBkZWNvZGVyLkRlY29kZSgmc3RydWN0e317fSkgIT0gaW8uRU9GIHsKIAkJcmV0dXJuIG5pbCwgZXJyb3JzLk5ldygiZXZhbHVhdG9yIHNvdXJjZSBsb2NrIGNvbnRhaW5zIHRyYWlsaW5nIGRhdGEiKQogCX0KKwljb3ZlcmFnZSwgZXJyIDo9IG1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5RnJvbVNvdXJjZUpzb24obG9ja0J5dGVzKQorCWlmIGVyciAhPSBuaWwgfHwgIXJlZmxlY3QuRGVlcEVxdWFsKGNvdmVyYWdlLCBsb2NrLldvcmtDb3ZlcmFnZVBvbGljeSkgeworCQlyZXR1cm4gbmlsLCBlcnJvcnMuTmV3KCJldmFsdWF0b3Igc291cmNlIGxvY2sgaGFzIGFuIGFtYmlndW91cyBjb3ZlcmFnZSBwb2xpY3kiKQorCX0KIAlpZiBsb2NrLlNjaGVtYSAhPSAxIHsKIAkJcmV0dXJuIG5pbCwgZXJyb3JzLk5ldygiZXZhbHVhdG9yIHNvdXJjZSBsb2NrIHNjaGVtYSBtdXN0IGJlIDEiKQogCX0KQEAgLTQ4MCw2ICs0OTYsOSBAQCBmdW5jIHZlcmlmeVNvdXJjZUVwb2NoKG1hbmlmZXN0ICpzb3VyY2VNYW5pZmVzdCwgZXBvY2hOdW1iZXIgaW50LCByZXBvc2l0b3JpZXNSbwogCQlpZiBlcnIgIT0gbmlsIHsKIAkJCXJldHVybiBmbXQuRXJyb3JmKCJsb2FkIGV2YWx1YXRvciBzb3VyY2UgbG9jazogJXciLCBlcnIpCiAJCX0KKwkJaWYgIXJlZmxlY3QuRGVlcEVxdWFsKHNvdXJjZUxvY2suV29ya0NvdmVyYWdlUG9saWN5LCBlcG9jaC5Xb3JrQ292ZXJhZ2VQb2xpY3kpIHsKKwkJCXJldHVybiBlcnJvcnMuTmV3KCJldmFsdWF0b3Igc291cmNlIGxvY2sgY292ZXJhZ2UgZGlmZmVycyBmcm9tIGl0cyBpbW11dGFibGUgZ2VuZXJhdGlvbiIpCisJCX0KIAl9CiAJZm9yIF8sIHJlcG9zaXRvcnkgOj0gcmFuZ2Ugc291cmNlUmVwb3NpdG9yeU5hbWVzRm9yTW9kZShtYW5pZmVzdC5TdGFnaW5nKSB7CiAJCWV4cGVjdGVkQ29tbWl0IDo9IGNvbW1pdHNbcmVwb3NpdG9yeV0KQEAgLTY4MywxMiArNzAyLDE2IEBAIGZ1bmMgcnVuU291cmNlQ2hlY2sob3B0cyBkb2NvcHQuT3B0cykgewogCQkJZmF0YWxmKCJzb3VyY2UgZXBvY2ggY29uZmlnOiAlcyIsIGVycikKIAkJfQogCQlyZXN1bHQgOj0gc3RydWN0IHsKLQkJCVNjaGVtYSAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgYGpzb246InNjaGVtYSJgCi0JCQlTdGFnaW5nICAgICAgICAgICAgICAgICAgICAgICBib29sICAgIGBqc29uOiJzdGFnaW5nLG9taXRlbXB0eSJgCi0JCQlCcmFuY2ggICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgIGBqc29uOiJicmFuY2giYAotCQkJRXBvY2ggICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICBganNvbjoiZXBvY2giYAotCQkJU2lnbmlmaWNhbnRJbXByb3ZlbWVudFBlcmNlbnQgZmxvYXQ2NCBganNvbjoic2lnbmlmaWNhbnRfaW1wcm92ZW1lbnRfcGVyY2VudCJgCisJCQlHMlZvbHVtZVBvbGljeSAgICAgICAgICAgICAgICBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5ICAgICAgYGpzb246ImcyX3ZvbHVtZV9wb2xpY3ksb21pdGVtcHR5ImAKKwkJCVdvcmtDb3ZlcmFnZVBvbGljeSAgICAgICAgICAgICptb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSBganNvbjoid29ya19jb3ZlcmFnZV9wb2xpY3ksb21pdGVtcHR5ImAKKwkJCVNjaGVtYSAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoic2NoZW1hImAKKwkJCVN0YWdpbmcgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoic3RhZ2luZyxvbWl0ZW1wdHkiYAorCQkJQnJhbmNoICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJicmFuY2giYAorCQkJRXBvY2ggICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJlcG9jaCJgCisJCQlTaWduaWZpY2FudEltcHJvdmVtZW50UGVyY2VudCBmbG9hdDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InNpZ25pZmljYW50X2ltcHJvdmVtZW50X3BlcmNlbnQiYAogCQl9eworCQkJRzJWb2x1bWVQb2xpY3k6ICAgICAgICAgICAgICAgIGVwb2NoLkcyVm9sdW1lUG9saWN5LAorCQkJV29ya0NvdmVyYWdlUG9saWN5OiAgICAgICAgICAgIGVwb2NoLldvcmtDb3ZlcmFnZVBvbGljeSwKIAkJCVNjaGVtYTogICAgICAgICAgICAgICAgICAgICAgICAxLAogCQkJU3RhZ2luZzogICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0LlN0YWdpbmcsCiAJCQlCcmFuY2g6ICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3QuRXZhbHVhdGlvblNvdXJjZS5CcmFuY2gsCkBAIC03NDEsNiArNzY0LDggQEAgZnVuYyBydW5Tb3VyY2VSZWNvcmQob3B0cyBkb2NvcHQuT3B0cykgewogCQlmYXRhbGYoInNvdXJjZSByZWNvcmQgbWVhc3VyZWQgZGVwZW5kZW5jeSBncmFwaDogJXMiLCBlcnIpCiAJfQogCXJlc3VsdCA6PSBzb3VyY2VSZWNvcmR7CisJCUcyVm9sdW1lUG9saWN5OiAgICAgICAgICAgICAgICBlcG9jaC5HMlZvbHVtZVBvbGljeSwKKwkJV29ya0NvdmVyYWdlUG9saWN5OiAgICAgICAgICAgIGVwb2NoLldvcmtDb3ZlcmFnZVBvbGljeSwKIAkJU2NoZW1hOiAgICAgICAgICAgICAgICAgICAgICAgIDEsCiAJCVN0YWdpbmc6ICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdC5TdGFnaW5nLAogCQlFcG9jaDogICAgICAgICAgICAgICAgICAgICAgICAgZXBvY2hOdW1iZXIsCkBAIC03ODcsNiArODEyLDggQEAgZnVuYyBydW5TdGFnaW5nU291cmNlQ2hlY2sob3B0cyBkb2NvcHQuT3B0cykgewogCQlmYXRhbGYoInN0YWdpbmcgc291cmNlIGNvbmZpZzogJXMiLCBlcnIpCiAJfQogCXJlc3VsdCA6PSBzb3VyY2VSZWNvcmR7CisJCUcyVm9sdW1lUG9saWN5OiAgICAgICAgICAgICAgICBlcG9jaC5HMlZvbHVtZVBvbGljeSwKKwkJV29ya0NvdmVyYWdlUG9saWN5OiAgICAgICAgICAgIGVwb2NoLldvcmtDb3ZlcmFnZVBvbGljeSwKIAkJU2NoZW1hOiAgICAgICAgICAgICAgICAgICAgICAgIDEsCiAJCUVwb2NoOiAgICAgICAgICAgICAgICAgICAgICAgICBlcG9jaE51bWJlciwKIAkJQnJhbmNoOiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdpbmdFdmFsdWF0aW9uU291cmNlQnJhbmNoLApkaWZmIC0tZ2l0IGEvY29ubmVjdC9zaW0tbGF0ZW5jeS9zb3VyY2VfZXBvY2hfdjIuZ28gYi9jb25uZWN0L3NpbS1sYXRlbmN5L3NvdXJjZV9lcG9jaF92Mi5nbwppbmRleCAzZjc3YTQwMzliYTcyYmYzMWMwY2Q1OWRiZWYwODRhMTlhMTQ3NDUwLi43MDkwMTRhMTQ0Yzg5YjQ1Nzc5YjYxOWJiYzlhMDJhNTZhZjgzMzI3IDEwMDY0NAotLS0gYS9jb25uZWN0L3NpbS1sYXRlbmN5L3NvdXJjZV9lcG9jaF92Mi5nbworKysgYi9jb25uZWN0L3NpbS1sYXRlbmN5L3NvdXJjZV9lcG9jaF92Mi5nbwpAQCAtNSw2ICs1LDcgQEAgcGFja2FnZSBtYWluCiBpbXBvcnQgKAogCSJlcnJvcnMiCiAJImZtdCIKKwkicmVmbGVjdCIKIAkidGltZSIKIAogCSJnaXRodWIuY29tL3VybmV0d29yay9zZXJ2ZXIvbW9kZWwiCkBAIC0xMywzMiArMTQsMzcgQEAgaW1wb3J0ICgKIC8vIFJlY29yZHMgYSByZXZpZXdlZCBpbXBsZW1lbnRhdGlvbi4gQXBwcm92YWwgYW5kIG1lYXN1cmVtZW50IGlkZW50aXRpZXMgYXJlCiAvLyBtYW5kYXRvcnkgZm9yIG5ldyBjb2RlOyBhIHJld2FyZCBkZWNpc2lvbiBpcyBkZWxpYmVyYXRlbHkgbm90IGFuIGFwcHJvdmFsLgogdHlwZSByZXZpZXdlZFNvdXJjZUdlbmVyYXRpb24gc3RydWN0IHsKLQlHZW5lcmF0aW9uICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIGB5YW1sOiJnZW5lcmF0aW9uIiBqc29uOiJnZW5lcmF0aW9uImAKLQlLaW5kICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgIGB5YW1sOiJraW5kIiBqc29uOiJraW5kImAKLQlTb3VyY2VMb2NrU2hhMjU2ICAgICAgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgIGB5YW1sOiJzb3VyY2VfbG9ja19zaGEyNTYiIGpzb246InNvdXJjZV9sb2NrX3NoYTI1NiJgCi0JU2lnbmlmaWNhbnRJbXByb3ZlbWVudFBlcmNlbnQgZmxvYXQ2NCAgICAgICAgICAgICBgeWFtbDoic2lnbmlmaWNhbnRfaW1wcm92ZW1lbnRfcGVyY2VudCIganNvbjoic2lnbmlmaWNhbnRfaW1wcm92ZW1lbnRfcGVyY2VudCJgCi0JVGhyZXNob2xkRXZpZGVuY2VTaGEyNTYgICAgICAgc3RyaW5nICAgICAgICAgICAgICBgeWFtbDoidGhyZXNob2xkX2V2aWRlbmNlX3NoYTI1NiIganNvbjoidGhyZXNob2xkX2V2aWRlbmNlX3NoYTI1NiJgCi0JU291cmNlQXBwcm92YWxJZCAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICBgeWFtbDoic291cmNlX2FwcHJvdmFsX2lkLG9taXRlbXB0eSIganNvbjoic291cmNlX2FwcHJvdmFsX2lkLG9taXRlbXB0eSJgCi0JU291cmNlQXBwcm92YWxEaWdlc3QgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICBgeWFtbDoic291cmNlX2FwcHJvdmFsX2RpZ2VzdCxvbWl0ZW1wdHkiIGpzb246InNvdXJjZV9hcHByb3ZhbF9kaWdlc3Qsb21pdGVtcHR5ImAKLQlFdmFsdWF0ZWRCYXNlU291cmNlTG9ja1NoYTI1NiBzdHJpbmcgICAgICAgICAgICAgIGB5YW1sOiJldmFsdWF0ZWRfYmFzZV9zb3VyY2VfbG9ja19zaGEyNTYsb21pdGVtcHR5IiBqc29uOiJldmFsdWF0ZWRfYmFzZV9zb3VyY2VfbG9ja19zaGEyNTYsb21pdGVtcHR5ImAKLQlQYXRjaFNoYTI1NiAgICAgICAgICAgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgIGB5YW1sOiJwYXRjaF9zaGEyNTYsb21pdGVtcHR5IiBqc29uOiJwYXRjaF9zaGEyNTYsb21pdGVtcHR5ImAKLQlTY29yZVNoYTI1NiAgICAgICAgICAgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgIGB5YW1sOiJzY29yZV9zaGEyNTYsb21pdGVtcHR5IiBqc29uOiJzY29yZV9zaGEyNTYsb21pdGVtcHR5ImAKLQlTaWduaWZpY2FuY2UgICAgICAgICAgICAgICAgICAqc291cmNlU2lnbmlmaWNhbmNlIGB5YW1sOiJzaWduaWZpY2FuY2Usb21pdGVtcHR5IiBqc29uOiJzaWduaWZpY2FuY2Usb21pdGVtcHR5ImAKLQlSZXBvc2l0b3JpZXMgICAgICAgICAgICAgICAgICBzb3VyY2VSZXBvc2l0b3JpZXMgIGB5YW1sOiJyZXBvc2l0b3JpZXMiIGpzb246InJlcG9zaXRvcmllcyJgCisJRzJWb2x1bWVQb2xpY3kgICAgICAgICAgICAgICAgbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeSAgICAgICAgICBgeWFtbDoiZzJfdm9sdW1lX3BvbGljeSxvbWl0ZW1wdHkiIGpzb246ImcyX3ZvbHVtZV9wb2xpY3ksb21pdGVtcHR5ImAKKwlXb3JrQ292ZXJhZ2VQb2xpY3kgICAgICAgICAgICAqbW9kZWwuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3kgICAgIGB5YW1sOiJ3b3JrX2NvdmVyYWdlX3BvbGljeSxvbWl0ZW1wdHkiIGpzb246IndvcmtfY292ZXJhZ2VfcG9saWN5LG9taXRlbXB0eSJgCisJVHJ1c3RlZEluc3RydW1lbnQgICAgICAgICAgICAgKm1vZGVsLkNvbXBldGl0aW9uVHJ1c3RlZEluc3RydW1lbnRQcm9vZiBgeWFtbDoidHJ1c3RlZF9pbnN0cnVtZW50LG9taXRlbXB0eSIganNvbjoidHJ1c3RlZF9pbnN0cnVtZW50LG9taXRlbXB0eSJgCisJR2VuZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgeWFtbDoiZ2VuZXJhdGlvbiIganNvbjoiZ2VuZXJhdGlvbiJgCisJS2luZCAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgeWFtbDoia2luZCIganNvbjoia2luZCJgCisJU291cmNlTG9ja1NoYTI1NiAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgeWFtbDoic291cmNlX2xvY2tfc2hhMjU2IiBqc29uOiJzb3VyY2VfbG9ja19zaGEyNTYiYAorCVNpZ25pZmljYW50SW1wcm92ZW1lbnRQZXJjZW50IGZsb2F0NjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHlhbWw6InNpZ25pZmljYW50X2ltcHJvdmVtZW50X3BlcmNlbnQiIGpzb246InNpZ25pZmljYW50X2ltcHJvdmVtZW50X3BlcmNlbnQiYAorCVRocmVzaG9sZEV2aWRlbmNlU2hhMjU2ICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHlhbWw6InRocmVzaG9sZF9ldmlkZW5jZV9zaGEyNTYiIGpzb246InRocmVzaG9sZF9ldmlkZW5jZV9zaGEyNTYiYAorCVNvdXJjZUFwcHJvdmFsSWQgICAgICAgICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHlhbWw6InNvdXJjZV9hcHByb3ZhbF9pZCxvbWl0ZW1wdHkiIGpzb246InNvdXJjZV9hcHByb3ZhbF9pZCxvbWl0ZW1wdHkiYAorCVNvdXJjZUFwcHJvdmFsRGlnZXN0ICAgICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHlhbWw6InNvdXJjZV9hcHByb3ZhbF9kaWdlc3Qsb21pdGVtcHR5IiBqc29uOiJzb3VyY2VfYXBwcm92YWxfZGlnZXN0LG9taXRlbXB0eSJgCisJRXZhbHVhdGVkQmFzZVNvdXJjZUxvY2tTaGEyNTYgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgeWFtbDoiZXZhbHVhdGVkX2Jhc2Vfc291cmNlX2xvY2tfc2hhMjU2LG9taXRlbXB0eSIganNvbjoiZXZhbHVhdGVkX2Jhc2Vfc291cmNlX2xvY2tfc2hhMjU2LG9taXRlbXB0eSJgCisJUGF0Y2hTaGEyNTYgICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgeWFtbDoicGF0Y2hfc2hhMjU2LG9taXRlbXB0eSIganNvbjoicGF0Y2hfc2hhMjU2LG9taXRlbXB0eSJgCisJU2NvcmVTaGEyNTYgICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgeWFtbDoic2NvcmVfc2hhMjU2LG9taXRlbXB0eSIganNvbjoic2NvcmVfc2hhMjU2LG9taXRlbXB0eSJgCisJU2lnbmlmaWNhbmNlICAgICAgICAgICAgICAgICAgKnNvdXJjZVNpZ25pZmljYW5jZSAgICAgICAgICAgICAgICAgICAgICBgeWFtbDoic2lnbmlmaWNhbmNlLG9taXRlbXB0eSIganNvbjoic2lnbmlmaWNhbmNlLG9taXRlbXB0eSJgCisJUmVwb3NpdG9yaWVzICAgICAgICAgICAgICAgICAgc291cmNlUmVwb3NpdG9yaWVzICAgICAgICAgICAgICAgICAgICAgICBgeWFtbDoicmVwb3NpdG9yaWVzIiBqc29uOiJyZXBvc2l0b3JpZXMiYAogfQogCiAvLyBSZWNvcmRzIHRoZSBleGFjdCBzb3VyY2UgY2hvaWNlIGZvciBvbmUgZnV0dXJlIHJvdW5kLiBJdHMgcmV3YXJkIGRpZ2VzdCBpcwogLy8gcHJvdmVuYW5jZSBvbmx5LCBpbmNsdWRpbmcgd2hlbiB0aGF0IHJvdW5kIGNhcnJpZXMgYW4gdW5zaGlwcGVkIHdpbm5lci4KIHR5cGUgcmV2aWV3ZWRTb3VyY2VSb3VuZCBzdHJ1Y3QgewotCUVwb2NoICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgYHlhbWw6ImVwb2NoIiBqc29uOiJlcG9jaCJgCi0JU291cmNlR2VuZXJhdGlvbiAgICAgICAgICAgICAgaW50ICAgICBgeWFtbDoic291cmNlX2dlbmVyYXRpb24iIGpzb246InNvdXJjZV9nZW5lcmF0aW9uImAKLQlBY3RpdmF0aW9uR2VuZXJhdGlvbiAgICAgICAgICBpbnQ2NCAgIGB5YW1sOiJhY3RpdmF0aW9uX2dlbmVyYXRpb24iIGpzb246ImFjdGl2YXRpb25fZ2VuZXJhdGlvbiJgCi0JU291cmNlRGVjaXNpb25EaWdlc3QgICAgICAgICAgc3RyaW5nICBgeWFtbDoic291cmNlX2RlY2lzaW9uX2RpZ2VzdCIganNvbjoic291cmNlX2RlY2lzaW9uX2RpZ2VzdCJgCi0JS2luZCAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICBgeWFtbDoia2luZCIganNvbjoia2luZCJgCi0JUmVhc29uICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICBgeWFtbDoicmVhc29uIiBqc29uOiJyZWFzb24iYAotCVJld2FyZERlY2lzaW9uRGlnZXN0ICAgICAgICAgIHN0cmluZyAgYHlhbWw6InJld2FyZF9kZWNpc2lvbl9kaWdlc3Qsb21pdGVtcHR5IiBqc29uOiJyZXdhcmRfZGVjaXNpb25fZGlnZXN0LG9taXRlbXB0eSJgCi0JU291cmNlTG9ja1NoYTI1NiAgICAgICAgICAgICAgc3RyaW5nICBgeWFtbDoic291cmNlX2xvY2tfc2hhMjU2IiBqc29uOiJzb3VyY2VfbG9ja19zaGEyNTYiYAotCVNpZ25pZmljYW50SW1wcm92ZW1lbnRQZXJjZW50IGZsb2F0NjQgYHlhbWw6InNpZ25pZmljYW50X2ltcHJvdmVtZW50X3BlcmNlbnQiIGpzb246InNpZ25pZmljYW50X2ltcHJvdmVtZW50X3BlcmNlbnQiYAorCUcyVm9sdW1lUG9saWN5ICAgICAgICAgICAgICAgIG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3kgICAgICBgeWFtbDoiZzJfdm9sdW1lX3BvbGljeSxvbWl0ZW1wdHkiIGpzb246ImcyX3ZvbHVtZV9wb2xpY3ksb21pdGVtcHR5ImAKKwlXb3JrQ292ZXJhZ2VQb2xpY3kgICAgICAgICAgICAqbW9kZWwuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3kgYHlhbWw6IndvcmtfY292ZXJhZ2VfcG9saWN5LG9taXRlbXB0eSIganNvbjoid29ya19jb3ZlcmFnZV9wb2xpY3ksb21pdGVtcHR5ImAKKwlFcG9jaCAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHlhbWw6ImVwb2NoIiBqc29uOiJlcG9jaCJgCisJU291cmNlR2VuZXJhdGlvbiAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB5YW1sOiJzb3VyY2VfZ2VuZXJhdGlvbiIganNvbjoic291cmNlX2dlbmVyYXRpb24iYAorCUFjdGl2YXRpb25HZW5lcmF0aW9uICAgICAgICAgIGludDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgeWFtbDoiYWN0aXZhdGlvbl9nZW5lcmF0aW9uIiBqc29uOiJhY3RpdmF0aW9uX2dlbmVyYXRpb24iYAorCVNvdXJjZURlY2lzaW9uRGlnZXN0ICAgICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgeWFtbDoic291cmNlX2RlY2lzaW9uX2RpZ2VzdCIganNvbjoic291cmNlX2RlY2lzaW9uX2RpZ2VzdCJgCisJS2luZCAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB5YW1sOiJraW5kIiBqc29uOiJraW5kImAKKwlSZWFzb24gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHlhbWw6InJlYXNvbiIganNvbjoicmVhc29uImAKKwlSZXdhcmREZWNpc2lvbkRpZ2VzdCAgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYHlhbWw6InJld2FyZF9kZWNpc2lvbl9kaWdlc3Qsb21pdGVtcHR5IiBqc29uOiJyZXdhcmRfZGVjaXNpb25fZGlnZXN0LG9taXRlbXB0eSJgCisJU291cmNlTG9ja1NoYTI1NiAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB5YW1sOiJzb3VyY2VfbG9ja19zaGEyNTYiIGpzb246InNvdXJjZV9sb2NrX3NoYTI1NiJgCisJU2lnbmlmaWNhbnRJbXByb3ZlbWVudFBlcmNlbnQgZmxvYXQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB5YW1sOiJzaWduaWZpY2FudF9pbXByb3ZlbWVudF9wZXJjZW50IiBqc29uOiJzaWduaWZpY2FudF9pbXByb3ZlbWVudF9wZXJjZW50ImAKIH0KIAogLy8gVmFsaWRhdGVzIGhpc3RvcmljYWwgZW50cmllcyBzZXBhcmF0ZWx5IHNvIHVwZ3JhZGluZyBhIG1hbmlmZXN0IG5ldmVyCkBAIC05NCw3ICsxMDAsOCBAQCBmdW5jIHZhbGlkYXRlUmV2aWV3ZWRTb3VyY2VNYW5pZmVzdChtYW5pZmVzdCAqc291cmNlTWFuaWZlc3QpIGVycm9yIHsKIAkJaWYgaW5kZXggPT0gMCB7CiAJCQlpZiBnZW5lcmF0aW9uLktpbmQgIT0gImJhc2VsaW5lIiB8fCBnZW5lcmF0aW9uLlNvdXJjZUFwcHJvdmFsSWQgIT0gIiIgfHwKIAkJCQlnZW5lcmF0aW9uLlNvdXJjZUFwcHJvdmFsRGlnZXN0ICE9ICIiIHx8IGdlbmVyYXRpb24uU2lnbmlmaWNhbmNlICE9IG5pbCB8fAotCQkJCWdlbmVyYXRpb24uRXZhbHVhdGVkQmFzZVNvdXJjZUxvY2tTaGEyNTYgIT0gIiIgfHwgZ2VuZXJhdGlvbi5QYXRjaFNoYTI1NiAhPSAiIiB8fCBnZW5lcmF0aW9uLlNjb3JlU2hhMjU2ICE9ICIiIHsKKwkJCQlnZW5lcmF0aW9uLkV2YWx1YXRlZEJhc2VTb3VyY2VMb2NrU2hhMjU2ICE9ICIiIHx8IGdlbmVyYXRpb24uUGF0Y2hTaGEyNTYgIT0gIiIgfHwgZ2VuZXJhdGlvbi5TY29yZVNoYTI1NiAhPSAiIiB8fAorCQkJCWdlbmVyYXRpb24uVHJ1c3RlZEluc3RydW1lbnQgIT0gbmlsIHx8IGdlbmVyYXRpb24uRzJWb2x1bWVQb2xpY3kgIT0gbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeUxlZ2FjeSB8fCBnZW5lcmF0aW9uLldvcmtDb3ZlcmFnZVBvbGljeSAhPSBuaWwgewogCQkJCXJldHVybiBlcnJvcnMuTmV3KCJzb3VyY2UgZ2VuZXJhdGlvbiAwIG11c3QgYmUgYW4gYXBwcm92ZWQgYmFzZWxpbmUgd2l0aG91dCBwcm9tb3Rpb24gbWV0YWRhdGEiKQogCQkJfQogCQkJaWYgbGVuKG1hbmlmZXN0LkV2YWx1YXRpb25Tb3VyY2UuRXBvY2hzKSA+IDAgewpAQCAtMTA2LDYgKzExMywxMiBAQCBmdW5jIHZhbGlkYXRlUmV2aWV3ZWRTb3VyY2VNYW5pZmVzdChtYW5pZmVzdCAqc291cmNlTWFuaWZlc3QpIGVycm9yIHsKIAkJCWNvbnRpbnVlCiAJCX0KIAkJcHJldmlvdXMgOj0gZ2VuZXJhdGlvblJlY29yZHNbaW5kZXgtMV0KKwkJaWYgZXJyIDo9IHZhbGlkYXRlVHJ1c3RlZEluc3RydW1lbnRHZW5lcmF0aW9uKCZnZW5lcmF0aW9uLCAmcHJldmlvdXMpOyBlcnIgIT0gbmlsIHsKKwkJCXJldHVybiBmbXQuRXJyb3JmKCJzb3VyY2UgZ2VuZXJhdGlvbiAlZCB0cnVzdGVkIGluc3RydW1lbnQ6ICV3IiwgaW5kZXgsIGVycikKKwkJfQorCQlpZiBnZW5lcmF0aW9uLktpbmQgPT0gInRydXN0ZWRfaW5zdHJ1bWVudF90cmFuc2l0aW9uIiB7CisJCQljb250aW51ZQorCQl9CiAJCWlmIGdlbmVyYXRpb24uS2luZCAhPSAicmV2aWV3ZWRfc291cmNlX3Byb21vdGlvbiIgfHwgZ2VuZXJhdGlvbi5Tb3VyY2VBcHByb3ZhbElkID09ICIiIHx8CiAJCQkhdmFsaWRTaGEyNTYoZ2VuZXJhdGlvbi5Tb3VyY2VBcHByb3ZhbERpZ2VzdCkgfHwgIXZhbGlkU2hhMjU2KGdlbmVyYXRpb24uUGF0Y2hTaGEyNTYpIHx8CiAJCQkhdmFsaWRTaGEyNTYoZ2VuZXJhdGlvbi5TY29yZVNoYTI1NikgfHwgZ2VuZXJhdGlvbi5FdmFsdWF0ZWRCYXNlU291cmNlTG9ja1NoYTI1NiAhPSBwcmV2aW91cy5Tb3VyY2VMb2NrU2hhMjU2IHx8CkBAIC0xMjAsMTIgKzEzMywyMyBAQCBmdW5jIHZhbGlkYXRlUmV2aWV3ZWRTb3VyY2VNYW5pZmVzdChtYW5pZmVzdCAqc291cmNlTWFuaWZlc3QpIGVycm9yIHsKIAkJCWdlbmVyYXRpb24uU2lnbmlmaWNhbnRJbXByb3ZlbWVudFBlcmNlbnQgPCBwcmV2aW91cy5TaWduaWZpY2FudEltcHJvdmVtZW50UGVyY2VudCB7CiAJCQlyZXR1cm4gZm10LkVycm9yZigic291cmNlIGdlbmVyYXRpb24gJWQgcmVjb21tZW5kYXRpb24gZG9lcyBub3QgcHJlc2VydmUgaXRzIGF1dGhlbnRpY2F0ZWQgY2FsaWJyYXRlZCBmbG9vciIsIGluZGV4KQogCQl9CisJCS8vIEFuIGVzdGFibGlzaGVkIG1pbmltdW0td29yayBsaW5lYWdlIGNvbnRpbnVlcyB0aHJvdWdoIG9yZGluYXJ5IGdlbnVpbmUKKwkJLy8gcmV2aWV3cywgbm90IGEgcmVwZWF0ZWQgYWRvcHRpb24gcHJvb2YuIEV2ZXJ5IHJldmlldy9iYXNlL3Njb3JlIGNoZWNrCisJCS8vIGFib3ZlIHN0aWxsIGFwcGxpZXM7IGxlZ2FjeSBhbmQgc3RhZ2luZyByZXRhaW4gdGhlaXIgb3JpZ2luYWwgZ3VhcmRzLgorCQlpbmhlcml0ZWRNaW5pbXVtV29yayA6PSAhbWFuaWZlc3QuU3RhZ2luZyAmJiBnZW5lcmF0aW9uLktpbmQgPT0gInJldmlld2VkX3NvdXJjZV9wcm9tb3Rpb24iICYmCisJCQlnZW5lcmF0aW9uLkcyVm9sdW1lUG9saWN5ID09IG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lNaW5pbXVtV29yayAmJgorCQkJcHJldmlvdXMuRzJWb2x1bWVQb2xpY3kgPT0gbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeU1pbmltdW1Xb3JrICYmIGdlbmVyYXRpb24uVHJ1c3RlZEluc3RydW1lbnQgPT0gbmlsCisJCS8vIFRoZSBmaXJzdCBhZG9wdGlvbiBtYXkgcmV0YWluIG9ubHkgaXRzIGluZGVwZW5kZW50bHkgcmV2aWV3ZWQgc2VsZWN0ZWQKKwkJLy8gZ3JhcGg7IHRoZSBwcm90ZWN0ZWQgb3ZlcmxheSBpdHNlbGYgY2Fubm90IGFsdGVyIHRoYXQgcHJvZHVjdCBncmFwaC4KIAkJZm9yIHJlcG9zaXRvcnksIGNvbW1pdCA6PSByYW5nZSBnZW5lcmF0aW9uLlJlcG9zaXRvcmllcy5jb21taXRzRm9yTW9kZShtYW5pZmVzdC5TdGFnaW5nKSB7Ci0JCQlpZiByZXBvc2l0b3J5ICE9ICJzZXJ2ZXIiICYmIGNvbW1pdCAhPSBwcmV2aW91cy5SZXBvc2l0b3JpZXMuY29tbWl0c0Zvck1vZGUobWFuaWZlc3QuU3RhZ2luZylbcmVwb3NpdG9yeV0geworCQkJaWYgcmVwb3NpdG9yeSAhPSAic2VydmVyIiAmJiBjb21taXQgIT0gcHJldmlvdXMuUmVwb3NpdG9yaWVzLmNvbW1pdHNGb3JNb2RlKG1hbmlmZXN0LlN0YWdpbmcpW3JlcG9zaXRvcnldICYmICFpbmhlcml0ZWRNaW5pbXVtV29yayAmJgorCQkJCSEoZ2VuZXJhdGlvbi5HMlZvbHVtZVBvbGljeSA9PSBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TWluaW11bVdvcmsgJiYgZ2VuZXJhdGlvbi5UcnVzdGVkSW5zdHJ1bWVudCAhPSBuaWwgJiYKKwkJCQkJZ2VuZXJhdGlvbi5UcnVzdGVkSW5zdHJ1bWVudC5TZWxlY3RlZFByb2R1Y3RLaW5kID09ICJyZXZpZXdlZF9zb3VyY2VfcHJvbW90aW9uIiAmJgorCQkJCQlnZW5lcmF0aW9uLlRydXN0ZWRJbnN0cnVtZW50LlNlbGVjdGVkUHJvZHVjdENvbW1pdHNbcmVwb3NpdG9yeV0gPT0gY29tbWl0KSB7CiAJCQkJcmV0dXJuIGZtdC5FcnJvcmYoInNvdXJjZSBnZW5lcmF0aW9uICVkIGNoYW5nZXMgcHJvdGVjdGVkIGRlcGVuZGVuY3kgJXMiLCBpbmRleCwgcmVwb3NpdG9yeSkKIAkJCX0KIAkJfQotCQlpZiBnZW5lcmF0aW9uLlJlcG9zaXRvcmllcy5TZXJ2ZXIgPT0gcHJldmlvdXMuUmVwb3NpdG9yaWVzLlNlcnZlciB7CisJCWlmIGdlbmVyYXRpb24uUmVwb3NpdG9yaWVzLlNlcnZlciA9PSBwcmV2aW91cy5SZXBvc2l0b3JpZXMuU2VydmVyICYmICFpbmhlcml0ZWRNaW5pbXVtV29yayB7CiAJCQlyZXR1cm4gZm10LkVycm9yZigic291cmNlIGdlbmVyYXRpb24gJWQgZG9lcyBub3QgY2hhbmdlIHRoZSBldmFsdWF0ZWQgc2VydmVyIiwgaW5kZXgpCiAJCX0KIAl9CkBAIC0xMzgsNyArMTYyLDcgQEAgZnVuYyB2YWxpZGF0ZVJldmlld2VkU291cmNlTWFuaWZlc3QobWFuaWZlc3QgKnNvdXJjZU1hbmlmZXN0KSBlcnJvciB7CiAJCX0KIAkJZ2VuZXJhdGlvbiwgZXJyIDo9IG1hbmlmZXN0LmdlbmVyYXRpb24ocm91bmQuU291cmNlR2VuZXJhdGlvbikKIAkJaWYgZXJyICE9IG5pbCB8fCByb3VuZC5Tb3VyY2VMb2NrU2hhMjU2ICE9IGdlbmVyYXRpb24uU291cmNlTG9ja1NoYTI1NiB8fAotCQkJcm91bmQuU2lnbmlmaWNhbnRJbXByb3ZlbWVudFBlcmNlbnQgIT0gZ2VuZXJhdGlvbi5TaWduaWZpY2FudEltcHJvdmVtZW50UGVyY2VudCB7CisJCQlyb3VuZC5TaWduaWZpY2FudEltcHJvdmVtZW50UGVyY2VudCAhPSBnZW5lcmF0aW9uLlNpZ25pZmljYW50SW1wcm92ZW1lbnRQZXJjZW50IHx8IHJvdW5kLkcyVm9sdW1lUG9saWN5ICE9IGdlbmVyYXRpb24uRzJWb2x1bWVQb2xpY3kgfHwgIXJlZmxlY3QuRGVlcEVxdWFsKHJvdW5kLldvcmtDb3ZlcmFnZVBvbGljeSwgZ2VuZXJhdGlvbi5Xb3JrQ292ZXJhZ2VQb2xpY3kpIHsKIAkJCXJldHVybiBmbXQuRXJyb3JmKCJzb3VyY2Ugcm91bmQgJWQgZG9lcyBub3QgbWF0Y2ggaXRzIGV4cGxpY2l0IHJldmlld2VkIGdlbmVyYXRpb24gYW5kIG1hcmdpbiIsIHJvdW5kLkVwb2NoKQogCQl9CiAJCXByZXZpb3VzR2VuZXJhdGlvbiA6PSAwCkBAIC0xNTUsOSArMTc5LDEzIEBAIGZ1bmMgdmFsaWRhdGVSZXZpZXdlZFNvdXJjZU1hbmlmZXN0KG1hbmlmZXN0ICpzb3VyY2VNYW5pZmVzdCkgZXJyb3IgewogCQkJCXJldHVybiBlcnJvcnMuTmV3KCJyZXZpZXdlZCBzb3VyY2UgY2FycnktZm9yd2FyZCBtdXN0IHJldGFpbiBzb3VyY2UgZ2VuZXJhdGlvbiBhbmQgbWFyZ2luIikKIAkJCX0KIAkJY2FzZSAicmV2aWV3ZWRfc291cmNlX3Byb21vdGlvbiI6Ci0JCQlpZiByb3VuZC5Tb3VyY2VHZW5lcmF0aW9uICE9IHByZXZpb3VzR2VuZXJhdGlvbisxIHx8IGdlbmVyYXRpb24uU291cmNlQXBwcm92YWxJZCA9PSAiIiB7CisJCQlpZiByb3VuZC5Tb3VyY2VHZW5lcmF0aW9uICE9IHByZXZpb3VzR2VuZXJhdGlvbisxIHx8IGdlbmVyYXRpb24uU291cmNlQXBwcm92YWxJZCA9PSAiIiB8fCAoZ2VuZXJhdGlvbi5UcnVzdGVkSW5zdHJ1bWVudCAhPSBuaWwgJiYgcm91bmQuRXBvY2ggIT0gMikgewogCQkJCXJldHVybiBlcnJvcnMuTmV3KCJzb3VyY2UgcHJvbW90aW9uIG11c3Qgc2VsZWN0IHRoZSBuZXh0IHNlcGFyYXRlbHkgYXBwcm92ZWQgZ2VuZXJhdGlvbiIpCiAJCQl9CisJCWNhc2UgInRydXN0ZWRfaW5zdHJ1bWVudF90cmFuc2l0aW9uIjoKKwkJCWlmIHJvdW5kLkVwb2NoICE9IDIgfHwgcm91bmQuU291cmNlR2VuZXJhdGlvbiAhPSBwcmV2aW91c0dlbmVyYXRpb24rMSB8fCBnZW5lcmF0aW9uLktpbmQgIT0gInRydXN0ZWRfaW5zdHJ1bWVudF90cmFuc2l0aW9uIiB8fCBnZW5lcmF0aW9uLlRydXN0ZWRJbnN0cnVtZW50ID09IG5pbCB7CisJCQkJcmV0dXJuIGVycm9ycy5OZXcoImluc3RydW1lbnQtb25seSBjYXJyeSBtdXN0IHNlbGVjdCBpdHMgZXhwbGljaXQgbmV3IHByb3RlY3RlZCBnZW5lcmF0aW9uIGZvciBlcG9jaCB0d28iKQorCQkJfQogCQlkZWZhdWx0OgogCQkJcmV0dXJuIGZtdC5FcnJvcmYoInNvdXJjZSByb3VuZCAlZCBoYXMgdW5zdXBwb3J0ZWQgdjIgY2hvaWNlIGtpbmQgJXEiLCByb3VuZC5FcG9jaCwgcm91bmQuS2luZCkKIAkJfQpkaWZmIC0tZ2l0IGEvY29ubmVjdC9zaW0tbGF0ZW5jeS9zb3VyY2VfZzJfaW5zdHJ1bWVudF9tYW5pZmVzdF90ZXN0LmdvIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS9zb3VyY2VfZzJfaW5zdHJ1bWVudF9tYW5pZmVzdF90ZXN0LmdvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmNTQ1ODBhZDVlNjBlNzQ2NmRkOTcwOTAxYjBhNTkxNzIyZWE2OTIKLS0tIC9kZXYvbnVsbAorKysgYi9jb25uZWN0L3NpbS1sYXRlbmN5L3NvdXJjZV9nMl9pbnN0cnVtZW50X21hbmlmZXN0X3Rlc3QuZ28KQEAgLTAsMCArMSwzNjYgQEAKKy8vIERyYWZ0LW92ZXJsYXkgcmVncmVzc2lvbnMgdXNlIG9ubHkgZnJvemVuIHNvdXJjZSBmaXh0dXJlcyBhbmQgcHVyZSBuZXcgRFRPcy4KKy8vIEV2ZXJ5IGFwcHJvdmFsL3JldmlldyBpZGVudGl0eSBiZWxvdyBpcyBzeW50aGV0aWMgdGVzdCBkYXRhLCBuZXZlciBhdXRob3JpdHkuCitwYWNrYWdlIG1haW4KKworaW1wb3J0ICgKKwkiYnl0ZXMiCisJImNyeXB0by9zaGEyNTYiCisJImVuY29kaW5nL2hleCIKKwkiZW5jb2RpbmcvanNvbiIKKwkib3MiCisJInBhdGgvZmlsZXBhdGgiCisJInN0cmluZ3MiCisJInRlc3RpbmciCisKKwkiZ2l0aHViLmNvbS91cm5ldHdvcmsvc2VydmVyIgorCSJnaXRodWIuY29tL3VybmV0d29yay9zZXJ2ZXIvbW9kZWwiCispCisKKy8vIEEgcmV2aWV3ZWQgbW9uby1yb290IHdpbm5lciBjaGFuZ2VzIGNvbm5lY3QsIG5vdCBzZXJ2ZXIuIEl0cyBzZXBhcmF0ZWx5CisvLyBhcHByb3ZlZCBpbnN0cnVtZW50IGNoaWxkIGNoYW5nZXMgc2VydmVyIGFuZCBtdXN0IHJldGFpbiB0aGF0IGV4YWN0IHdpbm5lci4KK2Z1bmMgZzJEcmFmdFJldmlld2VkRGVwZW5kZW5jeU1hbmlmZXN0KHQgKnRlc3RpbmcuVCkgKnNvdXJjZU1hbmlmZXN0IHsKKwl0LkhlbHBlcigpCisJbWFuaWZlc3QgOj0gcmV2aWV3ZWRTb3VyY2VUZXN0TWFuaWZlc3QodCkKKwlwcmV2aW91cyA6PSBtYW5pZmVzdC5FdmFsdWF0aW9uU291cmNlLkdlbmVyYXRpb25zWzBdCisJc2VsZWN0ZWQgOj0gcHJldmlvdXMuUmVwb3NpdG9yaWVzLmNvbW1pdHMoKQorCXNlbGVjdGVkWyJjb25uZWN0Il0gPSBzdHJpbmdzLlJlcGVhdCgiYyIsIDQwKQorCXNlbGVjdGVkTG9jaywgZXJyIDo9IG1vZGVsLkNvbXBldGl0aW9uU291cmNlTG9ja0RpZ2VzdChzZWxlY3RlZCkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCXBhdGNoIDo9IFtdYnl0ZSgiZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvc2NvcmUuZ28gYi9jb25uZWN0L3NpbS1sYXRlbmN5L3Njb3JlLmdvXG4tLS0gYS9jb25uZWN0L3NpbS1sYXRlbmN5L3Njb3JlLmdvXG4rKysgYi9jb25uZWN0L3NpbS1sYXRlbmN5L3Njb3JlLmdvXG5AQCAtMSArMSBAQFxuLS8vIHN5bnRoZXRpYyBsZWdhY3kgaW5zdHJ1bWVudFxuKy8vIHN5bnRoZXRpYyBtaW5pbXVtIHdvcmsgaW5zdHJ1bWVudFxuIikKKwlwYXRjaEhhc2ggOj0gc2hhMjU2LlN1bTI1NihwYXRjaCkKKwlhcHByb3ZhbCA6PSBtb2RlbC5Db21wZXRpdGlvblRydXN0ZWRJbnN0cnVtZW50QXBwcm92YWx7U2NoZW1hOiAxLCBBcHByb3ZhbElkOiAic3ludGhldGljLWRyYWZ0LWcyIiwgVGFyZ2V0RXBvY2g6IDIsCisJCUcyVm9sdW1lUG9saWN5OiBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TWluaW11bVdvcmssIEluc3RydW1lbnRCYXNlQ29tbWl0czogcHJldmlvdXMuUmVwb3NpdG9yaWVzLmNvbW1pdHMoKSwKKwkJSW5zdHJ1bWVudEJhc2VTb3VyY2VMb2NrU2hhMjU2OiBwcmV2aW91cy5Tb3VyY2VMb2NrU2hhMjU2LCBJbnN0cnVtZW50QmFzZUltYWdlRGlnZXN0OiAic2hhMjU2OiIgKyBzdHJpbmdzLlJlcGVhdCgiYiIsIDY0KSwKKwkJUGF0Y2g6IHBhdGNoLCBQYXRjaFNoYTI1NjogaGV4LkVuY29kZVRvU3RyaW5nKHBhdGNoSGFzaFs6XSksIFByb3RlY3RlZFBhdGhzOiBbXXN0cmluZ3siY29ubmVjdC9zaW0tbGF0ZW5jeS9zY29yZS5nbyJ9fQorCWFwcHJvdmFsLkFwcHJvdmFsU2hhMjU2LCBlcnIgPSBtb2RlbC5Db21wZXRpdGlvbkF1dG9tYXRpb25EaWdlc3QoYXBwcm92YWwpCisJaWYgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoZXJyKQorCX0KKwlyZXZpZXdJZCA6PSBzZXJ2ZXIuSWR7MTU6IDF9CisJcHJvb2YgOj0gJm1vZGVsLkNvbXBldGl0aW9uVHJ1c3RlZEluc3RydW1lbnRQcm9vZntTY2hlbWE6IDEsIEFwcHJvdmFsOiBhcHByb3ZhbCwgU2VsZWN0ZWRQcm9kdWN0S2luZDogInJldmlld2VkX3NvdXJjZV9wcm9tb3Rpb24iLAorCQlTZWxlY3RlZFByb2R1Y3RDb21taXRzOiBzZWxlY3RlZCwgU2VsZWN0ZWRQcm9kdWN0U291cmNlTG9ja1NoYTI1Njogc2VsZWN0ZWRMb2NrLCBTZWxlY3RlZFByb2R1Y3RSZXZpZXdJZDogJnJldmlld0lkLAorCQlTZWxlY3RlZFByb2R1Y3RSZXZpZXdEaWdlc3Q6IHN0cmluZ3MuUmVwZWF0KCJkIiwgNjQpLCBTZWxlY3RlZFByb2R1Y3RQYXRjaFNoYTI1Njogc3RyaW5ncy5SZXBlYXQoImUiLCA2NCksCisJCUluc3RydW1lbnRlZFNlcnZlckNvbW1pdDogc3RyaW5ncy5SZXBlYXQoImYiLCA0MCl9CisJY29tbWl0cyA6PSBwcmV2aW91cy5SZXBvc2l0b3JpZXMuY29tbWl0cygpCisJZm9yIHJlcG9zaXRvcnksIGNvbW1pdCA6PSByYW5nZSBzZWxlY3RlZCB7CisJCWNvbW1pdHNbcmVwb3NpdG9yeV0gPSBjb21taXQKKwl9CisJY29tbWl0c1sic2VydmVyIl0gPSBwcm9vZi5JbnN0cnVtZW50ZWRTZXJ2ZXJDb21taXQKKwlsb2NrLCBlcnIgOj0gbW9kZWwuQ29tcGV0aXRpb25Tb3VyY2VMb2NrRGlnZXN0KGNvbW1pdHMpCisJaWYgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoZXJyKQorCX0KKwlzaWduaWZpY2FuY2UgOj0gdmFsaWRTb3VyY2VTaWduaWZpY2FuY2UoKQorCW1hbmlmZXN0LkV2YWx1YXRpb25Tb3VyY2UuR2VuZXJhdGlvbnMgPSBhcHBlbmQobWFuaWZlc3QuRXZhbHVhdGlvblNvdXJjZS5HZW5lcmF0aW9ucywgcmV2aWV3ZWRTb3VyY2VHZW5lcmF0aW9ueworCQlHZW5lcmF0aW9uOiAxLCBLaW5kOiAicmV2aWV3ZWRfc291cmNlX3Byb21vdGlvbiIsIEcyVm9sdW1lUG9saWN5OiBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TWluaW11bVdvcmssIFRydXN0ZWRJbnN0cnVtZW50OiBwcm9vZiwKKwkJU291cmNlTG9ja1NoYTI1NjogbG9jaywgU2lnbmlmaWNhbnRJbXByb3ZlbWVudFBlcmNlbnQ6IHNpZ25pZmljYW5jZS5SZWNvbW1lbmRlZE5leHRFcG9jaFRha2VvdmVyTWFyZ2luUGVyY2VudCwKKwkJVGhyZXNob2xkRXZpZGVuY2VTaGEyNTY6IHNpZ25pZmljYW5jZS5TY29yZVNoYTI1NiwgUmVwb3NpdG9yaWVzOiBzb3VyY2VSZXBvc2l0b3JpZXNGcm9tQ29tbWl0cyhjb21taXRzKSwKKwkJU291cmNlQXBwcm92YWxJZDogcmV2aWV3SWQuU3RyaW5nKCksIFNvdXJjZUFwcHJvdmFsRGlnZXN0OiBwcm9vZi5TZWxlY3RlZFByb2R1Y3RSZXZpZXdEaWdlc3QsCisJCUV2YWx1YXRlZEJhc2VTb3VyY2VMb2NrU2hhMjU2OiBwcmV2aW91cy5Tb3VyY2VMb2NrU2hhMjU2LCBQYXRjaFNoYTI1NjogcHJvb2YuU2VsZWN0ZWRQcm9kdWN0UGF0Y2hTaGEyNTYsCisJCVNjb3JlU2hhMjU2OiBzaWduaWZpY2FuY2UuU2NvcmVTaGEyNTYsIFNpZ25pZmljYW5jZTogc2lnbmlmaWNhbmNlfSkKKwltYW5pZmVzdC5FdmFsdWF0aW9uU291cmNlLlJvdW5kcyA9IGFwcGVuZChtYW5pZmVzdC5FdmFsdWF0aW9uU291cmNlLlJvdW5kcywgcmV2aWV3ZWRTb3VyY2VSb3VuZHsKKwkJRXBvY2g6IDIsIFNvdXJjZUdlbmVyYXRpb246IDEsIEFjdGl2YXRpb25HZW5lcmF0aW9uOiAyLCBTb3VyY2VEZWNpc2lvbkRpZ2VzdDogc3RyaW5ncy5SZXBlYXQoIjEiLCA2NCksCisJCUtpbmQ6ICJyZXZpZXdlZF9zb3VyY2VfcHJvbW90aW9uIiwgUmVhc29uOiAic3ludGhldGljX3Jldmlld2VkX2RlcGVuZGVuY3lfd2lubmVyIiwgU291cmNlTG9ja1NoYTI1NjogbG9jaywKKwkJU2lnbmlmaWNhbnRJbXByb3ZlbWVudFBlcmNlbnQ6IHNpZ25pZmljYW5jZS5SZWNvbW1lbmRlZE5leHRFcG9jaFRha2VvdmVyTWFyZ2luUGVyY2VudCwgRzJWb2x1bWVQb2xpY3k6IG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lNaW5pbXVtV29ya30pCisJcmV0dXJuIG1hbmlmZXN0Cit9CisKKy8vIE9ubHkgdGhlIGV4cGxpY2l0LCBmdWxseSBib3VuZCBuZXcgaW5zdHJ1bWVudCBtYXkgcmV0YWluIHRoaXMgYWxyZWFkeQorLy8gcmV2aWV3ZWQgZGVwZW5kZW5jeSBjaGFuZ2U7IGEgc2VydmVyLW9ubHkgc3ludGhldGljIHdpbm5lciBpcyBub3QgcmVxdWlyZWQuCitmdW5jIFRlc3RHMkRyYWZ0SW5zdHJ1bWVudE1hbmlmZXN0QWNjZXB0c1Jldmlld2VkTm9uc2VydmVyUHJvZHVjdEdyYXBoKHQgKnRlc3RpbmcuVCkgeworCW1hbmlmZXN0IDo9IGcyRHJhZnRSZXZpZXdlZERlcGVuZGVuY3lNYW5pZmVzdCh0KQorCWlmIGVyciA6PSB2YWxpZGF0ZVNvdXJjZU1hbmlmZXN0KG1hbmlmZXN0KTsgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoIm5ldyB0cnVzdGVkIG1hbmlmZXN0IGRpc2NhcmRlZCB0aGUgZ2VudWluZSBzZWxlY3RlZCBkZXBlbmRlbmN5IGdyYXBoIiwgZXJyKQorCX0KK30KKworLy8gTm8td2lubmVyIGNhcnJ5IHByZXNlcnZlcyB0aGUgaW5jdW1iZW50IGFuZCBjYWxpYnJhdGVkIG1hcmdpbiB3aXRob3V0CisvLyBpbnZlbnRpbmcgYSBzb3VyY2UgcmV2aWV3OyBvbmx5IHRoZSBpbmRlcGVuZGVudGx5IGFwcHJvdmVkIGNoaWxkIGlzIG5ldy4KK2Z1bmMgVGVzdEcyRHJhZnRJbnN0cnVtZW50TWFuaWZlc3RBY2NlcHRzVW5yZXZpZXdlZEluY3VtYmVudENhcnJ5KHQgKnRlc3RpbmcuVCkgeworCW1hbmlmZXN0IDo9IGcyRHJhZnRSZXZpZXdlZERlcGVuZGVuY3lNYW5pZmVzdCh0KQorCXByZXZpb3VzIDo9IG1hbmlmZXN0LkV2YWx1YXRpb25Tb3VyY2UuR2VuZXJhdGlvbnNbMF0KKwlnZW5lcmF0aW9uIDo9ICZtYW5pZmVzdC5FdmFsdWF0aW9uU291cmNlLkdlbmVyYXRpb25zWzFdCisJcHJvb2YgOj0gZ2VuZXJhdGlvbi5UcnVzdGVkSW5zdHJ1bWVudAorCXByb29mLlNlbGVjdGVkUHJvZHVjdEtpbmQgPSAicmV2aWV3ZWRfc291cmNlX2NhcnJ5X2ZvcndhcmQiCisJcHJvb2YuU2VsZWN0ZWRQcm9kdWN0Q29tbWl0cyA9IHByZXZpb3VzLlJlcG9zaXRvcmllcy5jb21taXRzKCkKKwlwcm9vZi5TZWxlY3RlZFByb2R1Y3RTb3VyY2VMb2NrU2hhMjU2ID0gcHJldmlvdXMuU291cmNlTG9ja1NoYTI1NgorCXByb29mLlNlbGVjdGVkUHJvZHVjdFJldmlld0lkLCBwcm9vZi5TZWxlY3RlZFByb2R1Y3RSZXZpZXdEaWdlc3QsIHByb29mLlNlbGVjdGVkUHJvZHVjdFBhdGNoU2hhMjU2ID0gbmlsLCAiIiwgIiIKKwljb21taXRzIDo9IHByZXZpb3VzLlJlcG9zaXRvcmllcy5jb21taXRzKCkKKwljb21taXRzWyJzZXJ2ZXIiXSA9IHByb29mLkluc3RydW1lbnRlZFNlcnZlckNvbW1pdAorCWxvY2ssIGVyciA6PSBtb2RlbC5Db21wZXRpdGlvblNvdXJjZUxvY2tEaWdlc3QoY29tbWl0cykKKwlpZiBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCWdlbmVyYXRpb24uS2luZCwgZ2VuZXJhdGlvbi5Tb3VyY2VMb2NrU2hhMjU2ID0gInRydXN0ZWRfaW5zdHJ1bWVudF90cmFuc2l0aW9uIiwgbG9jaworCWdlbmVyYXRpb24uUmVwb3NpdG9yaWVzID0gc291cmNlUmVwb3NpdG9yaWVzRnJvbUNvbW1pdHMoY29tbWl0cykKKwlnZW5lcmF0aW9uLlNvdXJjZUFwcHJvdmFsSWQsIGdlbmVyYXRpb24uU291cmNlQXBwcm92YWxEaWdlc3QsIGdlbmVyYXRpb24uRXZhbHVhdGVkQmFzZVNvdXJjZUxvY2tTaGEyNTYsIGdlbmVyYXRpb24uUGF0Y2hTaGEyNTYsIGdlbmVyYXRpb24uU2NvcmVTaGEyNTYgPSAiIiwgIiIsICIiLCAiIiwgIiIKKwlnZW5lcmF0aW9uLlNpZ25pZmljYW5jZSA9IG5pbAorCWdlbmVyYXRpb24uU2lnbmlmaWNhbnRJbXByb3ZlbWVudFBlcmNlbnQsIGdlbmVyYXRpb24uVGhyZXNob2xkRXZpZGVuY2VTaGEyNTYgPSBwcmV2aW91cy5TaWduaWZpY2FudEltcHJvdmVtZW50UGVyY2VudCwgcHJldmlvdXMuVGhyZXNob2xkRXZpZGVuY2VTaGEyNTYKKwlyb3VuZCA6PSAmbWFuaWZlc3QuRXZhbHVhdGlvblNvdXJjZS5Sb3VuZHNbMV0KKwlyb3VuZC5LaW5kLCByb3VuZC5Tb3VyY2VMb2NrU2hhMjU2LCByb3VuZC5TaWduaWZpY2FudEltcHJvdmVtZW50UGVyY2VudCA9IGdlbmVyYXRpb24uS2luZCwgbG9jaywgcHJldmlvdXMuU2lnbmlmaWNhbnRJbXByb3ZlbWVudFBlcmNlbnQKKwlyb3VuZC5SZWFzb24gPSAic3ludGhldGljX25vX3Jld2FyZF93aW5uZXIiCisJaWYgZXJyIDo9IHZhbGlkYXRlU291cmNlTWFuaWZlc3QobWFuaWZlc3QpOyBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbCgiaW5zdHJ1bWVudC1vbmx5IGNhcnJ5IGFjcXVpcmVkIGEgcHJvZHVjdCByZXZpZXcgb3IgY2hhbmdlZCBpdHMgaW5jdW1iZW50IiwgZXJyKQorCX0KK30KKworLy8gVGhlIG9sZCBzb3VyY2UgY29udHJhY3QgcmVtYWlucyBzZXJ2ZXItb25seS4gTmV3IHBvbGljeSBzdXBwb3J0IG11c3Qgbm90CisvLyByZW1vdmUgaXRzIGluZGVwZW5kZW50IG5vbnNlcnZlciBndWFyZCBvciByZWludGVycHJldCBhIGxlZ2FjeSBnZW5lcmF0aW9uLgorZnVuYyBUZXN0RzJEcmFmdEluc3RydW1lbnRNYW5pZmVzdFJldGFpbnNMZWdhY3lEZXBlbmRlbmN5R3VhcmQodCAqdGVzdGluZy5UKSB7CisJbWFuaWZlc3QgOj0gZzJEcmFmdFJldmlld2VkRGVwZW5kZW5jeU1hbmlmZXN0KHQpCisJbWFuaWZlc3QuRXZhbHVhdGlvblNvdXJjZS5HZW5lcmF0aW9uc1sxXS5HMlZvbHVtZVBvbGljeSA9IG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lMZWdhY3kKKwltYW5pZmVzdC5FdmFsdWF0aW9uU291cmNlLkdlbmVyYXRpb25zWzFdLlRydXN0ZWRJbnN0cnVtZW50ID0gbmlsCisJbWFuaWZlc3QuRXZhbHVhdGlvblNvdXJjZS5Sb3VuZHNbMV0uRzJWb2x1bWVQb2xpY3kgPSBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TGVnYWN5CisJaWYgZXJyIDo9IHZhbGlkYXRlU291cmNlTWFuaWZlc3QobWFuaWZlc3QpOyBlcnIgPT0gbmlsIHsKKwkJdC5GYXRhbCgibGVnYWN5IGRlcGVuZGVuY3kgZ3VhcmQgd2FzIGJyb2FkZW5lZCBieSB0aGUgbmV3IGluc3RydW1lbnQiKQorCX0KK30KKworLy8gVGhlIGFkb3B0aW9uIHByb29mIHN0YXlzIHdpdGggZ2VuZXJhdGlvbiBvbmUuIEEgbGF0ZXIgcmVhbCByZXZpZXcgbWF5CisvLyByZXBsYWNlIGEgc2VydmVyIGZpbGUsIGEgbW9uby1yb290IGRlcGVuZGVuY3ksIG9yIG9ubHkgdGhlIGRlcGVuZGVuY3kuCitmdW5jIGcyRHJhZnRNaW5pbXVtV29ya1N1Y2Nlc3Nvcih0ICp0ZXN0aW5nLlQsIGNoYW5nZVNlcnZlciBib29sKSAqc291cmNlTWFuaWZlc3QgeworCXQuSGVscGVyKCkKKwltYW5pZmVzdCA6PSBnMkRyYWZ0UmV2aWV3ZWREZXBlbmRlbmN5TWFuaWZlc3QodCkKKwlwcmV2aW91cyA6PSBtYW5pZmVzdC5FdmFsdWF0aW9uU291cmNlLkdlbmVyYXRpb25zWzFdCisJY29tbWl0cyA6PSBwcmV2aW91cy5SZXBvc2l0b3JpZXMuY29tbWl0cygpCisJY29tbWl0c1siY29ubmVjdCJdID0gc3RyaW5ncy5SZXBlYXQoIjQiLCA0MCkKKwlpZiBjaGFuZ2VTZXJ2ZXIgeworCQljb21taXRzWyJzZXJ2ZXIiXSA9IHN0cmluZ3MuUmVwZWF0KCI1IiwgNDApCisJfQorCWxvY2ssIGVyciA6PSBtb2RlbC5Db21wZXRpdGlvblNvdXJjZUxvY2tEaWdlc3QoY29tbWl0cykKKwlpZiBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCXJldmlld0lkIDo9IHNlcnZlci5JZHsxNDogMX0KKwlzaWduaWZpY2FuY2UgOj0gdmFsaWRTb3VyY2VTaWduaWZpY2FuY2UoKQorCW1hbmlmZXN0LkV2YWx1YXRpb25Tb3VyY2UuR2VuZXJhdGlvbnMgPSBhcHBlbmQobWFuaWZlc3QuRXZhbHVhdGlvblNvdXJjZS5HZW5lcmF0aW9ucywgcmV2aWV3ZWRTb3VyY2VHZW5lcmF0aW9ueworCQlHZW5lcmF0aW9uOiAyLCBLaW5kOiAicmV2aWV3ZWRfc291cmNlX3Byb21vdGlvbiIsIEcyVm9sdW1lUG9saWN5OiBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TWluaW11bVdvcmssCisJCVNvdXJjZUxvY2tTaGEyNTY6IGxvY2ssIFNpZ25pZmljYW50SW1wcm92ZW1lbnRQZXJjZW50OiBzaWduaWZpY2FuY2UuUmVjb21tZW5kZWROZXh0RXBvY2hUYWtlb3Zlck1hcmdpblBlcmNlbnQsCisJCVRocmVzaG9sZEV2aWRlbmNlU2hhMjU2OiBzaWduaWZpY2FuY2UuU2NvcmVTaGEyNTYsIFJlcG9zaXRvcmllczogc291cmNlUmVwb3NpdG9yaWVzRnJvbUNvbW1pdHMoY29tbWl0cyksCisJCVNvdXJjZUFwcHJvdmFsSWQ6IHJldmlld0lkLlN0cmluZygpLCBTb3VyY2VBcHByb3ZhbERpZ2VzdDogc3RyaW5ncy5SZXBlYXQoIjYiLCA2NCksCisJCUV2YWx1YXRlZEJhc2VTb3VyY2VMb2NrU2hhMjU2OiBwcmV2aW91cy5Tb3VyY2VMb2NrU2hhMjU2LCBQYXRjaFNoYTI1Njogc3RyaW5ncy5SZXBlYXQoIjciLCA2NCksCisJCVNjb3JlU2hhMjU2OiBzaWduaWZpY2FuY2UuU2NvcmVTaGEyNTYsIFNpZ25pZmljYW5jZTogc2lnbmlmaWNhbmNlfSkKKwltYW5pZmVzdC5FdmFsdWF0aW9uU291cmNlLlJvdW5kcyA9IGFwcGVuZChtYW5pZmVzdC5FdmFsdWF0aW9uU291cmNlLlJvdW5kcywgcmV2aWV3ZWRTb3VyY2VSb3VuZHsKKwkJRXBvY2g6IDMsIFNvdXJjZUdlbmVyYXRpb246IDIsIEFjdGl2YXRpb25HZW5lcmF0aW9uOiAzLCBTb3VyY2VEZWNpc2lvbkRpZ2VzdDogc3RyaW5ncy5SZXBlYXQoIjgiLCA2NCksCisJCUtpbmQ6ICJyZXZpZXdlZF9zb3VyY2VfcHJvbW90aW9uIiwgUmVhc29uOiAic3ludGhldGljX3Jldmlld2VkX21pbmltdW1fd29ya19zdWNjZXNzb3IiLCBTb3VyY2VMb2NrU2hhMjU2OiBsb2NrLAorCQlTaWduaWZpY2FudEltcHJvdmVtZW50UGVyY2VudDogc2lnbmlmaWNhbmNlLlJlY29tbWVuZGVkTmV4dEVwb2NoVGFrZW92ZXJNYXJnaW5QZXJjZW50LCBHMlZvbHVtZVBvbGljeTogbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeU1pbmltdW1Xb3JrfSkKKwlyZXR1cm4gbWFuaWZlc3QKK30KKworLy8gVGhlIGZpcnN0IHN0YWxlIGd1YXJkIHByZXZpb3VzbHkgcmVqZWN0ZWQgYSBnZW51aW5lIHJldmlld2VkIGRlcGVuZGVuY3kKKy8vIGNoYW5nZSBldmVuIGFmdGVyIGEgdmFsaWQgb25lLXRpbWUgbWluaW11bS13b3JrIGFkb3B0aW9uIHdhcyBpbiBpdHMgaGlzdG9yeS4KK2Z1bmMgVGVzdEcyRHJhZnRNaW5pbXVtV29ya0Vwb2NoVGhyZWVBY2NlcHRzUmV2aWV3ZWRTZXJ2ZXJBbmREZXBlbmRlbmN5V2lubmVyKHQgKnRlc3RpbmcuVCkgeworCW1hbmlmZXN0IDo9IGcyRHJhZnRNaW5pbXVtV29ya1N1Y2Nlc3Nvcih0LCB0cnVlKQorCWlmIGVyciA6PSB2YWxpZGF0ZVNvdXJjZU1hbmlmZXN0KG1hbmlmZXN0KTsgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoImluaGVyaXRlZCBtaW5pbXVtLXdvcmsgcmVqZWN0ZWQgYSByZXZpZXdlZCBzZXJ2ZXItYW5kLWRlcGVuZGVuY3kgd2lubmVyIiwgZXJyKQorCX0KK30KKworLy8gVGhlIHNlY29uZCBzdGFsZSBndWFyZCBhZGRpdGlvbmFsbHkgZGVtYW5kZWQgYSBzZXJ2ZXIgY29tbWl0IGV2ZW4gd2hlbiB0aGUKKy8vIGFjdHVhbCBhcHByb3ZlZCBtb25vLXJvb3Qgd2lubmVyIGNoYW5nZWQgb25seSBpdHMgc2VsZWN0ZWQgZGVwZW5kZW5jeS4KK2Z1bmMgVGVzdEcyRHJhZnRNaW5pbXVtV29ya0Vwb2NoVGhyZWVBY2NlcHRzUmV2aWV3ZWREZXBlbmRlbmN5T25seVdpbm5lcih0ICp0ZXN0aW5nLlQpIHsKKwltYW5pZmVzdCA6PSBnMkRyYWZ0TWluaW11bVdvcmtTdWNjZXNzb3IodCwgZmFsc2UpCisJaWYgZXJyIDo9IHZhbGlkYXRlU291cmNlTWFuaWZlc3QobWFuaWZlc3QpOyBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbCgiaW5oZXJpdGVkIG1pbmltdW0td29yayBkZW1hbmRlZCBhIGZhYnJpY2F0ZWQgc2VydmVyIGNoYW5nZSIsIGVycikKKwl9Cit9CisKKy8vIFRoZSBjb250aW51YXRpb24gZXhjZXB0aW9uIGNhbm5vdCBtYW51ZmFjdHVyZSBhZG9wdGlvbiwgd2FpdmUgYSBnZW51aW5lCisvLyByZXZpZXcsIGNoYW5nZSBpdHMgaW5jdW1iZW50LCBibGVzcyBhbiB1bmJvdW5kIGdyYXBoLCBvciBkb3duZ3JhZGUgcG9saWN5LgorZnVuYyBUZXN0RzJEcmFmdE1pbmltdW1Xb3JrU3VjY2Vzc29yUmVqZWN0c0ZvcmdlZE9yRG93bmdyYWRlZExpbmVhZ2UodCAqdGVzdGluZy5UKSB7CisJZm9yIF8sIG11dGF0aW9uIDo9IHJhbmdlIFtdc3RyaW5neyJtaXNzaW5nIGFkb3B0aW9uIiwgInJlcGVhdGVkIGFkb3B0aW9uIiwgIm1pc3NpbmcgcmV2aWV3IiwgImJhZCByZXZpZXcgZGlnZXN0IiwgIm9ic29sZXRlIGJhc2UiLCAidW5ib3VuZCBncmFwaCIsICJ1bmNoYW5nZWQgZ3JhcGgiLCAiZG93bmdyYWRlIiwgInVua25vd24gcG9saWN5In0geworCQltYW5pZmVzdCA6PSBnMkRyYWZ0TWluaW11bVdvcmtTdWNjZXNzb3IodCwgZmFsc2UpCisJCWdlbmVyYXRpb24gOj0gJm1hbmlmZXN0LkV2YWx1YXRpb25Tb3VyY2UuR2VuZXJhdGlvbnNbMl0KKwkJc3dpdGNoIG11dGF0aW9uIHsKKwkJY2FzZSAibWlzc2luZyBhZG9wdGlvbiI6CisJCQltYW5pZmVzdC5FdmFsdWF0aW9uU291cmNlLkdlbmVyYXRpb25zWzFdLlRydXN0ZWRJbnN0cnVtZW50ID0gbmlsCisJCWNhc2UgInJlcGVhdGVkIGFkb3B0aW9uIjoKKwkJCWdlbmVyYXRpb24uVHJ1c3RlZEluc3RydW1lbnQgPSBtYW5pZmVzdC5FdmFsdWF0aW9uU291cmNlLkdlbmVyYXRpb25zWzFdLlRydXN0ZWRJbnN0cnVtZW50CisJCWNhc2UgIm1pc3NpbmcgcmV2aWV3IjoKKwkJCWdlbmVyYXRpb24uU291cmNlQXBwcm92YWxJZCA9ICIiCisJCWNhc2UgImJhZCByZXZpZXcgZGlnZXN0IjoKKwkJCWdlbmVyYXRpb24uU291cmNlQXBwcm92YWxEaWdlc3QgPSAibm90LWEtcmV2aWV3LWRpZ2VzdCIKKwkJY2FzZSAib2Jzb2xldGUgYmFzZSI6CisJCQlnZW5lcmF0aW9uLkV2YWx1YXRlZEJhc2VTb3VyY2VMb2NrU2hhMjU2ID0gbWFuaWZlc3QuRXZhbHVhdGlvblNvdXJjZS5HZW5lcmF0aW9uc1swXS5Tb3VyY2VMb2NrU2hhMjU2CisJCWNhc2UgInVuYm91bmQgZ3JhcGgiOgorCQkJZ2VuZXJhdGlvbi5SZXBvc2l0b3JpZXMuQ29ubmVjdC5Db21taXQgPSBzdHJpbmdzLlJlcGVhdCgiOSIsIDQwKQorCQljYXNlICJ1bmNoYW5nZWQgZ3JhcGgiOgorCQkJcHJldmlvdXMgOj0gbWFuaWZlc3QuRXZhbHVhdGlvblNvdXJjZS5HZW5lcmF0aW9uc1sxXQorCQkJZ2VuZXJhdGlvbi5SZXBvc2l0b3JpZXMsIGdlbmVyYXRpb24uU291cmNlTG9ja1NoYTI1NiA9IHByZXZpb3VzLlJlcG9zaXRvcmllcywgcHJldmlvdXMuU291cmNlTG9ja1NoYTI1NgorCQkJbWFuaWZlc3QuRXZhbHVhdGlvblNvdXJjZS5Sb3VuZHNbMl0uU291cmNlTG9ja1NoYTI1NiA9IHByZXZpb3VzLlNvdXJjZUxvY2tTaGEyNTYKKwkJY2FzZSAiZG93bmdyYWRlIjoKKwkJCWdlbmVyYXRpb24uRzJWb2x1bWVQb2xpY3ksIG1hbmlmZXN0LkV2YWx1YXRpb25Tb3VyY2UuUm91bmRzWzJdLkcyVm9sdW1lUG9saWN5ID0gbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeUxlZ2FjeSwgbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeUxlZ2FjeQorCQljYXNlICJ1bmtub3duIHBvbGljeSI6CisJCQlnZW5lcmF0aW9uLkcyVm9sdW1lUG9saWN5LCBtYW5pZmVzdC5FdmFsdWF0aW9uU291cmNlLlJvdW5kc1syXS5HMlZvbHVtZVBvbGljeSA9ICJ1bmtub3duLzEiLCAidW5rbm93bi8xIgorCQl9CisJCWlmIGVyciA6PSB2YWxpZGF0ZVNvdXJjZU1hbmlmZXN0KG1hbmlmZXN0KTsgZXJyID09IG5pbCB7CisJCQl0LkVycm9yZigiaW5oZXJpdGVkIG1pbmltdW0td29yayBhY2NlcHRlZCAlcyIsIG11dGF0aW9uKQorCQl9CisJfQorfQorCisvLyBTZWxmLWNvbnNpc3RlbnQgb3V0ZXIgaGFzaGVzIGNhbm5vdCByZXBsYWNlIHRoZSBzZWxlY3RlZCByZXZpZXdlZCBncmFwaCwKKy8vIG9taXQgaXRzIHJldmlldyBvciBjaGFuZ2UgcG9saWN5IHVuZGVyIHRoZSBvcGVyYXRvcidzIGluc3RydW1lbnQgYXBwcm92YWwuCitmdW5jIFRlc3RHMkRyYWZ0SW5zdHJ1bWVudE1hbmlmZXN0UmVqZWN0c1VuYm91bmRHcmFwaEFuZFJldmlldyh0ICp0ZXN0aW5nLlQpIHsKKwlmb3IgXywgbXV0YXRpb24gOj0gcmFuZ2UgW11zdHJpbmd7ImRlcGVuZGVuY3kiLCAicmV2aWV3IiwgIm1pc3NpbmcgcHJvb2YiLCAicG9saWN5In0geworCQltYW5pZmVzdCA6PSBnMkRyYWZ0UmV2aWV3ZWREZXBlbmRlbmN5TWFuaWZlc3QodCkKKwkJZ2VuZXJhdGlvbiA6PSAmbWFuaWZlc3QuRXZhbHVhdGlvblNvdXJjZS5HZW5lcmF0aW9uc1sxXQorCQlzd2l0Y2ggbXV0YXRpb24geworCQljYXNlICJkZXBlbmRlbmN5IjoKKwkJCWNvbW1pdHMgOj0gZ2VuZXJhdGlvbi5SZXBvc2l0b3JpZXMuY29tbWl0cygpCisJCQljb21taXRzWyJjb25uZWN0Il0gPSBzdHJpbmdzLlJlcGVhdCgiMiIsIDQwKQorCQkJZ2VuZXJhdGlvbi5SZXBvc2l0b3JpZXMgPSBzb3VyY2VSZXBvc2l0b3JpZXNGcm9tQ29tbWl0cyhjb21taXRzKQorCQkJbG9jaywgZXJyIDo9IG1vZGVsLkNvbXBldGl0aW9uU291cmNlTG9ja0RpZ2VzdChjb21taXRzKQorCQkJaWYgZXJyICE9IG5pbCB7CisJCQkJdC5GYXRhbChlcnIpCisJCQl9CisJCQlnZW5lcmF0aW9uLlNvdXJjZUxvY2tTaGEyNTYsIG1hbmlmZXN0LkV2YWx1YXRpb25Tb3VyY2UuUm91bmRzWzFdLlNvdXJjZUxvY2tTaGEyNTYgPSBsb2NrLCBsb2NrCisJCWNhc2UgInJldmlldyI6CisJCQlnZW5lcmF0aW9uLlNvdXJjZUFwcHJvdmFsRGlnZXN0ID0gc3RyaW5ncy5SZXBlYXQoIjMiLCA2NCkKKwkJY2FzZSAibWlzc2luZyBwcm9vZiI6CisJCQlnZW5lcmF0aW9uLlRydXN0ZWRJbnN0cnVtZW50ID0gbmlsCisJCWNhc2UgInBvbGljeSI6CisJCQlnZW5lcmF0aW9uLkcyVm9sdW1lUG9saWN5ID0gInVua25vd24vMSIKKwkJCW1hbmlmZXN0LkV2YWx1YXRpb25Tb3VyY2UuUm91bmRzWzFdLkcyVm9sdW1lUG9saWN5ID0gInVua25vd24vMSIKKwkJfQorCQlpZiBlcnIgOj0gdmFsaWRhdGVTb3VyY2VNYW5pZmVzdChtYW5pZmVzdCk7IGVyciA9PSBuaWwgeworCQkJdC5FcnJvcmYoIm5ldyBtYW5pZmVzdCBhY2NlcHRlZCAlcyBzdWJzdGl0dXRpb24iLCBtdXRhdGlvbikKKwkJfQorCX0KK30KKworLy8gVGhlIGFwcGVuZGVkIHJhdy1sb2NrIGxlYWYgcHJlc2VydmVzIGNvbXBsZXRlIGhpc3RvcmljYWwgYnl0ZXMsIHdoaWxlIHRoZQorLy8gYWN0dWFsIGltYWdlIGxvYWRlciByZWZ1c2VzIG51bGwsIGFsaWFzZXMgYW5kIGR1cGxpY2F0ZSBwcm9zcGVjdGl2ZSBsZWF2ZXMuCitmdW5jIFRlc3RXb3JrQ292ZXJhZ2VSYXdTb3VyY2VMb2NrS2VlcHNMZWdhY3lCeXRlc0FuZEZ1bGxQb2xpY3kodCAqdGVzdGluZy5UKSB7CisJY29tbWl0cyA6PSByZXZpZXdlZFNvdXJjZVRlc3RNYW5pZmVzdCh0KS5FdmFsdWF0aW9uU291cmNlLkdlbmVyYXRpb25zWzBdLlJlcG9zaXRvcmllcy5jb21taXRzKCkKKwlmb3IgXywgcGF0aEJhc2UgOj0gcmFuZ2UgW11zdHJpbmd7IiIsICJtb25vX3Jvb3RfdjEifSB7CisJCWxlZ2FjeSA6PSBzdHJ1Y3QgeworCQkJU2NoZW1hICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICBganNvbjoic2NoZW1hImAKKwkJCURldmVsb3BtZW50U25hcHNob3QgYm9vbCAgICAgICAgICAgICAgYGpzb246ImRldmVsb3BtZW50X3NuYXBzaG90ImAKKwkJCUNhbmRpZGF0ZVBhdGhCYXNlICAgc3RyaW5nICAgICAgICAgICAgYGpzb246ImNhbmRpZGF0ZV9wYXRoX2Jhc2Usb21pdGVtcHR5ImAKKwkJCVJlcG9zaXRvcmllcyAgICAgICAgbWFwW3N0cmluZ11zdHJpbmcgYGpzb246InJlcG9zaXRvcmllcyJgCisJCX17U2NoZW1hOiAxLCBDYW5kaWRhdGVQYXRoQmFzZTogcGF0aEJhc2UsIFJlcG9zaXRvcmllczogY29tbWl0c30KKwkJZXhwZWN0ZWQsIGVyciA6PSBqc29uLk1hcnNoYWxJbmRlbnQobGVnYWN5LCAiIiwgIiAgIikKKwkJaWYgZXJyICE9IG5pbCB7CisJCQl0LkZhdGFsKGVycikKKwkJfQorCQlhY3R1YWwsIGVyciA6PSBqc29uLk1hcnNoYWxJbmRlbnQoZXZhbHVhdG9yU291cmNlTG9ja3tTY2hlbWE6IDEsIENhbmRpZGF0ZVBhdGhCYXNlOiBwYXRoQmFzZSwgUmVwb3NpdG9yaWVzOiBjb21taXRzfSwgIiIsICIgICIpCisJCWlmIGVyciAhPSBuaWwgfHwgIWJ5dGVzLkVxdWFsKGV4cGVjdGVkLCBhY3R1YWwpIHsKKwkJCXQuRmF0YWwoInJhdy1sb2NrIHNvdXJjZSBsZWFmIGNoYW5nZWQgaGlzdG9yaWNhbCBjb21wbGV0ZSBzZXJpYWxpemF0aW9uIiwgZXJyKQorCQl9CisJfQorCWNvdmVyYWdlIDo9IG1vZGVsLkRlZmF1bHRDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSgpCisJdmFsaWQsIGVyciA6PSBqc29uLk1hcnNoYWwobWFwW3N0cmluZ11hbnl7InNjaGVtYSI6IDEsICJkZXZlbG9wbWVudF9zbmFwc2hvdCI6IGZhbHNlLCAicmVwb3NpdG9yaWVzIjogY29tbWl0cywgIndvcmtfY292ZXJhZ2VfcG9saWN5IjogY292ZXJhZ2V9KQorCWlmIGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJZm9yIGluZGV4LCBjb250ZW50IDo9IHJhbmdlIFtdW11ieXRleworCQl2YWxpZCwKKwkJYnl0ZXMuUmVwbGFjZSh2YWxpZCwgW11ieXRlKGAid29ya19jb3ZlcmFnZV9wb2xpY3kiOmApLCBbXWJ5dGUoYCJXb3JrX0NvdmVyYWdlX1BvbGljeSI6YCksIDEpLAorCQlieXRlcy5SZXBsYWNlKHZhbGlkLCBbXWJ5dGUoYCJ3b3JrX2NvdmVyYWdlX3BvbGljeSI6YCksIFtdYnl0ZShgIndvcmtfY292ZXJhZ2VfcG9saWN5IjpudWxsLCJ3b3JrX2NvdmVyYWdlX3BvbGljeSI6YCksIDEpLAorCQlieXRlcy5SZXBsYWNlKHZhbGlkLCBbXWJ5dGUoYCJ3b3JrX2NvdmVyYWdlX3BvbGljeSI6YCksIFtdYnl0ZShgIndvcmtfY292ZXJhZ2VfcG9saWN5IjpudWxsLCJ1bmV4cGVjdGVkIjpgKSwgMSksCisJfSB7CisJCXBhdGggOj0gZmlsZXBhdGguSm9pbih0LlRlbXBEaXIoKSwgInNvdXJjZS1sb2NrLmpzb24iKQorCQlpZiBlcnIgOj0gb3MuV3JpdGVGaWxlKHBhdGgsIGNvbnRlbnQsIDA2MDApOyBlcnIgIT0gbmlsIHsKKwkJCXQuRmF0YWwoZXJyKQorCQl9CisJCWxvY2ssIGVyciA6PSBsb2FkRXZhbHVhdG9yU291cmNlTG9jayhwYXRoKQorCQlpZiBpbmRleCA9PSAwIHsKKwkJCWlmIGVyciAhPSBuaWwgeworCQkJCXQuRmF0YWwoImNvbXBsZXRlIHByb3NwZWN0aXZlIHJhdyBwb2xpY3kgd2FzIHJlamVjdGVkIiwgZXJyKQorCQkJfQorCQkJY29udGVudCwgZXJyIDo9IGpzb24uTWFyc2hhbChsb2NrKQorCQkJaWYgZXJyICE9IG5pbCB7CisJCQkJdC5GYXRhbChlcnIpCisJCQl9CisJCQl2YXIgZmllbGRzIG1hcFtzdHJpbmddanNvbi5SYXdNZXNzYWdlCisJCQlpZiBlcnIgOj0ganNvbi5Vbm1hcnNoYWwoY29udGVudCwgJmZpZWxkcyk7IGVyciAhPSBuaWwgeworCQkJCXQuRmF0YWwoZXJyKQorCQkJfQorCQkJdmFyIG9ic2VydmVkIG1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5CisJCQlpZiBlcnIgOj0ganNvbi5Vbm1hcnNoYWwoZmllbGRzWyJ3b3JrX2NvdmVyYWdlX3BvbGljeSJdLCAmb2JzZXJ2ZWQpOyBlcnIgIT0gbmlsIHx8IG9ic2VydmVkICE9IGNvdmVyYWdlIHsKKwkJCQl0LkZhdGFsKCJhY3R1YWwgc291cmNlIGxvYWRlciBlcmFzZWQgaXRzIGNvbXBsZXRlIHJhdyBwb2xpY3kiLCBlcnIpCisJCQl9CisJCX0gZWxzZSBpZiBlcnIgPT0gbmlsIHsKKwkJCXQuRmF0YWwoImFjdHVhbCBzb3VyY2UgbG9hZGVyIGFjY2VwdGVkIGFuIGFtYmlndW91cyByYXcgcG9saWN5IiwgaW5kZXgpCisJCX0KKwl9Cit9CisKKy8vIEZ1bGx5IHZhbGlkIHN5bnRoZXRpYyBzb3VyY2UgZ2VuZXJhdGlvbnMgYmluZCB0aGUgcmF3IHBvbGljeSBiZWZvcmUgR2l0LgorLy8gTWF0Y2hpbmcgcG9saWN5IHJlYWNoZXMgdGhlIGV4cGVjdGVkIGFic2VudCByZXBvc2l0b3J5LCBuZXZlciBmYWtlIHN1Y2Nlc3MuCitmdW5jIFRlc3RXb3JrQ292ZXJhZ2VSYXdTb3VyY2VMb2NrQmluZHNHZW5lcmF0aW9uQmVmb3JlR2l0KHQgKnRlc3RpbmcuVCkgeworCWNvdmVyYWdlIDo9IG1vZGVsLkRlZmF1bHRDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSgpCisJZm9yIF8sIGZpeHR1cmUgOj0gcmFuZ2UgW11zdHJ1Y3QgeworCQlleHBlY3RlZCAqbW9kZWwuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3kKKwkJc3RvcmVkICAgKm1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5CisJCW1hdGNoZXMgIGJvb2wKKwl9eworCQl7ZXhwZWN0ZWQ6ICZjb3ZlcmFnZX0sCisJCXtzdG9yZWQ6ICZjb3ZlcmFnZX0sCisJCXtleHBlY3RlZDogJmNvdmVyYWdlLCBzdG9yZWQ6ICZjb3ZlcmFnZSwgbWF0Y2hlczogdHJ1ZX0sCisJfSB7CisJCW1hbmlmZXN0IDo9IGcyRHJhZnRSZXZpZXdlZERlcGVuZGVuY3lNYW5pZmVzdCh0KQorCQlnZW5lcmF0aW9uIDo9ICZtYW5pZmVzdC5FdmFsdWF0aW9uU291cmNlLkdlbmVyYXRpb25zWzFdCisJCWdlbmVyYXRpb24uV29ya0NvdmVyYWdlUG9saWN5ID0gZml4dHVyZS5leHBlY3RlZC5DbG9uZSgpCisJCW1hbmlmZXN0LkV2YWx1YXRpb25Tb3VyY2UuUm91bmRzWzFdLldvcmtDb3ZlcmFnZVBvbGljeSA9IGZpeHR1cmUuZXhwZWN0ZWQuQ2xvbmUoKQorCQlhcHByb3ZhbCA6PSAmZ2VuZXJhdGlvbi5UcnVzdGVkSW5zdHJ1bWVudC5BcHByb3ZhbAorCQlhcHByb3ZhbC5Xb3JrQ292ZXJhZ2VQb2xpY3ksIGFwcHJvdmFsLkFwcHJvdmFsU2hhMjU2ID0gZml4dHVyZS5leHBlY3RlZC5DbG9uZSgpLCAiIgorCQl2YXIgZXJyIGVycm9yCisJCWFwcHJvdmFsLkFwcHJvdmFsU2hhMjU2LCBlcnIgPSBtb2RlbC5Db21wZXRpdGlvbkF1dG9tYXRpb25EaWdlc3QoYXBwcm92YWwpCisJCWlmIGVyciAhPSBuaWwgeworCQkJdC5GYXRhbChlcnIpCisJCX0KKwkJaWYgZXJyIDo9IHZhbGlkYXRlU291cmNlTWFuaWZlc3QobWFuaWZlc3QpOyBlcnIgIT0gbmlsIHsKKwkJCXQuRmF0YWwoInJhdy1wb2xpY3kgYm91bmRhcnkgZml4dHVyZSBpcyBub3QgYSB2YWxpZCBzeW50aGV0aWMgZ2VuZXJhdGlvbiIsIGVycikKKwkJfQorCQlyYXcgOj0gbWFwW3N0cmluZ11hbnl7InNjaGVtYSI6IDEsICJkZXZlbG9wbWVudF9zbmFwc2hvdCI6IGZhbHNlLCAicmVwb3NpdG9yaWVzIjogZ2VuZXJhdGlvbi5SZXBvc2l0b3JpZXMuY29tbWl0cygpfQorCQlpZiBmaXh0dXJlLnN0b3JlZCAhPSBuaWwgeworCQkJcmF3WyJ3b3JrX2NvdmVyYWdlX3BvbGljeSJdID0gZml4dHVyZS5zdG9yZWQuQ2xvbmUoKQorCQl9CisJCWNvbnRlbnQsIGVyciA6PSBqc29uLk1hcnNoYWwocmF3KQorCQlpZiBlcnIgIT0gbmlsIHsKKwkJCXQuRmF0YWwoZXJyKQorCQl9CisJCXBhdGggOj0gZmlsZXBhdGguSm9pbih0LlRlbXBEaXIoKSwgInNvdXJjZS1sb2NrLmpzb24iKQorCQlpZiBlcnIgOj0gb3MuV3JpdGVGaWxlKHBhdGgsIGNvbnRlbnQsIDA2MDApOyBlcnIgIT0gbmlsIHsKKwkJCXQuRmF0YWwoZXJyKQorCQl9CisJCXJvb3QgOj0gdC5UZW1wRGlyKCkKKwkJZXJyID0gdmVyaWZ5U291cmNlRXBvY2gobWFuaWZlc3QsIGdlbmVyYXRpb24uR2VuZXJhdGlvbiwgcm9vdCwgcGF0aCkKKwkJaWYgZml4dHVyZS5tYXRjaGVzIHsKKwkJCWlmIGVyciA9PSBuaWwgfHwgIXN0cmluZ3MuQ29udGFpbnMoZXJyLkVycm9yKCksICJyZXBvc2l0b3J5IHNlcnZlciB1bmF2YWlsYWJsZSIpIHsKKwkJCQl0LkZhdGFsKCJtYXRjaGluZyBwb2xpY3kgZGlkIG5vdCByZWFjaCBnZW51aW5lIHNvdXJjZSBpbnNwZWN0aW9uIiwgZXJyKQorCQkJfQorCQl9IGVsc2UgaWYgZXJyID09IG5pbCB8fCAhc3RyaW5ncy5Db250YWlucyhlcnIuRXJyb3IoKSwgImNvdmVyYWdlIGRpZmZlcnMiKSB7CisJCQl0LkZhdGFsKCJyYXctcG9saWN5IG1pc21hdGNoIHJlYWNoZWQgR2l0IG9yIGJ5cGFzc2VkIGl0cyBnZW5lcmF0aW9uIiwgZXJyKQorCQl9CisJCWVudHJpZXMsIGVyciA6PSBvcy5SZWFkRGlyKHJvb3QpCisJCWlmIGVyciAhPSBuaWwgfHwgbGVuKGVudHJpZXMpICE9IDAgeworCQkJdC5GYXRhbCgic291cmNlIHBvbGljeSBjaGVja3MgbXV0YXRlZCB0aGUgZW1wdHkgcmVwb3NpdG9yeSByb290IiwgZXJyKQorCQl9CisJfQorfQorCisvLyBTb3VyY2UtbGVhZiBzdXBwb3J0IG11c3Qgbm90IGltcG9ydCB1bnJlbGF0ZWQgbGF0ZXIgc3RhZ2luZyB0b2xlcmFuY2VzLgorLy8gVGhlc2UgZXhhY3QgcmVqZWN0aW9ucyBiZWxvbmcgdG8gdGhlIGZyb3plbiBpbnN0cnVtZW50J3Mgc2lnbmlmaWNhbmNlIHJ1bGUuCitmdW5jIFRlc3RHMkRyYWZ0U2lnbmlmaWNhbmNlUHJlc2VydmVzRnJvemVuU3RhZ2luZ1JlamVjdGlvbnModCAqdGVzdGluZy5UKSB7CisJYmFzZSA6PSB2YWxpZFNvdXJjZVNpZ25pZmljYW5jZSgpCisJYmFzZS5UYWtlb3Zlck1hcmdpblBlcmNlbnQgPSAwCisJaWYgZXJyIDo9IHZhbGlkYXRlU291cmNlU2lnbmlmaWNhbmNlRm9yTW9kZShiYXNlLCB0cnVlKTsgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoImZyb3plbiB2YWxpZCBzdGFnaW5nIHNpZ25pZmljYW5jZSB3YXMgcmVqZWN0ZWQiLCBlcnIpCisJfQorCWZvciBfLCBtdXRhdGUgOj0gcmFuZ2UgW11mdW5jKCpzb3VyY2VTaWduaWZpY2FuY2UpeworCQlmdW5jKHZhbHVlICpzb3VyY2VTaWduaWZpY2FuY2UpIHsgdmFsdWUuT2JzZXJ2ZWRJbXByb3ZlbWVudFBlcmNlbnQgPSAwIH0sCisJCWZ1bmModmFsdWUgKnNvdXJjZVNpZ25pZmljYW5jZSkgeyB2YWx1ZS5PbmVTaWRlZFBWYWx1ZSA9IC41IH0sCisJCWZ1bmModmFsdWUgKnNvdXJjZVNpZ25pZmljYW5jZSkgeyB2YWx1ZS5SZWNvbW1lbmRlZE5leHRFcG9jaFRha2VvdmVyTWFyZ2luUGVyY2VudCA9IDUxIH0sCisJfSB7CisJCWNoYW5nZWQgOj0gKmJhc2UKKwkJbXV0YXRlKCZjaGFuZ2VkKQorCQlpZiBlcnIgOj0gdmFsaWRhdGVTb3VyY2VTaWduaWZpY2FuY2VGb3JNb2RlKCZjaGFuZ2VkLCB0cnVlKTsgZXJyID09IG5pbCB7CisJCQl0LkZhdGFsKCJmdXR1cmUgcmF3LXBvbGljeSBwb3J0IHdlYWtlbmVkIGZyb3plbiBzdGFnaW5nIHNpZ25pZmljYW5jZSIpCisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9jb25uZWN0L3NpbS1sYXRlbmN5L3NvdXJjZV90cnVzdGVkX2luc3RydW1lbnRfbWFuaWZlc3QuZ28gYi9jb25uZWN0L3NpbS1sYXRlbmN5L3NvdXJjZV90cnVzdGVkX2luc3RydW1lbnRfbWFuaWZlc3QuZ28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2MxMDU4YjNiM2YxYTk4NDU0ZGJhZGJkNDllOTE5YTU0MmVjZTUwMgotLS0gL2Rldi9udWxsCisrKyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvc291cmNlX3RydXN0ZWRfaW5zdHJ1bWVudF9tYW5pZmVzdC5nbwpAQCAtMCwwICsxLDY1IEBACisvLyBQdXJlIG1hbmlmZXN0IHZhbGlkYXRpb24gaXMgc2hhcmVkIHdpdGggdGhlIGZyb3plbi1zb3VyY2UgaW5zdHJ1bWVudCBpbWFnZS4KKy8vIEdpdCBwdWJsaWNhdGlvbiwgYnVpbGRzIGFuZCBTZXR0aW5ncy1kZXBlbmRlbnQgYXV0aG9yaXR5IHJlbWFpbiBvdXRzaWRlIGl0LgorcGFja2FnZSBtYWluCisKK2ltcG9ydCAoCisJImVycm9ycyIKKwkicmVmbGVjdCIKKworCSJnaXRodWIuY29tL3VybmV0d29yay9zZXJ2ZXIvY29udHJvbGxlciIKKwkiZ2l0aHViLmNvbS91cm5ldHdvcmsvc2VydmVyL21vZGVsIgorKQorCisvLyBNYW5pZmVzdHMgcHJlc2VydmUgcmV2aWV3IHByb3ZlbmFuY2Ugd2hpbGUgcmVjb3JkaW5nIHRoZSBwcm90ZWN0ZWQgY2hpbGQuCisvLyBCdWlsZCBldmlkZW5jZSBiZWxvbmdzIHRvIHRoZSBhY3RpdmF0aW9uIGFuZCBjYW5ub3QgcmVwbGFjZSBwcm9kdWN0IGFwcHJvdmFsLgorZnVuYyB2YWxpZGF0ZVRydXN0ZWRJbnN0cnVtZW50R2VuZXJhdGlvbihnZW5lcmF0aW9uLCBwcmV2aW91cyAqcmV2aWV3ZWRTb3VyY2VHZW5lcmF0aW9uKSBlcnJvciB7CisJcHJvb2YgOj0gZ2VuZXJhdGlvbi5UcnVzdGVkSW5zdHJ1bWVudAorCWlmIHByb29mID09IG5pbCB7CisJCWlmIGdlbmVyYXRpb24uS2luZCA9PSAidHJ1c3RlZF9pbnN0cnVtZW50X3RyYW5zaXRpb24iIHx8IGdlbmVyYXRpb24uRzJWb2x1bWVQb2xpY3kgIT0gcHJldmlvdXMuRzJWb2x1bWVQb2xpY3kgfHwgIXJlZmxlY3QuRGVlcEVxdWFsKGdlbmVyYXRpb24uV29ya0NvdmVyYWdlUG9saWN5LCBwcmV2aW91cy5Xb3JrQ292ZXJhZ2VQb2xpY3kpIHsKKwkJCXJldHVybiBlcnJvcnMuTmV3KCJjaGFuZ2VkIGdlbmVyYXRpb24gaW5zdHJ1bWVudCByZXF1aXJlcyBpdHMgZXhwbGljaXQgb3BlcmF0b3IgcHJvb2YiKQorCQl9CisJCXJldHVybiBuaWwKKwl9CisJaWYgcHJvb2YuU2NoZW1hICE9IDEgfHwgcHJldmlvdXMuRzJWb2x1bWVQb2xpY3kgIT0gbW9kZWwuQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeUxlZ2FjeSB8fCBnZW5lcmF0aW9uLkcyVm9sdW1lUG9saWN5ICE9IG1vZGVsLkNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lNaW5pbXVtV29yayB7CisJCXJldHVybiBlcnJvcnMuTmV3KCJpbnN0cnVtZW50IGdlbmVyYXRpb24gbXVzdCBleHBsaWNpdGx5IGV4dGVuZCBsZWdhY3kgcG9saWN5IHdpdGggbWluaW11bS13b3JrIikKKwl9CisJaWYgZXJyIDo9IGNvbnRyb2xsZXIuVmFsaWRhdGVDb21wZXRpdGlvblRydXN0ZWRJbnN0cnVtZW50QXBwcm92YWwoJnByb29mLkFwcHJvdmFsKTsgZXJyICE9IG5pbCB7CisJCXJldHVybiBlcnIKKwl9CisJaWYgIXJlZmxlY3QuRGVlcEVxdWFsKGdlbmVyYXRpb24uV29ya0NvdmVyYWdlUG9saWN5LCBwcm9vZi5BcHByb3ZhbC5Xb3JrQ292ZXJhZ2VQb2xpY3kpIHsKKwkJcmV0dXJuIGVycm9ycy5OZXcoImluc3RydW1lbnQgZ2VuZXJhdGlvbiBjb3ZlcmFnZSBkaWZmZXJzIGZyb20gaXRzIGluZGVwZW5kZW50IGFwcHJvdmFsIikKKwl9CisJaWYgcHJvb2YuQXBwcm92YWwuSW5zdHJ1bWVudEJhc2VTb3VyY2VMb2NrU2hhMjU2ICE9IHByZXZpb3VzLlNvdXJjZUxvY2tTaGEyNTYgfHwgIXJlZmxlY3QuRGVlcEVxdWFsKHByb29mLkFwcHJvdmFsLkluc3RydW1lbnRCYXNlQ29tbWl0cywgcHJldmlvdXMuUmVwb3NpdG9yaWVzLmNvbW1pdHNGb3JNb2RlKGZhbHNlKSkgeworCQlyZXR1cm4gZXJyb3JzLk5ldygiaW5zdHJ1bWVudCBnZW5lcmF0aW9uIHByb3ZlbmFuY2UgZGlmZmVycyBmcm9tIHRoZSBmcm96ZW4gbGVnYWN5IHNvdXJjZSIpCisJfQorCWxvY2ssIGVyciA6PSBtb2RlbC5Db21wZXRpdGlvblNvdXJjZUxvY2tEaWdlc3RGb3JNb2RlKHByb29mLlNlbGVjdGVkUHJvZHVjdENvbW1pdHMsIGZhbHNlKQorCWNvbW1pdHMgOj0gZ2VuZXJhdGlvbi5SZXBvc2l0b3JpZXMuY29tbWl0c0Zvck1vZGUoZmFsc2UpCisJaWYgZXJyICE9IG5pbCB8fCBsb2NrICE9IHByb29mLlNlbGVjdGVkUHJvZHVjdFNvdXJjZUxvY2tTaGEyNTYgfHwgY29tbWl0c1sic2VydmVyIl0gIT0gcHJvb2YuSW5zdHJ1bWVudGVkU2VydmVyQ29tbWl0IHx8CisJCSFzb3VyY2VHaXRTaGFQYXR0ZXJuLk1hdGNoU3RyaW5nKHByb29mLkluc3RydW1lbnRlZFNlcnZlckNvbW1pdCkgfHwgcHJvb2YuSW5zdHJ1bWVudGVkU2VydmVyQ29tbWl0ID09IHByb29mLlNlbGVjdGVkUHJvZHVjdENvbW1pdHNbInNlcnZlciJdIHsKKwkJcmV0dXJuIGVycm9ycy5OZXcoImluc3RydW1lbnQgZ2VuZXJhdGlvbiBkb2VzIG5vdCBiaW5kIHRoZSBleGFjdCBzZWxlY3RlZCBncmFwaCBhbmQgY2hpbGQiKQorCX0KKwlmb3IgcmVwb3NpdG9yeSwgY29tbWl0IDo9IHJhbmdlIHByb29mLlNlbGVjdGVkUHJvZHVjdENvbW1pdHMgeworCQlpZiByZXBvc2l0b3J5ICE9ICJzZXJ2ZXIiICYmIGNvbW1pdHNbcmVwb3NpdG9yeV0gIT0gY29tbWl0IHsKKwkJCXJldHVybiBlcnJvcnMuTmV3KCJpbnN0cnVtZW50IGdlbmVyYXRpb24gY2hhbmdlZCBhIHNlbGVjdGVkIHByb2R1Y3QgZGVwZW5kZW5jeSIpCisJCX0KKwl9CisJc3dpdGNoIHByb29mLlNlbGVjdGVkUHJvZHVjdEtpbmQgeworCWNhc2UgInJldmlld2VkX3NvdXJjZV9jYXJyeV9mb3J3YXJkIjoKKwkJaWYgZ2VuZXJhdGlvbi5LaW5kICE9ICJ0cnVzdGVkX2luc3RydW1lbnRfdHJhbnNpdGlvbiIgfHwgZ2VuZXJhdGlvbi5Tb3VyY2VBcHByb3ZhbElkICE9ICIiIHx8IGdlbmVyYXRpb24uU291cmNlQXBwcm92YWxEaWdlc3QgIT0gIiIgfHwKKwkJCWdlbmVyYXRpb24uRXZhbHVhdGVkQmFzZVNvdXJjZUxvY2tTaGEyNTYgIT0gIiIgfHwgZ2VuZXJhdGlvbi5QYXRjaFNoYTI1NiAhPSAiIiB8fCBnZW5lcmF0aW9uLlNjb3JlU2hhMjU2ICE9ICIiIHx8IGdlbmVyYXRpb24uU2lnbmlmaWNhbmNlICE9IG5pbCB8fAorCQkJcHJvb2YuU2VsZWN0ZWRQcm9kdWN0UmV2aWV3SWQgIT0gbmlsIHx8IHByb29mLlNlbGVjdGVkUHJvZHVjdFJldmlld0RpZ2VzdCAhPSAiIiB8fCBwcm9vZi5TZWxlY3RlZFByb2R1Y3RQYXRjaFNoYTI1NiAhPSAiIiB8fAorCQkJZ2VuZXJhdGlvbi5TaWduaWZpY2FudEltcHJvdmVtZW50UGVyY2VudCAhPSBwcmV2aW91cy5TaWduaWZpY2FudEltcHJvdmVtZW50UGVyY2VudCB8fCBnZW5lcmF0aW9uLlRocmVzaG9sZEV2aWRlbmNlU2hhMjU2ICE9IHByZXZpb3VzLlRocmVzaG9sZEV2aWRlbmNlU2hhMjU2IHx8CisJCQkhcmVmbGVjdC5EZWVwRXF1YWwocHJvb2YuU2VsZWN0ZWRQcm9kdWN0Q29tbWl0cywgcHJldmlvdXMuUmVwb3NpdG9yaWVzLmNvbW1pdHNGb3JNb2RlKGZhbHNlKSkgeworCQkJcmV0dXJuIGVycm9ycy5OZXcoImluc3RydW1lbnQtb25seSBnZW5lcmF0aW9uIGNhbm5vdCBpbnZlbnQgYSBwcm9kdWN0IHJldmlldywgdGhyZXNob2xkIG9yIHByb2R1Y3QgY2hhbmdlIikKKwkJfQorCWNhc2UgInJldmlld2VkX3NvdXJjZV9wcm9tb3Rpb24iOgorCQlpZiBnZW5lcmF0aW9uLktpbmQgIT0gInJldmlld2VkX3NvdXJjZV9wcm9tb3Rpb24iIHx8IHByb29mLlNlbGVjdGVkUHJvZHVjdFJldmlld0lkID09IG5pbCB8fCBnZW5lcmF0aW9uLlNvdXJjZUFwcHJvdmFsSWQgIT0gcHJvb2YuU2VsZWN0ZWRQcm9kdWN0UmV2aWV3SWQuU3RyaW5nKCkgfHwKKwkJCWdlbmVyYXRpb24uU291cmNlQXBwcm92YWxEaWdlc3QgIT0gcHJvb2YuU2VsZWN0ZWRQcm9kdWN0UmV2aWV3RGlnZXN0IHx8IGdlbmVyYXRpb24uUGF0Y2hTaGEyNTYgIT0gcHJvb2YuU2VsZWN0ZWRQcm9kdWN0UGF0Y2hTaGEyNTYgfHwKKwkJCXByb29mLlNlbGVjdGVkUHJvZHVjdFNvdXJjZUxvY2tTaGEyNTYgPT0gcHJldmlvdXMuU291cmNlTG9ja1NoYTI1NiB7CisJCQlyZXR1cm4gZXJyb3JzLk5ldygiaW5zdHJ1bWVudCBnZW5lcmF0aW9uIHN1YnN0aXR1dGVkIHNlbGVjdGVkIHdpbm5lciBhcHByb3ZhbCIpCisJCX0KKwlkZWZhdWx0OgorCQlyZXR1cm4gZXJyb3JzLk5ldygiaW5zdHJ1bWVudCBnZW5lcmF0aW9uIGhhcyBubyBleHBsaWNpdCBwcm9kdWN0IHNlbGVjdGlvbiIpCisJfQorCXJldHVybiBuaWwKK30KZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvd29ya19jb3ZlcmFnZS5nbyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvd29ya19jb3ZlcmFnZS5nbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjE5MmZiMDQyN2Y2ZmZlMmFhMTBlZDU4ODMzNTQ0YWZjMmE1ZDkzCi0tLSAvZGV2L251bGwKKysrIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS93b3JrX2NvdmVyYWdlLmdvCkBAIC0wLDAgKzEsMjMwIEBACitwYWNrYWdlIG1haW4KKworLy8gQ29tcGxldGlvbiBjcmVkaXQgaXMgYSB0cnVzdGVkLCBkZWR1cGxpY2F0ZWQgbGVkZ2VyIG92ZXIgdGhlIGluZGVwZW5kZW50CisvLyBvZmZlcmVkIHBsYW4uIE5laXRoZXIgcGFyZW50IHN1Y2Nlc3Mgbm9yIGEgcmVjZWl2ZWQgVVJMIGNyZWF0ZXMgaXRzIHdvcmsuCisKK2ltcG9ydCAoCisJImJ5dGVzIgorCSJjb250ZXh0IgorCSJlbmNvZGluZy9qc29uIgorCSJlcnJvcnMiCisJImZtdCIKKwkiaW8iCisJIm1hdGgiCisJIm5ldC9odHRwIgorCSJzeW5jIgorCSJ0aW1lIgorCisJImdpdGh1Yi5jb20vZG9jb3B0L2RvY29wdC1nbyIKKwkiZ2l0aHViLmNvbS91cm5ldHdvcmsvc2VydmVyL21vZGVsIgorKQorCisvLyBFeHBsaWNpdCBjYXBhYmlsaXR5IHNlbGVjdGlvbiBjYW5ub3Qgc2lsZW50bHkgdHVybiBoaXN0b3JpY2FsIG9taXNzaW9uCisvLyBpbnRvIGEgcHJvc3BlY3RpdmUgd29ya2xvYWQuIFRoZSBmdWxsIHBvbGljeSBpcyBmcm96ZW4gaW4gYXV0aGVudGljYXRlZCBkYXRhLgorZnVuYyBjb3ZlcmFnZVBvbGljeU9wdGlvbihvcHRpb25zIGRvY29wdC5PcHRzKSAqbW9kZWwuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3kgeworCWtpbmQgOj0gb3B0U3RyaW5nKG9wdGlvbnMsICItLXdvcmstY292ZXJhZ2UtcG9saWN5IiwgIiIpCisJaWYga2luZCA9PSAiIiB7CisJCXJldHVybiBuaWwKKwl9CisJaWYga2luZCAhPSBtb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZUtpbmQgeworCQlmYXRhbGYoInVuc3VwcG9ydGVkIHdvcmsgY292ZXJhZ2UgcG9saWN5IikKKwl9CisJcG9saWN5IDo9IG1vZGVsLkRlZmF1bHRDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSgpCisJcmV0dXJuICZwb2xpY3kKK30KKworLy8gUm93IGlzIHRoZSBleGFjdCB6ZXJvLWJhc2VkIHJlY29yZCBpbiB0aGUgYXV0aGVudGljYXRlZCBDU1YsIGluY2x1ZGluZworLy8gZmFpbHVyZXMgYW5kIHBvc3Qtd2luZG93IHJlY29yZHMuIE5hbm9zZWNvbmRzIHJldGFpbiBkZWFkbGluZSBwcmVjaXNpb24uCit0eXBlIHdvcmtDb3ZlcmFnZUNvbXBsZXRpb24gc3RydWN0IHsKKwlSb290ICAgICAgICAgICAgaW50ICAgYGpzb246InJvb3QiYAorCVBhZ2UgICAgICAgICAgICBpbnQgICBganNvbjoicGFnZSJgCisJUm93ICAgICAgICAgICAgIGludCAgIGBqc29uOiJyb3ciYAorCVN0YXJ0ZWRVbml4TnMgICBpbnQ2NCBganNvbjoic3RhcnRlZF91bml4X25zImAKKwlDb21wbGV0ZWRVbml4TnMgaW50NjQgYGpzb246ImNvbXBsZXRlZF91bml4X25zImAKK30KKworLy8gVGhpcyByZXBvcnQgaXMgYXV0aGVudGljYXRlZCBieSBydW4uanNvbiBhbmQgaXRzIGZpbmFsIG1hcmtlci4gQSBwcmlzdGluZQorLy8gc2NvcmVyIHJlZ2VuZXJhdGVzIGV2ZXJ5IGV4cGVjdGVkIGRlc2NyaXB0b3IgZnJvbSB0aGUgcmV0YWluZWQgd29ya2xvYWQuCit0eXBlIHdvcmtDb3ZlcmFnZVJlcG9ydCBzdHJ1Y3QgeworCUtpbmQgICAgICAgICAgICAgICBzdHJpbmcgYGpzb246ImtpbmQiYAorCU1lYXN1cmVTdGFydFVuaXhOcyBpbnQ2NCAgYGpzb246Im1lYXN1cmVfc3RhcnRfdW5peF9ucyJgCisJbW9kZWwuQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5CisJQ29tcGxldGlvbnMgW113b3JrQ292ZXJhZ2VDb21wbGV0aW9uIGBqc29uOiJjb21wbGV0aW9ucyJgCit9CisKKy8vIEFsbCByb290IGludmVudG9yaWVzIGV4aXN0IGJlZm9yZSBtZWFzdXJlbWVudDsgYSBtaXNzaW5nIGxhdW5jaCB0aGVyZWZvcmUKKy8vIGNhbm5vdCByZW1vdmUgdGhlIHJvb3Qgb3IgYW55IGRlc2NlbmRhbnQgZnJvbSB0aGUgZGVub21pbmF0b3IuCit0eXBlIHdvcmtDb3ZlcmFnZUNvbGxlY3RvciBzdHJ1Y3QgeworCXBsYW4gICp3b3JrQ292ZXJhZ2VQbGFuCisJc3RhcnQgdGltZS5UaW1lCisJbG9jayAgc3luYy5NdXRleAorCXNlZW4gIG1hcFtbMl1pbnRdYm9vbAorCXJvd3MgIFtdd29ya0NvdmVyYWdlQ29tcGxldGlvbgorfQorCisvLyBDYXB0dXJlcyB0aGUgYmFycmllciBvbmNlLCBuZXZlciBhdCBhIGxhdGUgYWN0dWFsIGNyYXdsIHN0YXJ0LgorZnVuYyBuZXdXb3JrQ292ZXJhZ2VDb2xsZWN0b3IocGxhbiAqd29ya0NvdmVyYWdlUGxhbiwgc3RhcnQgdGltZS5UaW1lKSAoKndvcmtDb3ZlcmFnZUNvbGxlY3RvciwgZXJyb3IpIHsKKwlpZiBwbGFuID09IG5pbCB8fCBzdGFydC5Vbml4TmFubygpIDw9IDAgfHwgcGxhbi5EdXJhdGlvbk5zIDw9IDAgfHwgcGxhbi5UaW1lb3V0TnMgPD0gMCB8fAorCQltYXRoLk1heEludDY0LXN0YXJ0LlVuaXhOYW5vKCkgPCBwbGFuLkR1cmF0aW9uTnMgfHwgbWF0aC5NYXhJbnQ2NC1zdGFydC5Vbml4TmFubygpLXBsYW4uRHVyYXRpb25OcyA8IHBsYW4uVGltZW91dE5zIHsKKwkJcmV0dXJuIG5pbCwgZm10LkVycm9yZigiaW52YWxpZCB3b3JrIGNvdmVyYWdlIGJhcnJpZXIgb3IgZGVhZGxpbmUiKQorCX0KKwlyZXR1cm4gJndvcmtDb3ZlcmFnZUNvbGxlY3RvcntwbGFuOiBwbGFuLCBzdGFydDogc3RhcnQsIHNlZW46IG1hcFtbMl1pbnRdYm9vbHt9LCByb3dzOiBbXXdvcmtDb3ZlcmFnZUNvbXBsZXRpb257fX0sIG5pbAorfQorCisvLyBBIHJlY2VpdmVkIFVSSSBjYW4gc2VsZWN0IG9ubHkgYWxyZWFkeSBpbnZlbnRvcmllZCB3b3JrIGF0IHRoZSBleGFjdCBkZXB0aC4KK2Z1bmMgKHNlbGYgKndvcmtDb3ZlcmFnZUNvbGxlY3RvcikgcGFnZShyb290IGludCwgdXJpIHN0cmluZywgZGVwdGggaW50KSAoaW50LCB3b3JrQ292ZXJhZ2VQYWdlLCBib29sKSB7CisJaWYgcm9vdCA8IDAgfHwgbGVuKHNlbGYucGxhbi5Sb290cykgPD0gcm9vdCB7CisJCXJldHVybiAwLCB3b3JrQ292ZXJhZ2VQYWdle30sIGZhbHNlCisJfQorCWZvciBpbmRleCwgcGFnZSA6PSByYW5nZSBzZWxmLnBsYW4uUm9vdHNbcm9vdF0uUGFnZXMgeworCQlpZiBwYWdlLlVyaSA9PSB1cmkgJiYgcGFnZS5EZXB0aCA9PSBkZXB0aCB7CisJCQlyZXR1cm4gaW5kZXgsIHBhZ2UsIHRydWUKKwkJfQorCX0KKwlyZXR1cm4gMCwgd29ya0NvdmVyYWdlUGFnZXt9LCBmYWxzZQorfQorCisvLyBBIGNvbXBsZXRpb24gZXhhY3RseSBhdCBpdHMgZGVhZGxpbmUgaXMgdG9vIGxhdGUuIFRoZSBlbmQgb2YgbWVhc3VyZW1lbnQKKy8vIGNsb3NlcyByb290IGFkbWlzc2lvbiwgbm90IGNyZWRpdCBmb3IgYWxyZWFkeSBvZmZlcmVkIHJvb3RzIGR1cmluZyBkcmFpbi4KK2Z1bmMgKHNlbGYgKndvcmtDb3ZlcmFnZUNvbGxlY3RvcikgcmVjb3JkKHJvb3QsIHBhZ2UsIHJvdyBpbnQsIHN0YXJ0ZWQsIGNvbXBsZXRlZCB0aW1lLlRpbWUpIGJvb2wgeworCWlmIHJvb3QgPCAwIHx8IGxlbihzZWxmLnBsYW4uUm9vdHMpIDw9IHJvb3QgfHwgcGFnZSA8IDAgfHwgbGVuKHNlbGYucGxhbi5Sb290c1tyb290XS5QYWdlcykgPD0gcGFnZSB8fCByb3cgPCAwIHsKKwkJcmV0dXJuIGZhbHNlCisJfQorCWFkbWlzc2lvbiA6PSBzZWxmLnN0YXJ0LkFkZCh0aW1lLkR1cmF0aW9uKHNlbGYucGxhbi5Sb290c1tyb290XS5PZmZzZXROcykpCisJZGVhZGxpbmUgOj0gYWRtaXNzaW9uLkFkZCh0aW1lLkR1cmF0aW9uKHNlbGYucGxhbi5UaW1lb3V0TnMpKQorCWlmIHN0YXJ0ZWQuQmVmb3JlKGFkbWlzc2lvbikgfHwgY29tcGxldGVkLkJlZm9yZShzdGFydGVkKSB8fCAhY29tcGxldGVkLkJlZm9yZShkZWFkbGluZSkgeworCQlyZXR1cm4gZmFsc2UKKwl9CisJc2VsZi5sb2NrLkxvY2soKQorCWRlZmVyIHNlbGYubG9jay5VbmxvY2soKQorCWtleSA6PSBbMl1pbnR7cm9vdCwgcGFnZX0KKwlpZiBzZWxmLnNlZW5ba2V5XSB7CisJCXJldHVybiBmYWxzZQorCX0KKwlzZWxmLnNlZW5ba2V5XSA9IHRydWUKKwlzZWxmLnJvd3MgPSBhcHBlbmQoc2VsZi5yb3dzLCB3b3JrQ292ZXJhZ2VDb21wbGV0aW9ue1Jvb3Q6IHJvb3QsIFBhZ2U6IHBhZ2UsIFJvdzogcm93LCBTdGFydGVkVW5peE5zOiBzdGFydGVkLlVuaXhOYW5vKCksIENvbXBsZXRlZFVuaXhOczogY29tcGxldGVkLlVuaXhOYW5vKCl9KQorCXJldHVybiB0cnVlCit9CisKKy8vIFNuYXBzaG90cyBqb2luZWQgY29tcGxldGlvbiBmYWN0czsgZXhwZWN0ZWQgY291bnRzIG5ldmVyIGRlcGVuZCBvbiByb3dzLgorZnVuYyAoc2VsZiAqd29ya0NvdmVyYWdlQ29sbGVjdG9yKSByZXBvcnQoKSAqd29ya0NvdmVyYWdlUmVwb3J0IHsKKwlzZWxmLmxvY2suTG9jaygpCisJZGVmZXIgc2VsZi5sb2NrLlVubG9jaygpCisJc3VtbWFyeSA6PSBtb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnl7CisJCVBsYW5TaGEyNTY6IHNlbGYucGxhbi5TaGEyNTYsIE9mZmVyZWRSb290czogaW50NjQobGVuKHNlbGYucGxhbi5Sb290cykpLAorCQlFeHBlY3RlZFBhZ2VzOiBzZWxmLnBsYW4uVG90YWxQYWdlcywgRXhwZWN0ZWRCeXRlczogc2VsZi5wbGFuLlRvdGFsQnl0ZXMsCisJCUNvbXBsZXRlZFBhZ2VzOiBpbnQ2NChsZW4oc2VsZi5yb3dzKSksCisJfQorCWZvciBfLCBjb21wbGV0aW9uIDo9IHJhbmdlIHNlbGYucm93cyB7CisJCXN1bW1hcnkuQ29tcGxldGVkQnl0ZXMgKz0gc2VsZi5wbGFuLlJvb3RzW2NvbXBsZXRpb24uUm9vdF0uUGFnZXNbY29tcGxldGlvbi5QYWdlXS5CeXRlcworCX0KKwlzdW1tYXJ5LlBhZ2VDb3ZlcmFnZSA9IGZsb2F0NjQoc3VtbWFyeS5Db21wbGV0ZWRQYWdlcykgLyBmbG9hdDY0KHN1bW1hcnkuRXhwZWN0ZWRQYWdlcykKKwlzdW1tYXJ5LkJ5dGVDb3ZlcmFnZSA9IGZsb2F0NjQoc3VtbWFyeS5Db21wbGV0ZWRCeXRlcykgLyBmbG9hdDY0KHN1bW1hcnkuRXhwZWN0ZWRCeXRlcykKKwlyZXR1cm4gJndvcmtDb3ZlcmFnZVJlcG9ydHtLaW5kOiBzZWxmLnBsYW4uS2luZCwgTWVhc3VyZVN0YXJ0VW5peE5zOiBzZWxmLnN0YXJ0LlVuaXhOYW5vKCksIENvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeTogc3VtbWFyeSwgQ29tcGxldGlvbnM6IGFwcGVuZChbXXdvcmtDb3ZlcmFnZUNvbXBsZXRpb257fSwgc2VsZi5yb3dzLi4uKX0KK30KKworLy8gU3RhcnRzIGVhY2ggc2NoZWR1bGVkIHJvb3QgYWdhaW5zdCB0aGUgY29tbW9uIGJhcnJpZXIuIExhdGUgc2NoZWR1bGluZyBjYW4KKy8vIGxvc2UgY3JlZGl0IGJ1dCBjYW5ub3QgYnV5IGEgZnJlc2ggdGltZW91dC4gVW5sYXVuY2hlZCByb290cyByZW1haW4gb2ZmZXJlZC4KK2Z1bmMgKHNlbGYgKkNsaWVudERyaXZlcikgcnVuV29ya0NvdmVyYWdlKCkgZXJyb3IgeworCWRlZmVyIHNlbGYuQ2xvc2UoKQorCWlmIGxlbihzZWxmLmNsaWVudHMpID09IDAgeworCQlyZXR1cm4gZm10LkVycm9yZigibm8gd2FybSBjbGllbnRzIGZvciBvZmZlcmVkIHdvcmtsb2FkIikKKwl9CisJY29sbGVjdG9yIDo9IHNlbGYud29ya0NvdmVyYWdlCisJZm9yIGluZGV4LCByb290IDo9IHJhbmdlIGNvbGxlY3Rvci5wbGFuLlJvb3RzIHsKKwkJYWRtaXNzaW9uIDo9IGNvbGxlY3Rvci5zdGFydC5BZGQodGltZS5EdXJhdGlvbihyb290Lk9mZnNldE5zKSkKKwkJdGltZXIgOj0gdGltZS5OZXdUaW1lcihtYXgoMCwgdGltZS5VbnRpbChhZG1pc3Npb24pKSkKKwkJc2VsZWN0IHsKKwkJY2FzZSA8LXNlbGYuY3R4LkRvbmUoKToKKwkJCXRpbWVyLlN0b3AoKQorCQkJc2VsZi5hY3RpdmUuV2FpdCgpCisJCQlyZXR1cm4gc2VsZi5mbHVzaCgpCisJCWNhc2UgPC1zZWxmLmFycml2YWxzU3RvcDoKKwkJCXRpbWVyLlN0b3AoKQorCQkJc2VsZi5hY3RpdmUuV2FpdCgpCisJCQlyZXR1cm4gc2VsZi5mbHVzaCgpCisJCWNhc2UgPC10aW1lci5DOgorCQl9CisJCWRlYWRsaW5lIDo9IGFkbWlzc2lvbi5BZGQodGltZS5EdXJhdGlvbihjb2xsZWN0b3IucGxhbi5UaW1lb3V0TnMpKQorCQlpZiAhdGltZS5Ob3coKS5CZWZvcmUoZGVhZGxpbmUpIHx8ICF0aW1lLk5vdygpLkJlZm9yZShjb2xsZWN0b3Iuc3RhcnQuQWRkKHRpbWUuRHVyYXRpb24oY29sbGVjdG9yLnBsYW4uRHVyYXRpb25OcykpKSB7CisJCQljb250aW51ZQorCQl9CisJCWNsaWVudCwgaW5kZXggOj0gc2VsZi5jbGllbnRzW2luZGV4JWxlbihzZWxmLmNsaWVudHMpXSwgaW5kZXgKKwkJc2VsZi5hY3RpdmUuQWRkKDEpCisJCWdvIGZ1bmMoKSB7CisJCQlkZWZlciBzZWxmLmFjdGl2ZS5Eb25lKCkKKwkJCWN0eCwgY2FuY2VsIDo9IGNvbnRleHQuV2l0aERlYWRsaW5lKHNlbGYuY3R4LCBkZWFkbGluZSkKKwkJCWRlZmVyIGNhbmNlbCgpCisJCQlzZWxmLmNyYXdsKGN0eCwgY2xpZW50LmxhYmVsLCBjbGllbnQuaHR0cENsaWVudCwgaW5kZXgpCisJCX0oKQorCX0KKwkvLyBEbyBub3Qgc2lnbmFsIGFuIGVhcmx5IGRyaXZlciBleGl0IG1lcmVseSBiZWNhdXNlIHRoZSBmaXhlZCBzY2hlZHVsZSBoYXMKKwkvLyBubyBtb3JlIHJvb3RzOiB0aGUgb3JkaW5hcnkgbWVhc3VyZW1lbnQgb3duZXIgc3RpbGwgY2xvc2VzIGFkbWlzc2lvbi4KKwlzZWxlY3QgeworCWNhc2UgPC1zZWxmLmN0eC5Eb25lKCk6CisJY2FzZSA8LXNlbGYuYXJyaXZhbHNTdG9wOgorCX0KKwlzZWxmLmFjdGl2ZS5XYWl0KCkKKwlyZXR1cm4gc2VsZi5mbHVzaCgpCit9CisKKy8vIENvbnN1bWVzIG9ubHkgdGhlIGV4YWN0IGV4cGVjdGVkIHJlcHJlc2VudGF0aW9uIHBsdXMgb25lIGRldGVjdGlvbiBieXRlLgorLy8gRXh0cmEvZHVwbGljYXRlIEpTT04ga2V5cywgZm9yZ2VkIGNoaWxkcmVuLCBwYXJ0aWFsIGJvZGllcyBhbmQgYWx0ZXJlZAorLy8gcGFkZGluZyBuZXZlciByZWNlaXZlIGNvbXBsZXRpb24gY3JlZGl0IG9yIGdlbmVyYXRlIGRpc2NvdmVyZWQgd29yay4KK2Z1bmMgcmVhZEV4cGVjdGVkU2l0ZVJlc3BvbnNlKHJlc3BvbnNlICpodHRwLlJlc3BvbnNlLCBleHBlY3RlZCB3b3JrQ292ZXJhZ2VQYWdlKSAocmVzdWx0IHNpdGVSZXNwb25zZSwgcmV0RXJyIGVycm9yKSB7CisJaWYgcmVzcG9uc2UgPT0gbmlsIHx8IHJlc3BvbnNlLkJvZHkgPT0gbmlsIHx8IGV4cGVjdGVkLkJ5dGVzIDw9IDAgfHwgZXhwZWN0ZWQuUGFnZS5TaXplIDwgMCB8fCBleHBlY3RlZC5CeXRlcyA9PSBtYXRoLk1heEludDY0IHsKKwkJcmV0dXJuIHJlc3VsdCwgZm10LkVycm9yZigibWlzc2luZyBleHBlY3RlZCBzaXRlIHJlc3BvbnNlIikKKwl9CisJZGVmZXIgZnVuYygpIHsKKwkJaWYgZXJyIDo9IHJlc3BvbnNlLkJvZHkuQ2xvc2UoKTsgZXJyICE9IG5pbCB7CisJCQlyZXRFcnIgPSBlcnJvcnMuSm9pbihyZXRFcnIsIGVycikKKwkJCXJlc3VsdC5jb21wbGV0ZSA9IGZhbHNlCisJCX0KKwl9KCkKKwloZWFkZXIsIGVyciA6PSBqc29uLk1hcnNoYWwoZXhwZWN0ZWQuUGFnZSkKKwlpZiBlcnIgIT0gbmlsIHx8IGludDY0KGxlbihoZWFkZXIpKSsxK2ludDY0KGV4cGVjdGVkLlBhZ2UuU2l6ZSkgIT0gZXhwZWN0ZWQuQnl0ZXMgeworCQlyZXR1cm4gcmVzdWx0LCBmbXQuRXJyb3JmKCJpbnZhbGlkIGV4cGVjdGVkIHNpdGUgZGVzY3JpcHRvciIpCisJfQorCWhlYWRlciA9IGFwcGVuZChoZWFkZXIsICdcbicpCisJcmVhZGVyIDo9IGlvLkxpbWl0UmVhZGVyKHJlc3BvbnNlLkJvZHksIGV4cGVjdGVkLkJ5dGVzKzEpCisJYnVmZmVyIDo9IG1ha2UoW11ieXRlLCAzMjw8MTApCisJdmFsaWQgOj0gcmVzcG9uc2UuU3RhdHVzQ29kZSA9PSBodHRwLlN0YXR1c09LICYmIChyZXNwb25zZS5Db250ZW50TGVuZ3RoIDwgMCB8fCByZXNwb25zZS5Db250ZW50TGVuZ3RoID09IGV4cGVjdGVkLkJ5dGVzKQorCWZvciB7CisJCW4sIHJlYWRFcnIgOj0gcmVhZGVyLlJlYWQoYnVmZmVyKQorCQlmb3IgaSwgdmFsdWUgOj0gcmFuZ2UgYnVmZmVyWzpuXSB7CisJCQlvZmZzZXQgOj0gcmVzdWx0LnJlY2VpdmVkQnl0ZXMgKyBpbnQ2NChpKQorCQkJdmFyIHdhbnQgYnl0ZQorCQkJaWYgb2Zmc2V0IDwgaW50NjQobGVuKGhlYWRlcikpIHsKKwkJCQl3YW50ID0gaGVhZGVyW29mZnNldF0KKwkJCX0gZWxzZSB7CisJCQkJd2FudCA9IGJ5dGUoJ2EnICsgKChvZmZzZXQtaW50NjQobGVuKGhlYWRlcikpKSUoMzI8PDEwKSklMjYpCisJCQl9CisJCQlpZiBvZmZzZXQgPj0gZXhwZWN0ZWQuQnl0ZXMgfHwgdmFsdWUgIT0gd2FudCB7CisJCQkJdmFsaWQgPSBmYWxzZQorCQkJfQorCQl9CisJCXJlc3VsdC5yZWNlaXZlZEJ5dGVzICs9IGludDY0KG4pCisJCWlmIHJlYWRFcnIgIT0gbmlsIHsKKwkJCWlmIHJlYWRFcnIgIT0gaW8uRU9GIHsKKwkJCQlyZXR1cm4gcmVzdWx0LCByZWFkRXJyCisJCQl9CisJCQlicmVhaworCQl9CisJCWlmIG4gPT0gMCB7CisJCQlyZXR1cm4gcmVzdWx0LCBpby5FcnJOb1Byb2dyZXNzCisJCX0KKwl9CisJcmVzdWx0LmNvbXBsZXRlID0gdmFsaWQgJiYgcmVzdWx0LnJlY2VpdmVkQnl0ZXMgPT0gZXhwZWN0ZWQuQnl0ZXMKKwlpZiByZXN1bHQuY29tcGxldGUgeworCQlyZXN1bHQucGFnZSA9IGV4cGVjdGVkLlBhZ2UKKwl9CisJcmV0dXJuIHJlc3VsdCwgbmlsCit9CisKKy8vIENhbm9uaWNhbCBlcXVhbGl0eSBpcyBzZXBhcmF0ZSBmcm9tIHRoZSBib2R5IGNvbnN1bWVyIGFuZCB1c2VmdWwgdG8gdGhlCisvLyBmcm96ZW4tcmVmZXJlbmNlIHRlc3RzIHdpdGhvdXQgYSBuZXR3b3JrIGZpeHR1cmUuCitmdW5jIGVxdWFsV29ya0NvdmVyYWdlUGFnZShsZWZ0LCByaWdodCBzaXRlUGFnZSkgYm9vbCB7CisJYSwgYUVyciA6PSBqc29uLk1hcnNoYWwobGVmdCkKKwliLCBiRXJyIDo9IGpzb24uTWFyc2hhbChyaWdodCkKKwlyZXR1cm4gYUVyciA9PSBuaWwgJiYgYkVyciA9PSBuaWwgJiYgYnl0ZXMuRXF1YWwoYSwgYikKK30KZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvd29ya19jb3ZlcmFnZV9wbGFuLmdvIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS93b3JrX2NvdmVyYWdlX3BsYW4uZ28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWVkNDlkMzQyY2RkNjQ3NDQ3ODU4M2M5ZWJkZjUwM2FkOTY2YWI1NgotLS0gL2Rldi9udWxsCisrKyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvd29ya19jb3ZlcmFnZV9wbGFuLmdvCkBAIC0wLDAgKzEsMjAxIEBACitwYWNrYWdlIG1haW4KKworLy8gVGhlIHByb3NwZWN0aXZlIHdvcmtsb2FkIGlzIGludmVudG9yaWVkIGJlZm9yZSBhbnkgcmVzcG9uc2UgaXMgb2JzZXJ2ZWQuCisvLyBCb3VuZHMgcmVqZWN0IGFuIHVuc3VwcG9ydGVkIHdvcmtsb2FkOyB0aGV5IG5ldmVyIHRydW5jYXRlIG9mZmVyZWQgd29yay4KKworaW1wb3J0ICgKKwkiY3J5cHRvL3NoYTI1NiIKKwkiZW5jb2RpbmcvanNvbiIKKwkiZm10IgorCSJtYXRoIgorCSJuZXQvdXJsIgorCSJ0aW1lIgorCisJImdpdGh1Yi5jb20vdXJuZXR3b3JrL3NlcnZlci9tb2RlbCIKKykKKworLy8gVGhlc2UgYXJlIGFsbG9jYXRpb24vaXRlcmF0aW9uIGNlaWxpbmdzIG9mIHRoZSB2ZXJzaW9uZWQgaW5zdHJ1bWVudCwgbm90CisvLyBjYW5kaWRhdGUga25vYnMuIENoYW5naW5nIHRoZW0gY2hhbmdlcyB0aGUgaW5zdHJ1bWVudCByZWxlYXNlIGlkZW50aXR5LgordHlwZSB3b3JrQ292ZXJhZ2VMaW1pdHMgc3RydWN0IHsKKwlSb290cywgUGFnZXMsIFBhZ2VzUGVyUm9vdCwgVGlja3MsIFJhbmRvbURyYXdzIGludAorCUJvZHlCeXRlcywgSW52ZW50b3J5Qnl0ZXMsIEV4cGVjdGVkQnl0ZXMgICAgICAgaW50NjQKK30KKworLy8gVGhlIGZyb3plbiB3b3JrbG9hZCBtdXN0IHBhc3MgdGhlc2Ugb3duZXIgY2VpbGluZ3MgYmVmb3JlIHF1YWxpZmljYXRpb24uCisvLyBVbnN1cHBvcnRlZCBzaGFwZSBvciBvdmVyZmxvdyBpcyByZWplY3RlZCwgbmV2ZXIgc2lsZW50bHkgdHJ1bmNhdGVkLgorZnVuYyBkZWZhdWx0V29ya0NvdmVyYWdlTGltaXRzKCkgd29ya0NvdmVyYWdlTGltaXRzIHsKKwlyZXR1cm4gd29ya0NvdmVyYWdlTGltaXRzeworCQlSb290czogMTYzODQsIFBhZ2VzOiAxMDI0ICogMTAyNCwgUGFnZXNQZXJSb290OiA0MDk2LAorCQlUaWNrczogNjU1MzYsIFJhbmRvbURyYXdzOiAxNiAqIDEwMjQgKiAxMDI0LAorCQlCb2R5Qnl0ZXM6IDY0ICogMTAyNCAqIDEwMjQsIEludmVudG9yeUJ5dGVzOiBtb2RlbC5Db21wZXRpdGlvbldvcmtDb3ZlcmFnZU1heGltdW1NYW5pZmVzdEJ5dGVzIC8gMiwgRXhwZWN0ZWRCeXRlczogMTYgKiAxMDI0ICogMTAyNCAqIDEwMjQgKiAxMDI0LAorCX0KK30KKworLy8gRXhwZWN0ZWQgcmVzcG9uc2UgcmVwcmVzZW50YXRpb25zIGluY2x1ZGUgdGhlIGNhbm9uaWNhbCBKU09OIGxpbmUgYW5kIGl0cworLy8gbmV3bGluZSBhcyB3ZWxsIGFzIHBhZGRpbmcuIFVSSSBpZGVudGl0eSBpcyBzY29wZWQgdG8gb25lIGFkbWl0dGVkIHJvb3QuCit0eXBlIHdvcmtDb3ZlcmFnZVBhZ2Ugc3RydWN0IHsKKwlVcmkgICBzdHJpbmcgICBganNvbjoidXJpImAKKwlEZXB0aCBpbnQgICAgICBganNvbjoiZGVwdGgiYAorCVBhZ2UgIHNpdGVQYWdlIGBqc29uOiJwYWdlImAKKwlCeXRlcyBpbnQ2NCAgICBganNvbjoiYnl0ZXMiYAorfQorCisvLyBBZG1pc3Npb24gb2Zmc2V0cyBhcmUgZGV0ZXJtaW5pc3RpYyBhbmQgaW5kZXBlbmRlbnQgb2Ygc2NoZWR1bGVyIGxhdGVuY3kuCit0eXBlIHdvcmtDb3ZlcmFnZVJvb3Qgc3RydWN0IHsKKwlPZmZzZXROcyBpbnQ2NCAgICAgICAgICAgICAgYGpzb246Im9mZnNldF9ucyJgCisJUGFnZXMgICAgW113b3JrQ292ZXJhZ2VQYWdlIGBqc29uOiJwYWdlcyJgCit9CisKKy8vIFRoaXMgZGlnZXN0aWJsZSBpbnZlbnRvcnkgaXMgaW5kZXBlbmRlbnQgb2Ygd2FsbCB0aW1lIGFuZCByZXNwb25zZSBzdWNjZXNzLgordHlwZSB3b3JrQ292ZXJhZ2VQbGFuIHN0cnVjdCB7CisJS2luZCAgICAgICBzdHJpbmcgICAgICAgICAgICAgYGpzb246ImtpbmQiYAorCUR1cmF0aW9uTnMgaW50NjQgICAgICAgICAgICAgIGBqc29uOiJkdXJhdGlvbl9ucyJgCisJVGltZW91dE5zICBpbnQ2NCAgICAgICAgICAgICAgYGpzb246InRpbWVvdXRfbnMiYAorCVJvb3RzICAgICAgW113b3JrQ292ZXJhZ2VSb290IGBqc29uOiJyb290cyJgCisJVG90YWxQYWdlcyBpbnQ2NCAgICAgICAgICAgICAgYGpzb246InRvdGFsX3BhZ2VzImAKKwlUb3RhbEJ5dGVzIGludDY0ICAgICAgICAgICAgICBganNvbjoidG90YWxfYnl0ZXMiYAorCVNoYTI1NiAgICAgc3RyaW5nICAgICAgICAgICAgIGBqc29uOiItImAKK30KKworLy8gVmFsaWRhdGVzIHNpemVzIGJlZm9yZSBjb252ZXJzaW9ucywgbXVsdGlwbGljYXRpb24sIGFsbG9jYXRpb24gb3IgUk5HIHdvcmsuCitmdW5jIHZhbGlkYXRlV29ya0NvdmVyYWdlQ29uZmlnKGNvbmZpZyAqQ29uZmlnLCBkdXJhdGlvbiwgdGltZW91dCB0aW1lLkR1cmF0aW9uLCBsaW1pdHMgd29ya0NvdmVyYWdlTGltaXRzKSBlcnJvciB7CisJaWYgY29uZmlnID09IG5pbCB8fCBkdXJhdGlvbiA8PSAwIHx8IHRpbWVvdXQgPD0gMCB8fCBsaW1pdHMuUm9vdHMgPD0gMCB8fCBsaW1pdHMuUGFnZXMgPD0gMCB8fAorCQlsaW1pdHMuUGFnZXNQZXJSb290IDw9IDAgfHwgbGltaXRzLlRpY2tzIDw9IDAgfHwgbGltaXRzLlJhbmRvbURyYXdzIDw9IDAgfHwKKwkJbGltaXRzLkJvZHlCeXRlcyA8PSAwIHx8IGxpbWl0cy5JbnZlbnRvcnlCeXRlcyA8PSAwIHx8IGxpbWl0cy5FeHBlY3RlZEJ5dGVzIDw9IDAgeworCQlyZXR1cm4gZm10LkVycm9yZigiaW52YWxpZCBib3VuZGVkIHdvcmsgaW52ZW50b3J5IHNldHRpbmdzIikKKwl9CisJc2l0ZSA6PSBjb25maWcuU2l0ZQorCWlmICFmaW5pdGVOb25uZWdhdGl2ZShzaXRlLk1lYW5EZXB0aCkgfHwgIWZpbml0ZU5vbm5lZ2F0aXZlKHNpdGUuQnJhbmNoaW5nKSB8fAorCQlmbG9hdDY0KChsaW1pdHMuUGFnZXNQZXJSb290LTEpL3NpdGVNYXhEZXB0aCkgPCBtYXRoLk1heCgxLCBtYXRoLlRydW5jKHNpdGUuQnJhbmNoaW5nKSkgfHwKKwkJIWZpbml0ZU5vbm5lZ2F0aXZlKGNvbmZpZy5DbGllbnRzLk1lYW5QZXJNaW51dGUpIHx8CisJCW1hdGguRXhwKC1jb25maWcuQ2xpZW50cy5NZWFuUGVyTWludXRlLzYwKSA9PSAwIHx8CisJCWZsb2F0NjQobGltaXRzLlJvb3RzKSA8IGNvbmZpZy5DbGllbnRzLk1lYW5QZXJNaW51dGUvNjAgfHwKKwkJIWZpbml0ZU5vbm5lZ2F0aXZlKHNpdGUuTGFyZ2VGcmFjdGlvbikgfHwgMSA8IHNpdGUuTGFyZ2VGcmFjdGlvbiB8fAorCQljb25maWcuQ2xpZW50cy5Qb29sU2l6ZSA8PSAwIHx8IGNvbmZpZy5DbGllbnRzLkNvbm5lY3Rpb25zUGVyQ3Jhd2wgPD0gMCB8fAorCQlpbnQ2NChsaW1pdHMuVGlja3MpIDwgaW50NjQoZHVyYXRpb24vdGltZS5TZWNvbmQpIHsKKwkJcmV0dXJuIGZtdC5FcnJvcmYoIndvcmtsb2FkIGV4Y2VlZHMgdGhlIGZpbml0ZSB3b3JrIGludmVudG9yeSBzaGFwZSIpCisJfQorCWZvciBfLCBzaXplIDo9IHJhbmdlIFtdaW50e3NpdGUuTWluQm9keUJ5dGVzLCBzaXRlLk1heEJvZHlCeXRlcywgc2l0ZS5MYXJnZU1pbkJvZHlCeXRlcywgc2l0ZS5MYXJnZU1heEJvZHlCeXRlc30geworCQlpZiBzaXplIDwgMCB8fCBsaW1pdHMuQm9keUJ5dGVzIDwgaW50NjQoc2l6ZSkgeworCQkJcmV0dXJuIGZtdC5FcnJvcmYoIndvcmtsb2FkIGJvZHkgc2l6ZSBleGNlZWRzIGludmVudG9yeSBib3VuZHMiKQorCQl9CisJfQorCWlmIHNpdGUuTWF4Qm9keUJ5dGVzIDwgc2l0ZS5NaW5Cb2R5Qnl0ZXMgfHwgc2l0ZS5MYXJnZU1heEJvZHlCeXRlcyA8IHNpdGUuTGFyZ2VNaW5Cb2R5Qnl0ZXMgfHwKKwkJKDAgPCBzaXRlLkxhcmdlRnJhY3Rpb24gJiYgc2l0ZS5MYXJnZU1pbkJvZHlCeXRlcyA8PSAwKSB7CisJCXJldHVybiBmbXQuRXJyb3JmKCJ3b3JrbG9hZCBoYXMgYW4gaW52YWxpZCBib2R5IHRpZXIiKQorCX0KKwlyZXR1cm4gbmlsCit9CisKKy8vIFByZXNlcnZlcyB0aGUgaGlzdG9yaWNhbCBkcmF3IHNlcXVlbmNlIGJ1dCBib3VuZHMgcGF0aG9sb2dpY2FsIHBhcmFtZXRlcnMKKy8vIGFuZCB1bmx1Y2t5IHRhaWxzIGJlZm9yZSBhbnkgY2FuZGlkYXRlIGlzIGV4ZWN1dGVkLgorZnVuYyBidWlsZFdvcmtDb3ZlcmFnZVBsYW4oY29uZmlnICpDb25maWcsIGR1cmF0aW9uLCB0aW1lb3V0IHRpbWUuRHVyYXRpb24sIGxpbWl0cyB3b3JrQ292ZXJhZ2VMaW1pdHMpICgqd29ya0NvdmVyYWdlUGxhbiwgZXJyb3IpIHsKKwlpZiBlcnIgOj0gdmFsaWRhdGVXb3JrQ292ZXJhZ2VDb25maWcoY29uZmlnLCBkdXJhdGlvbiwgdGltZW91dCwgbGltaXRzKTsgZXJyICE9IG5pbCB7CisJCXJldHVybiBuaWwsIGVycgorCX0KKwlkcmF3cyA6PSAwCisJZHJhdyA6PSBmdW5jKHNvdXJjZSAqcm5nKSAoZmxvYXQ2NCwgZXJyb3IpIHsKKwkJaWYgZHJhd3MgPT0gbGltaXRzLlJhbmRvbURyYXdzIHsKKwkJCXJldHVybiAwLCBmbXQuRXJyb3JmKCJ3b3JrIGludmVudG9yeSByYW5kb20tZHJhdyBib3VuZCBleGNlZWRlZCIpCisJCX0KKwkJZHJhd3MrKworCQlyZXR1cm4gc291cmNlLmZsb2F0NjQoKSwgbmlsCisJfQorCWRlcHRoIDo9IGZ1bmMoc291cmNlICpybmcsIG1lYW4gZmxvYXQ2NCkgKGludCwgZXJyb3IpIHsKKwkJaWYgbWVhbiA8PSAwIHsKKwkJCXJldHVybiAwLCBuaWwKKwkJfQorCQlwIDo9IG1lYW4gLyAobWVhbiArIDEpCisJCWZvciBuIDo9IDA7IDsgbisrIHsKKwkJCXZhbHVlLCBlcnIgOj0gZHJhdyhzb3VyY2UpCisJCQlpZiBlcnIgIT0gbmlsIHx8IHAgPD0gdmFsdWUgeworCQkJCXJldHVybiBuLCBlcnIKKwkJCX0KKwkJfQorCX0KKwlwbGFuIDo9ICZ3b3JrQ292ZXJhZ2VQbGFue0tpbmQ6IG1vZGVsLkNvbXBldGl0aW9uV29ya0NvdmVyYWdlS2luZCwgRHVyYXRpb25OczogaW50NjQoZHVyYXRpb24pLCBUaW1lb3V0TnM6IGludDY0KHRpbWVvdXQpLCBSb290czogW113b3JrQ292ZXJhZ2VSb290e319CisJaGFuZGxlciA6PSAmc2l0ZUhhbmRsZXJ7c2VlZDogY29uZmlnLlNlZWQsIHNpdGU6IGNvbmZpZy5TaXRlfQorCWFycml2YWxzIDo9IG5ld1JuZyhjb25maWcuU2VlZCBeIDB4NWVlZCkKKwltZXRhZGF0YUJ5dGVzIDo9IGludDY0KDApCisJLy8gVGljayB6ZXJvIGlzIG5vdCBvZmZlcmVkIGJ5IHRoZSBoaXN0b3JpY2FsIGFycml2YWwgcHJvY2Vzcy4gRXZlcnkKKwkvLyBzY2hlZHVsZWQgdGljayBpcyBzdHJpY3RseSBpbnNpZGUgW21lYXN1cmVtZW50IHN0YXJ0LCBtZWFzdXJlbWVudCBlbmQpLgorCWZvciBvZmZzZXQgOj0gdGltZS5TZWNvbmQ7IG9mZnNldCA8IGR1cmF0aW9uOyB7CisJCXRocmVzaG9sZCwgcHJvZHVjdCA6PSBtYXRoLkV4cCgtY29uZmlnLkNsaWVudHMuTWVhblBlck1pbnV0ZS82MCksIDEuMAorCQljb3VudCA6PSAwCisJCWlmIDAgPCBjb25maWcuQ2xpZW50cy5NZWFuUGVyTWludXRlIHsKKwkJCWZvciB7CisJCQkJdmFsdWUsIGVyciA6PSBkcmF3KGFycml2YWxzKQorCQkJCWlmIGVyciAhPSBuaWwgeworCQkJCQlyZXR1cm4gbmlsLCBlcnIKKwkJCQl9CisJCQkJcHJvZHVjdCAqPSB2YWx1ZQorCQkJCWlmIHByb2R1Y3QgPD0gdGhyZXNob2xkIHsKKwkJCQkJYnJlYWsKKwkJCQl9CisJCQkJY291bnQrKworCQkJCWlmIGxpbWl0cy5Sb290cy1sZW4ocGxhbi5Sb290cykgPCBjb3VudCB7CisJCQkJCXJldHVybiBuaWwsIGZtdC5FcnJvcmYoIndvcmsgaW52ZW50b3J5IG9mZmVyZWQtcm9vdCBib3VuZCBleGNlZWRlZCIpCisJCQkJfQorCQkJfQorCQl9CisJCWZvciBpIDo9IDA7IGkgPCBjb3VudDsgaSsrIHsKKwkJCWlmIGxlbihwbGFuLlJvb3RzKSA9PSBsaW1pdHMuUm9vdHMgeworCQkJCXJldHVybiBuaWwsIGZtdC5FcnJvcmYoIndvcmsgaW52ZW50b3J5IG9mZmVyZWQtcm9vdCBib3VuZCBleGNlZWRlZCIpCisJCQl9CisJCQlyb290IDo9IHdvcmtDb3ZlcmFnZVJvb3R7T2Zmc2V0TnM6IGludDY0KG9mZnNldCksIFBhZ2VzOiBbXXdvcmtDb3ZlcmFnZVBhZ2V7fX0KKwkJCXF1ZXVlIDo9IFtdd29ya0NvdmVyYWdlUGFnZXt7VXJpOiBmbXQuU3ByaW50ZigiLz9jcmF3bD0lZCIsIGxlbihwbGFuLlJvb3RzKSl9fQorCQkJc2VlbiA6PSBtYXBbc3RyaW5nXWJvb2x7fQorCQkJZm9yIGxlbihxdWV1ZSkgIT0gMCB7CisJCQkJaXRlbSA6PSBxdWV1ZVswXQorCQkJCXF1ZXVlID0gcXVldWVbMTpdCisJCQkJaWYgc2VlbltpdGVtLlVyaV0geworCQkJCQljb250aW51ZQorCQkJCX0KKwkJCQlzZWVuW2l0ZW0uVXJpXSA9IHRydWUKKwkJCQlpZiBsZW4ocm9vdC5QYWdlcykgPT0gbGltaXRzLlBhZ2VzUGVyUm9vdCB8fCBwbGFuLlRvdGFsUGFnZXMgPT0gaW50NjQobGltaXRzLlBhZ2VzKSB7CisJCQkJCXJldHVybiBuaWwsIGZtdC5FcnJvcmYoIndvcmsgaW52ZW50b3J5IHBhZ2UgYm91bmQgZXhjZWVkZWQiKQorCQkJCX0KKwkJCQlwYXJzZWQsIGVyciA6PSB1cmwuUGFyc2VSZXF1ZXN0VVJJKGl0ZW0uVXJpKQorCQkJCWlmIGVyciAhPSBuaWwgeworCQkJCQlyZXR1cm4gbmlsLCBmbXQuRXJyb3JmKCJpbnZhbGlkIGdlbmVyYXRlZCB3b3JrIFVSSSIpCisJCQkJfQorCQkJCXBhZ2UsIG9rLCBlcnIgOj0gaGFuZGxlci5kZXNjcmliZVBhZ2UocGFyc2VkLlBhdGgsIGl0ZW0uVXJpLCBkZXB0aCkKKwkJCQlpZiBlcnIgIT0gbmlsIHx8ICFvayB7CisJCQkJCXJldHVybiBuaWwsIGZtdC5FcnJvcmYoImNhbm5vdCBpbnZlbnRvcnkgZ2VuZXJhdGVkIHdvcms6ICV2IiwgZXJyKQorCQkJCX0KKwkJCQloZWFkZXIsIGVyciA6PSBqc29uLk1hcnNoYWwocGFnZSkKKwkJCQlpZiBlcnIgIT0gbmlsIHx8IGludDY0KGxlbihoZWFkZXIpKSsxID4gbGltaXRzLkludmVudG9yeUJ5dGVzIHx8IGludDY0KHBhZ2UuU2l6ZSkgPiBtYXRoLk1heEludDY0LWludDY0KGxlbihoZWFkZXIpKS0xIHsKKwkJCQkJcmV0dXJuIG5pbCwgZm10LkVycm9yZigid29yayBpbnZlbnRvcnkgcmVwcmVzZW50YXRpb24gb3ZlcmZsb3ciKQorCQkJCX0KKwkJCQlpdGVtLlBhZ2UsIGl0ZW0uQnl0ZXMgPSBwYWdlLCBpbnQ2NChsZW4oaGVhZGVyKSkrMStpbnQ2NChwYWdlLlNpemUpCisJCQkJLy8gSW5jbHVkZSBVUkksIGNoaWxkcmVuIGFuZCBmaXhlZC13aWR0aCBsZWRnZXIgb3ZlcmhlYWQgaW4gdGhlCisJCQkJLy8gYWdncmVnYXRlIG1ldGFkYXRhIGNlaWxpbmcsIG5vdCBvbmx5IHRoZSBib2R5IGJ5dGUgdG90YWwuCisJCQkJY29zdCA6PSBpbnQ2NChsZW4oaGVhZGVyKSkgKyBpbnQ2NChsZW4oaXRlbS5VcmkpKSArIDI1NgorCQkJCWlmIGxpbWl0cy5JbnZlbnRvcnlCeXRlcy1tZXRhZGF0YUJ5dGVzIDwgY29zdCB8fCBsaW1pdHMuRXhwZWN0ZWRCeXRlcy1wbGFuLlRvdGFsQnl0ZXMgPCBpdGVtLkJ5dGVzIHsKKwkJCQkJcmV0dXJuIG5pbCwgZm10LkVycm9yZigid29yayBpbnZlbnRvcnkgYnl0ZSBib3VuZCBleGNlZWRlZCIpCisJCQkJfQorCQkJCW1ldGFkYXRhQnl0ZXMgKz0gY29zdAorCQkJCXBsYW4uVG90YWxQYWdlcysrCisJCQkJcGxhbi5Ub3RhbEJ5dGVzICs9IGl0ZW0uQnl0ZXMKKwkJCQlyb290LlBhZ2VzID0gYXBwZW5kKHJvb3QuUGFnZXMsIGl0ZW0pCisJCQkJZm9yIF8sIGNoaWxkIDo9IHJhbmdlIHBhZ2UuVXJscyB7CisJCQkJCXF1ZXVlID0gYXBwZW5kKHF1ZXVlLCB3b3JrQ292ZXJhZ2VQYWdle1VyaTogY2hpbGQsIERlcHRoOiBpdGVtLkRlcHRoICsgMX0pCisJCQkJfQorCQkJfQorCQkJcGxhbi5Sb290cyA9IGFwcGVuZChwbGFuLlJvb3RzLCByb290KQorCQl9CisJCWlmIGR1cmF0aW9uLW9mZnNldCA8PSB0aW1lLlNlY29uZCB7CisJCQlicmVhaworCQl9CisJCW9mZnNldCArPSB0aW1lLlNlY29uZAorCX0KKwlpZiBsZW4ocGxhbi5Sb290cykgPT0gMCB8fCBwbGFuLlRvdGFsUGFnZXMgPD0gMCB8fCBwbGFuLlRvdGFsQnl0ZXMgPD0gMCB7CisJCXJldHVybiBuaWwsIGZtdC5FcnJvcmYoIndvcmsgaW52ZW50b3J5IGhhcyBubyBwb3NpdGl2ZSBvZmZlcmVkIGNvaG9ydCIpCisJfQorCWNvbnRlbnQsIGVyciA6PSBqc29uLk1hcnNoYWwocGxhbikKKwlpZiBlcnIgIT0gbmlsIHx8IGludDY0KGxlbihjb250ZW50KSkgPiBsaW1pdHMuSW52ZW50b3J5Qnl0ZXMgeworCQlyZXR1cm4gbmlsLCBmbXQuRXJyb3JmKCJ3b3JrIGludmVudG9yeSBzZXJpYWxpemVkIGJ5dGUgYm91bmQgZXhjZWVkZWQiKQorCX0KKwlwbGFuLlNoYTI1NiA9IGZtdC5TcHJpbnRmKCIleCIsIHNoYTI1Ni5TdW0yNTYoY29udGVudCkpCisJcmV0dXJuIHBsYW4sIG5pbAorfQpkaWZmIC0tZ2l0IGEvY29ubmVjdC9zaW0tbGF0ZW5jeS93b3JrX2NvdmVyYWdlX3BsYW5fdGVzdC5nbyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvd29ya19jb3ZlcmFnZV9wbGFuX3Rlc3QuZ28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZhM2RkZjdhNDhhNmI1NTEwODQ0NGFiMWM0N2U3MTVkZmE1YzcyYwotLS0gL2Rldi9udWxsCisrKyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvd29ya19jb3ZlcmFnZV9wbGFuX3Rlc3QuZ28KQEAgLTAsMCArMSwyMTEgQEAKK3BhY2thZ2UgbWFpbgorCisvLyBGcm96ZW4tcmVmZXJlbmNlIGNvbnRyb2xzIHByb3RlY3QgdGhlIGhpc3RvcmljYWwgc2l0ZSdzIGJ5dGVzLCB3aGlsZSB0aGUKKy8vIHByb3NwZWN0aXZlIGludmVudG9yeSBpcyBleGVyY2lzZWQgd2l0aG91dCBhIHNvY2tldCBvciBjYW5kaWRhdGUgcHJvY2Vzcy4KKworaW1wb3J0ICgKKwkiYnl0ZXMiCisJImVuY29kaW5nL2pzb24iCisJImZtdCIKKwkibWF0aCIKKwkibmV0L2h0dHAvaHR0cHRlc3QiCisJInJlZmxlY3QiCisJInRlc3RpbmciCisJInRpbWUiCisKKwkiZ2l0aHViLmNvbS91cm5ldHdvcmsvc2VydmVyL2NvbnRyb2xsZXIiCispCisKKy8vIFRoaXMgc291cmNlIHByZWZsaWdodCB1c2VzIHRoZSBpbnRlbmRlZCB1bmNoYW5nZWQgODAvbWluLCAxODBzLCAxMjBzIHR1cGxlCisvLyBhbmQgdGhlIGNhbm9uaWNhbCBzaXRlIGdlbmVyYXRvciB3aXRoIG1hbnkgc3ludGhldGljIHNlZWRzLiBQcm92aWRlci9jbGllbnQKKy8vIHJlY29yZCBjb3VudHMgZG8gbm90IGFmZmVjdCB0aGlzIGludmVudG9yeSwgc28gbm8gcmVhbCBmbGVldCBpcyBjb25zdHJ1Y3RlZC4KKy8vIEl0IGlzIG5vdCBhbiBhY2NlcHRlZCBzZWVkLCBuZXcgcHVibGljIGZyZWV6ZSwgUjkgb3IgbmF0aXZlIHF1YWxpZmljYXRpb24uCitmdW5jIFRlc3RXb3JrQ292ZXJhZ2VQbGFuUHJlZmxpZ2h0c0ludGVuZGVkU2hhcGVBbmRSZWplY3RzT3ZlcnNpemVEZWZhdWx0KHQgKnRlc3RpbmcuVCkgeworCWZvciBzZWVkIDo9IGludDY0KDEpOyBzZWVkIDw9IDMyOyBzZWVkKysgeworCQljb250ZW50LCBlcnIgOj0gY29udHJvbGxlci5HZW5lcmF0ZVNpbUxhdGVuY3lXb3JrbG9hZChzZWVkLCAxLCAxLCA4MCwgMCkKKwkJaWYgZXJyICE9IG5pbCB7CisJCQl0LkZhdGFsKGVycikKKwkJfQorCQljb25maWcsIGVyciA6PSBkZWNvZGVDb25maWcoY29udGVudCkKKwkJaWYgZXJyICE9IG5pbCB7CisJCQl0LkZhdGFsKGVycikKKwkJfQorCQlwbGFuLCBlcnIgOj0gYnVpbGRXb3JrQ292ZXJhZ2VQbGFuKGNvbmZpZywgMTgwKnRpbWUuU2Vjb25kLCAxMjAqdGltZS5TZWNvbmQsIGRlZmF1bHRXb3JrQ292ZXJhZ2VMaW1pdHMoKSkKKwkJaWYgZXJyICE9IG5pbCB8fCBwbGFuLlRvdGFsUGFnZXMgPD0gMCB8fCBwbGFuLlRvdGFsQnl0ZXMgPD0gMCB8fCBsZW4ocGxhbi5Sb290cykgPT0gMCB7CisJCQl0LkZhdGFsKCJpbnRlbmRlZCB3b3JrbG9hZCBzaGFwZSBkaWQgbm90IGZpdCBleHBsaWNpdCBpbnZlbnRvcnkgY2VpbGluZ3MiLCBzZWVkLCBlcnIpCisJCX0KKwl9CisJY29udGVudCwgZXJyIDo9IGNvbnRyb2xsZXIuR2VuZXJhdGVTaW1MYXRlbmN5V29ya2xvYWQoNzEsIDEsIDEsIDgwLCAwKQorCWlmIGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJY29uZmlnLCBlcnIgOj0gZGVjb2RlQ29uZmlnKGNvbnRlbnQpCisJaWYgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoZXJyKQorCX0KKwlpZiBwbGFuLCBlcnIgOj0gYnVpbGRXb3JrQ292ZXJhZ2VQbGFuKGNvbmZpZywgMzAqdGltZS5NaW51dGUsIDEyMCp0aW1lLlNlY29uZCwgZGVmYXVsdFdvcmtDb3ZlcmFnZUxpbWl0cygpKTsgZXJyID09IG5pbCB8fCBwbGFuICE9IG5pbCB7CisJCXQuRmF0YWwoIm92ZXJzaXplZCB0aGlydHktbWludXRlIGRlZmF1bHQgd2FzIHNpbGVudGx5IHNob3J0ZW5lZCBvciBjbGlwcGVkIikKKwl9Cit9CisKKy8vIFRoaXMgZGVsaWJlcmF0ZWx5IHJldGFpbnMgdGhlIHByZS1leHRyYWN0aW9uIGltcGxlbWVudGF0aW9uIHJhdGhlciB0aGFuCisvLyBjYWxsaW5nIHRoZSBuZXcgZGVzY3JpcHRvciBoZWxwZXIsIGluY2x1ZGluZyBpdHMgY29tcGxldGUgUk5HIGRyYXcgb3JkZXIuCitmdW5jIGZyb3plbldvcmtDb3ZlcmFnZVBhZ2UoaGFuZGxlciAqc2l0ZUhhbmRsZXIsIHBhdGgsIGlkZW50aXR5IHN0cmluZykgc2l0ZVBhZ2UgeworCXJlbWFpbmluZywgXyA6PSBoYW5kbGVyLnBhcnNlUGF0aChwYXRoKQorCXJhbmRvbSA6PSBoYW5kbGVyLnBhdGhSbmcoaWRlbnRpdHkpCisJaWYgcGF0aCA9PSAiLyIgeworCQlyZW1haW5pbmcgPSByYW5kb20uZ2VvbWV0cmljRGVwdGgoaGFuZGxlci5zaXRlLk1lYW5EZXB0aCkKKwkJaWYgc2l0ZU1heERlcHRoIDwgcmVtYWluaW5nIHsKKwkJCXJlbWFpbmluZyA9IHNpdGVNYXhEZXB0aAorCQl9CisJfQorCXNpemUgOj0gaGFuZGxlci5zaXRlLk1pbkJvZHlCeXRlcworCWlmIDAgPCBoYW5kbGVyLnNpdGUuTGFyZ2VGcmFjdGlvbiAmJiAwIDwgaGFuZGxlci5zaXRlLkxhcmdlTWluQm9keUJ5dGVzICYmIHJhbmRvbS5mbG9hdDY0KCkgPCBoYW5kbGVyLnNpdGUuTGFyZ2VGcmFjdGlvbiB7CisJCXNpemUgPSBoYW5kbGVyLnNpdGUuTGFyZ2VNaW5Cb2R5Qnl0ZXMKKwkJaWYgaGFuZGxlci5zaXRlLkxhcmdlTWF4Qm9keUJ5dGVzID4gaGFuZGxlci5zaXRlLkxhcmdlTWluQm9keUJ5dGVzIHsKKwkJCXNpemUgKz0gcmFuZG9tLmludG4oaGFuZGxlci5zaXRlLkxhcmdlTWF4Qm9keUJ5dGVzIC0gaGFuZGxlci5zaXRlLkxhcmdlTWluQm9keUJ5dGVzKQorCQl9CisJfSBlbHNlIGlmIGhhbmRsZXIuc2l0ZS5NYXhCb2R5Qnl0ZXMgPiBoYW5kbGVyLnNpdGUuTWluQm9keUJ5dGVzIHsKKwkJc2l6ZSArPSByYW5kb20uaW50bihoYW5kbGVyLnNpdGUuTWF4Qm9keUJ5dGVzIC0gaGFuZGxlci5zaXRlLk1pbkJvZHlCeXRlcykKKwl9CisJdXJscyA6PSBbXXN0cmluZ3t9CisJaWYgMCA8IHJlbWFpbmluZyB7CisJCWJyYW5jaGluZyA6PSBtYXgoMSwgaW50KGhhbmRsZXIuc2l0ZS5CcmFuY2hpbmcpKQorCQlmb3IgaW5kZXggOj0gMDsgaW5kZXggPCBicmFuY2hpbmc7IGluZGV4KysgeworCQkJbmV4dCA6PSAwCisJCQlpZiBpbmRleCA9PSAwIHsKKwkJCQluZXh0ID0gcmVtYWluaW5nIC0gMQorCQkJfQorCQkJdXJscyA9IGFwcGVuZCh1cmxzLCBmbXQuU3ByaW50ZigiL3AvJWQvJXMiLCBuZXh0LCBoYW5kbGVyLmNoaWxkVG9rZW4oaWRlbnRpdHksIGluZGV4KSkpCisJCX0KKwl9CisJcmV0dXJuIHNpdGVQYWdle1VybHM6IHVybHMsIFNpemU6IHNpemV9Cit9CisKKy8vIFRoZSBmaXhlZCBsaXRlcmFsIGFsc28gY2hlY2tzIG51bGwtdmVyc3VzLWVtcHR5IFVSTHMgYW5kIG5ld2xpbmUgc2VtYW50aWNzLgorZnVuYyBUZXN0V29ya0NvdmVyYWdlRGVzY3JpcHRvclByZXNlcnZlc0Zyb3plblNpdGVCeXRlcyh0ICp0ZXN0aW5nLlQpIHsKKwlmb3IgXywgc2VlZCA6PSByYW5nZSBbXWludDY0ey03MywgMCwgMSwgMjksIG1hdGguTWF4SW50NjR9IHsKKwkJZm9yIF8sIGRlcHRoIDo9IHJhbmdlIFtdZmxvYXQ2NHswLCAyLjUsIDEwMH0geworCQkJZm9yIF8sIHRpZXIgOj0gcmFuZ2UgW11mbG9hdDY0ezAsIC4yNSwgMX0geworCQkJCWhhbmRsZXIgOj0gJnNpdGVIYW5kbGVye3NlZWQ6IHNlZWQsIHNpdGU6IFNpdGVDb25maWd7TWVhbkRlcHRoOiBkZXB0aCwgQnJhbmNoaW5nOiAyLjUsIE1pbkJvZHlCeXRlczogMTMsIE1heEJvZHlCeXRlczogNzEsIExhcmdlRnJhY3Rpb246IHRpZXIsIExhcmdlTWluQm9keUJ5dGVzOiAzMjc2OSwgTGFyZ2VNYXhCb2R5Qnl0ZXM6IDMyNzk5fX0KKwkJCQlmb3IgXywgdXJpIDo9IHJhbmdlIFtdc3RyaW5neyIvP2NyYXdsPTAiLCAiLz9jcmF3bD0xOSIsICIvcC8wL3N5bnRoZXRpYyIsICIvcC8xL3N5bnRoZXRpYyIsICIvcC8yNC9zeW50aGV0aWMifSB7CisJCQkJCXJlcXVlc3QgOj0gaHR0cHRlc3QuTmV3UmVxdWVzdCgiR0VUIiwgdXJpLCBuaWwpCisJCQkJCXdhbnQgOj0gZnJvemVuV29ya0NvdmVyYWdlUGFnZShoYW5kbGVyLCByZXF1ZXN0LlVSTC5QYXRoLCByZXF1ZXN0LlVSTC5SZXF1ZXN0VVJJKCkpCisJCQkJCWFjdHVhbCwgb2ssIGVyciA6PSBoYW5kbGVyLmRlc2NyaWJlUGFnZShyZXF1ZXN0LlVSTC5QYXRoLCByZXF1ZXN0LlVSTC5SZXF1ZXN0VVJJKCksIGZ1bmMocmFuZG9tICpybmcsIG1lYW4gZmxvYXQ2NCkgKGludCwgZXJyb3IpIHsgcmV0dXJuIHJhbmRvbS5nZW9tZXRyaWNEZXB0aChtZWFuKSwgbmlsIH0pCisJCQkJCWlmIGVyciAhPSBuaWwgfHwgIW9rIHx8ICFlcXVhbFdvcmtDb3ZlcmFnZVBhZ2Uod2FudCwgYWN0dWFsKSB7CisJCQkJCQl0LkZhdGFsKCJkZXNjcmlwdG9yIGNoYW5nZWQgZnJvemVuIHNlZWRlZCByZXNwb25zZSIsIHNlZWQsIGRlcHRoLCB0aWVyLCB1cmksIGVycikKKwkJCQkJfQorCQkJCQlyZXNwb25zZSA6PSBodHRwdGVzdC5OZXdSZWNvcmRlcigpCisJCQkJCWhhbmRsZXIuU2VydmVIVFRQKHJlc3BvbnNlLCByZXF1ZXN0KQorCQkJCQloZWFkZXIsIGVyciA6PSBqc29uLk1hcnNoYWwod2FudCkKKwkJCQkJaWYgZXJyICE9IG5pbCB7CisJCQkJCQl0LkZhdGFsKGVycikKKwkJCQkJfQorCQkJCQlib2R5IDo9IGFwcGVuZChoZWFkZXIsICdcbicpCisJCQkJCWZvciBvZmZzZXQgOj0gMDsgb2Zmc2V0IDwgd2FudC5TaXplOyBvZmZzZXQrKyB7CisJCQkJCQlib2R5ID0gYXBwZW5kKGJvZHksIGJ5dGUoJ2EnKyhvZmZzZXQlKDMyPDwxMCkpJTI2KSkKKwkJCQkJfQorCQkJCQlpZiAhYnl0ZXMuRXF1YWwocmVzcG9uc2UuQm9keS5CeXRlcygpLCBib2R5KSB8fCByZXNwb25zZS5IZWFkZXIoKS5HZXQoIkNvbnRlbnQtTGVuZ3RoIikgIT0gZm10LlNwcmludChsZW4oYm9keSkpIHsKKwkJCQkJCXQuRmF0YWwoInNpdGUgaGVhZGVyL2JvZHkgYnl0ZXMgY2hhbmdlZCBmcm9tIGZyb3plbiByZWZlcmVuY2UiLCBzZWVkLCBkZXB0aCwgdGllciwgdXJpKQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJfQorCWhhbmRsZXIgOj0gJnNpdGVIYW5kbGVye3NpdGU6IFNpdGVDb25maWd7TWluQm9keUJ5dGVzOiAzLCBNYXhCb2R5Qnl0ZXM6IDN9fQorCXJlc3BvbnNlIDo9IGh0dHB0ZXN0Lk5ld1JlY29yZGVyKCkKKwloYW5kbGVyLlNlcnZlSFRUUChyZXNwb25zZSwgaHR0cHRlc3QuTmV3UmVxdWVzdCgiR0VUIiwgIi8/Y3Jhd2w9MCIsIG5pbCkpCisJaWYgcmVzcG9uc2UuQm9keS5TdHJpbmcoKSAhPSAie1widXJsc1wiOltdLFwic2l6ZVwiOjN9XG5hYmMiIHsKKwkJdC5GYXRhbCgibGl0ZXJhbCBoaXN0b3JpY2FsIHNpdGUgcmVwcmVzZW50YXRpb24gY2hhbmdlZCIsIHJlc3BvbnNlLkJvZHkuU3RyaW5nKCkpCisJfQorfQorCisvLyBTbWFsbCBwb3NpdGl2ZSBmaXh0dXJlcyB1c2Ugb25seSBzeW50aGV0aWMgc2VlZGVkIHdvcmtsb2FkIHNldHRpbmdzLgorZnVuYyB3b3JrQ292ZXJhZ2VDb25maWdGb3JUZXN0KCkgKkNvbmZpZyB7CisJcmV0dXJuICZDb25maWd7U2VlZDogNzEsIFNpdGU6IFNpdGVDb25maWd7TWVhbkRlcHRoOiAzMCwgQnJhbmNoaW5nOiAyLCBNaW5Cb2R5Qnl0ZXM6IDEzLCBNYXhCb2R5Qnl0ZXM6IDMxfSwgQ2xpZW50czogQ2xpZW50c0NvbmZpZ3tQb29sU2l6ZTogMywgTWVhblBlck1pbnV0ZTogMTgwLCBDb25uZWN0aW9uc1BlckNyYXdsOiAyfX0KK30KKworLy8gVGhlIFJORyBzdHJlYW0gaXMgaWRlbnRpY2FsIHRvIGhpc3RvcmljYWwgYXJyaXZhbHMsIGJ1dCB0aGVpciB0aW1lcyBjYW5ub3QKKy8vIG1vdmUgd2hlbiB0aGUgZXZlbnQgbG9vcCBvciBhIGZpcnN0IG1hdGNobWFraW5nIHByb2JlIHJ1bnMgbGF0ZS4KK2Z1bmMgVGVzdFdvcmtDb3ZlcmFnZVBsYW5NYXRjaGVzU2VlZGVkUm9vdHNBbmRGaW5pdGVJbnZlbnRvcnkodCAqdGVzdGluZy5UKSB7CisJY29uZmlnIDo9IHdvcmtDb3ZlcmFnZUNvbmZpZ0ZvclRlc3QoKQorCXBsYW4sIGVyciA6PSBidWlsZFdvcmtDb3ZlcmFnZVBsYW4oY29uZmlnLCA2KnRpbWUuU2Vjb25kLCAxMjAqdGltZS5TZWNvbmQsIGRlZmF1bHRXb3JrQ292ZXJhZ2VMaW1pdHMoKSkKKwlpZiBlcnIgIT0gbmlsIHx8IGxlbihwbGFuLlJvb3RzKSA9PSAwIHx8IHBsYW4uVG90YWxQYWdlcyA8PSBpbnQ2NChsZW4ocGxhbi5Sb290cykpIHsKKwkJdC5GYXRhbCgiZmluaXRlIHBvc2l0aXZlIG9mZmVyZWQgcGxhbiBtaXNzaW5nIiwgZXJyKQorCX0KKwlyYW5kb20sIG5leHQgOj0gbmV3Um5nKGNvbmZpZy5TZWVkXjB4NWVlZCksIDAKKwlmb3Igb2Zmc2V0IDo9IHRpbWUuU2Vjb25kOyBvZmZzZXQgPCA2KnRpbWUuU2Vjb25kOyBvZmZzZXQgKz0gdGltZS5TZWNvbmQgeworCQlmb3IgY291bnQgOj0gcmFuZG9tLnBvaXNzb24oY29uZmlnLkNsaWVudHMuTWVhblBlck1pbnV0ZSAvIDYwKTsgMCA8IGNvdW50OyBjb3VudC0tIHsKKwkJCWlmIGxlbihwbGFuLlJvb3RzKSA8PSBuZXh0IHx8IHBsYW4uUm9vdHNbbmV4dF0uT2Zmc2V0TnMgIT0gaW50NjQob2Zmc2V0KSB8fCBwbGFuLlJvb3RzW25leHRdLlBhZ2VzWzBdLlVyaSAhPSBmbXQuU3ByaW50ZigiLz9jcmF3bD0lZCIsIG5leHQpIHsKKwkJCQl0LkZhdGFsKCJzZWVkZWQgb2ZmZXJlZCByb290IG9yIGFkbWlzc2lvbiBib3VuZGFyeSBjaGFuZ2VkIiwgb2Zmc2V0LCBuZXh0KQorCQkJfQorCQkJbmV4dCsrCisJCX0KKwl9CisJaWYgbmV4dCAhPSBsZW4ocGxhbi5Sb290cykgeworCQl0LkZhdGFsKCJ1bnBsYW5uZWQgcm9vdHMgYXBwZWFyZWQiKQorCX0KKwloYW5kbGVyIDo9ICZzaXRlSGFuZGxlcntzZWVkOiBjb25maWcuU2VlZCwgc2l0ZTogY29uZmlnLlNpdGV9CisJdmFyIHRvdGFsUGFnZXMsIHRvdGFsQnl0ZXMgaW50NjQKKwlmb3IgXywgcm9vdCA6PSByYW5nZSBwbGFuLlJvb3RzIHsKKwkJc2VlbiA6PSBtYXBbc3RyaW5nXWJvb2x7fQorCQlmb3IgXywgaXRlbSA6PSByYW5nZSByb290LlBhZ2VzIHsKKwkJCXBhdGggOj0gaXRlbS5VcmkKKwkJCWlmIGl0ZW0uRGVwdGggPT0gMCB7CisJCQkJcGF0aCA9ICIvIgorCQkJfQorCQkJd2FudCA6PSBmcm96ZW5Xb3JrQ292ZXJhZ2VQYWdlKGhhbmRsZXIsIHBhdGgsIGl0ZW0uVXJpKQorCQkJaGVhZGVyLCBfIDo9IGpzb24uTWFyc2hhbCh3YW50KQorCQkJaWYgc2VlbltpdGVtLlVyaV0gfHwgIWVxdWFsV29ya0NvdmVyYWdlUGFnZShpdGVtLlBhZ2UsIHdhbnQpIHx8IGl0ZW0uQnl0ZXMgIT0gaW50NjQobGVuKGhlYWRlcikrMSt3YW50LlNpemUpIHx8IGl0ZW0uRGVwdGggPiBzaXRlTWF4RGVwdGggeworCQkJCXQuRmF0YWwoImludmVudG9yeSBsb3N0IGV4YWN0IGRlZHVwbGljYXRlZCByZXByZXNlbnRhdGlvbiIsIGl0ZW0uVXJpKQorCQkJfQorCQkJc2VlbltpdGVtLlVyaV0gPSB0cnVlCisJCQl0b3RhbFBhZ2VzKysKKwkJCXRvdGFsQnl0ZXMgKz0gaXRlbS5CeXRlcworCQl9CisJCWlmIGxlbihyb290LlBhZ2VzKSA+IDErc2l0ZU1heERlcHRoKmludChjb25maWcuU2l0ZS5CcmFuY2hpbmcpIHsKKwkJCXQuRmF0YWwoImxpbmVhciBjb250aW51aW5nLWNoaWxkIGdyYXBoIGJlY2FtZSBleHBvbmVudGlhbCIpCisJCX0KKwl9CisJb3RoZXIsIGVyciA6PSBidWlsZFdvcmtDb3ZlcmFnZVBsYW4oY29uZmlnLCA2KnRpbWUuU2Vjb25kLCAxMjAqdGltZS5TZWNvbmQsIGRlZmF1bHRXb3JrQ292ZXJhZ2VMaW1pdHMoKSkKKwlpZiBlcnIgIT0gbmlsIHx8ICFyZWZsZWN0LkRlZXBFcXVhbChwbGFuLCBvdGhlcikgfHwgdG90YWxQYWdlcyAhPSBwbGFuLlRvdGFsUGFnZXMgfHwgdG90YWxCeXRlcyAhPSBwbGFuLlRvdGFsQnl0ZXMgeworCQl0LkZhdGFsKCJvZmZlcmVkIGludmVudG9yeSBpcyBub3QgaW5kZXBlbmRlbnRseSByZXByb2R1Y2libGUiLCBlcnIpCisJfQorfQorCisvLyBCb3VuZHMgZmFpbCBiZWZvcmUgYWxsb2NhdGlvbiBhbmQgbmV2ZXIgc2lsZW50bHkgY2xpcCBhIGRlbm9taW5hdG9yLgorZnVuYyBUZXN0V29ya0NvdmVyYWdlUGxhblJlamVjdHNVbnN1cHBvcnRlZFNoYXBlQW5kQnVkZ2V0cyh0ICp0ZXN0aW5nLlQpIHsKKwlmb3IgXywgbXV0YXRlIDo9IHJhbmdlIFtdZnVuYygqQ29uZmlnKXsKKwkJZnVuYyhjb25maWcgKkNvbmZpZykgeyBjb25maWcuU2l0ZS5CcmFuY2hpbmcgPSBtYXRoLkluZigxKSB9LAorCQlmdW5jKGNvbmZpZyAqQ29uZmlnKSB7IGNvbmZpZy5TaXRlLkJyYW5jaGluZyA9IDEgPDwgMzAgfSwKKwkJZnVuYyhjb25maWcgKkNvbmZpZykgeyBjb25maWcuU2l0ZS5NZWFuRGVwdGggPSBtYXRoLk5hTigpIH0sCisJCWZ1bmMoY29uZmlnICpDb25maWcpIHsgY29uZmlnLlNpdGUuTWluQm9keUJ5dGVzID0gLTEgfSwKKwkJZnVuYyhjb25maWcgKkNvbmZpZykgeyBjb25maWcuU2l0ZS5MYXJnZUZyYWN0aW9uID0gMS4xIH0sCisJCWZ1bmMoY29uZmlnICpDb25maWcpIHsgY29uZmlnLlNpdGUuTWF4Qm9keUJ5dGVzID0gbWF0aC5NYXhJbnQgfSwKKwkJZnVuYyhjb25maWcgKkNvbmZpZykgeyBjb25maWcuQ2xpZW50cy5NZWFuUGVyTWludXRlID0gbWF0aC5JbmYoMSkgfSwKKwkJZnVuYyhjb25maWcgKkNvbmZpZykgeyBjb25maWcuQ2xpZW50cy5Db25uZWN0aW9uc1BlckNyYXdsID0gMCB9LAorCQlmdW5jKGNvbmZpZyAqQ29uZmlnKSB7IGNvbmZpZy5DbGllbnRzLk1lYW5QZXJNaW51dGUgPSAwIH0sCisJfSB7CisJCWNvbmZpZyA6PSB3b3JrQ292ZXJhZ2VDb25maWdGb3JUZXN0KCkKKwkJbXV0YXRlKGNvbmZpZykKKwkJaWYgXywgZXJyIDo9IGJ1aWxkV29ya0NvdmVyYWdlUGxhbihjb25maWcsIDYqdGltZS5TZWNvbmQsIHRpbWUuU2Vjb25kLCBkZWZhdWx0V29ya0NvdmVyYWdlTGltaXRzKCkpOyBlcnIgPT0gbmlsIHsKKwkJCXQuRmF0YWwoInVuc3VwcG9ydGVkIHdvcmtsb2FkIGJlY2FtZSBhIHRydW5jYXRlZCBvciBlbXB0eSBvZmZlcmVkIHBsYW4iKQorCQl9CisJfQorCWZvciBfLCBtdXRhdGUgOj0gcmFuZ2UgW11mdW5jKCp3b3JrQ292ZXJhZ2VMaW1pdHMpeworCQlmdW5jKGxpbWl0cyAqd29ya0NvdmVyYWdlTGltaXRzKSB7IGxpbWl0cy5Sb290cyA9IDEgfSwKKwkJZnVuYyhsaW1pdHMgKndvcmtDb3ZlcmFnZUxpbWl0cykgeyBsaW1pdHMuUGFnZXMgPSAxIH0sCisJCWZ1bmMobGltaXRzICp3b3JrQ292ZXJhZ2VMaW1pdHMpIHsgbGltaXRzLlBhZ2VzUGVyUm9vdCA9IDIgfSwKKwkJZnVuYyhsaW1pdHMgKndvcmtDb3ZlcmFnZUxpbWl0cykgeyBsaW1pdHMuVGlja3MgPSAxIH0sCisJCWZ1bmMobGltaXRzICp3b3JrQ292ZXJhZ2VMaW1pdHMpIHsgbGltaXRzLlJhbmRvbURyYXdzID0gMSB9LAorCQlmdW5jKGxpbWl0cyAqd29ya0NvdmVyYWdlTGltaXRzKSB7IGxpbWl0cy5Cb2R5Qnl0ZXMgPSAxIH0sCisJCWZ1bmMobGltaXRzICp3b3JrQ292ZXJhZ2VMaW1pdHMpIHsgbGltaXRzLkludmVudG9yeUJ5dGVzID0gMSB9LAorCQlmdW5jKGxpbWl0cyAqd29ya0NvdmVyYWdlTGltaXRzKSB7IGxpbWl0cy5FeHBlY3RlZEJ5dGVzID0gMSB9LAorCX0geworCQlsaW1pdHMgOj0gZGVmYXVsdFdvcmtDb3ZlcmFnZUxpbWl0cygpCisJCW11dGF0ZSgmbGltaXRzKQorCQlpZiBfLCBlcnIgOj0gYnVpbGRXb3JrQ292ZXJhZ2VQbGFuKHdvcmtDb3ZlcmFnZUNvbmZpZ0ZvclRlc3QoKSwgNip0aW1lLlNlY29uZCwgdGltZS5TZWNvbmQsIGxpbWl0cyk7IGVyciA9PSBuaWwgeworCQkJdC5GYXRhbCgiaW52ZW50b3J5IGV4Y2VlZGVkIGFuIG93bmVyIGJvdW5kIikKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvd29ya19jb3ZlcmFnZV9zaGVsbF9maXh0dXJlX3Rlc3QuZ28gYi9jb25uZWN0L3NpbS1sYXRlbmN5L3dvcmtfY292ZXJhZ2Vfc2hlbGxfZml4dHVyZV90ZXN0LmdvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmNTQ5Y2NmODdlZTRlMDBhYzhiMTg3Mzk4NWI1NWQ2MzBlMzZhZTYKLS0tIC9kZXYvbnVsbAorKysgYi9jb25uZWN0L3NpbS1sYXRlbmN5L3dvcmtfY292ZXJhZ2Vfc2hlbGxfZml4dHVyZV90ZXN0LmdvCkBAIC0wLDAgKzEsNTEgQEAKKy8vIENvdmVyYWdlIHNoZWxsIGNvbnRyb2xzIHJldGFpbiB0aGUgYWN0dWFsIHRydXN0ZWQgcHJlZGljYXRlIGFuZCBzeW50aGV0aWMKKy8vIHJlcXVlc3QgZml4dHVyZXMgd2l0aG91dCBpbXBvcnRpbmcgbmV3ZXIgY29udHJvbC1wbGFuZSB0ZXN0IGltcGxlbWVudGF0aW9ucy4KK3BhY2thZ2UgbWFpbgorCitpbXBvcnQgKAorCSJvcyIKKwkic3RyaW5ncyIKKwkidGVzdGluZyIKKykKKworZnVuYyBnMlNjcmlwdEZ1bmN0aW9uKHQgKnRlc3RpbmcuVCwgcGF0aCwgbmFtZSBzdHJpbmcpIHN0cmluZyB7CisJdC5IZWxwZXIoKQorCWNvbnRlbnQsIGVyciA6PSBvcy5SZWFkRmlsZShwYXRoKQorCWlmIGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJbWFya2VyIDo9ICJcbiIgKyBuYW1lICsgIigpIHtcbiIKKwlzdGFydCA6PSBzdHJpbmdzLkluZGV4KHN0cmluZyhjb250ZW50KSwgbWFya2VyKQorCWlmIHN0YXJ0IDwgMCB7CisJCXQuRmF0YWwoImcyIHNjcmlwdCBmdW5jdGlvbiBpcyBtaXNzaW5nIiwgbmFtZSkKKwl9CisJZW5kIDo9IHN0cmluZ3MuSW5kZXgoc3RyaW5nKGNvbnRlbnRbc3RhcnQrMTpdKSwgIlxufVxuIikKKwlpZiBlbmQgPCAwIHsKKwkJdC5GYXRhbCgiZzIgc2NyaXB0IGZ1bmN0aW9uIGlzIGluY29tcGxldGUiLCBuYW1lKQorCX0KKwlyZXR1cm4gc3RyaW5nKGNvbnRlbnRbc3RhcnQrMSA6IHN0YXJ0KzErZW5kKzNdKQorfQorCitmdW5jIGV2YWx1YXRvclJlcXVlc3RTY2hlbWFGaXh0dXJlKCkgbWFwW3N0cmluZ11hbnkgeworCXJlcXVlc3QgOj0gbWFwW3N0cmluZ11hbnl7InNjaGVtYSI6IDF9CisJZm9yIF8sIGtleSA6PSByYW5nZSBzdHJpbmdzLkZpZWxkcyhgYXBpX2ltYWdlX2RpZ2VzdCBhcnRpZmFjdF9kaXJlY3RvcnkgYXR0ZW1wdCBiYXNlX3NoYSBjb21wZXRpdGlvbl9pZAorCQljb25maWdfbG9jYWxfZGlyZWN0b3J5IGV2YWx1YXRvcl9pbWFnZV9kaWdlc3Qgam9iX2lkIHBhdGNoX3BhdGggcGF0Y2hfc2hhMjU2IHByb3ZpZGVyc19wYXRoCisJCXByb3ZpZGVyc19zaGEyNTYgcm91bmRfYmFzZWxpbmVfcGF0aCByb3VuZF9iYXNlbGluZV9zaGEyNTYgcm91bmRfaWQgcm91bmRfc2VlZF9oZXggc2NvcmVyX3ZlcnNpb24KKwkJc291cmNlX2Vwb2NoIHZhdWx0X2xvY2FsX2RpcmVjdG9yeSB3b3JrZXJfaW1hZ2VfZGlnZXN0YCkgeworCQlyZXF1ZXN0W2tleV0gPSAic3ludGhldGljIgorCX0KKwlyZXF1ZXN0WyJwYXRjaF9wb2xpY3kiXSA9IG1hcFtzdHJpbmddYW55eworCQkiYWxsb3dlZF9wYXRocyI6ICAgW11zdHJpbmd7InNlcnZlci8qKiIsICJjb25uZWN0LyoqIn0sCisJCSJmb3JiaWRkZW5fcGF0aHMiOiBbXXN0cmluZ3sic2VydmVyL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvKioifSwgIm1heF9wYXRjaF9ieXRlcyI6IDI2MjE0NCwKKwl9CisJcG9saWN5IDo9IG1hcFtzdHJpbmddYW55e30KKwlmb3IgXywga2V5IDo9IHJhbmdlIHN0cmluZ3MuRmllbGRzKGBhbm5vdW5jZV90aW1lb3V0X21zIGFwaV9wb3J0IGFycml2YWxzX3Blcl9taW51dGUgY2xpZW50X3Bvb2xfc2l6ZQorCQljbGllbnRfd2FybXVwX3RpbWVvdXRfbXMgY29uZmlnX2xvY2FsX3NoYTI1NiBkdXJhdGlvbl9tcyBleGNoYW5nZV9ob3N0cyBmbGVldF9zaGFyZHMgaGFyZHdhcmVfaWQKKwkJaG9zdF9xdWFsaWZpY2F0aW9uX3NoYTI1NiBpbXBhaXJtZW50X2VuYWJsZWQgcGlwZWxpbmVfaW50ZXJ2YWxfbXMgcHJld2FybV9tcyBwcm92aWRlcl9jb3VudAorCQlxdWFsaXR5X3dpbmRvd19zaXplIHF1ZXVlX2xpbWl0IHJhbXBfbXMgcmVwbGljYXRlcyByZXF1ZXN0X3RpbWVvdXRfbXMgc2NvcmVfdGltZW91dF9zZWNvbmRzCisJCXNjb3Jlcl9zaGEyNTYgc2V0dGxlX21zIHNpbXVsYXRvcl9zaGEyNTYgc2l0ZV9saXN0ZW4gdGFrZW92ZXJfbWFyZ2luIHRlc3RfdGltZW91dF9tcyB2YXVsdF9sb2NhbF9zaGEyNTZgKSB7CisJCXBvbGljeVtrZXldID0gMAorCX0KKwlyZXF1ZXN0WyJldmFsdWF0aW9uX3BvbGljeSJdID0gcG9saWN5CisJcmV0dXJuIHJlcXVlc3QKK30KZGlmZiAtLWdpdCBhL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvd29ya19jb3ZlcmFnZV90ZXN0LmdvIGIvY29ubmVjdC9zaW0tbGF0ZW5jeS93b3JrX2NvdmVyYWdlX3Rlc3QuZ28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjExODgxMTM3MmE3N2Y2ZGM4NTRiMjYxYjVlNzIxZTZkNjkyOTg5ZgotLS0gL2Rldi9udWxsCisrKyBiL2Nvbm5lY3Qvc2ltLWxhdGVuY3kvd29ya19jb3ZlcmFnZV90ZXN0LmdvCkBAIC0wLDAgKzEsMTI1IEBACitwYWNrYWdlIG1haW4KKworLy8gUHVyZSBjb2hvcnQvcmVzcG9uc2UgY29udHJvbHMgZXhlcmNpc2Ugb3JpZ2luYWwgZGVhZGxpbmVzLCBkcmFpbiBjcmVkaXQgYW5kCisvLyBjYW5vbmljYWwgcmVzcG9uc2UgY29tcGxldGVuZXNzIHdpdGhvdXQgYSBwcm92aWRlciBvciBuZXR3b3JrIGxpc3RlbmVyLgorCitpbXBvcnQgKAorCSJidWZpbyIKKwkiYnl0ZXMiCisJImNvbnRleHQiCisJImVuY29kaW5nL2pzb24iCisJImlvIgorCSJuZXQvaHR0cCIKKwkic3RyaW5ncyIKKwkidGVzdGluZyIKKwkidGVzdGluZy9zeW5jdGVzdCIKKwkidGltZSIKKykKKworLy8gUHJvZHVjZXMgZXhhY3QgZXhwZWN0ZWQgYnl0ZXMgd2l0aG91dCByZXVzaW5nIHRoZSByZXNwb25zZSB2YWxpZGF0b3IuCitmdW5jIHdvcmtDb3ZlcmFnZUJvZHlGb3JUZXN0KHBhZ2Ugc2l0ZVBhZ2UpIFtdYnl0ZSB7CisJaGVhZGVyLCBfIDo9IGpzb24uTWFyc2hhbChwYWdlKQorCWJvZHkgOj0gYXBwZW5kKGhlYWRlciwgJ1xuJykKKwlmb3Igb2Zmc2V0IDo9IDA7IG9mZnNldCA8IHBhZ2UuU2l6ZTsgb2Zmc2V0KysgeworCQlib2R5ID0gYXBwZW5kKGJvZHksIGJ5dGUoJ2EnKyhvZmZzZXQlKDMyPDwxMCkpJTI2KSkKKwl9CisJcmV0dXJuIGJvZHkKK30KKworLy8gRXhwZWN0ZWQgYnl0ZXMgaW5jbHVkZSB0aGUgSlNPTiBsaW5lLCBub3QganVzdCB0aGUgYWR2ZXJ0aXNlZCBwYWRkaW5nLgorZnVuYyBUZXN0V29ya0NvdmVyYWdlUmVzcG9uc2VSZWplY3RzUGFydGlhbEZvcmdlZEFuZEFtYmlndW91c0JvZGllcyh0ICp0ZXN0aW5nLlQpIHsKKwlwYWdlIDo9IHNpdGVQYWdle1VybHM6IFtdc3RyaW5neyIvcC8wL3N5bnRoZXRpYyJ9LCBTaXplOiAzMjc3OX0KKwlib2R5IDo9IHdvcmtDb3ZlcmFnZUJvZHlGb3JUZXN0KHBhZ2UpCisJZXhwZWN0ZWQgOj0gd29ya0NvdmVyYWdlUGFnZXtVcmk6ICIvP2NyYXdsPTAiLCBQYWdlOiBwYWdlLCBCeXRlczogaW50NjQobGVuKGJvZHkpKX0KKwlmb3IgXywgYm9keUJ5dGVzIDo9IHJhbmdlIFtdW11ieXRle2JvZHksIGJvZHlbOmxlbihib2R5KS0xXSwgYXBwZW5kKGFwcGVuZChbXWJ5dGV7fSwgYm9keS4uLiksICd4JyksIGJ5dGVzLlJlcGxhY2UoYm9keSwgW11ieXRlKCJzeW50aGV0aWMiKSwgW11ieXRlKCJkaWZmZXJlbnQiKSwgMSksIGJ5dGVzLlJlcGxhY2UoYm9keSwgW11ieXRlKGAic2l6ZSI6MzI3NzlgKSwgW11ieXRlKGAic2l6ZSI6MzI3NzksInNpemUiOjMyNzc5YCksIDEpLCBieXRlcy5SZXBsYWNlKGJvZHksIFtdYnl0ZShgInVybHMiYCksIFtdYnl0ZShgIlVybHMiYCksIDEpLCBieXRlcy5SZXBsYWNlKGJvZHksIFtdYnl0ZSgiYWJjIiksIFtdYnl0ZSgieHl6IiksIDEpfSB7CisJCXJlc3BvbnNlIDo9ICZodHRwLlJlc3BvbnNle1N0YXR1c0NvZGU6IDIwMCwgQ29udGVudExlbmd0aDogaW50NjQobGVuKGJvZHlCeXRlcykpLCBCb2R5OiBpby5Ob3BDbG9zZXIoYnl0ZXMuTmV3UmVhZGVyKGJvZHlCeXRlcykpfQorCQlyZWFkLCBlcnIgOj0gcmVhZEV4cGVjdGVkU2l0ZVJlc3BvbnNlKHJlc3BvbnNlLCBleHBlY3RlZCkKKwkJd2FudCA6PSBieXRlcy5FcXVhbChib2R5Qnl0ZXMsIGJvZHkpCisJCWlmIGVyciAhPSBuaWwgfHwgcmVhZC5jb21wbGV0ZSAhPSB3YW50IHx8IHJlYWQucmVjZWl2ZWRCeXRlcyA+IGV4cGVjdGVkLkJ5dGVzKzEgeworCQkJdC5GYXRhbCgidW5leHBlY3RlZCBjb21wbGV0ZS9wYXJ0aWFsIHJlcHJlc2VudGF0aW9uIGNsYXNzaWZpY2F0aW9uIiwgd2FudCwgcmVhZCwgZXJyKQorCQl9CisJfQorCWZvciBfLCBzdGF0dXMgOj0gcmFuZ2UgW11pbnR7MCwgMzAyLCA0MDQsIDUwM30geworCQlyZWFkLCBlcnIgOj0gcmVhZEV4cGVjdGVkU2l0ZVJlc3BvbnNlKCZodHRwLlJlc3BvbnNle1N0YXR1c0NvZGU6IHN0YXR1cywgQ29udGVudExlbmd0aDogaW50NjQobGVuKGJvZHkpKSwgQm9keTogaW8uTm9wQ2xvc2VyKGJ5dGVzLk5ld1JlYWRlcihib2R5KSl9LCBleHBlY3RlZCkKKwkJaWYgZXJyICE9IG5pbCB8fCByZWFkLmNvbXBsZXRlIHsKKwkJCXQuRmF0YWwoIm5vbi0yMDAgcmVzcG9uc2UgcmVjZWl2ZWQgY29tcGxldGlvbiBjcmVkaXQiLCBzdGF0dXMsIGVycikKKwkJfQorCX0KK30KKworLy8gQSBsYXRlIGNvbXBsZXRpb24gY2Fubm90IGV4dGVuZCBhIHJvb3QgY2xvY2s7IHBvc3Qtd2luZG93IGRlc2NlbmRhbnRzIG1heQorLy8gc3RpbGwgZmluaXNoIHdpdGhpbiB0aGF0IG9yaWdpbmFsIGNsb2NrLiBNaXNzaW5nIHJvb3RzIG5ldmVyIGRpc2FwcGVhci4KK2Z1bmMgVGVzdFdvcmtDb3ZlcmFnZUNvbGxlY3RvcktlZXBzVW5sYXVuY2hlZERlc2NlbmRhbnRzQW5kRHJhaW5DcmVkaXQodCAqdGVzdGluZy5UKSB7CisJcGxhbiwgZXJyIDo9IGJ1aWxkV29ya0NvdmVyYWdlUGxhbih3b3JrQ292ZXJhZ2VDb25maWdGb3JUZXN0KCksIDYqdGltZS5TZWNvbmQsIDEyMCp0aW1lLlNlY29uZCwgZGVmYXVsdFdvcmtDb3ZlcmFnZUxpbWl0cygpKQorCWlmIGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJc3RhcnQgOj0gdGltZS5Vbml4KDEwMDAsIDczMSkKKwljb2xsZWN0b3IsIGVyciA6PSBuZXdXb3JrQ292ZXJhZ2VDb2xsZWN0b3IocGxhbiwgc3RhcnQpCisJaWYgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoZXJyKQorCX0KKwliZWZvcmUgOj0gY29sbGVjdG9yLnJlcG9ydCgpCisJaWYgYmVmb3JlLk9mZmVyZWRSb290cyAhPSBpbnQ2NChsZW4ocGxhbi5Sb290cykpIHx8IGJlZm9yZS5Db21wbGV0ZWRQYWdlcyAhPSAwIHx8IGJlZm9yZS5FeHBlY3RlZFBhZ2VzICE9IHBsYW4uVG90YWxQYWdlcyB7CisJCXQuRmF0YWwoInVubGF1bmNoZWQgb2ZmZXJlZCByb290cyBvciBkZXNjZW5kYW50cyB3ZXJlIGVyYXNlZCIpCisJfQorCXJvb3QgOj0gMAorCWZvciBsZW4ocGxhbi5Sb290c1tyb290XS5QYWdlcykgPCAyICYmIHJvb3QrMSA8IGxlbihwbGFuLlJvb3RzKSB7CisJCXJvb3QrKworCX0KKwlpZiBsZW4ocGxhbi5Sb290c1tyb290XS5QYWdlcykgPCAyIHsKKwkJdC5GYXRhbCgic3ludGhldGljIGZpeHR1cmUgaGFzIG5vIGV4cGVjdGVkIGRlc2NlbmRhbnQiKQorCX0KKwlhZG1pc3Npb24gOj0gc3RhcnQuQWRkKHRpbWUuRHVyYXRpb24ocGxhbi5Sb290c1tyb290XS5PZmZzZXROcykpCisJZGVhZGxpbmUgOj0gYWRtaXNzaW9uLkFkZCh0aW1lLkR1cmF0aW9uKHBsYW4uVGltZW91dE5zKSkKKwlpZiBjb2xsZWN0b3IucmVjb3JkKHJvb3QsIDAsIDAsIGFkbWlzc2lvbi5BZGQoLXRpbWUuTmFub3NlY29uZCksIGFkbWlzc2lvbikgfHwgY29sbGVjdG9yLnJlY29yZChyb290LCAwLCAwLCBhZG1pc3Npb24sIGRlYWRsaW5lKSB7CisJCXQuRmF0YWwoInByZS1hZG1pc3Npb24gb3IgYXQtZGVhZGxpbmUgcmVzcG9uc2UgZWFybmVkIGNyZWRpdCIpCisJfQorCWlmICFjb2xsZWN0b3IucmVjb3JkKHJvb3QsIDAsIDAsIGFkbWlzc2lvbiwgYWRtaXNzaW9uLkFkZCh0aW1lLk1pbGxpc2Vjb25kKSkgfHwgY29sbGVjdG9yLnJlY29yZChyb290LCAwLCAxLCBhZG1pc3Npb24sIGFkbWlzc2lvbi5BZGQodGltZS5TZWNvbmQpKSB7CisJCXQuRmF0YWwoImV4YWN0LXN0YXJ0IGFjY2VwdGFuY2Ugb3IgZHVwbGljYXRlIHN1cHByZXNzaW9uIGZhaWxlZCIpCisJfQorCWlmICFjb2xsZWN0b3IucmVjb3JkKHJvb3QsIDEsIDEsIHN0YXJ0LkFkZCg3KnRpbWUuU2Vjb25kKSwgc3RhcnQuQWRkKDgqdGltZS5TZWNvbmQpKSB7CisJCXQuRmF0YWwoInBvc3Qtd2luZG93IGRyYWluIHdpdGhpbiB0aGUgb3JpZ2luYWwgcm9vdCBkZWFkbGluZSBsb3N0IGNyZWRpdCIpCisJfQorCWlmIF8sIF8sIG9rIDo9IGNvbGxlY3Rvci5wYWdlKDAsICIvcC8wL2ZvcmdlZCIsIDEpOyBvayB7CisJCXQuRmF0YWwoInJlY2VpdmVkIGZvcmVpZ24gVVJMIGNyZWF0ZWQgZXhwZWN0ZWQgd29yayIpCisJfQorCXJlcG9ydCA6PSBjb2xsZWN0b3IucmVwb3J0KCkKKwlpZiByZXBvcnQuQ29tcGxldGVkUGFnZXMgIT0gMiB8fCByZXBvcnQuRXhwZWN0ZWRQYWdlcyAhPSBiZWZvcmUuRXhwZWN0ZWRQYWdlcyB8fCByZXBvcnQuRXhwZWN0ZWRCeXRlcyAhPSBiZWZvcmUuRXhwZWN0ZWRCeXRlcyB8fCByZXBvcnQuT2ZmZXJlZFJvb3RzICE9IGJlZm9yZS5PZmZlcmVkUm9vdHMgeworCQl0LkZhdGFsKCJyZXNwb25zZSBzdWNjZXNzIGNoYW5nZWQgb2ZmZXJlZCB3b3JrIGluc3RlYWQgb2YgY29tcGxldGlvbiBjcmVkaXQiLCByZXBvcnQpCisJfQorfQorCisvLyBBY3R1YWwgZHJpdmVyIGNvbnRleHQgY3JlYXRpb24gaXMgdGVzdGVkIHVuZGVyIHZpcnR1YWwgdGltZS4gVGhlIGRlbGF5ZWQKKy8vIGRyaXZlciByZWNlaXZlcyBvbmx5IHRoZSByZW1haW5pbmcgb3JpZ2luYWwgYnVkZ2V0LCBub3QgYSBuZXcgZnVsbCB0aW1lb3V0LgorZnVuYyBUZXN0V29ya0NvdmVyYWdlTGF0ZURyaXZlckRvZXNOb3RSZXNldFBsYW5uZWREZWFkbGluZSh0ICp0ZXN0aW5nLlQpIHsKKwlzeW5jdGVzdC5UZXN0KHQsIGZ1bmModCAqdGVzdGluZy5UKSB7CisJCXN0YXJ0IDo9IHRpbWUuTm93KCkKKwkJcGFnZSA6PSBzaXRlUGFnZXtVcmxzOiBbXXN0cmluZ3t9LCBTaXplOiAzfQorCQlib2R5IDo9IHdvcmtDb3ZlcmFnZUJvZHlGb3JUZXN0KHBhZ2UpCisJCXBsYW4gOj0gJndvcmtDb3ZlcmFnZVBsYW57S2luZDogInNlZWRlZC1jcmF3bC1jb3ZlcmFnZS92MSIsIER1cmF0aW9uTnM6IGludDY0KDMgKiB0aW1lLlNlY29uZCksIFRpbWVvdXROczogaW50NjQoMiAqIHRpbWUuU2Vjb25kKSwgU2hhMjU2OiBzdHJpbmdzLlJlcGVhdCgiYSIsIDY0KSwgVG90YWxQYWdlczogMSwgVG90YWxCeXRlczogaW50NjQobGVuKGJvZHkpKSwgUm9vdHM6IFtdd29ya0NvdmVyYWdlUm9vdHt7T2Zmc2V0TnM6IDAsIFBhZ2VzOiBbXXdvcmtDb3ZlcmFnZVBhZ2V7e1VyaTogIi8/Y3Jhd2w9MCIsIFBhZ2U6IHBhZ2UsIEJ5dGVzOiBpbnQ2NChsZW4oYm9keSkpfX19fX0KKwkJY29sbGVjdG9yLCBlcnIgOj0gbmV3V29ya0NvdmVyYWdlQ29sbGVjdG9yKHBsYW4sIHN0YXJ0KQorCQlpZiBlcnIgIT0gbmlsIHsKKwkJCXQuRmF0YWwoZXJyKQorCQl9CisJCXZhciBkZWFkbGluZSB0aW1lLlRpbWUKKwkJdHJhbnNwb3J0IDo9IHJvdW5kVHJpcEZ1bmMoZnVuYyhyZXF1ZXN0ICpodHRwLlJlcXVlc3QpICgqaHR0cC5SZXNwb25zZSwgZXJyb3IpIHsKKwkJCWRlYWRsaW5lLCBfID0gcmVxdWVzdC5Db250ZXh0KCkuRGVhZGxpbmUoKQorCQkJPC1yZXF1ZXN0LkNvbnRleHQoKS5Eb25lKCkKKwkJCXJldHVybiBuaWwsIHJlcXVlc3QuQ29udGV4dCgpLkVycigpCisJCX0pCisJCWRyaXZlciA6PSAmQ2xpZW50RHJpdmVye2N0eDogY29udGV4dC5CYWNrZ3JvdW5kKCksIGNvbmZpZzogd29ya0NvdmVyYWdlQ29uZmlnRm9yVGVzdCgpLCBzaXRlQWRkcjogInN5bnRoZXRpYy5pbnZhbGlkIiwgb3V0OiBidWZpby5OZXdXcml0ZXIoaW8uRGlzY2FyZCksIGFycml2YWxzU3RvcDogbWFrZShjaGFuIHN0cnVjdHt9KSwgd29ya0NvdmVyYWdlOiBjb2xsZWN0b3IsIGNsaWVudHM6IFtdKnBvb2xlZENsaWVudHt7bGFiZWw6ICJzeW50aGV0aWMtY2xpZW50IiwgaHR0cENsaWVudDogJmh0dHAuQ2xpZW50e1RyYW5zcG9ydDogdHJhbnNwb3J0fX19fQorCQl0aW1lLlNsZWVwKHRpbWUuU2Vjb25kKQorCQlkb25lIDo9IG1ha2UoY2hhbiBlcnJvciwgMSkKKwkJZ28gZnVuYygpIHsgZG9uZSA8LSBkcml2ZXIuUnVuKCkgfSgpCisJCXRpbWUuU2xlZXAoMyAqIHRpbWUuU2Vjb25kKQorCQlkcml2ZXIuU3RvcEFycml2YWxzKCkKKwkJaWYgZXJyIDo9IDwtZG9uZTsgZXJyICE9IG5pbCB8fCAhZGVhZGxpbmUuRXF1YWwoc3RhcnQuQWRkKDIqdGltZS5TZWNvbmQpKSB8fCBjb2xsZWN0b3IucmVwb3J0KCkuQ29tcGxldGVkUGFnZXMgIT0gMCB7CisJCQl0LkZhdGFsKCJsYXRlIGRyaXZlciBleHRlbmRlZCB0aGUgb3JpZ2luYWwgY3Jhd2wgYnVkZ2V0IiwgZGVhZGxpbmUsIGVycikKKwkJfQorCX0pCisJLy8gVGhlIGV4aXN0aW5nIG1hbmRhdG9yeSBHNyByb290IGFsc28gZXhlY3V0ZXMgYm90aCBwcm90ZWN0ZWQtY2xvY2sKKwkvLyByZWdyZXNzaW9ucy4gTmV3bHkgY29tcGlsZWQgc3VwcGxlbWVudGFsIGZpbGVzIGFsb25lIGFyZSBub3QgcHJvb2YuCisJYXNzZXJ0Q292ZXJhZ2VSdW5DbG9ja0Nhbm5vdFNob3J0ZW5BY2NlcHRlZE1lYXN1cmVtZW50KHQpCisJYXNzZXJ0Q292ZXJhZ2VSdW5DbG9ja0Nhbm5vdFBydW5lQWNjZXB0ZWRPZmZlcmVkQ29ob3J0KHQpCit9CmRpZmYgLS1naXQgYS9jb250cm9sbGVyL2NvbXBldGl0aW9uX3RydXN0ZWRfaW5zdHJ1bWVudF9hcHByb3ZhbC5nbyBiL2NvbnRyb2xsZXIvY29tcGV0aXRpb25fdHJ1c3RlZF9pbnN0cnVtZW50X2FwcHJvdmFsLmdvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyYmI0NDcwMjVlNmRhMThmOTE2ZjViOWVkZTYxOTAxZTEyYjU4NDkKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cm9sbGVyL2NvbXBldGl0aW9uX3RydXN0ZWRfaW5zdHJ1bWVudF9hcHByb3ZhbC5nbwpAQCAtMCwwICsxLDc2IEBACisvLyBQdXJlIG9wZXJhdG9yLWFwcHJvdmFsIHZhbGlkYXRpb24gaXMgdXNhYmxlIGJ5IHRoZSBmcm96ZW4tc291cmNlIGluc3RydW1lbnQKKy8vIGltYWdlIHdpdGhvdXQgaW1wb3J0aW5nIG5ld2VyIFNldHRpbmdzLCBzb3VyY2UgYXV0aG9yaXphdGlvbiBvciBidWlsZCBjb2RlLgorcGFja2FnZSBjb250cm9sbGVyCisKK2ltcG9ydCAoCisJImNyeXB0by9zaGEyNTYiCisJImVuY29kaW5nL2hleCIKKwkiZXJyb3JzIgorCSJwYXRoIgorCSJzbGljZXMiCisJInN0cmluZ3MiCisKKwkiZ2l0aHViLmNvbS91cm5ldHdvcmsvc2VydmVyL21vZGVsIgorKQorCisvLyBBcHByb3ZhbCBjb250ZW50IGlzIGluZGVwZW5kZW50IG9mIHRoZSB1bmtub3duIHdpbm5lciBhbmQgYWRtaXRzIG9ubHkKKy8vIGxpdGVyYWwgY29tcGV0aXRpb24taW5zdHJ1bWVudCBmaWxlcywgbmV2ZXIgYSBwcm9kdWN0IGltcGxlbWVudGF0aW9uIGZpbGUuCitmdW5jIFZhbGlkYXRlQ29tcGV0aXRpb25UcnVzdGVkSW5zdHJ1bWVudEFwcHJvdmFsKGFwcHJvdmFsICptb2RlbC5Db21wZXRpdGlvblRydXN0ZWRJbnN0cnVtZW50QXBwcm92YWwpIGVycm9yIHsKKwlpZiBhcHByb3ZhbCA9PSBuaWwgfHwgYXBwcm92YWwuU2NoZW1hICE9IDEgfHwgIXRva2VuTmFtZVBhdHRlcm4uTWF0Y2hTdHJpbmcoYXBwcm92YWwuQXBwcm92YWxJZCkgfHwgYXBwcm92YWwuVGFyZ2V0RXBvY2ggIT0gMiB8fAorCQlhcHByb3ZhbC5HMlZvbHVtZVBvbGljeSAhPSBtb2RlbC5Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TWluaW11bVdvcmsgfHwgIWltYWdlRGlnZXN0UGF0dGVybi5NYXRjaFN0cmluZyhhcHByb3ZhbC5JbnN0cnVtZW50QmFzZUltYWdlRGlnZXN0KSB8fAorCQkhc2hhMjU2UGF0dGVybi5NYXRjaFN0cmluZyhhcHByb3ZhbC5BcHByb3ZhbFNoYTI1NikgfHwgIXNoYTI1NlBhdHRlcm4uTWF0Y2hTdHJpbmcoYXBwcm92YWwuUGF0Y2hTaGEyNTYpIHx8IGxlbihhcHByb3ZhbC5QYXRjaCkgPT0gMCB8fCBsZW4oYXBwcm92YWwuUHJvdGVjdGVkUGF0aHMpID09IDAgeworCQlyZXR1cm4gZXJyb3JzLk5ldygidHJ1c3RlZCBpbnN0cnVtZW50IHJlcXVpcmVzIGEgc2VwYXJhdGVseSBhcHByb3ZlZCBleGFjdCBwYXRjaCBhbmQgb3JpZ2luYWwgaW5zdHJ1bWVudCBwcm92ZW5hbmNlIikKKwl9CisJaWYgXywgZXJyIDo9IG1vZGVsLkNvbXBldGl0aW9uU2NvcmVyVmVyc2lvbkZvcldvcmtDb3ZlcmFnZShhcHByb3ZhbC5HMlZvbHVtZVBvbGljeSwgYXBwcm92YWwuV29ya0NvdmVyYWdlUG9saWN5KTsgZXJyICE9IG5pbCB7CisJCXJldHVybiBlcnIKKwl9CisJbG9jaywgZXJyIDo9IG1vZGVsLkNvbXBldGl0aW9uU291cmNlTG9ja0RpZ2VzdEZvck1vZGUoYXBwcm92YWwuSW5zdHJ1bWVudEJhc2VDb21taXRzLCBmYWxzZSkKKwlpZiBlcnIgIT0gbmlsIHx8IGxvY2sgIT0gYXBwcm92YWwuSW5zdHJ1bWVudEJhc2VTb3VyY2VMb2NrU2hhMjU2IHsKKwkJcmV0dXJuIGVycm9ycy5OZXcoInRydXN0ZWQgaW5zdHJ1bWVudCBvcmlnaW5hbCBzb3VyY2UgZ3JhcGggaXMgaW5jb21wbGV0ZSBvciBjaGFuZ2VkIikKKwl9CisJZGlnZXN0IDo9IHNoYTI1Ni5TdW0yNTYoYXBwcm92YWwuUGF0Y2gpCisJaWYgaGV4LkVuY29kZVRvU3RyaW5nKGRpZ2VzdFs6XSkgIT0gYXBwcm92YWwuUGF0Y2hTaGEyNTYgeworCQlyZXR1cm4gZXJyb3JzLk5ldygidHJ1c3RlZCBpbnN0cnVtZW50IHBhdGNoIGJ5dGVzIGRpZmZlciBmcm9tIG9wZXJhdG9yIGFwcHJvdmFsIikKKwl9CisJYXBwcm92ZWQgOj0gKmFwcHJvdmFsCisJYXBwcm92ZWQuQXBwcm92YWxTaGEyNTYgPSAiIgorCWFwcHJvdmFsRGlnZXN0LCBlcnIgOj0gbW9kZWwuQ29tcGV0aXRpb25BdXRvbWF0aW9uRGlnZXN0KGFwcHJvdmVkKQorCWlmIGVyciAhPSBuaWwgfHwgYXBwcm92YWxEaWdlc3QgIT0gYXBwcm92YWwuQXBwcm92YWxTaGEyNTYgeworCQlyZXR1cm4gZXJyb3JzLk5ldygidHJ1c3RlZCBpbnN0cnVtZW50IGFwcHJvdmFsIGRpZ2VzdCBkb2VzIG5vdCBiaW5kIGl0cyBjb21wbGV0ZSBjb250ZW50IikKKwl9CisJZm9yIGluZGV4LCBmaWxlIDo9IHJhbmdlIGFwcHJvdmFsLlByb3RlY3RlZFBhdGhzIHsKKwkJaWYgZmlsZSA9PSAiIiB8fCBwYXRoLkNsZWFuKGZpbGUpICE9IGZpbGUgfHwgc3RyaW5ncy5IYXNQcmVmaXgoZmlsZSwgIi8iKSB8fCBzdHJpbmdzLkhhc1ByZWZpeChmaWxlLCAiLi4vIikgfHwKKwkJCXN0cmluZ3MuQ29udGFpbnNBbnkoZmlsZSwgIlxcXHJcblx4MDBcdCAqP1tdOlwiIikgfHwgKGluZGV4ID4gMCAmJiBhcHByb3ZhbC5Qcm90ZWN0ZWRQYXRoc1tpbmRleC0xXSA+PSBmaWxlKSB8fAorCQkJIShzdHJpbmdzLkhhc1ByZWZpeChmaWxlLCAiY29ubmVjdC9zaW0tbGF0ZW5jeS8iKSB8fCBzdHJpbmdzLkhhc1ByZWZpeChmaWxlLCAiY29udHJvbGxlci9jb21wZXRpdGlvbl8iKSB8fAorCQkJCXN0cmluZ3MuSGFzUHJlZml4KGZpbGUsICJtb2RlbC9jb21wZXRpdGlvbl8iKSB8fCBzdHJpbmdzLkhhc1ByZWZpeChmaWxlLCAiY29tcGV0aXRpb25fIikpIHx8CisJCQkhKHN0cmluZ3MuSGFzU3VmZml4KGZpbGUsICIuZ28iKSB8fCBzdHJpbmdzLkhhc1N1ZmZpeChmaWxlLCAiLnNoIikpIHsKKwkJCXJldHVybiBlcnJvcnMuTmV3KCJ0cnVzdGVkIGluc3RydW1lbnQgcHJvdGVjdGVkX3BhdGhzIG11c3QgYmUgc29ydGVkIHVuaXF1ZSBsaXRlcmFsIGNvbXBldGl0aW9uLWluc3RydW1lbnQgZmlsZXMiKQorCQl9CisJCWZvciBfLCBzZWdtZW50IDo9IHJhbmdlIHN0cmluZ3MuU3BsaXQoZmlsZSwgIi8iKSB7CisJCQlpZiBzdHJpbmdzLkVxdWFsRm9sZChzZWdtZW50LCAiLmdpdCIpIHx8IHN0cmluZ3MuRXF1YWxGb2xkKHNlZ21lbnQsICIuaGciKSB8fCBzdHJpbmdzLkVxdWFsRm9sZChzZWdtZW50LCAiLnN2biIpIHsKKwkJCQlyZXR1cm4gZXJyb3JzLk5ldygidHJ1c3RlZCBpbnN0cnVtZW50IGNhbm5vdCBuYW1lIHJlcG9zaXRvcnkgbWV0YWRhdGEiKQorCQkJfQorCQl9CisJfQorCS8vIEdpdCdzIG93biBwYXJzZXIgYXBwbGllcyBodW5rcyBsYXRlciwgaW4gYSBjcmVkZW50aWFsbGVzcyBpc29sYXRlZCBpbmRleC4KKwkvLyBUaGlzIGNlbnN1cyBmb3JiaWRzIHF1b3RlZCBwYXRocywgcmVuYW1lcywgYmluYXJ5IHBheWxvYWRzIGFuZCBkZWxldGlvbnMuCisJcGF0aHMgOj0gW11zdHJpbmd7fQorCWZvciBfLCBsaW5lIDo9IHJhbmdlIHN0cmluZ3MuU3BsaXQoc3RyaW5nKGFwcHJvdmFsLlBhdGNoKSwgIlxuIikgeworCQlpZiBzdHJpbmdzLkhhc1ByZWZpeChsaW5lLCAiZGlmZiAtLWdpdCAiKSB7CisJCQlmaWVsZHMgOj0gc3RyaW5ncy5TcGxpdChsaW5lLCAiICIpCisJCQlpZiBsZW4oZmllbGRzKSAhPSA0IHx8ICFzdHJpbmdzLkhhc1ByZWZpeChmaWVsZHNbMl0sICJhLyIpIHx8ICFzdHJpbmdzLkhhc1ByZWZpeChmaWVsZHNbM10sICJiLyIpIHx8IGZpZWxkc1syXVsyOl0gIT0gZmllbGRzWzNdWzI6XSB8fCAhc2xpY2VzLkNvbnRhaW5zKGFwcHJvdmFsLlByb3RlY3RlZFBhdGhzLCBmaWVsZHNbMl1bMjpdKSB7CisJCQkJcmV0dXJuIGVycm9ycy5OZXcoInRydXN0ZWQgaW5zdHJ1bWVudCBwYXRjaCBoYXMgYW4gdW5hcHByb3ZlZCBvciBhbWJpZ3VvdXMgcGF0aCIpCisJCQl9CisJCQlwYXRocyA9IGFwcGVuZChwYXRocywgZmllbGRzWzJdWzI6XSkKKwkJfQorCQlpZiBzdHJpbmdzLkhhc1ByZWZpeChsaW5lLCAiZGVsZXRlZCBmaWxlIG1vZGUgIikgfHwgc3RyaW5ncy5IYXNQcmVmaXgobGluZSwgIm9sZCBtb2RlICIpIHx8IHN0cmluZ3MuSGFzUHJlZml4KGxpbmUsICJuZXcgbW9kZSAiKSB8fAorCQkJc3RyaW5ncy5IYXNQcmVmaXgobGluZSwgInJlbmFtZSAiKSB8fCBzdHJpbmdzLkhhc1ByZWZpeChsaW5lLCAiY29weSAiKSB8fCBzdHJpbmdzLkhhc1ByZWZpeChsaW5lLCAiR0lUIGJpbmFyeSBwYXRjaCIpIHx8CisJCQlzdHJpbmdzLkhhc1ByZWZpeChsaW5lLCAiQmluYXJ5IGZpbGVzICIpIHx8IHN0cmluZ3MuQ29udGFpbnNSdW5lKGxpbmUsICdceDAwJykgfHwgc3RyaW5ncy5Db250YWluc1J1bmUobGluZSwgJ1xyJykgeworCQkJcmV0dXJuIGVycm9ycy5OZXcoInRydXN0ZWQgaW5zdHJ1bWVudCBwYXRjaCBjYW5ub3QgZGVsZXRlLCByZW5hbWUsIGNoYW5nZSBtb2RlcyBvciBjb250YWluIGJpbmFyeSBmaWxlcyIpCisJCX0KKwl9CisJaWYgIXNsaWNlcy5FcXVhbChwYXRocywgYXBwcm92YWwuUHJvdGVjdGVkUGF0aHMpIHsKKwkJcmV0dXJuIGVycm9ycy5OZXcoInRydXN0ZWQgaW5zdHJ1bWVudCBwYXRjaCBkaWZmZXJzIGZyb20gdGhlIGV4YWN0IGFwcHJvdmVkIHByb3RlY3RlZCBwYXRoIGNlbnN1cyIpCisJfQorCXJldHVybiBuaWwKK30KZGlmZiAtLWdpdCBhL21vZGVsL2NvbXBldGl0aW9uX2cyX2NvZGVjX3Rlc3QuZ28gYi9tb2RlbC9jb21wZXRpdGlvbl9nMl9jb2RlY190ZXN0LmdvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmMzExZTc4MjYwZDQ2YmZiZTAxNTBmZGQzZjlhNDRhZTg1OGNjMGMKLS0tIC9kZXYvbnVsbAorKysgYi9tb2RlbC9jb21wZXRpdGlvbl9nMl9jb2RlY190ZXN0LmdvCkBAIC0wLDAgKzEsMzkgQEAKKy8vIFRoaXMgcmVncmVzc2lvbiBjYW4gYWNjb21wYW55IHRoZSBtaW5pbWFsIGZyb3plbi1zb3VyY2UgaW5zdHJ1bWVudCBvdmVybGF5OgorLy8gaXQgZGVwZW5kcyBvbiBubyBuZXdlciBldmFsdWF0aW9uLCBzb3VyY2UtYWN0aXZhdGlvbiBvciBBUEkgbW9kZWwgZmllbGRzLgorcGFja2FnZSBtb2RlbAorCitpbXBvcnQgKAorCSJlbmNvZGluZy9qc29uIgorCSJ0ZXN0aW5nIgorKQorCisvLyBBIHN0YW5kYWxvbmUgb3B0aW9uYWwgY29udHJhY3QgcHJvdmVzIG9taXNzaW9uIGtlZXBzIGV4YWN0IHNjb3Jlci1vbmUgYnl0ZXMKKy8vIHdoaWxlIGFuIGV4cGxpY2l0IHN1cHBvcnRlZCBwb2xpY3kgbmFtZXMgc2NvcmVyIHR3byBhbmQgcmVqZWN0cyBhbWJpZ3VpdHkuCitmdW5jIFRlc3RDb21wZXRpdGlvbkcyU3RhbmRhbG9uZUxlZ2FjeUNvbnRyYWN0Q29kZWModCAqdGVzdGluZy5UKSB7CisJdHlwZSBjb250cmFjdCBzdHJ1Y3QgeworCQlTY29yZXJWZXJzaW9uICBzdHJpbmcgICAgICAgICAgICAgICAgICAgIGBqc29uOiJzY29yZXJfdmVyc2lvbiJgCisJCUcyVm9sdW1lUG9saWN5IENvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3kgYGpzb246ImcyX3ZvbHVtZV9wb2xpY3ksb21pdGVtcHR5ImAKKwl9CisJbGVnYWN5Qnl0ZXMsIGVyciA6PSBqc29uLk1hcnNoYWwoY29udHJhY3R7U2NvcmVyVmVyc2lvbjogQ29tcGV0aXRpb25TY29yZXJWZXJzaW9ufSkKKwlpZiBlcnIgIT0gbmlsIHx8IHN0cmluZyhsZWdhY3lCeXRlcykgIT0gYHsic2NvcmVyX3ZlcnNpb24iOiJzaW0tbGF0ZW5jeS1zY29yZS8xIn1gIHsKKwkJdC5GYXRhbCgic3RhbmRhbG9uZSBpbnN0cnVtZW50IGNoYW5nZWQgaGlzdG9yaWNhbCBjb250cmFjdCBieXRlcyIsIHN0cmluZyhsZWdhY3lCeXRlcyksIGVycikKKwl9CisJdmFyIGxlZ2FjeSBjb250cmFjdAorCWlmIGVyciA6PSBqc29uLlVubWFyc2hhbChsZWdhY3lCeXRlcywgJmxlZ2FjeSk7IGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJdmVyc2lvbiwgZXJyIDo9IENvbXBldGl0aW9uU2NvcmVyVmVyc2lvbkZvckcyUG9saWN5KGxlZ2FjeS5HMlZvbHVtZVBvbGljeSkKKwlpZiBlcnIgIT0gbmlsIHx8IHZlcnNpb24gIT0gbGVnYWN5LlNjb3JlclZlcnNpb24geworCQl0LkZhdGFsKCJsZWdhY3kgb21pc3Npb24gYWNxdWlyZWQgYSBuZXcgbWVhbmluZyIsIGVycikKKwl9CisJbWluaW11bVdvcmtCeXRlcywgZXJyIDo9IGpzb24uTWFyc2hhbChjb250cmFjdHtTY29yZXJWZXJzaW9uOiBDb21wZXRpdGlvbk1pbmltdW1Xb3JrU2NvcmVyVmVyc2lvbiwgRzJWb2x1bWVQb2xpY3k6IENvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lNaW5pbXVtV29ya30pCisJaWYgZXJyICE9IG5pbCB8fCBzdHJpbmcobWluaW11bVdvcmtCeXRlcykgIT0gYHsic2NvcmVyX3ZlcnNpb24iOiJzaW0tbGF0ZW5jeS1zY29yZS8yIiwiZzJfdm9sdW1lX3BvbGljeSI6Im1pbmltdW0td29yay8xIn1gIHsKKwkJdC5GYXRhbCgic3RhbmRhbG9uZSBpbnN0cnVtZW50IG9taXR0ZWQgZXhwbGljaXQgZnV0dXJlIHByb3ZlbmFuY2UiLCBzdHJpbmcobWluaW11bVdvcmtCeXRlcyksIGVycikKKwl9CisJZm9yIF8sIGludmFsaWQgOj0gcmFuZ2UgW11zdHJpbmd7YG51bGxgLCBgIiJgLCBgInVua25vd24vMSJgLCBgZmFsc2VgLCBgMWB9IHsKKwkJdmFyIGRlY29kZWQgY29udHJhY3QKKwkJaWYganNvbi5Vbm1hcnNoYWwoW11ieXRlKGB7InNjb3Jlcl92ZXJzaW9uIjoic2ltLWxhdGVuY3ktc2NvcmUvMiIsImcyX3ZvbHVtZV9wb2xpY3kiOmAraW52YWxpZCtgfWApLCAmZGVjb2RlZCkgPT0gbmlsIHsKKwkJCXQuRXJyb3JmKCJhbWJpZ3VvdXMgc3RhbmRhbG9uZSBwb2xpY3kgJXMgZGVjb2RlZCIsIGludmFsaWQpCisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9tb2RlbC9jb21wZXRpdGlvbl9nMl9wb2xpY3kuZ28gYi9tb2RlbC9jb21wZXRpdGlvbl9nMl9wb2xpY3kuZ28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWYwNjBjODFiYTVjMjU5M2Y5ZWMyMmE4ZDViYmQ0OGNiZjVhMzdiMgotLS0gL2Rldi9udWxsCisrKyBiL21vZGVsL2NvbXBldGl0aW9uX2cyX3BvbGljeS5nbwpAQCAtMCwwICsxLDQ2IEBACisvLyBUaGUgdmVyc2lvbmVkIEcyIGNvbnRyYWN0IGlzIGEgc3RhbmRhbG9uZSBpbnN0cnVtZW50IGRlcGVuZGVuY3kuIEl0IG5lZWRzCisvLyBvbmx5IHRoZSBoaXN0b3JpY2FsIHNjb3Jlci1vbmUgY29uc3RhbnQsIG5vdCBuZXdlciBjb250cm9sLXBsYW5lIG1vZGVscy4KK3BhY2thZ2UgbW9kZWwKKworaW1wb3J0ICgKKwkiZW5jb2RpbmcvanNvbiIKKwkiZXJyb3JzIgorKQorCitjb25zdCBDb21wZXRpdGlvbk1pbmltdW1Xb3JrU2NvcmVyVmVyc2lvbiA9ICJzaW0tbGF0ZW5jeS1zY29yZS8yIgorCisvLyBPbWlzc2lvbiBpcyB0aGUgaW1tdXRhYmxlIGhpc3RvcmljYWwgOTXigJMxMDUlIHJlcXVlc3QgYW5kIGJ5dGUgYmFuZC4gVGhlCisvLyBleHBsaWNpdCB2ZXJzaW9uIHJlbW92ZXMgYm90aCB1cHBlciBib3VuZHMsIHJldGFpbmluZyBpbmNsdXNpdmUgOTUlIGZsb29ycy4KK3R5cGUgQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeSBzdHJpbmcKKworY29uc3QgKAorCUNvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lMZWdhY3kgICAgICBDb21wZXRpdGlvbkcyVm9sdW1lUG9saWN5ID0gIiIKKwlDb21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TWluaW11bVdvcmsgQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeSA9ICJtaW5pbXVtLXdvcmsvMSIKKykKKworLy8gTGVnYWN5IGlzIHJlcHJlc2VudGVkIGJ5IG9taXNzaW9uLCBuZXZlciBhIG5ld2x5IGludHJvZHVjZWQgbnVsbC9lbXB0eQorLy8gZmllbGQuIEV4cGxpY2l0IGV4dGVuc2lvbnMgbXVzdCBuYW1lIGEgc3VwcG9ydGVkIG5vbi1sZWdhY3kgcG9saWN5LgorZnVuYyAoc2VsZiAqQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeSkgVW5tYXJzaGFsSlNPTihjb250ZW50IFtdYnl0ZSkgZXJyb3IgeworCXZhciBwb2xpY3kgc3RyaW5nCisJaWYgZXJyIDo9IGpzb24uVW5tYXJzaGFsKGNvbnRlbnQsICZwb2xpY3kpOyBlcnIgIT0gbmlsIHsKKwkJcmV0dXJuIGVycgorCX0KKwlpZiBDb21wZXRpdGlvbkcyVm9sdW1lUG9saWN5KHBvbGljeSkgIT0gQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeU1pbmltdW1Xb3JrIHsKKwkJcmV0dXJuIGVycm9ycy5OZXcoImV4cGxpY2l0IGcyIHZvbHVtZSBwb2xpY3kgbXVzdCBiZSBtaW5pbXVtLXdvcmsvMSIpCisJfQorCSpzZWxmID0gQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeShwb2xpY3kpCisJcmV0dXJuIG5pbAorfQorCisvLyBQb2xpY3kgYW5kIGltcGxlbWVudGF0aW9uIHZlcnNpb25zIG11c3QgYWdyZWU7IHVua25vd24gcG9saWN5IG5ldmVyIGZhbGxzCisvLyBiYWNrIHRvIGxlZ2FjeSBzY29yaW5nLiBUaGUgc2NvcmUgZG9jdW1lbnQgc2NoZW1hIGl0c2VsZiByZW1haW5zIHVuY2hhbmdlZC4KK2Z1bmMgQ29tcGV0aXRpb25TY29yZXJWZXJzaW9uRm9yRzJQb2xpY3kocG9saWN5IENvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3kpIChzdHJpbmcsIGVycm9yKSB7CisJc3dpdGNoIHBvbGljeSB7CisJY2FzZSBDb21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TGVnYWN5OgorCQlyZXR1cm4gQ29tcGV0aXRpb25TY29yZXJWZXJzaW9uLCBuaWwKKwljYXNlIENvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lNaW5pbXVtV29yazoKKwkJcmV0dXJuIENvbXBldGl0aW9uTWluaW11bVdvcmtTY29yZXJWZXJzaW9uLCBuaWwKKwlkZWZhdWx0OgorCQlyZXR1cm4gIiIsIGVycm9ycy5OZXcoInVuc3VwcG9ydGVkIGcyIHZvbHVtZSBwb2xpY3kiKQorCX0KK30KZGlmZiAtLWdpdCBhL21vZGVsL2NvbXBldGl0aW9uX21vZGVsLmdvIGIvbW9kZWwvY29tcGV0aXRpb25fbW9kZWwuZ28KaW5kZXggODZjYzUwMDJiMWJkMzdjNGE4YTk4YTg2ZGE2M2JiMWUwOGUyMWJmZS4uZGY1NTJhNDljZGQ2YmYyMTk1ZGI0MzEyNjliYmY0MDdlZDFjNmIyMSAxMDA2NDQKLS0tIGEvbW9kZWwvY29tcGV0aXRpb25fbW9kZWwuZ28KKysrIGIvbW9kZWwvY29tcGV0aXRpb25fbW9kZWwuZ28KQEAgLTM3LDM0ICszNyw1NCBAQCB0eXBlIENvbXBldGl0aW9uUGF0Y2hQb2xpY3kgc3RydWN0IHsKIH0KIAogdHlwZSBDb21wZXRpdGlvbkV2YWx1YXRpb25Qb2xpY3kgc3RydWN0IHsKLQlIYXJkd2FyZUlkICAgICAgICAgICAgICBzdHJpbmcgIGBqc29uOiJoYXJkd2FyZV9pZCIgeWFtbDoiaGFyZHdhcmVfaWQiYAotCUhvc3RRdWFsaWZpY2F0aW9uU2hhMjU2IHN0cmluZyAgYGpzb246Imhvc3RfcXVhbGlmaWNhdGlvbl9zaGEyNTYiIHlhbWw6Imhvc3RfcXVhbGlmaWNhdGlvbl9zaGEyNTYiYAotCUNvbmZpZ0xvY2FsU2hhMjU2ICAgICAgIHN0cmluZyAgYGpzb246ImNvbmZpZ19sb2NhbF9zaGEyNTYiIHlhbWw6ImNvbmZpZ19sb2NhbF9zaGEyNTYiYAotCVZhdWx0TG9jYWxTaGEyNTYgICAgICAgIHN0cmluZyAgYGpzb246InZhdWx0X2xvY2FsX3NoYTI1NiIgeWFtbDoidmF1bHRfbG9jYWxfc2hhMjU2ImAKLQlTaW11bGF0b3JTaGEyNTYgICAgICAgICBzdHJpbmcgIGBqc29uOiJzaW11bGF0b3Jfc2hhMjU2IiB5YW1sOiJzaW11bGF0b3Jfc2hhMjU2ImAKLQlTY29yZXJTaGEyNTYgICAgICAgICAgICBzdHJpbmcgIGBqc29uOiJzY29yZXJfc2hhMjU2IiB5YW1sOiJzY29yZXJfc2hhMjU2ImAKLQlQcm92aWRlckNvdW50ICAgICAgICAgICBpbnQgICAgIGBqc29uOiJwcm92aWRlcl9jb3VudCIgeWFtbDoicHJvdmlkZXJfY291bnQiYAotCUNsaWVudFBvb2xTaXplICAgICAgICAgIGludCAgICAgYGpzb246ImNsaWVudF9wb29sX3NpemUiIHlhbWw6ImNsaWVudF9wb29sX3NpemUiYAotCUFycml2YWxzUGVyTWludXRlICAgICAgIGludCAgICAgYGpzb246ImFycml2YWxzX3Blcl9taW51dGUiIHlhbWw6ImFycml2YWxzX3Blcl9taW51dGUiYAotCVF1YWxpdHlXaW5kb3dTaXplICAgICAgIGludCAgICAgYGpzb246InF1YWxpdHlfd2luZG93X3NpemUiIHlhbWw6InF1YWxpdHlfd2luZG93X3NpemUiYAotCUV4Y2hhbmdlSG9zdHMgICAgICAgICAgIGludCAgICAgYGpzb246ImV4Y2hhbmdlX2hvc3RzIiB5YW1sOiJleGNoYW5nZV9ob3N0cyJgCi0JRmxlZXRTaGFyZHMgICAgICAgICAgICAgaW50ICAgICBganNvbjoiZmxlZXRfc2hhcmRzIiB5YW1sOiJmbGVldF9zaGFyZHMiYAotCVNpdGVMaXN0ZW4gICAgICAgICAgICAgIHN0cmluZyAgYGpzb246InNpdGVfbGlzdGVuIiB5YW1sOiJzaXRlX2xpc3RlbiJgCi0JQXBpUG9ydCAgICAgICAgICAgICAgICAgaW50ICAgICBganNvbjoiYXBpX3BvcnQiIHlhbWw6ImFwaV9wb3J0ImAKLQlSYW1wTXMgICAgICAgICAgICAgICAgICBpbnQ2NCAgIGBqc29uOiJyYW1wX21zIiB5YW1sOiJyYW1wX21zImAKLQlQcmV3YXJtTXMgICAgICAgICAgICAgICBpbnQ2NCAgIGBqc29uOiJwcmV3YXJtX21zIiB5YW1sOiJwcmV3YXJtX21zImAKLQlTZXR0bGVNcyAgICAgICAgICAgICAgICBpbnQ2NCAgIGBqc29uOiJzZXR0bGVfbXMiIHlhbWw6InNldHRsZV9tcyJgCi0JQ2xpZW50V2FybXVwVGltZW91dE1zICAgaW50NjQgICBganNvbjoiY2xpZW50X3dhcm11cF90aW1lb3V0X21zIiB5YW1sOiJjbGllbnRfd2FybXVwX3RpbWVvdXRfbXMiYAotCUR1cmF0aW9uTXMgICAgICAgICAgICAgIGludDY0ICAgYGpzb246ImR1cmF0aW9uX21zIiB5YW1sOiJkdXJhdGlvbl9tcyJgCi0JUmVxdWVzdFRpbWVvdXRNcyAgICAgICAgaW50NjQgICBganNvbjoicmVxdWVzdF90aW1lb3V0X21zIiB5YW1sOiJyZXF1ZXN0X3RpbWVvdXRfbXMiYAotCVBpcGVsaW5lSW50ZXJ2YWxNcyAgICAgIGludDY0ICAgYGpzb246InBpcGVsaW5lX2ludGVydmFsX21zIiB5YW1sOiJwaXBlbGluZV9pbnRlcnZhbF9tcyJgCi0JVGVzdFRpbWVvdXRNcyAgICAgICAgICAgaW50NjQgICBganNvbjoidGVzdF90aW1lb3V0X21zIiB5YW1sOiJ0ZXN0X3RpbWVvdXRfbXMiYAotCUFubm91bmNlVGltZW91dE1zICAgICAgIGludDY0ICAgYGpzb246ImFubm91bmNlX3RpbWVvdXRfbXMiIHlhbWw6ImFubm91bmNlX3RpbWVvdXRfbXMiYAotCUltcGFpcm1lbnRFbmFibGVkICAgICAgIGJvb2wgICAgYGpzb246ImltcGFpcm1lbnRfZW5hYmxlZCIgeWFtbDoiaW1wYWlybWVudF9lbmFibGVkImAKLQlSZXBsaWNhdGVzICAgICAgICAgICAgICBpbnQgICAgIGBqc29uOiJyZXBsaWNhdGVzIiB5YW1sOiJyZXBsaWNhdGVzImAKLQlUYWtlb3Zlck1hcmdpbiAgICAgICAgICBmbG9hdDY0IGBqc29uOiJ0YWtlb3Zlcl9tYXJnaW4iIHlhbWw6InRha2VvdmVyX21hcmdpbiJgCi0JUXVldWVMaW1pdCAgICAgICAgICAgICAgaW50ICAgICBganNvbjoicXVldWVfbGltaXQiIHlhbWw6InF1ZXVlX2xpbWl0ImAKLQlTY29yZVRpbWVvdXRTZWNvbmRzICAgICBpbnQgICAgIGBqc29uOiJzY29yZV90aW1lb3V0X3NlY29uZHMiIHlhbWw6InNjb3JlX3RpbWVvdXRfc2Vjb25kcyJgCisJRzJWb2x1bWVQb2xpY3kgICAgICAgICAgQ29tcGV0aXRpb25HMlZvbHVtZVBvbGljeSAgICAgIGBqc29uOiJnMl92b2x1bWVfcG9saWN5LG9taXRlbXB0eSIgeWFtbDoiZzJfdm9sdW1lX3BvbGljeSxvbWl0ZW1wdHkiYAorCVdvcmtDb3ZlcmFnZVBvbGljeSAgICAgICpDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSBganNvbjoid29ya19jb3ZlcmFnZV9wb2xpY3ksb21pdGVtcHR5IiB5YW1sOiJ3b3JrX2NvdmVyYWdlX3BvbGljeSxvbWl0ZW1wdHkiYAorCUhhcmR3YXJlSWQgICAgICAgICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiaGFyZHdhcmVfaWQiIHlhbWw6ImhhcmR3YXJlX2lkImAKKwlIb3N0UXVhbGlmaWNhdGlvblNoYTI1NiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246Imhvc3RfcXVhbGlmaWNhdGlvbl9zaGEyNTYiIHlhbWw6Imhvc3RfcXVhbGlmaWNhdGlvbl9zaGEyNTYiYAorCUNvbmZpZ0xvY2FsU2hhMjU2ICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiY29uZmlnX2xvY2FsX3NoYTI1NiIgeWFtbDoiY29uZmlnX2xvY2FsX3NoYTI1NiJgCisJVmF1bHRMb2NhbFNoYTI1NiAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJ2YXVsdF9sb2NhbF9zaGEyNTYiIHlhbWw6InZhdWx0X2xvY2FsX3NoYTI1NiJgCisJU2ltdWxhdG9yU2hhMjU2ICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJzaW11bGF0b3Jfc2hhMjU2IiB5YW1sOiJzaW11bGF0b3Jfc2hhMjU2ImAKKwlTY29yZXJTaGEyNTYgICAgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InNjb3Jlcl9zaGEyNTYiIHlhbWw6InNjb3Jlcl9zaGEyNTYiYAorCVByb3ZpZGVyQ291bnQgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoicHJvdmlkZXJfY291bnQiIHlhbWw6InByb3ZpZGVyX2NvdW50ImAKKwlDbGllbnRQb29sU2l6ZSAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246ImNsaWVudF9wb29sX3NpemUiIHlhbWw6ImNsaWVudF9wb29sX3NpemUiYAorCUFycml2YWxzUGVyTWludXRlICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiYXJyaXZhbHNfcGVyX21pbnV0ZSIgeWFtbDoiYXJyaXZhbHNfcGVyX21pbnV0ZSJgCisJUXVhbGl0eVdpbmRvd1NpemUgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJxdWFsaXR5X3dpbmRvd19zaXplIiB5YW1sOiJxdWFsaXR5X3dpbmRvd19zaXplImAKKwlFeGNoYW5nZUhvc3RzICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246ImV4Y2hhbmdlX2hvc3RzIiB5YW1sOiJleGNoYW5nZV9ob3N0cyJgCisJRmxlZXRTaGFyZHMgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJmbGVldF9zaGFyZHMiIHlhbWw6ImZsZWV0X3NoYXJkcyJgCisJU2l0ZUxpc3RlbiAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJzaXRlX2xpc3RlbiIgeWFtbDoic2l0ZV9saXN0ZW4iYAorCUFwaVBvcnQgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiYXBpX3BvcnQiIHlhbWw6ImFwaV9wb3J0ImAKKwlSYW1wTXMgICAgICAgICAgICAgICAgICBpbnQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InJhbXBfbXMiIHlhbWw6InJhbXBfbXMiYAorCVByZXdhcm1NcyAgICAgICAgICAgICAgIGludDY0ICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoicHJld2FybV9tcyIgeWFtbDoicHJld2FybV9tcyJgCisJU2V0dGxlTXMgICAgICAgICAgICAgICAgaW50NjQgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJzZXR0bGVfbXMiIHlhbWw6InNldHRsZV9tcyJgCisJQ2xpZW50V2FybXVwVGltZW91dE1zICAgaW50NjQgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJjbGllbnRfd2FybXVwX3RpbWVvdXRfbXMiIHlhbWw6ImNsaWVudF93YXJtdXBfdGltZW91dF9tcyJgCisJRHVyYXRpb25NcyAgICAgICAgICAgICAgaW50NjQgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJkdXJhdGlvbl9tcyIgeWFtbDoiZHVyYXRpb25fbXMiYAorCVJlcXVlc3RUaW1lb3V0TXMgICAgICAgIGludDY0ICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoicmVxdWVzdF90aW1lb3V0X21zIiB5YW1sOiJyZXF1ZXN0X3RpbWVvdXRfbXMiYAorCVBpcGVsaW5lSW50ZXJ2YWxNcyAgICAgIGludDY0ICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoicGlwZWxpbmVfaW50ZXJ2YWxfbXMiIHlhbWw6InBpcGVsaW5lX2ludGVydmFsX21zImAKKwlUZXN0VGltZW91dE1zICAgICAgICAgICBpbnQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InRlc3RfdGltZW91dF9tcyIgeWFtbDoidGVzdF90aW1lb3V0X21zImAKKwlBbm5vdW5jZVRpbWVvdXRNcyAgICAgICBpbnQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246ImFubm91bmNlX3RpbWVvdXRfbXMiIHlhbWw6ImFubm91bmNlX3RpbWVvdXRfbXMiYAorCUltcGFpcm1lbnRFbmFibGVkICAgICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiaW1wYWlybWVudF9lbmFibGVkIiB5YW1sOiJpbXBhaXJtZW50X2VuYWJsZWQiYAorCVJlcGxpY2F0ZXMgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoicmVwbGljYXRlcyIgeWFtbDoicmVwbGljYXRlcyJgCisJVGFrZW92ZXJNYXJnaW4gICAgICAgICAgZmxvYXQ2NCAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJ0YWtlb3Zlcl9tYXJnaW4iIHlhbWw6InRha2VvdmVyX21hcmdpbiJgCisJUXVldWVMaW1pdCAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJxdWV1ZV9saW1pdCIgeWFtbDoicXVldWVfbGltaXQiYAorCVNjb3JlVGltZW91dFNlY29uZHMgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoic2NvcmVfdGltZW91dF9zZWNvbmRzIiB5YW1sOiJzY29yZV90aW1lb3V0X3NlY29uZHMiYAorfQorCisvLyBDb3BpZXMgdGhlIG9wdGlvbmFsIHByb3NwZWN0aXZlIGxlYWYgd2l0aG91dCBzaGFyaW5nIG11dGFibGUgY29uZmlndXJhdGlvbi4KK2Z1bmMgKHNlbGYgQ29tcGV0aXRpb25FdmFsdWF0aW9uUG9saWN5KSBDbG9uZSgpIENvbXBldGl0aW9uRXZhbHVhdGlvblBvbGljeSB7CisJc2VsZi5Xb3JrQ292ZXJhZ2VQb2xpY3kgPSBzZWxmLldvcmtDb3ZlcmFnZVBvbGljeS5DbG9uZSgpCisJcmV0dXJuIHNlbGYKK30KKworLy8gSW5kZXBlbmRlbnQgSlNPTiBhbGxvY2F0aW9ucyByZXRhaW4gcG9saWN5IHZhbHVlIGVxdWFsaXR5OyBuaWwgc3RheXMgbmlsLgorZnVuYyAoc2VsZiBDb21wZXRpdGlvbkV2YWx1YXRpb25Qb2xpY3kpIEVxdWFsKG90aGVyIENvbXBldGl0aW9uRXZhbHVhdGlvblBvbGljeSkgYm9vbCB7CisJaWYgKHNlbGYuV29ya0NvdmVyYWdlUG9saWN5ID09IG5pbCkgIT0gKG90aGVyLldvcmtDb3ZlcmFnZVBvbGljeSA9PSBuaWwpIHsKKwkJcmV0dXJuIGZhbHNlCisJfQorCWlmIHNlbGYuV29ya0NvdmVyYWdlUG9saWN5ICE9IG5pbCAmJiAqc2VsZi5Xb3JrQ292ZXJhZ2VQb2xpY3kgIT0gKm90aGVyLldvcmtDb3ZlcmFnZVBvbGljeSB7CisJCXJldHVybiBmYWxzZQorCX0KKwlzZWxmLldvcmtDb3ZlcmFnZVBvbGljeSwgb3RoZXIuV29ya0NvdmVyYWdlUG9saWN5ID0gbmlsLCBuaWwKKwlyZXR1cm4gc2VsZiA9PSBvdGhlcgogfQogCiB0eXBlIENvbXBldGl0aW9uU2Vhc29uUG9saWN5IHN0cnVjdCB7CkBAIC0yOTcsNiArMzE3LDIxIEBAIGZ1bmMgVmFsaWRhdGVDb21wZXRpdGlvblNjb3JlKHNjb3JlICpDb21wZXRpdGlvblNjb3JlUmVzdWx0KSBlcnJvciB7CiAJaWYgc2NvcmUuR2F0ZXMgPT0gbmlsIHsKIAkJcmV0dXJuIGVycm9ycy5OZXcoInNjb3JlIGdhdGVzIGFyZSBtaXNzaW5nIikKIAl9CisJcmVxdWlyZWRHYXRlcywgZXJyIDo9IENvbXBldGl0aW9uU2NvcmVSZXF1aXJlZEdhdGVOYW1lcyhzY29yZSkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJcmV0dXJuIGVycgorCX0KKwlpZiBfLCBwcm9zcGVjdGl2ZSA6PSBzY29yZS5EaWFnbm9zdGljc1sid29ya19jb3ZlcmFnZV9wb2xpY3kiXTsgcHJvc3BlY3RpdmUgeworCQlmb3IgXywgbmFtZSA6PSByYW5nZSByZXF1aXJlZEdhdGVzIHsKKwkJCWdhdGUsIG9rIDo9IHNjb3JlLkdhdGVzW25hbWVdCisJCQlpZiAhb2sgfHwgZ2F0ZS5EZXRhaWxzID09IG5pbCB7CisJCQkJcmV0dXJuIGVycm9ycy5OZXcoImNvdmVyYWdlIHNjb3JlIGlzIG1pc3NpbmcgaXRzIG1hbmRhdG9yeSB2ZXJzaW9uZWQgZ2F0ZSBzdXJmYWNlIikKKwkJCX0KKwkJCWlmIHNjb3JlLlBsYWNlYWJsZSAmJiAhZ2F0ZS5QYXNzZWQgeworCQkJCXJldHVybiBlcnJvcnMuTmV3KCJwbGFjZWFibGUgY292ZXJhZ2Ugc2NvcmUgY29udHJhZGljdHMgYSBtYW5kYXRvcnkgZ2F0ZSIpCisJCQl9CisJCX0KKwl9CiAJaWYgZXJyIDo9IHZhbGlkYXRlQ29tcGV0aXRpb25TY29yZVNpZ25pZmljYW5jZShzY29yZS5TaWduaWZpY2FuY2UpOyBlcnIgIT0gbmlsIHsKIAkJcmV0dXJuIGVycgogCX0KZGlmZiAtLWdpdCBhL21vZGVsL2NvbXBldGl0aW9uX3RydXN0ZWRfaW5zdHJ1bWVudC5nbyBiL21vZGVsL2NvbXBldGl0aW9uX3RydXN0ZWRfaW5zdHJ1bWVudC5nbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjljZTY5YTk0OTI3OWY0YzFjODc1MzA5NmQxNzMyYTc3ZjEwMGJmCi0tLSAvZGV2L251bGwKKysrIGIvbW9kZWwvY29tcGV0aXRpb25fdHJ1c3RlZF9pbnN0cnVtZW50LmdvCkBAIC0wLDAgKzEsMTE1IEBACisvLyBPcGVyYXRvciBpbnN0cnVtZW50IGFwcHJvdmFsIGlzIGluZGVwZW5kZW50IG9mIHRoZSBhcy15ZXQgdW5rbm93biBzZWxlY3RlZAorLy8gcHJvZHVjdC4gSXQgbmV2ZXIgc3Vic3RpdHV0ZXMgZm9yIHRoZSBzZWxlY3RlZCB3aW5uZXIncyBpbnRlZ3JpdHkgcmV2aWV3LgorcGFja2FnZSBtb2RlbAorCitpbXBvcnQgKAorCSJlbmNvZGluZy9iYXNlNjQiCisKKwkiZ2l0aHViLmNvbS91cm5ldHdvcmsvc2VydmVyIgorKQorCisvLyBCYXNlNjQgaXMgdGhlIHNhbWUgZXhhY3QtYnl0ZSByZXByZXNlbnRhdGlvbiBpbiBKU09OIGFuZCBZQU1MOyBhbiBpbnRlZ2VyCisvLyBzZXF1ZW5jZSB3b3VsZCBtdWx0aXBseSByZXRhaW5lZCBtYW5pZmVzdCBzaXplIGFuZCBpbnZpdGUgdHJ1bmNhdGlvbi4KK3R5cGUgQ29tcGV0aXRpb25UcnVzdGVkSW5zdHJ1bWVudFBhdGNoIFtdYnl0ZQorCisvLyBBIGNvbXBhY3Qgc2NhbGFyIHJldGFpbnMgdHJhaWxpbmcgbmV3bGluZXMgYW5kIGV2ZXJ5IG90aGVyIGFwcHJvdmVkIGJ5dGUuCitmdW5jIChzZWxmIENvbXBldGl0aW9uVHJ1c3RlZEluc3RydW1lbnRQYXRjaCkgTWFyc2hhbFlBTUwoKSAoYW55LCBlcnJvcikgeworCXJldHVybiBiYXNlNjQuU3RkRW5jb2RpbmcuRW5jb2RlVG9TdHJpbmcoc2VsZiksIG5pbAorfQorCisvLyBPcGVyYXRvciBZQU1MIHVzZXMgdGhlIGlkZW50aWNhbCBiYXNlNjQgcGF0Y2ggYm9keSBhcyB0aGUgYXBwcm92YWwgSlNPTi4KK2Z1bmMgKHNlbGYgKkNvbXBldGl0aW9uVHJ1c3RlZEluc3RydW1lbnRQYXRjaCkgVW5tYXJzaGFsWUFNTCh1bm1hcnNoYWwgZnVuYyhhbnkpIGVycm9yKSBlcnJvciB7CisJdmFyIGVuY29kZWQgc3RyaW5nCisJaWYgZXJyIDo9IHVubWFyc2hhbCgmZW5jb2RlZCk7IGVyciAhPSBuaWwgeworCQlyZXR1cm4gZXJyCisJfQorCWNvbnRlbnQsIGVyciA6PSBiYXNlNjQuU3RkRW5jb2RpbmcuU3RyaWN0KCkuRGVjb2RlU3RyaW5nKGVuY29kZWQpCisJaWYgZXJyICE9IG5pbCB7CisJCXJldHVybiBlcnIKKwl9CisJKnNlbGYgPSBjb250ZW50CisJcmV0dXJuIG5pbAorfQorCisvLyBQaW5zIGxpdGVyYWwgcGF0Y2ggYnl0ZXMsIG9yaWdpbmFsIGluc3RydW1lbnQgcHJvdmVuYW5jZSBhbmQgaXRzIGV4YWN0IHBhdGgKKy8vIGNlbnN1cyBiZWZvcmUgcHJvZHVjdCBzZWxlY3Rpb24uIEFwcHJvdmFsU2hhMjU2IGhhc2hlcyB0aGlzIHZhbHVlIHdpdGggdGhhdAorLy8gZmllbGQgZW1wdHk7IG5vIHNlbGVjdGVkLXByb2R1Y3QgaWRlbnRpdHkgcGFydGljaXBhdGVzIGluIG9wZXJhdG9yIGFwcHJvdmFsLgordHlwZSBDb21wZXRpdGlvblRydXN0ZWRJbnN0cnVtZW50QXBwcm92YWwgc3RydWN0IHsKKwlXb3JrQ292ZXJhZ2VQb2xpY3kgICAgICAgICAgICAgKkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5ICAgIGBqc29uOiJ3b3JrX2NvdmVyYWdlX3BvbGljeSxvbWl0ZW1wdHkiIHlhbWw6IndvcmtfY292ZXJhZ2VfcG9saWN5LG9taXRlbXB0eSJgCisJU2NoZW1hICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoic2NoZW1hIiB5YW1sOiJzY2hlbWEiYAorCUFwcHJvdmFsSWQgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246ImFwcHJvdmFsX2lkIiB5YW1sOiJhcHByb3ZhbF9pZCJgCisJQXBwcm92YWxTaGEyNTYgICAgICAgICAgICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiYXBwcm92YWxfc2hhMjU2LG9taXRlbXB0eSIgeWFtbDoiYXBwcm92YWxfc2hhMjU2ImAKKwlUYXJnZXRFcG9jaCAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJ0YXJnZXRfZXBvY2giIHlhbWw6InRhcmdldF9lcG9jaCJgCisJRzJWb2x1bWVQb2xpY3kgICAgICAgICAgICAgICAgIENvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3kgICAgICAgICBganNvbjoiZzJfdm9sdW1lX3BvbGljeSIgeWFtbDoiZzJfdm9sdW1lX3BvbGljeSJgCisJSW5zdHJ1bWVudEJhc2VDb21taXRzICAgICAgICAgIG1hcFtzdHJpbmddc3RyaW5nICAgICAgICAgICAgICAgICBganNvbjoiaW5zdHJ1bWVudF9iYXNlX2NvbW1pdHMiIHlhbWw6Imluc3RydW1lbnRfYmFzZV9jb21taXRzImAKKwlJbnN0cnVtZW50QmFzZVNvdXJjZUxvY2tTaGEyNTYgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJpbnN0cnVtZW50X2Jhc2Vfc291cmNlX2xvY2tfc2hhMjU2IiB5YW1sOiJpbnN0cnVtZW50X2Jhc2Vfc291cmNlX2xvY2tfc2hhMjU2ImAKKwlJbnN0cnVtZW50QmFzZUltYWdlRGlnZXN0ICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJpbnN0cnVtZW50X2Jhc2VfaW1hZ2VfZGlnZXN0IiB5YW1sOiJpbnN0cnVtZW50X2Jhc2VfaW1hZ2VfZGlnZXN0ImAKKwlQYXRjaFNoYTI1NiAgICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJwYXRjaF9zaGEyNTYiIHlhbWw6InBhdGNoX3NoYTI1NiJgCisJUGF0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBldGl0aW9uVHJ1c3RlZEluc3RydW1lbnRQYXRjaCBganNvbjoicGF0Y2giIHlhbWw6InBhdGNoImAKKwlQcm90ZWN0ZWRQYXRocyAgICAgICAgICAgICAgICAgW11zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJwcm90ZWN0ZWRfcGF0aHMiIHlhbWw6InByb3RlY3RlZF9wYXRocyJgCit9CisKKy8vIFNlcGFyYXRlcyB0aGUgYWN0dWFsbHkgc2VsZWN0ZWQgcHJvZHVjdCBncmFwaCBhbmQgcmV2aWV3IGZyb20gdGhlIG9uZS1jaGlsZAorLy8gcHJvdGVjdGVkIGluc3RydW1lbnQgb3ZlcmxheS4gQSBjYXJyeSBoYXMgbm8gcmV2aWV3IGZpZWxkcyBvciBpbnZlbnRlZCBpZHMuCit0eXBlIENvbXBldGl0aW9uVHJ1c3RlZEluc3RydW1lbnRQcm9vZiBzdHJ1Y3QgeworCVNjaGVtYSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InNjaGVtYSIgeWFtbDoic2NoZW1hImAKKwlBcHByb3ZhbCAgICAgICAgICAgICAgICAgICAgICAgIENvbXBldGl0aW9uVHJ1c3RlZEluc3RydW1lbnRBcHByb3ZhbCAgIGBqc29uOiJhcHByb3ZhbCIgeWFtbDoiYXBwcm92YWwiYAorCVNlbGVjdGVkUHJvZHVjdEtpbmQgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InNlbGVjdGVkX3Byb2R1Y3Rfa2luZCIgeWFtbDoic2VsZWN0ZWRfcHJvZHVjdF9raW5kImAKKwlTZWxlY3RlZFByb2R1Y3RDb21taXRzICAgICAgICAgIG1hcFtzdHJpbmddc3RyaW5nICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJzZWxlY3RlZF9wcm9kdWN0X2NvbW1pdHMiIHlhbWw6InNlbGVjdGVkX3Byb2R1Y3RfY29tbWl0cyJgCisJU2VsZWN0ZWRQcm9kdWN0U291cmNlTG9ja1NoYTI1NiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoic2VsZWN0ZWRfcHJvZHVjdF9zb3VyY2VfbG9ja19zaGEyNTYiIHlhbWw6InNlbGVjdGVkX3Byb2R1Y3Rfc291cmNlX2xvY2tfc2hhMjU2ImAKKwlTZWxlY3RlZFByb2R1Y3RSZXZpZXdJZCAgICAgICAgICpzZXJ2ZXIuSWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJzZWxlY3RlZF9wcm9kdWN0X3Jldmlld19pZCxvbWl0ZW1wdHkiIHlhbWw6InNlbGVjdGVkX3Byb2R1Y3RfcmV2aWV3X2lkLG9taXRlbXB0eSJgCisJU2VsZWN0ZWRQcm9kdWN0UmV2aWV3RGlnZXN0ICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoic2VsZWN0ZWRfcHJvZHVjdF9yZXZpZXdfZGlnZXN0LG9taXRlbXB0eSIgeWFtbDoic2VsZWN0ZWRfcHJvZHVjdF9yZXZpZXdfZGlnZXN0LG9taXRlbXB0eSJgCisJU2VsZWN0ZWRQcm9kdWN0UGF0Y2hTaGEyNTYgICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoic2VsZWN0ZWRfcHJvZHVjdF9wYXRjaF9zaGEyNTYsb21pdGVtcHR5IiB5YW1sOiJzZWxlY3RlZF9wcm9kdWN0X3BhdGNoX3NoYTI1NixvbWl0ZW1wdHkiYAorCUluc3RydW1lbnRlZFNlcnZlckNvbW1pdCAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246Imluc3RydW1lbnRlZF9zZXJ2ZXJfY29tbWl0IiB5YW1sOiJpbnN0cnVtZW50ZWRfc2VydmVyX2NvbW1pdCJgCisJQnVpbGRSZWNlaXB0ICAgICAgICAgICAgICAgICAgICAqQ29tcGV0aXRpb25SZXZpZXdlZFNvdXJjZUJ1aWxkUmVjZWlwdCBganNvbjoiYnVpbGRfcmVjZWlwdCxvbWl0ZW1wdHkiIHlhbWw6ImJ1aWxkX3JlY2VpcHQsb21pdGVtcHR5ImAKK30KKworLy8gVGhlIG9wdGlvbmFsIGluc3RydW1lbnQgZmllbGRzIGRpc3Rpbmd1aXNoIGEgcHJvdGVjdGVkIGJ1aWxkIG9wZXJhdGlvbiBmcm9tCisvLyBhIHJldmlld2VkIHByb2R1Y3QgYnVpbGQgd2l0aG91dCBhbGxvY2F0aW5nIGEgZmljdGl0aW91cyByZXZpZXcgaWRlbnRpdHkuCisvLyBIaXN0b3JpY2FsIGZpZWxkIG9yZGVyIGFuZCBvbWl0dGVkIGFkZGl0aW9ucyBwcmVzZXJ2ZSBsZWdhY3kgZW5jb2RlZCBieXRlcy4KK3R5cGUgQ29tcGV0aXRpb25SZXZpZXdlZFNvdXJjZUJ1aWxkUmVjZWlwdCBzdHJ1Y3QgeworCVNjaGVtYSAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InNjaGVtYSJgCisJU3RhZ2luZyAgICAgICAgICAgICAgICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoic3RhZ2luZyxvbWl0ZW1wdHkiYAorCVJldmlld0lkICAgICAgICAgICAgICAgICBzZXJ2ZXIuSWQgICAgICAgICAgICAgICAgICAgICAgYGpzb246InJldmlld19pZCJgCisJUGF0Y2hTaGEyNTYgICAgICAgICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoicGF0Y2hfc2hhMjU2ImAKKwlTb3VyY2VMb2NrU2hhMjU2ICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJzb3VyY2VfbG9ja19zaGEyNTYiYAorCUV2YWx1YXRvckltYWdlRGlnZXN0ICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246ImV2YWx1YXRvcl9pbWFnZV9kaWdlc3QiYAorCUhvc3RRdWFsaWZpY2F0aW9uU2hhMjU2ICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246Imhvc3RfcXVhbGlmaWNhdGlvbl9zaGEyNTYiYAorCUNvbnRhaW5tZW50U2hhMjU2ICAgICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246ImNvbnRhaW5tZW50X3NoYTI1NiJgCisJVGVzdEV2aWRlbmNlU2hhMjU2ICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoidGVzdF9ldmlkZW5jZV9zaGEyNTYiYAorCVNhbmRib3hJZCAgICAgICAgICAgICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InNhbmRib3hfaWQiYAorCU9mZmxpbmUgICAgICAgICAgICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246Im9mZmxpbmUiYAorCU5vTWFpbkNyZWRlbnRpYWxzICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246Im5vX21haW5fY3JlZGVudGlhbHMiYAorCVJlYWRPbmx5U291cmNlICAgICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InJlYWRfb25seV9zb3VyY2UiYAorCVBhc3NlZCAgICAgICAgICAgICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246InBhc3NlZCJgCisJVGVzdE1vZGVsICAgICAgICAgICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoidGVzdF9tb2RlbCJgCisJVGVzdFJlYXNvbmluZyAgICAgICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoidGVzdF9yZWFzb25pbmciYAorCVdpbm5lclJldmlld1BvbGljeSAgICAgICBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgYGpzb246Indpbm5lcl9yZXZpZXdfcG9saWN5LG9taXRlbXB0eSJgCisJT3BlcmF0aW9uICAgICAgICAgICAgICAgIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoib3BlcmF0aW9uLG9taXRlbXB0eSJgCisJSW5zdHJ1bWVudEFwcHJvdmFsU2hhMjU2IHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICBganNvbjoiaW5zdHJ1bWVudF9hcHByb3ZhbF9zaGEyNTYsb21pdGVtcHR5ImAKKwlTaW11bGF0b3JTaGEyNTYgICAgICAgICAgc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgIGBqc29uOiJzaW11bGF0b3Jfc2hhMjU2LG9taXRlbXB0eSJgCisJRzJWb2x1bWVQb2xpY3kgICAgICAgICAgIENvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3kgICAgICBganNvbjoiZzJfdm9sdW1lX3BvbGljeSxvbWl0ZW1wdHkiYAorCVdvcmtDb3ZlcmFnZVBvbGljeSAgICAgICAqQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3kgYGpzb246IndvcmtfY292ZXJhZ2VfcG9saWN5LG9taXRlbXB0eSJgCit9CisKKy8vIEluZGVwZW5kZW50bHkgZGVjb2RlZCByZWNlaXB0cyByZXRhaW4gZXhhY3QgdmFsdWUgaWRlbnRpdHkgZGVzcGl0ZSBkaXN0aW5jdAorLy8gYWxsb2NhdGlvbnMgZm9yIHRoZSBvcHRpb25hbCBwcm9zcGVjdGl2ZSBwb2xpY3kgbGVhZi4KK2Z1bmMgKHNlbGYgQ29tcGV0aXRpb25SZXZpZXdlZFNvdXJjZUJ1aWxkUmVjZWlwdCkgRXF1YWwob3RoZXIgQ29tcGV0aXRpb25SZXZpZXdlZFNvdXJjZUJ1aWxkUmVjZWlwdCkgYm9vbCB7CisJaWYgKHNlbGYuV29ya0NvdmVyYWdlUG9saWN5ID09IG5pbCkgIT0gKG90aGVyLldvcmtDb3ZlcmFnZVBvbGljeSA9PSBuaWwpIHsKKwkJcmV0dXJuIGZhbHNlCisJfQorCWlmIHNlbGYuV29ya0NvdmVyYWdlUG9saWN5ICE9IG5pbCAmJiAqc2VsZi5Xb3JrQ292ZXJhZ2VQb2xpY3kgIT0gKm90aGVyLldvcmtDb3ZlcmFnZVBvbGljeSB7CisJCXJldHVybiBmYWxzZQorCX0KKwlzZWxmLldvcmtDb3ZlcmFnZVBvbGljeSwgb3RoZXIuV29ya0NvdmVyYWdlUG9saWN5ID0gbmlsLCBuaWwKKwlyZXR1cm4gc2VsZiA9PSBvdGhlcgorfQorCisvLyBBIHJldHVybmVkIHJlY2VpcHQgY2Fubm90IG11dGF0ZSB0aGUgb3BlcmF0b3IncyBjb25maWd1cmVkIHBvbGljeSBsZWFmLgorZnVuYyAoc2VsZiBDb21wZXRpdGlvblJldmlld2VkU291cmNlQnVpbGRSZWNlaXB0KSBDbG9uZSgpIENvbXBldGl0aW9uUmV2aWV3ZWRTb3VyY2VCdWlsZFJlY2VpcHQgeworCXNlbGYuV29ya0NvdmVyYWdlUG9saWN5ID0gc2VsZi5Xb3JrQ292ZXJhZ2VQb2xpY3kuQ2xvbmUoKQorCXJldHVybiBzZWxmCit9CisKKy8vIFNoYXJlZCBkZXRlcm1pbmlzdGljIGNvbW1pdCBtZXRhZGF0YSBtdXN0IG5vdCBkZXBlbmQgb24gcnVudGltZSBjbG9ja3MuCitjb25zdCBDb21wZXRpdGlvblRydXN0ZWRJbnN0cnVtZW50Q29tbWl0VGltZSA9ICIyMDAwLTAxLTAxVDAwOjAwOjAwWiIKZGlmZiAtLWdpdCBhL21vZGVsL2NvbXBldGl0aW9uX3dvcmtfY292ZXJhZ2VfcG9saWN5LmdvIGIvbW9kZWwvY29tcGV0aXRpb25fd29ya19jb3ZlcmFnZV9wb2xpY3kuZ28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZiNjA3MGE3MjQ0NWJiNTZiYmMwYjZhNThlMzU5ODZiMjI2ZTQ3MgotLS0gL2Rldi9udWxsCisrKyBiL21vZGVsL2NvbXBldGl0aW9uX3dvcmtfY292ZXJhZ2VfcG9saWN5LmdvCkBAIC0wLDAgKzEsMjY2IEBACisvLyBQcm9zcGVjdGl2ZSBvZmZlcmVkLXdvcmsgY292ZXJhZ2UgaXMgc2VwYXJhdGUgZnJvbSB0aGUgbGF0ZW5jeSBvYmplY3RpdmUgYW5kCisvLyBHMiB2b2x1bWUgZmxvb3JzLiBUaGlzIHN0YW5kYWxvbmUgZGVwZW5kZW5jeSBjYW4gYWNjb21wYW55IGEgcmV2aWV3ZWQgdHJ1c3RlZAorLy8gaW5zdHJ1bWVudCBvdmVybGF5IHdpdGhvdXQgY29weWluZyBuZXdlciBjb250cm9sLXBsYW5lIGltcGxlbWVudGF0aW9ucy4KK3BhY2thZ2UgbW9kZWwKKworaW1wb3J0ICgKKwkiYnl0ZXMiCisJImVuY29kaW5nL2pzb24iCisJImVycm9ycyIKKwkiaW8iCisJIm1hdGgiCisJIm1hdGgvYmlnIgorCSJzdHJjb252IgorCSJzdHJpbmdzIgorKQorCitjb25zdCBDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVNjb3JlclZlcnNpb24gPSAic2ltLWxhdGVuY3ktc2NvcmUvMyIKK2NvbnN0IENvbXBldGl0aW9uV29ya0NvdmVyYWdlS2luZCA9ICJzZWVkZWQtY3Jhd2wtY292ZXJhZ2UvdjEiCisKKy8vIFRoZSB2MSB3aXJlIG9iamVjdCBoYXMgdGhyZWUgc21hbGwgc2NhbGFyIGZpZWxkczsgaXQgaXMgbm90IGEgcmVxdWVzdCBib2R5CisvLyBzaXplIGtub2Igb3IgYSBzb3VyY2Ugb2YgY29uZmlndXJhYmxlIHdvcmstaW52ZW50b3J5IGFsbG9jYXRpb24gYnVkZ2V0cy4KK2NvbnN0IGNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5Qnl0ZXMgPSA1MTIKKworLy8gU2NoZW1hLXRocmVlIHJ1biBtYW5pZmVzdHMgaW5jbHVkZSB0aGUgYm91bmRlZCBjb21wbGV0aW9uIGxlZGdlci4gVGhpcyBpcworLy8gYW4gYXJ0aWZhY3QtZm9ybWF0IGNlaWxpbmcsIGRpc3RpbmN0IGZyb20gdGhlIGNvbnRyb2wgUlBDIGRvY3VtZW50IGJ1ZGdldC4KK2NvbnN0IENvbXBldGl0aW9uV29ya0NvdmVyYWdlTWF4aW11bU1hbmlmZXN0Qnl0ZXMgPSA4ICogMTAyNCAqIDEwMjQKKworLy8gTmlsL29taXNzaW9uIHByZXNlcnZlcyBoaXN0b3JpY2FsIHNjb3JpbmcgZXhhY3RseS4gQW4gZXhwbGljaXQgdjEgY29udHJhY3QKKy8vIGZyZWV6ZXMgYm90aCByZWxhdGl2ZSBmbG9vcnMsIG5ldmVyIGRlcml2aW5nIHRoZW0gZnJvbSBjYW5kaWRhdGUgbWVhc3VyZW1lbnRzLgordHlwZSBDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSBzdHJ1Y3QgeworCUtpbmQgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgIGBqc29uOiJraW5kIiB5YW1sOiJraW5kImAKKwlNaW5pbXVtUGFnZUNvdmVyYWdlUmF0aW8gZmxvYXQ2NCBganNvbjoibWluaW11bV9wYWdlX2NvdmVyYWdlX3JhdGlvIiB5YW1sOiJtaW5pbXVtX3BhZ2VfY292ZXJhZ2VfcmF0aW8iYAorCU1pbmltdW1CeXRlQ292ZXJhZ2VSYXRpbyBmbG9hdDY0IGBqc29uOiJtaW5pbXVtX2J5dGVfY292ZXJhZ2VfcmF0aW8iIHlhbWw6Im1pbmltdW1fYnl0ZV9jb3ZlcmFnZV9yYXRpbyJgCit9CisKKy8vIEEgbWlzc2luZyBoaXN0b3JpY2FsIGxlYWYgc3RheXMgbWlzc2luZzsgZXhwbGljaXQgcG9saWNpZXMgYXJlIGNvcGllZCBieQorLy8gdmFsdWUgYXQgaW5kZXBlbmRlbnQgYXV0aG9yaXR5IGFuZCBsaWZlY3ljbGUgYm91bmRhcmllcy4KK2Z1bmMgKHNlbGYgKkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5KSBDbG9uZSgpICpDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSB7CisJaWYgc2VsZiA9PSBuaWwgeworCQlyZXR1cm4gbmlsCisJfQorCWNvcHkgOj0gKnNlbGYKKwlyZXR1cm4gJmNvcHkKK30KKworLy8gRWFjaCBkaW1lbnNpb24gcmV0YWlucyBhdCBsZWFzdCA5NSUgb2YgaXRzIG93biBiYXNlbGluZSBjb3ZlcmFnZS4gVGhpcyBpcworLy8gcmVsYXRpdmUsIG5vdCBmaXZlIHBlcmNlbnRhZ2UgcG9pbnRzIG9yIGFuIGFic29sdXRlIGNvdmVyYWdlIGZsb29yLgorZnVuYyBEZWZhdWx0Q29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3koKSBDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSB7CisJcmV0dXJuIENvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5e0tpbmQ6IENvbXBldGl0aW9uV29ya0NvdmVyYWdlS2luZCwgTWluaW11bVBhZ2VDb3ZlcmFnZVJhdGlvOiAwLjk1LCBNaW5pbXVtQnl0ZUNvdmVyYWdlUmF0aW86IDAuOTV9Cit9CisKKy8vIFZhbHVlcyBkaWZmZXJlbnQgZnJvbSB0aGUgdmVyc2lvbmVkIHYxIGNvbnRyYWN0IG5lZWQgYW5vdGhlcgorLy8gcG9saWN5IHZlcnNpb247IGFuIG9taXR0ZWQgcmVsYXRpdmUgZmxvb3IgbXVzdCBub3QgYmVjb21lIGFuIGltcGxpY2l0IHplcm8uCitmdW5jIFZhbGlkYXRlQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3kocG9saWN5ICpDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSkgZXJyb3IgeworCWlmIHBvbGljeSA9PSBuaWwgeworCQlyZXR1cm4gbmlsCisJfQorCWV4cGVjdGVkIDo9IERlZmF1bHRDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSgpCisJaWYgKnBvbGljeSAhPSBleHBlY3RlZCB7CisJCXJldHVybiBlcnJvcnMuTmV3KCJ1bnN1cHBvcnRlZCBvciBpbmNvbXBsZXRlIHNlZWRlZCBjcmF3bCBjb3ZlcmFnZSBwb2xpY3kiKQorCX0KKwlyZXR1cm4gbmlsCit9CisKKy8vIE9wdGlvbmFsIHNvdXJjZSBsZWF2ZXMgcHJlc2VydmUgb21pc3Npb24sIGJ1dCBleHBsaWNpdCBudWxsLCBhbGlhc2VzIGFuZAorLy8gZHVwbGljYXRlcyBjYW5ub3QgZXJhc2UgcHJvc3BlY3RpdmUgYXV0aG9yaXR5IGJlZm9yZSB0eXBlZCBKU09OIGRlY29kaW5nLgorZnVuYyBDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeUZyb21Tb3VyY2VKc29uKGNvbnRlbnQgW11ieXRlKSAoKkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5LCBlcnJvcikgeworCWRlY29kZXIgOj0ganNvbi5OZXdEZWNvZGVyKGJ5dGVzLk5ld1JlYWRlcihjb250ZW50KSkKKwlpZiBmaXJzdCwgZXJyIDo9IGRlY29kZXIuVG9rZW4oKTsgZXJyICE9IG5pbCB8fCBmaXJzdCAhPSBqc29uLkRlbGltKCd7JykgeworCQlyZXR1cm4gbmlsLCBlcnJvcnMuTmV3KCJzb3VyY2UgaWRlbnRpdHkgbXVzdCBiZSBhIEpTT04gb2JqZWN0IikKKwl9CisJdmFyIHBvbGljeSAqQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3kKKwlzZWVuIDo9IGZhbHNlCisJZm9yIGRlY29kZXIuTW9yZSgpIHsKKwkJa2V5VG9rZW4sIGVyciA6PSBkZWNvZGVyLlRva2VuKCkKKwkJa2V5LCBvayA6PSBrZXlUb2tlbi4oc3RyaW5nKQorCQlpZiBlcnIgIT0gbmlsIHx8ICFvayB7CisJCQlyZXR1cm4gbmlsLCBlcnJvcnMuTmV3KCJzb3VyY2UgaWRlbnRpdHkgaGFzIGEgbWFsZm9ybWVkIGZpZWxkIikKKwkJfQorCQl2YXIgdmFsdWUganNvbi5SYXdNZXNzYWdlCisJCWlmIGVyciA6PSBkZWNvZGVyLkRlY29kZSgmdmFsdWUpOyBlcnIgIT0gbmlsIHsKKwkJCXJldHVybiBuaWwsIGVycgorCQl9CisJCWlmICFzdHJpbmdzLkVxdWFsRm9sZChrZXksICJ3b3JrX2NvdmVyYWdlX3BvbGljeSIpIHsKKwkJCWNvbnRpbnVlCisJCX0KKwkJaWYga2V5ICE9ICJ3b3JrX2NvdmVyYWdlX3BvbGljeSIgfHwgc2VlbiB8fCBieXRlcy5FcXVhbChieXRlcy5UcmltU3BhY2UodmFsdWUpLCBbXWJ5dGUoIm51bGwiKSkgeworCQkJcmV0dXJuIG5pbCwgZXJyb3JzLk5ldygic291cmNlIGlkZW50aXR5IGhhcyBhbiBhbWJpZ3VvdXMgY292ZXJhZ2UgcG9saWN5IikKKwkJfQorCQlzZWVuID0gdHJ1ZQorCQl2YXIgZGVjb2RlZCBDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeQorCQlpZiBlcnIgOj0ganNvbi5Vbm1hcnNoYWwodmFsdWUsICZkZWNvZGVkKTsgZXJyICE9IG5pbCB7CisJCQlyZXR1cm4gbmlsLCBlcnIKKwkJfQorCQlwb2xpY3kgPSAmZGVjb2RlZAorCX0KKwlpZiBsYXN0LCBlcnIgOj0gZGVjb2Rlci5Ub2tlbigpOyBlcnIgIT0gbmlsIHx8IGxhc3QgIT0ganNvbi5EZWxpbSgnfScpIHx8IGRlY29kZXIuRGVjb2RlKG5ldyhhbnkpKSAhPSBpby5FT0YgeworCQlyZXR1cm4gbmlsLCBlcnJvcnMuTmV3KCJzb3VyY2UgaWRlbnRpdHkgaGFzIHRyYWlsaW5nIG9yIGluY29tcGxldGUgSlNPTiIpCisJfQorCXJldHVybiBwb2xpY3ksIG5pbAorfQorCisvLyBPd25lZCBwb2xpY3kga2V5cyBhcmUgZXhhY3QsIHVuaXF1ZSBhbmQgY29tcGxldGUgYmVmb3JlIHR5cGVkIGRlY29kaW5nLgorLy8gUGFyZW50IGNvbnRyYWN0cyBzdGlsbCBkZWNpZGUgd2hldGhlciBvbWlzc2lvbiBpcyBoaXN0b3JpY2FsbHkgcGVybWl0dGVkLgorZnVuYyAoc2VsZiAqQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3kpIFVubWFyc2hhbEpTT04oY29udGVudCBbXWJ5dGUpIGVycm9yIHsKKwlpZiBsZW4oY29udGVudCkgPT0gMCB8fCBsZW4oY29udGVudCkgPiBjb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeUJ5dGVzIHsKKwkJcmV0dXJuIGVycm9ycy5OZXcoIndvcmsgY292ZXJhZ2UgcG9saWN5IGV4Y2VlZHMgaXRzIHdpcmUgc2hhcGUiKQorCX0KKwlkZWNvZGVyIDo9IGpzb24uTmV3RGVjb2RlcihieXRlcy5OZXdSZWFkZXIoY29udGVudCkpCisJZmlyc3QsIGVyciA6PSBkZWNvZGVyLlRva2VuKCkKKwlpZiBlcnIgIT0gbmlsIHx8IGZpcnN0ICE9IGpzb24uRGVsaW0oJ3snKSB7CisJCXJldHVybiBlcnJvcnMuTmV3KCJleHBsaWNpdCB3b3JrIGNvdmVyYWdlIHBvbGljeSBtdXN0IGJlIGFuIG9iamVjdCIpCisJfQorCXNlZW4gOj0gbWFwW3N0cmluZ11ib29se30KKwlmb3IgZGVjb2Rlci5Nb3JlKCkgeworCQlrZXlUb2tlbiwgZXJyIDo9IGRlY29kZXIuVG9rZW4oKQorCQlrZXksIG9rIDo9IGtleVRva2VuLihzdHJpbmcpCisJCWlmIGVyciAhPSBuaWwgfHwgIW9rIHx8IHNlZW5ba2V5XSB8fCBrZXkgIT0gImtpbmQiICYmIGtleSAhPSAibWluaW11bV9wYWdlX2NvdmVyYWdlX3JhdGlvIiAmJiBrZXkgIT0gIm1pbmltdW1fYnl0ZV9jb3ZlcmFnZV9yYXRpbyIgeworCQkJcmV0dXJuIGVycm9ycy5OZXcoImFtYmlndW91cyBvciB1bmtub3duIHdvcmsgY292ZXJhZ2UgcG9saWN5IGZpZWxkIikKKwkJfQorCQlzZWVuW2tleV0gPSB0cnVlCisJCWlmIGVyciA6PSBkZWNvZGVyLkRlY29kZShuZXcoanNvbi5SYXdNZXNzYWdlKSk7IGVyciAhPSBuaWwgeworCQkJcmV0dXJuIGVycgorCQl9CisJfQorCWlmIGxhc3QsIGVyciA6PSBkZWNvZGVyLlRva2VuKCk7IGVyciAhPSBuaWwgfHwgbGFzdCAhPSBqc29uLkRlbGltKCd9JykgfHwgbGVuKHNlZW4pICE9IDMgeworCQlyZXR1cm4gZXJyb3JzLk5ldygiaW5jb21wbGV0ZSB3b3JrIGNvdmVyYWdlIHBvbGljeSIpCisJfQorCWlmIGRlY29kZXIuRGVjb2RlKG5ldyhhbnkpKSAhPSBpby5FT0YgeworCQlyZXR1cm4gZXJyb3JzLk5ldygid29yayBjb3ZlcmFnZSBwb2xpY3kgaGFzIHRyYWlsaW5nIGRhdGEiKQorCX0KKwl0eXBlIHBsYWluUG9saWN5IENvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5CisJdmFyIHZhbHVlIHBsYWluUG9saWN5CisJaWYgZXJyIDo9IGpzb24uVW5tYXJzaGFsKGNvbnRlbnQsICZ2YWx1ZSk7IGVyciAhPSBuaWwgeworCQlyZXR1cm4gZXJyCisJfQorCXBvbGljeSA6PSBDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSh2YWx1ZSkKKwlpZiBlcnIgOj0gVmFsaWRhdGVDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSgmcG9saWN5KTsgZXJyICE9IG5pbCB7CisJCXJldHVybiBlcnIKKwl9CisJKnNlbGYgPSBwb2xpY3kKKwlyZXR1cm4gbmlsCit9CisKKy8vIEhpc3RvcmljYWwgcG9saWN5L3ZlcnNpb24gbWFwcGluZ3MgZG8gbm90IGNoYW5nZS4gQ292ZXJhZ2UgaXMgc3VwcG9ydGVkCisvLyBvbmx5IHRvZ2V0aGVyIHdpdGggdGhlIGZsb29ycy1vbmx5IHZvbHVtZSBjb250cmFjdC4gTmF0aXZlIHF1YWxpZmljYXRpb24KKy8vIGFuZCBwdWJsaWMgY2FsaWJyYXRpb24gYXBwcm92YWwgcmVtYWluIHNlcGFyYXRlIGZyb20gc291cmNlIHZhbGlkYXRpb24uCitmdW5jIENvbXBldGl0aW9uU2NvcmVyVmVyc2lvbkZvcldvcmtDb3ZlcmFnZShnMiBDb21wZXRpdGlvbkcyVm9sdW1lUG9saWN5LCBjb3ZlcmFnZSAqQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3kpIChzdHJpbmcsIGVycm9yKSB7CisJdmVyc2lvbiwgZXJyIDo9IENvbXBldGl0aW9uU2NvcmVyVmVyc2lvbkZvckcyUG9saWN5KGcyKQorCWlmIGVyciAhPSBuaWwgfHwgY292ZXJhZ2UgPT0gbmlsIHsKKwkJcmV0dXJuIHZlcnNpb24sIGVycgorCX0KKwlpZiBnMiAhPSBDb21wZXRpdGlvbkcyVm9sdW1lUG9saWN5TWluaW11bVdvcmsgfHwgVmFsaWRhdGVDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeShjb3ZlcmFnZSkgIT0gbmlsIHsKKwkJcmV0dXJuICIiLCBlcnJvcnMuTmV3KCJzZWVkZWQgY3Jhd2wgY292ZXJhZ2UgcmVxdWlyZXMgdGhlIGV4cGxpY2l0IG1pbmltdW0td29yayBjb250cmFjdCIpCisJfQorCXJldHVybiBDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVNjb3JlclZlcnNpb24sIG5pbAorfQorCisvLyBDb3VudHMgYXJlIGludGVnZXIgcmVzcG9uc2UgcmVwcmVzZW50YXRpb25zLCBub3Qgb25seSBwYXlsb2FkIHNpemVzLiBFYWNoCisvLyBpbmRlcGVuZGVudCBydW4gcmVtYWlucyB0aGUgc3RhdGlzdGljYWwgdW5pdDsgcGFnZXMgYXJlIG5vdCBSOSByZXBsaWNhdGVzLgordHlwZSBDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnkgc3RydWN0IHsKKwlQbGFuU2hhMjU2ICAgICBzdHJpbmcgIGBqc29uOiJwbGFuX3NoYTI1NiJgCisJT2ZmZXJlZFJvb3RzICAgaW50NjQgICBganNvbjoib2ZmZXJlZF9yb290cyJgCisJRXhwZWN0ZWRQYWdlcyAgaW50NjQgICBganNvbjoiZXhwZWN0ZWRfcGFnZXMiYAorCUV4cGVjdGVkQnl0ZXMgIGludDY0ICAgYGpzb246ImV4cGVjdGVkX2J5dGVzImAKKwlDb21wbGV0ZWRQYWdlcyBpbnQ2NCAgIGBqc29uOiJjb21wbGV0ZWRfcGFnZXMiYAorCUNvbXBsZXRlZEJ5dGVzIGludDY0ICAgYGpzb246ImNvbXBsZXRlZF9ieXRlcyJgCisJUGFnZUNvdmVyYWdlICAgZmxvYXQ2NCBganNvbjoicGFnZV9jb3ZlcmFnZSJgCisJQnl0ZUNvdmVyYWdlICAgZmxvYXQ2NCBganNvbjoiYnl0ZV9jb3ZlcmFnZSJgCit9CisKKy8vIEEgc3RydWN0dXJhbGx5IHZhbGlkIHplcm8tY29tcGxldGlvbiBydW4gaXMgb2JzZXJ2YWJsZSwgbmV2ZXIgc2lsZW50bHkKKy8vIG9taXR0ZWQuIEJhc2VsaW5lIHF1YWxpZmljYXRpb24gYW5kIHRoZSBwcm9zcGVjdGl2ZSBnYXRlIGRlY2lkZSBhZG1pc3Npb24uCitmdW5jIFZhbGlkYXRlQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5KHZhbHVlICpDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnkpIGVycm9yIHsKKwlpZiB2YWx1ZSA9PSBuaWwgfHwgbGVuKHZhbHVlLlBsYW5TaGEyNTYpICE9IDY0IHx8IHZhbHVlLk9mZmVyZWRSb290cyA8PSAwIHx8IHZhbHVlLkV4cGVjdGVkUGFnZXMgPCB2YWx1ZS5PZmZlcmVkUm9vdHMgfHwKKwkJdmFsdWUuRXhwZWN0ZWRCeXRlcyA8IHZhbHVlLkV4cGVjdGVkUGFnZXMgfHwgdmFsdWUuQ29tcGxldGVkUGFnZXMgPCAwIHx8IHZhbHVlLkV4cGVjdGVkUGFnZXMgPCB2YWx1ZS5Db21wbGV0ZWRQYWdlcyB8fAorCQl2YWx1ZS5Db21wbGV0ZWRCeXRlcyA8IDAgfHwgdmFsdWUuRXhwZWN0ZWRCeXRlcyA8IHZhbHVlLkNvbXBsZXRlZEJ5dGVzIHx8CisJCSh2YWx1ZS5Db21wbGV0ZWRQYWdlcyA9PSAwKSAhPSAodmFsdWUuQ29tcGxldGVkQnl0ZXMgPT0gMCkgfHwKKwkJbWF0aC5Jc05hTih2YWx1ZS5QYWdlQ292ZXJhZ2UpIHx8IG1hdGguSXNOYU4odmFsdWUuQnl0ZUNvdmVyYWdlKSB8fAorCQl2YWx1ZS5QYWdlQ292ZXJhZ2UgIT0gZmxvYXQ2NCh2YWx1ZS5Db21wbGV0ZWRQYWdlcykvZmxvYXQ2NCh2YWx1ZS5FeHBlY3RlZFBhZ2VzKSB8fAorCQl2YWx1ZS5CeXRlQ292ZXJhZ2UgIT0gZmxvYXQ2NCh2YWx1ZS5Db21wbGV0ZWRCeXRlcykvZmxvYXQ2NCh2YWx1ZS5FeHBlY3RlZEJ5dGVzKSB7CisJCXJldHVybiBlcnJvcnMuTmV3KCJpbnZhbGlkIGluZGVwZW5kZW50IHdvcmsgY292ZXJhZ2Ugc3VtbWFyeSIpCisJfQorCWZvciBfLCBjaGFyYWN0ZXIgOj0gcmFuZ2UgdmFsdWUuUGxhblNoYTI1NiB7CisJCWlmICEoY2hhcmFjdGVyID49ICcwJyAmJiBjaGFyYWN0ZXIgPD0gJzknKSAmJiAhKGNoYXJhY3RlciA+PSAnYScgJiYgY2hhcmFjdGVyIDw9ICdmJykgeworCQkJcmV0dXJuIGVycm9ycy5OZXcoImludmFsaWQgd29yayBwbGFuIGRpZ2VzdCIpCisJCX0KKwl9CisJcmV0dXJuIG5pbAorfQorCisvLyBFbGlnaWJpbGl0eSB1c2VzIGludGVnZXIgZnJhY3Rpb25zIGFuZCB0aGUgcG9saWN5J3MgY2Fub25pY2FsIGRlY2ltYWwsIG5vdAorLy8gYW4gZXBzaWxvbiBvciBiaW5hcnk2NCBtdWx0aXBsaWNhdGlvbiBhdCB0aGUgaW5jbHVzaXZlIHB1YmxpY2F0aW9uIGJvdW5kYXJ5LgorZnVuYyBDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBhc3NlZChwb2xpY3kgKkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5LCBiYXNlbGluZSwgY2FuZGlkYXRlICpDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnkpIGJvb2wgeworCWlmIHBvbGljeSA9PSBuaWwgfHwgVmFsaWRhdGVDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeShwb2xpY3kpICE9IG5pbCB8fAorCQlWYWxpZGF0ZUNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeShiYXNlbGluZSkgIT0gbmlsIHx8IFZhbGlkYXRlQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5KGNhbmRpZGF0ZSkgIT0gbmlsIHx8CisJCWJhc2VsaW5lLlBsYW5TaGEyNTYgIT0gY2FuZGlkYXRlLlBsYW5TaGEyNTYgfHwgYmFzZWxpbmUuT2ZmZXJlZFJvb3RzICE9IGNhbmRpZGF0ZS5PZmZlcmVkUm9vdHMgfHwKKwkJYmFzZWxpbmUuRXhwZWN0ZWRQYWdlcyAhPSBjYW5kaWRhdGUuRXhwZWN0ZWRQYWdlcyB8fCBiYXNlbGluZS5FeHBlY3RlZEJ5dGVzICE9IGNhbmRpZGF0ZS5FeHBlY3RlZEJ5dGVzIHx8CisJCWJhc2VsaW5lLkNvbXBsZXRlZFBhZ2VzIDw9IDAgfHwgYmFzZWxpbmUuQ29tcGxldGVkQnl0ZXMgPD0gMCB8fCBjYW5kaWRhdGUuQ29tcGxldGVkUGFnZXMgPD0gMCB8fCBjYW5kaWRhdGUuQ29tcGxldGVkQnl0ZXMgPD0gMCB7CisJCXJldHVybiBmYWxzZQorCX0KKwlmb3IgXywgZGltZW5zaW9uIDo9IHJhbmdlIFtdc3RydWN0IHsKKwkJYmFzZWxpbmUsIGNhbmRpZGF0ZSwgZXhwZWN0ZWQgaW50NjQKKwkJcmF0aW8gICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ2NAorCX17CisJCXtiYXNlbGluZTogYmFzZWxpbmUuQ29tcGxldGVkUGFnZXMsIGNhbmRpZGF0ZTogY2FuZGlkYXRlLkNvbXBsZXRlZFBhZ2VzLCBleHBlY3RlZDogYmFzZWxpbmUuRXhwZWN0ZWRQYWdlcywgcmF0aW86IHBvbGljeS5NaW5pbXVtUGFnZUNvdmVyYWdlUmF0aW99LAorCQl7YmFzZWxpbmU6IGJhc2VsaW5lLkNvbXBsZXRlZEJ5dGVzLCBjYW5kaWRhdGU6IGNhbmRpZGF0ZS5Db21wbGV0ZWRCeXRlcywgZXhwZWN0ZWQ6IGJhc2VsaW5lLkV4cGVjdGVkQnl0ZXMsIHJhdGlvOiBwb2xpY3kuTWluaW11bUJ5dGVDb3ZlcmFnZVJhdGlvfSwKKwl9IHsKKwkJcmF0aW8sIG9rIDo9IG5ldyhiaWcuUmF0KS5TZXRTdHJpbmcoc3RyY29udi5Gb3JtYXRGbG9hdChkaW1lbnNpb24ucmF0aW8sICdnJywgLTEsIDY0KSkKKwkJY29udHJvbCA6PSBuZXcoYmlnLlJhdCkuU2V0RnJhYzY0KGRpbWVuc2lvbi5iYXNlbGluZSwgZGltZW5zaW9uLmV4cGVjdGVkKQorCQlpZiAhb2sgfHwgcmF0aW8uU2lnbigpIDw9IDAgeworCQkJcmV0dXJuIGZhbHNlCisJCX0KKwkJZmxvb3IgOj0gbmV3KGJpZy5SYXQpLk11bChjb250cm9sLCByYXRpbykKKwkJb2JzZXJ2ZWQgOj0gbmV3KGJpZy5SYXQpLlNldEZyYWM2NChkaW1lbnNpb24uY2FuZGlkYXRlLCBkaW1lbnNpb24uZXhwZWN0ZWQpCisJCWlmIG9ic2VydmVkLkNtcChmbG9vcikgPCAwIHsKKwkJCXJldHVybiBmYWxzZQorCQl9CisJfQorCXJldHVybiB0cnVlCit9CisKKy8vIEFuIGV4cGxpY2l0IGNvdmVyYWdlIG9iamVjdCBjYW5ub3QgYmUgZXJhc2VkIGJ5IGFuIG9sZGVyIHNjb3JlIGRlY29kZXIuCisvLyBNYXJzaGFsaW5nIGFsc28gYWNjZXB0cyB0aGUgdHlwZWQgbG9jYWwgcHJvZHVjZXIgYW5kIGR1cmFibGUgSlNPTiBtYXBzLgorZnVuYyBDb21wZXRpdGlvblNjb3JlV29ya0NvdmVyYWdlUG9saWN5KGRpYWdub3N0aWNzIG1hcFtzdHJpbmddYW55KSAoKkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5LCBlcnJvcikgeworCXZhbHVlLCBwcmVzZW50IDo9IGRpYWdub3N0aWNzWyJ3b3JrX2NvdmVyYWdlX3BvbGljeSJdCisJaWYgIXByZXNlbnQgeworCQlyZXR1cm4gbmlsLCBuaWwKKwl9CisJY29udGVudCwgZXJyIDo9IGpzb24uTWFyc2hhbCh2YWx1ZSkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJcmV0dXJuIG5pbCwgZXJyb3JzLk5ldygiaW52YWxpZCBzY29yZSBjb3ZlcmFnZSBwcm92ZW5hbmNlIikKKwl9CisJdmFyIHBvbGljeSBDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeQorCWlmIGVyciA6PSBqc29uLlVubWFyc2hhbChjb250ZW50LCAmcG9saWN5KTsgZXJyICE9IG5pbCB7CisJCXJldHVybiBuaWwsIGVycgorCX0KKwlyZXR1cm4gJnBvbGljeSwgbmlsCit9CisKKy8vIEFsbCBjb25zdW1lcnMgZGVyaXZlIHRoZSBtYW5kYXRvcnkgc3VyZmFjZSBmcm9tIHZlcnNpb25lZCBwcm92ZW5hbmNlLCBub3QKKy8vIGZyb20gd2hpY2hldmVyIGdhdGVzIGEgY2FuZGlkYXRlIGhhcHBlbmVkIHRvIGluY2x1ZGUgaW4gaXRzIGRvY3VtZW50LgorZnVuYyBDb21wZXRpdGlvblNjb3JlUmVxdWlyZWRHYXRlTmFtZXMoc2NvcmUgKkNvbXBldGl0aW9uU2NvcmVSZXN1bHQpIChbXXN0cmluZywgZXJyb3IpIHsKKwlpZiBzY29yZSA9PSBuaWwgeworCQlyZXR1cm4gbmlsLCBlcnJvcnMuTmV3KCJzY29yZSBpcyBtaXNzaW5nIikKKwl9CisJY292ZXJhZ2UsIGVyciA6PSBDb21wZXRpdGlvblNjb3JlV29ya0NvdmVyYWdlUG9saWN5KHNjb3JlLkRpYWdub3N0aWNzKQorCWlmIGVyciAhPSBuaWwgeworCQlyZXR1cm4gbmlsLCBlcnIKKwl9CisJcG9saWN5VmFsdWUsIHBvbGljeVByZXNlbnQgOj0gc2NvcmUuRGlhZ25vc3RpY3NbImcyX3ZvbHVtZV9wb2xpY3kiXQorCXZlcnNpb25WYWx1ZSwgdmVyc2lvblByZXNlbnQgOj0gc2NvcmUuRGlhZ25vc3RpY3NbInNjb3Jlcl92ZXJzaW9uIl0KKwlpZiBwb2xpY3lQcmVzZW50IHx8IHZlcnNpb25QcmVzZW50IHx8IGNvdmVyYWdlICE9IG5pbCB7CisJCXBvbGljeSwgcG9saWN5T2sgOj0gcG9saWN5VmFsdWUuKHN0cmluZykKKwkJdmVyc2lvbiwgdmVyc2lvbk9rIDo9IHZlcnNpb25WYWx1ZS4oc3RyaW5nKQorCQlleHBlY3RlZCwgZXJyIDo9IENvbXBldGl0aW9uU2NvcmVyVmVyc2lvbkZvcldvcmtDb3ZlcmFnZShDb21wZXRpdGlvbkcyVm9sdW1lUG9saWN5KHBvbGljeSksIGNvdmVyYWdlKQorCQlpZiAhcG9saWN5T2sgfHwgIXZlcnNpb25PayB8fCBwb2xpY3kgIT0gc3RyaW5nKENvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lNaW5pbXVtV29yaykgfHwgZXJyICE9IG5pbCB8fCB2ZXJzaW9uICE9IGV4cGVjdGVkIHsKKwkJCXJldHVybiBuaWwsIGVycm9ycy5OZXcoInNjb3JlIGluc3RydW1lbnQgcG9saWN5IHByb3ZlbmFuY2UgaXMgbWFsZm9ybWVkIikKKwkJfQorCX0KKwluYW1lcyA6PSBbXXN0cmluZ3siRzFfc3VjY2VzcyIsICJHMl92b2x1bWUiLCAiRzNfcGF0aF9pbnRlZ3JpdHkiLCAiRzRfbWF0Y2htYWtpbmciLCAiRzVfc3RhYmlsaXR5IiwgIkc2X3Jlc291cmNlcyJ9CisJaWYgY292ZXJhZ2UgIT0gbmlsIHsKKwkJbmFtZXMgPSBhcHBlbmQobmFtZXMsICJHN193b3JrX2NvdmVyYWdlIikKKwl9CisJcmV0dXJuIG5hbWVzLCBuaWwKK30KZGlmZiAtLWdpdCBhL21vZGVsL2NvbXBldGl0aW9uX3dvcmtfY292ZXJhZ2VfcG9saWN5X3Rlc3QuZ28gYi9tb2RlbC9jb21wZXRpdGlvbl93b3JrX2NvdmVyYWdlX3BvbGljeV90ZXN0LmdvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxNDhjYjNkMTVlNGY0MzJiMTcwNmZiMWQ4OWFlNTk2Y2ViZDcyZmUKLS0tIC9kZXYvbnVsbAorKysgYi9tb2RlbC9jb21wZXRpdGlvbl93b3JrX2NvdmVyYWdlX3BvbGljeV90ZXN0LmdvCkBAIC0wLDAgKzEsMjU5IEBACisvLyBQb2xpY3kgdGVzdHMgdXNlIHN5bnRoZXRpYyBzY2FsYXIgY29udHJhY3RzIG9ubHkuIFRoZXkgbmVpdGhlciBxdWFsaWZ5IGEKKy8vIGJhc2VsaW5lIG5vciBhY3RpdmF0ZSBhbnkgZnV0dXJlIGluc3RydW1lbnQsIHJvdW5kIG9yIHdvcmtsb2FkLgorcGFja2FnZSBtb2RlbAorCitpbXBvcnQgKAorCSJieXRlcyIKKwkiZW5jb2RpbmcvanNvbiIKKwkibWF0aCIKKwkic3RyaW5ncyIKKwkidGVzdGluZyIKKykKKworLy8gT3B0aW9uYWwgbGVhdmVzIGhhdmUgdmFsdWUgZXF1YWxpdHkgYW5kIGluZGVwZW5kZW50IGNvcHkgb3duZXJzaGlwLCBub3QKKy8vIHBvaW50ZXIgZXF1YWxpdHkuIEhpc3RvcmljYWwgbmlsIHNoYXBlIGFuZCBieXRlcyByZW1haW4gdW5jaGFuZ2VkLgorZnVuYyBUZXN0Q29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3lDb3BpZXNBbmRSb3VuZFRyaXBzQnlWYWx1ZSh0ICp0ZXN0aW5nLlQpIHsKKwljb3ZlcmFnZSA6PSBEZWZhdWx0Q29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3koKQorCW9yaWdpbmFsIDo9IENvbXBldGl0aW9uRXZhbHVhdGlvblBvbGljeXtIYXJkd2FyZUlkOiAic3ludGhldGljLWhhcmR3YXJlIiwgV29ya0NvdmVyYWdlUG9saWN5OiAmY292ZXJhZ2V9CisJY29udGVudCwgZXJyIDo9IGpzb24uTWFyc2hhbChvcmlnaW5hbCkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCXZhciByZXBsYXkgQ29tcGV0aXRpb25FdmFsdWF0aW9uUG9saWN5CisJaWYgZXJyIDo9IGpzb24uVW5tYXJzaGFsKGNvbnRlbnQsICZyZXBsYXkpOyBlcnIgIT0gbmlsIHx8ICFvcmlnaW5hbC5FcXVhbChyZXBsYXkpIHx8IG9yaWdpbmFsLldvcmtDb3ZlcmFnZVBvbGljeSA9PSByZXBsYXkuV29ya0NvdmVyYWdlUG9saWN5IHsKKwkJdC5GYXRhbCgiaW5kZXBlbmRlbnRseSBkZWNvZGVkIHBvbGljeSBsb3N0IHZhbHVlIGVxdWFsaXR5IiwgZXJyKQorCX0KKwljbG9uZWQgOj0gb3JpZ2luYWwuQ2xvbmUoKQorCWlmICFjbG9uZWQuRXF1YWwob3JpZ2luYWwpIHx8IGNsb25lZC5Xb3JrQ292ZXJhZ2VQb2xpY3kgPT0gb3JpZ2luYWwuV29ya0NvdmVyYWdlUG9saWN5IHsKKwkJdC5GYXRhbCgiY2xvbmVkIHBvbGljeSBzaGFyZWQgaXRzIG9wdGlvbmFsIG11dGFibGUgbGVhZiIpCisJfQorCWNsb25lZC5Xb3JrQ292ZXJhZ2VQb2xpY3kuTWluaW11bUJ5dGVDb3ZlcmFnZVJhdGlvID0gLjUKKwlpZiBvcmlnaW5hbC5FcXVhbChjbG9uZWQpIHx8IG9yaWdpbmFsLldvcmtDb3ZlcmFnZVBvbGljeS5NaW5pbXVtQnl0ZUNvdmVyYWdlUmF0aW8gIT0gY292ZXJhZ2UuTWluaW11bUJ5dGVDb3ZlcmFnZVJhdGlvIHsKKwkJdC5GYXRhbCgiY29weSBtdXRhdGlvbiBlc2NhcGVkIGl0cyBvd25lZCBwb2xpY3kiKQorCX0KKwlyZXBsYXkuV29ya0NvdmVyYWdlUG9saWN5ID0gbmlsCisJaWYgb3JpZ2luYWwuRXF1YWwocmVwbGF5KSB8fCAhcmVwbGF5LkVxdWFsKHJlcGxheS5DbG9uZSgpKSB8fCByZXBsYXkuQ2xvbmUoKS5Xb3JrQ292ZXJhZ2VQb2xpY3kgIT0gbmlsIHsKKwkJdC5GYXRhbCgibmlsIGhpc3RvcmljYWwgcG9saWN5IHdhcyBub3JtYWxpemVkIGludG8gYSBwcm9zcGVjdGl2ZSBsZWFmIikKKwl9CisJcmVjZWlwdCA6PSBDb21wZXRpdGlvblJldmlld2VkU291cmNlQnVpbGRSZWNlaXB0e1NjaGVtYTogMiwgV29ya0NvdmVyYWdlUG9saWN5OiAmY292ZXJhZ2UsIFNpbXVsYXRvclNoYTI1Njogc3RyaW5ncy5SZXBlYXQoImEiLCA2NCl9CisJY29udGVudCwgZXJyID0ganNvbi5NYXJzaGFsKHJlY2VpcHQpCisJaWYgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoZXJyKQorCX0KKwl2YXIgZGVjb2RlZFJlY2VpcHQgQ29tcGV0aXRpb25SZXZpZXdlZFNvdXJjZUJ1aWxkUmVjZWlwdAorCWlmIGVyciA6PSBqc29uLlVubWFyc2hhbChjb250ZW50LCAmZGVjb2RlZFJlY2VpcHQpOyBlcnIgIT0gbmlsIHx8ICFyZWNlaXB0LkVxdWFsKGRlY29kZWRSZWNlaXB0KSB8fCByZWNlaXB0LldvcmtDb3ZlcmFnZVBvbGljeSA9PSBkZWNvZGVkUmVjZWlwdC5Xb3JrQ292ZXJhZ2VQb2xpY3kgeworCQl0LkZhdGFsKCJpbmRlcGVuZGVudGx5IGRlY29kZWQgYnVpbGQgcmVjZWlwdCBsb3N0IHBvbGljeSB2YWx1ZSBpZGVudGl0eSIsIGVycikKKwl9CisJY29weVJlY2VpcHQgOj0gcmVjZWlwdC5DbG9uZSgpCisJY29weVJlY2VpcHQuV29ya0NvdmVyYWdlUG9saWN5Lk1pbmltdW1QYWdlQ292ZXJhZ2VSYXRpbyA9IC41CisJaWYgcmVjZWlwdC5FcXVhbChjb3B5UmVjZWlwdCkgfHwgcmVjZWlwdC5Xb3JrQ292ZXJhZ2VQb2xpY3kuTWluaW11bVBhZ2VDb3ZlcmFnZVJhdGlvICE9IGNvdmVyYWdlLk1pbmltdW1QYWdlQ292ZXJhZ2VSYXRpbyB7CisJCXQuRmF0YWwoInJldHVybmVkIHJlY2VpcHQgc2hhcmVkIGl0cyBtdXRhYmxlIHBvbGljeSBsZWFmIikKKwl9Cit9CisKKy8vIFRoZSBzaGFyZWQgc2NvcmVyL0FQSSBjb250cmFjdCBjYW5ub3QgYWNjZXB0IGEgdjMgc2NvcmUgd2l0aCBhIG1pc3NpbmcKKy8vIGdhdGUsIHN0cmlwcGVkIHBvbGljeSwgYW4gb2xkIHZlcnNpb24sIG9yIGEgc2VsZi1pbnZlbnRlZCB0b2xlcmFuY2UuCitmdW5jIFRlc3RDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVNjb3JlUmVxdWlyZXNHYXRlQW5kRXhhY3RQcm92ZW5hbmNlKHQgKnRlc3RpbmcuVCkgeworCXBvbGljeSA6PSBEZWZhdWx0Q29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3koKQorCW1ha2VTY29yZSA6PSBmdW5jKCkgKkNvbXBldGl0aW9uU2NvcmVSZXN1bHQgeworCQlyYXdTY29yZSA6PSA4MC4wCisJCW5vcm1hbGl6ZWRTY29yZSA6PSAxMjUuMAorCQliYXNlbGluZVZhcmlhbmNlIDo9IDQuMAorCQljYW5kaWRhdGVWYXJpYW5jZSA6PSAzLjAKKwkJbWluaW11bVBlcmNlbnQgOj0gMy4wCisJCXJlcXVpcmVkUGVyY2VudCA6PSAxNi4xCisJCXBWYWx1ZSA6PSAwLjAxCisJCXdlbGNoVCA6PSA0LjAKKwkJZGVncmVlc09mRnJlZWRvbSA6PSAxNC4wCisJCW5leHRFcG9jaE1pbmltdW1QZXJjZW50IDo9IDIuMAorCQlyZWNvbW1lbmRlZFBlcmNlbnQgOj0gMTYuMQorCQlzY29yZSA6PSAmQ29tcGV0aXRpb25TY29yZVJlc3VsdHsKKwkJCVNjb3JlU2NoZW1hOiAgICAgIENvbXBldGl0aW9uU2NvcmVTY2hlbWEsCisJCQlSYXdTY29yZTogICAgICAgICAmcmF3U2NvcmUsCisJCQlOb3JtYWxpemVkU2NvcmU6ICAmbm9ybWFsaXplZFNjb3JlLAorCQkJUGxhY2VhYmxlOiAgICAgICAgdHJ1ZSwKKwkJCVRha2VvdmVyRWxpZ2libGU6IHRydWUsCisJCQlHYXRlczogbWFwW3N0cmluZ11Db21wZXRpdGlvbkdhdGV7CisJCQkJIkcxX3N1Y2Nlc3MiOiB7UGFzc2VkOiB0cnVlLCBEZXRhaWxzOiBtYXBbc3RyaW5nXWFueXt9fSwKKwkJCX0sCisJCQlTaWduaWZpY2FuY2U6ICZDb21wZXRpdGlvblNjb3JlU2lnbmlmaWNhbmNleworCQkJCU1ldGhvZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmUtc2lkZWQtd2VsY2gtdCIsCisJCQkJQWxwaGE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wNSwKKwkJCQlSZXBsaWNhdGVDb3VudDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LAorCQkJCUJhc2VsaW5lTWVhblJhd1Njb3JlOiAgICAgICAgICAgICAgICAgICAgICAgIDEwMCwKKwkJCQlDYW5kaWRhdGVNZWFuUmF3U2NvcmU6ICAgICAgICAgICAgICAgICAgICAgICA4MCwKKwkJCQlCYXNlbGluZVNhbXBsZVZhcmlhbmNlOiAgICAgICAgICAgICAgICAgICAgICAmYmFzZWxpbmVWYXJpYW5jZSwKKwkJCQlDYW5kaWRhdGVTYW1wbGVWYXJpYW5jZTogICAgICAgICAgICAgICAgICAgICAmY2FuZGlkYXRlVmFyaWFuY2UsCisJCQkJT2JzZXJ2ZWRJbXByb3ZlbWVudFBlcmNlbnQ6ICAgICAgICAgICAgICAgICAgMjAsCisJCQkJVGFrZW92ZXJNYXJnaW5QZXJjZW50OiAgICAgICAgICAgICAgICAgICAgICAgMTYuMSwKKwkJCQlNaW5pbXVtU2lnbmlmaWNhbnRJbXByb3ZlbWVudFBlcmNlbnQ6ICAgICAgICAmbWluaW11bVBlcmNlbnQsCisJCQkJUmVxdWlyZWRJbXByb3ZlbWVudFBlcmNlbnQ6ICAgICAgICAgICAgICAgICAgJnJlcXVpcmVkUGVyY2VudCwKKwkJCQlPbmVTaWRlZFBWYWx1ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcFZhbHVlLAorCQkJCVdlbGNoVDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3ZWxjaFQsCisJCQkJV2VsY2hEZWdyZWVzT2ZGcmVlZG9tOiAgICAgICAgICAgICAgICAgICAgICAgJmRlZ3JlZXNPZkZyZWVkb20sCisJCQkJU3RhdGlzdGljYWxseVNpZ25pZmljYW50OiAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKKwkJCQlOZXh0RXBvY2hNaW5pbXVtSW1wcm92ZW1lbnRQZXJjZW50OiAgICAgICAgICAmbmV4dEVwb2NoTWluaW11bVBlcmNlbnQsCisJCQkJUmVjb21tZW5kZWROZXh0RXBvY2hUYWtlb3Zlck1hcmdpblBlcmNlbnQ6ICAgJnJlY29tbWVuZGVkUGVyY2VudCwKKwkJCQlSZWNvbW1lbmRlZE5leHRFcG9jaFRha2VvdmVyTWFyZ2luU3VwcG9ydGVkOiB0cnVlLAorCQkJfSwKKwkJfQorCQlzY29yZS5EaWFnbm9zdGljcyA9IG1hcFtzdHJpbmddYW55eyJnMl92b2x1bWVfcG9saWN5Ijogc3RyaW5nKENvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lNaW5pbXVtV29yayksICJzY29yZXJfdmVyc2lvbiI6IENvbXBldGl0aW9uV29ya0NvdmVyYWdlU2NvcmVyVmVyc2lvbiwgIndvcmtfY292ZXJhZ2VfcG9saWN5IjogcG9saWN5fQorCQlmb3IgXywgbmFtZSA6PSByYW5nZSBbXXN0cmluZ3siRzFfc3VjY2VzcyIsICJHMl92b2x1bWUiLCAiRzNfcGF0aF9pbnRlZ3JpdHkiLCAiRzRfbWF0Y2htYWtpbmciLCAiRzVfc3RhYmlsaXR5IiwgIkc2X3Jlc291cmNlcyIsICJHN193b3JrX2NvdmVyYWdlIn0geworCQkJc2NvcmUuR2F0ZXNbbmFtZV0gPSBDb21wZXRpdGlvbkdhdGV7UGFzc2VkOiB0cnVlLCBEZXRhaWxzOiBtYXBbc3RyaW5nXWFueXt9fQorCQl9CisJCXJldHVybiBzY29yZQorCX0KKwlpZiBlcnIgOj0gVmFsaWRhdGVDb21wZXRpdGlvblNjb3JlKG1ha2VTY29yZSgpKTsgZXJyICE9IG5pbCB7CisJCXQuRmF0YWwoInZlcnNpb25lZCBjb3ZlcmFnZSBzY29yZSB3YXMgcmVqZWN0ZWQiLCBlcnIpCisJfQorCWZvciBfLCBtdXRhdGUgOj0gcmFuZ2UgW11mdW5jKCpDb21wZXRpdGlvblNjb3JlUmVzdWx0KXsKKwkJZnVuYyhzY29yZSAqQ29tcGV0aXRpb25TY29yZVJlc3VsdCkgeyBkZWxldGUoc2NvcmUuR2F0ZXMsICJHN193b3JrX2NvdmVyYWdlIikgfSwKKwkJZnVuYyhzY29yZSAqQ29tcGV0aXRpb25TY29yZVJlc3VsdCkgeworCQkJc2NvcmUuR2F0ZXNbIkc3X3dvcmtfY292ZXJhZ2UiXSA9IENvbXBldGl0aW9uR2F0ZXtQYXNzZWQ6IGZhbHNlLCBEZXRhaWxzOiBtYXBbc3RyaW5nXWFueXt9fQorCQl9LAorCQlmdW5jKHNjb3JlICpDb21wZXRpdGlvblNjb3JlUmVzdWx0KSB7IGRlbGV0ZShzY29yZS5EaWFnbm9zdGljcywgIndvcmtfY292ZXJhZ2VfcG9saWN5IikgfSwKKwkJZnVuYyhzY29yZSAqQ29tcGV0aXRpb25TY29yZVJlc3VsdCkgeyBkZWxldGUoc2NvcmUuRGlhZ25vc3RpY3MsICJzY29yZXJfdmVyc2lvbiIpIH0sCisJCWZ1bmMoc2NvcmUgKkNvbXBldGl0aW9uU2NvcmVSZXN1bHQpIHsKKwkJCXNjb3JlLkRpYWdub3N0aWNzWyJzY29yZXJfdmVyc2lvbiJdID0gQ29tcGV0aXRpb25NaW5pbXVtV29ya1Njb3JlclZlcnNpb24KKwkJfSwKKwkJZnVuYyhzY29yZSAqQ29tcGV0aXRpb25TY29yZVJlc3VsdCkgeyBzY29yZS5EaWFnbm9zdGljc1sid29ya19jb3ZlcmFnZV9wb2xpY3kiXSA9IG5pbCB9LAorCQlmdW5jKHNjb3JlICpDb21wZXRpdGlvblNjb3JlUmVzdWx0KSB7CisJCQljaGFuZ2VkIDo9IHBvbGljeQorCQkJY2hhbmdlZC5NaW5pbXVtUGFnZUNvdmVyYWdlUmF0aW8gPSAuNQorCQkJc2NvcmUuRGlhZ25vc3RpY3NbIndvcmtfY292ZXJhZ2VfcG9saWN5Il0gPSBjaGFuZ2VkCisJCX0sCisJfSB7CisJCXNjb3JlIDo9IG1ha2VTY29yZSgpCisJCW11dGF0ZShzY29yZSkKKwkJaWYgZXJyIDo9IFZhbGlkYXRlQ29tcGV0aXRpb25TY29yZShzY29yZSk7IGVyciA9PSBuaWwgeworCQkJdC5GYXRhbCgibWlzc2luZyBvciBzdWJzdGl0dXRlZCBjb3ZlcmFnZSBwcm92ZW5hbmNlIHdhcyBhY2NlcHRlZCIpCisJCX0KKwl9CisJbmFtZXMsIGVyciA6PSBDb21wZXRpdGlvblNjb3JlUmVxdWlyZWRHYXRlTmFtZXMobWFrZVNjb3JlKCkpCisJaWYgZXJyICE9IG5pbCB8fCBsZW4obmFtZXMpICE9IDcgfHwgbmFtZXNbNl0gIT0gIkc3X3dvcmtfY292ZXJhZ2UiIHsKKwkJdC5GYXRhbCgidmVyc2lvbi1hd2FyZSByZXF1aXJlZCBnYXRlIGNlbnN1cyB3YXMgaW5jb21wbGV0ZSIsIGVycikKKwl9Cit9CisKKy8vIEludGVnZXIgdG90YWxzIGFuZCBtYXRjaGluZyBmcmFjdGlvbnMgY2Fubm90IGJlIHJlcGxhY2VkIGJ5IE5hTiwgaW5maW5pdHksCisvLyBuZWdhdGl2ZSB2YWx1ZXMgb3IgYSB6ZXJvIGRlbm9taW5hdG9yLgorZnVuYyBUZXN0Q29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5UmVqZWN0c01hbGZvcm1lZENvdW50cyh0ICp0ZXN0aW5nLlQpIHsKKwl2YWxpZCA6PSBDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnl7UGxhblNoYTI1Njogc3RyaW5ncy5SZXBlYXQoImEiLCA2NCksIE9mZmVyZWRSb290czogMywgRXhwZWN0ZWRQYWdlczogMTAwLCBFeHBlY3RlZEJ5dGVzOiAxMDAwLCBDb21wbGV0ZWRQYWdlczogODAsIENvbXBsZXRlZEJ5dGVzOiA4MDAsIFBhZ2VDb3ZlcmFnZTogLjgsIEJ5dGVDb3ZlcmFnZTogLjh9CisJaWYgZXJyIDo9IFZhbGlkYXRlQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5KCZ2YWxpZCk7IGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJZm9yIF8sIG11dGF0ZSA6PSByYW5nZSBbXWZ1bmMoKkNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeSl7CisJCWZ1bmModmFsdWUgKkNvbXBldGl0aW9uV29ya0NvdmVyYWdlU3VtbWFyeSkgeyB2YWx1ZS5FeHBlY3RlZFBhZ2VzID0gMCB9LAorCQlmdW5jKHZhbHVlICpDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnkpIHsgdmFsdWUuT2ZmZXJlZFJvb3RzID0gMCB9LAorCQlmdW5jKHZhbHVlICpDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnkpIHsgdmFsdWUuQ29tcGxldGVkUGFnZXMgPSAtMSB9LAorCQlmdW5jKHZhbHVlICpDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnkpIHsgdmFsdWUuQ29tcGxldGVkUGFnZXMgPSAxMDEgfSwKKwkJZnVuYyh2YWx1ZSAqQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5KSB7IHZhbHVlLkNvbXBsZXRlZEJ5dGVzID0gMCB9LAorCQlmdW5jKHZhbHVlICpDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVN1bW1hcnkpIHsgdmFsdWUuQnl0ZUNvdmVyYWdlID0gbWF0aC5JbmYoMSkgfSwKKwkJZnVuYyh2YWx1ZSAqQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5KSB7IHZhbHVlLlBhZ2VDb3ZlcmFnZSA9IG1hdGguTmFOKCkgfSwKKwkJZnVuYyh2YWx1ZSAqQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5KSB7IHZhbHVlLlBsYW5TaGEyNTYgPSBzdHJpbmdzLlJlcGVhdCgiQSIsIDY0KSB9LAorCX0geworCQljaGFuZ2VkIDo9IHZhbGlkCisJCW11dGF0ZSgmY2hhbmdlZCkKKwkJaWYgZXJyIDo9IFZhbGlkYXRlQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTdW1tYXJ5KCZjaGFuZ2VkKTsgZXJyID09IG5pbCB7CisJCQl0LkZhdGFsKCJtYWxmb3JtZWQgc3VtbWFyeSB3YXMgYWNjZXB0ZWQiKQorCQl9CisJfQorfQorCisvLyBUaGUgbmV3IHBvbGljeSBpcyBleHBsaWNpdDsgb2xkIGFydGlmYWN0cyBrZWVwIHRoZWlyIGV4YWN0IHZlcnNpb24gbWFwcGluZy4KK2Z1bmMgVGVzdENvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5UHJlc2VydmVzSGlzdG9yaWNhbFZlcnNpb25NYXBwaW5ncyh0ICp0ZXN0aW5nLlQpIHsKKwlmb3IgXywgZzIgOj0gcmFuZ2UgW11Db21wZXRpdGlvbkcyVm9sdW1lUG9saWN5e0NvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lMZWdhY3ksIENvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lNaW5pbXVtV29ya30geworCQlleHBlY3RlZCwgZXJyIDo9IENvbXBldGl0aW9uU2NvcmVyVmVyc2lvbkZvckcyUG9saWN5KGcyKQorCQlhY3R1YWwsIGNvdmVyYWdlRXJyIDo9IENvbXBldGl0aW9uU2NvcmVyVmVyc2lvbkZvcldvcmtDb3ZlcmFnZShnMiwgbmlsKQorCQlpZiBlcnIgIT0gbmlsIHx8IGNvdmVyYWdlRXJyICE9IG5pbCB8fCBhY3R1YWwgIT0gZXhwZWN0ZWQgeworCQkJdC5GYXRhbCgib21pdHRlZCBjb3ZlcmFnZSBjaGFuZ2VkIGhpc3RvcmljYWwgc2NvcmVyIGlkZW50aXR5IiwgZzIsIGFjdHVhbCwgY292ZXJhZ2VFcnIpCisJCX0KKwl9CisJY29udGVudCwgZXJyIDo9IGpzb24uTWFyc2hhbChDb21wZXRpdGlvbkV2YWx1YXRpb25Qb2xpY3l7fSkKKwlpZiBlcnIgIT0gbmlsIHx8IGJ5dGVzLkNvbnRhaW5zKGNvbnRlbnQsIFtdYnl0ZSgid29ya19jb3ZlcmFnZV9wb2xpY3kiKSkgeworCQl0LkZhdGFsKCJsZWdhY3kgZXZhbHVhdGlvbiBwb2xpY3kgZ2FpbmVkIGNvdmVyYWdlIGJ5dGVzIiwgZXJyKQorCX0KK30KKworLy8gVGhlIHNvdXJjZSBjb250cmFjdCBmaXhlcyBpbmNsdXNpdmUgOTUlIHJlbGF0aXZlIGZsb29ycywgbm90IGEgY2FuZGlkYXRlIGtub2IuCitmdW5jIFRlc3RDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeVJlcXVpcmVzRXhhY3RWZXJzaW9uZWRDb250cmFjdCh0ICp0ZXN0aW5nLlQpIHsKKwlwb2xpY3kgOj0gRGVmYXVsdENvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5KCkKKwlpZiB2ZXJzaW9uLCBlcnIgOj0gQ29tcGV0aXRpb25TY29yZXJWZXJzaW9uRm9yV29ya0NvdmVyYWdlKENvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lNaW5pbXVtV29yaywgJnBvbGljeSk7IGVyciAhPSBuaWwgfHwgdmVyc2lvbiAhPSBDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVNjb3JlclZlcnNpb24geworCQl0LkZhdGFsKCJleHBsaWNpdCB2ZXJzaW9uZWQgY292ZXJhZ2UgY29udHJhY3Qgd2FzIHJlamVjdGVkIiwgdmVyc2lvbiwgZXJyKQorCX0KKwlpZiBfLCBlcnIgOj0gQ29tcGV0aXRpb25TY29yZXJWZXJzaW9uRm9yV29ya0NvdmVyYWdlKENvbXBldGl0aW9uRzJWb2x1bWVQb2xpY3lMZWdhY3ksICZwb2xpY3kpOyBlcnIgPT0gbmlsIHsKKwkJdC5GYXRhbCgiY292ZXJhZ2Ugc2lsZW50bHkgcmV0YWluZWQgdGhlIG9sZCB1cHBlci12b2x1bWUgYmFuZCIpCisJfQorCWZvciBfLCBtdXRhdGUgOj0gcmFuZ2UgW11mdW5jKCpDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSl7CisJCWZ1bmModmFsdWUgKkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5KSB7IHZhbHVlLktpbmQgPSAidW5rbm93bi92MSIgfSwKKwkJZnVuYyh2YWx1ZSAqQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3kpIHsgdmFsdWUuTWluaW11bVBhZ2VDb3ZlcmFnZVJhdGlvID0gMCB9LAorCQlmdW5jKHZhbHVlICpDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSkgeyB2YWx1ZS5NaW5pbXVtQnl0ZUNvdmVyYWdlUmF0aW8gPSAwIH0sCisJCWZ1bmModmFsdWUgKkNvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5KSB7IHZhbHVlLk1pbmltdW1QYWdlQ292ZXJhZ2VSYXRpbyA9IDAuMDUgfSwKKwkJZnVuYyh2YWx1ZSAqQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3kpIHsgdmFsdWUuTWluaW11bUJ5dGVDb3ZlcmFnZVJhdGlvID0gbWF0aC5OYU4oKSB9LAorCQlmdW5jKHZhbHVlICpDb21wZXRpdGlvbldvcmtDb3ZlcmFnZVBvbGljeSkgeyB2YWx1ZS5NaW5pbXVtUGFnZUNvdmVyYWdlUmF0aW8gPSBtYXRoLkluZigxKSB9LAorCX0geworCQljaGFuZ2VkIDo9IHBvbGljeQorCQltdXRhdGUoJmNoYW5nZWQpCisJCWlmIFZhbGlkYXRlQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3koJmNoYW5nZWQpID09IG5pbCB7CisJCQl0LkZhdGFsKCJjaGFuZ2VkIHBvbGljeSBhY3F1aXJlZCB0aGUgdmVyc2lvbmVkIHYxIGlkZW50aXR5IiwgY2hhbmdlZCkKKwkJfQorCX0KK30KKworLy8gQSB0eXBlZCBvYmplY3QgY2Fubm90IGhpZGUgZHVwbGljYXRlL2Nhc2UgYWxpYXNlcywgdW5rbm93biBmaWVsZHMsIG9taXNzaW9ucworLy8gb3IgYSBzZWNvbmQgdmFsdWUgYmVoaW5kIG90aGVyd2lzZSB2YWxpZCBmcm96ZW4gY292ZXJhZ2UgcG9saWN5IGJ5dGVzLgorZnVuYyBUZXN0Q29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3lSZWplY3RzQW1iaWd1b3VzV2lyZVNoYXBlcyh0ICp0ZXN0aW5nLlQpIHsKKwlwb2xpY3kgOj0gRGVmYXVsdENvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5KCkKKwljb250ZW50LCBlcnIgOj0ganNvbi5NYXJzaGFsKHBvbGljeSkKKwlpZiBlcnIgIT0gbmlsIHsKKwkJdC5GYXRhbChlcnIpCisJfQorCXZhciBkZWNvZGVkIENvbXBldGl0aW9uV29ya0NvdmVyYWdlUG9saWN5CisJaWYgZXJyIDo9IGpzb24uVW5tYXJzaGFsKGNvbnRlbnQsICZkZWNvZGVkKTsgZXJyICE9IG5pbCB8fCBkZWNvZGVkICE9IHBvbGljeSB7CisJCXQuRmF0YWwoImNhbm9uaWNhbCBwb2xpY3kgZGlkIG5vdCByb3VuZCB0cmlwIiwgZXJyKQorCX0KKwlmb3IgXywgaW52YWxpZCA6PSByYW5nZSBbXVtdYnl0ZXsKKwkJW11ieXRlKCJudWxsIiksIFtdYnl0ZSgie30iKSwKKwkJYnl0ZXMuUmVwbGFjZShjb250ZW50LCBbXWJ5dGUoYCJraW5kIjpgKSwgW11ieXRlKGAiS2luZCI6YCksIDEpLAorCQlieXRlcy5SZXBsYWNlKGNvbnRlbnQsIFtdYnl0ZShgImtpbmQiOmApLCBbXWJ5dGUoYCJraW5kIjoic2VlZGVkLWNyYXdsLWNvdmVyYWdlL3YxIiwia2luZCI6YCksIDEpLAorCQlhcHBlbmQoW11ieXRlKGB7ImFsbG93X21pc3Npbmdfd29yayI6dHJ1ZSxgKSwgY29udGVudFsxOl0uLi4pLAorCQlhcHBlbmQoYXBwZW5kKFtdYnl0ZShuaWwpLCBjb250ZW50Li4uKSwgW11ieXRlKCJ7fSIpLi4uKSwKKwkJW11ieXRlKGB7ImtpbmQiOiJzZWVkZWQtY3Jhd2wtY292ZXJhZ2UvdjEiLCJtaW5pbXVtX3BhZ2VfY292ZXJhZ2VfcmF0aW8iOjAuMDF9YCksCisJCVtdYnl0ZShgeyJraW5kIjoic2VlZGVkLWNyYXdsLWNvdmVyYWdlL3YxIiwibWF4aW11bV9wYWdlX2NvdmVyYWdlX2xvc3MiOjAuMDEsIm1heGltdW1fYnl0ZV9jb3ZlcmFnZV9sb3NzIjowLjAxfWApLAorCQlbXWJ5dGUoYHsia2luZCI6InNlZWRlZC1jcmF3bC1jb3ZlcmFnZS92MSIsIm1heGltdW1fcGFnZV9jb3ZlcmFnZV9sb3NzIjowLjA1LCJtYXhpbXVtX2J5dGVfY292ZXJhZ2VfbG9zcyI6MC4wNX1gKSwKKwl9IHsKKwkJaWYgZXJyIDo9IGpzb24uVW5tYXJzaGFsKGludmFsaWQsICZkZWNvZGVkKTsgZXJyID09IG5pbCB7CisJCQl0LkZhdGFsKCJhbWJpZ3VvdXMgcG9saWN5IHdhcyBhY2NlcHRlZCIsIHN0cmluZyhpbnZhbGlkKSkKKwkJfQorCX0KK30KKworLy8gTWlzc2luZyBzb3VyY2UgbWV0YWRhdGEgc3RheXMgbWlzc2luZzsgYW4gZXhwbGljaXQgcHJvc3BlY3RpdmUgb2JqZWN0IGNhbgorLy8gbmV2ZXIgYmVjb21lIGhpc3RvcmljYWwgbmlsIHRocm91Z2ggbnVsbCwgYWxpYXNlcyBvciBkdXBsaWNhdGUgSlNPTiBrZXlzLgorZnVuYyBUZXN0Q29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VTb3VyY2VMZWFmUmVqZWN0c0FtYmlndW91c1NoYXBlcyh0ICp0ZXN0aW5nLlQpIHsKKwljb3ZlcmFnZSA6PSBEZWZhdWx0Q29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3koKQorCXZhbHVlLCBlcnIgOj0ganNvbi5NYXJzaGFsKGNvdmVyYWdlKQorCWlmIGVyciAhPSBuaWwgeworCQl0LkZhdGFsKGVycikKKwl9CisJdmFsaWQgOj0gYHsic2NoZW1hIjoxLCJ3b3JrX2NvdmVyYWdlX3BvbGljeSI6YCArIHN0cmluZyh2YWx1ZSkgKyBgfWAKKwlkZWNvZGVkLCBlcnIgOj0gQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3lGcm9tU291cmNlSnNvbihbXWJ5dGUodmFsaWQpKQorCWlmIGVyciAhPSBuaWwgfHwgZGVjb2RlZCA9PSBuaWwgfHwgKmRlY29kZWQgIT0gY292ZXJhZ2UgeworCQl0LkZhdGFsKCJleGFjdCBzb3VyY2UgY292ZXJhZ2UgcG9saWN5IHdhcyByZWplY3RlZCIsIGVycikKKwl9CisJaWYgbGVnYWN5LCBlcnIgOj0gQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3lGcm9tU291cmNlSnNvbihbXWJ5dGUoYHsic2NoZW1hIjoxfWApKTsgZXJyICE9IG5pbCB8fCBsZWdhY3kgIT0gbmlsIHsKKwkJdC5GYXRhbCgic291cmNlIG9taXNzaW9uIGFjcXVpcmVkIGNvdmVyYWdlIGF1dGhvcml0eSIsIGVycikKKwl9CisJZm9yIF8sIGNvbnRlbnQgOj0gcmFuZ2UgW11zdHJpbmd7CisJCWB7IndvcmtfY292ZXJhZ2VfcG9saWN5IjpudWxsfWAsCisJCXN0cmluZ3MuUmVwbGFjZSh2YWxpZCwgIndvcmtfY292ZXJhZ2VfcG9saWN5IiwgIldvcmtfQ292ZXJhZ2VfUG9saWN5IiwgMSksCisJCWB7IndvcmtfY292ZXJhZ2VfcG9saWN5IjpgICsgc3RyaW5nKHZhbHVlKSArIGAsIndvcmtfY292ZXJhZ2VfcG9saWN5IjpudWxsfWAsCisJCXN0cmluZ3MuUmVwbGFjZSh2YWxpZCwgInNlZWRlZC1jcmF3bC1jb3ZlcmFnZS92MSIsICJzeW50aGV0aWMtdW5rbm93bi92MSIsIDEpLAorCQlzdHJpbmdzLlJlcGxhY2UodmFsaWQsIGAia2luZCI6YCwgYCJ1bmV4cGVjdGVkIjp0cnVlLCJraW5kIjpgLCAxKSwKKwkJdmFsaWQgKyBge31gLAorCX0geworCQlpZiBfLCBlcnIgOj0gQ29tcGV0aXRpb25Xb3JrQ292ZXJhZ2VQb2xpY3lGcm9tU291cmNlSnNvbihbXWJ5dGUoY29udGVudCkpOyBlcnIgPT0gbmlsIHsKKwkJCXQuRmF0YWwoInNvdXJjZSBwb2xpY3kgYW1iaWd1aXR5IHdhcyBhY2NlcHRlZCIsIGNvbnRlbnQpCisJCX0KKwl9Cit9Cg==","protected_paths":["connect/sim-latency/client.go","connect/sim-latency/evaluator/container/entrypoint.sh","connect/sim-latency/evaluator/container/evaluator-minimum-work.sh","connect/sim-latency/evaluator/container/evaluator-subevaluation.sh","connect/sim-latency/evaluator/container/evaluator-work-coverage.sh","connect/sim-latency/evaluator/container/prepare-round-baseline-work-coverage.sh","connect/sim-latency/evaluator/container/subevaluation-ownership.sh","connect/sim-latency/evaluator/container/submission-builder-identity.sh","connect/sim-latency/evaluator_work_coverage_test.go","connect/sim-latency/main.go","connect/sim-latency/official-run.sh","connect/sim-latency/results.go","connect/sim-latency/run.go","connect/sim-latency/run_work_coverage_clock_binding_test.go","connect/sim-latency/run_work_coverage_clock_test.go","connect/sim-latency/score.go","connect/sim-latency/score_g2_policy_test.go","connect/sim-latency/score_test.go","connect/sim-latency/score_work_coverage.go","connect/sim-latency/score_work_coverage_test.go","connect/sim-latency/site.go","connect/sim-latency/source_epoch.go","connect/sim-latency/source_epoch_v2.go","connect/sim-latency/source_g2_instrument_manifest_test.go","connect/sim-latency/source_trusted_instrument_manifest.go","connect/sim-latency/work_coverage.go","connect/sim-latency/work_coverage_plan.go","connect/sim-latency/work_coverage_plan_test.go","connect/sim-latency/work_coverage_shell_fixture_test.go","connect/sim-latency/work_coverage_test.go","controller/competition_trusted_instrument_approval.go","model/competition_g2_codec_test.go","model/competition_g2_policy.go","model/competition_model.go","model/competition_trusted_instrument.go","model/competition_work_coverage_policy.go","model/competition_work_coverage_policy_test.go"]},"selected_product_kind":"reviewed_source_promotion","selected_product_commits":{"connect":"388d8a153952fe36af1753908f4b21501967f3a8","glog":"1c4954b017d9e8140a4e7020f914eb27410a41c6","goidenticons":"39ccec1b69db3a6f67e7346d6f44863499e6241d","gvisor":"57c9e137f7407ad6cd41dcca1ba304a446e09c79","proxy":"af1d364fe34b807c31936642bff7d3fd849ab2a4","sdk":"d3824aa98c02e3c16ff7abcfe7a7088c8a470cdb","server":"a9e8e1a710b24c749e6499a0606938252c83e136","sn":"6e686aabd53b7c45b154051fd268138988224eba","userwireguard":"f9a92f0e5f5577a80d358065c4d39ca21f971a1c","warp":"8dfa405ec380a60307952778921f05bba1c59a33"},"selected_product_source_lock_sha256":"8a3161faaf700a54f2b7f8bb3036d9e28e7116f18d49381f3699a533c555ccb6","selected_product_review_id":"01a1c088-ca60-8cf8-844e-6ff50fff8cb4","selected_product_review_digest":"40b6211ee8d9564140851234eb4ad1dde9a1aea04f69d15711cba90084fefd3a","selected_product_patch_sha256":"b8800b3a52176e5e33ccab86536d5751ea0a42cade6f64be0d2586d765573aff","instrumented_server_commit":"6c55fc2ca3bf278ae4f94938e4940547844a71f1","build_receipt":{"schema":2,"review_id":"00000000-0000-0000-0000-000000000000","patch_sha256":"a1314b1948afa7243727f30ddaa4dd1e137dfc8799c409083611baefafe457c9","source_lock_sha256":"4781aac57e052ff048440ac5f0f118d780a76fa1685326fc0b3af1143ae4f0cd","evaluator_image_digest":"sha256:5e5dfa2715c980d7ec037b6f15208e1d240a6bc80668aabc3335c1f71b2b92d9","host_qualification_sha256":"254caad08799e9928098ea489fc98b4f86cd8fcd76a8c7c7e0c33df799143274","containment_sha256":"32ccb6af58f5111ea500124252348839bd7727df5a1f81860071e6754fe32c2d","test_evidence_sha256":"705241042f2c10bcbe7707a1206e060cbd63a1bc19b169a983f983791de09ccd","sandbox_id":"bb8ec594c2c75273e648b704cdfc3dfb140e06bf51c272b2529f786793703c74","offline":true,"no_main_credentials":true,"read_only_source":true,"passed":true,"test_model":"snow-qwen-gemma-union","test_reasoning":"provider-default","winner_review_policy":"elected_winner_snow_union_v2","operation":"trusted_instrument_build","instrument_approval_sha256":"c0f2462806f5deccb3e3fd210db7b0c3a11c606c5d20dfbb0de78ae435621c06","simulator_sha256":"d8a037d809f23d9ca58ba8b1061d1a3047165fa74069eedaef818bb9dd0bdb94","g2_volume_policy":"minimum-work/1","work_coverage_policy":{"kind":"seeded-crawl-coverage/v1","minimum_page_coverage_ratio":0.95,"minimum_byte_coverage_ratio":0.95}}},"simulator_sha256":"d8a037d809f23d9ca58ba8b1061d1a3047165fa74069eedaef818bb9dd0bdb94","scorer_sha256":"d8a037d809f23d9ca58ba8b1061d1a3047165fa74069eedaef818bb9dd0bdb94","environment":"main","competition_id":"sim-latency-season-1","season_id":"sim-latency-production-20261028-r2","generation":2,"expected_generation":1,"source_generation":1,"target_epoch":2,"target_round_id":"01a1c110-585b-ce38-4f29-ca4860a1c058","source_decision_digest":"7f063bfedb8f0dabf6fedfd45284c8770bd19227342e73bccb3a072a51213ca7","approved_patch_sha256":"b8800b3a52176e5e33ccab86536d5751ea0a42cade6f64be0d2586d765573aff","candidate_path_base":"mono_root_v1","kind":"reviewed_source_promotion","reason":"ready_reviewed_source","base_source_lock_sha256":"ec322ed2db023e15ea5dc3eea60a6ca5989661bba737c340fea3477d8d1300cf","source_lock_sha256":"4781aac57e052ff048440ac5f0f118d780a76fa1685326fc0b3af1143ae4f0cd","commits":{"connect":"388d8a153952fe36af1753908f4b21501967f3a8","glog":"1c4954b017d9e8140a4e7020f914eb27410a41c6","goidenticons":"39ccec1b69db3a6f67e7346d6f44863499e6241d","gvisor":"57c9e137f7407ad6cd41dcca1ba304a446e09c79","proxy":"af1d364fe34b807c31936642bff7d3fd849ab2a4","sdk":"d3824aa98c02e3c16ff7abcfe7a7088c8a470cdb","server":"6c55fc2ca3bf278ae4f94938e4940547844a71f1","sn":"6e686aabd53b7c45b154051fd268138988224eba","userwireguard":"f9a92f0e5f5577a80d358065c4d39ca21f971a1c","warp":"8dfa405ec380a60307952778921f05bba1c59a33"},"git_refs":null,"review_id":"01a1c088-ca60-8cf8-844e-6ff50fff8cb4","review_decision_digest":"40b6211ee8d9564140851234eb4ad1dde9a1aea04f69d15711cba90084fefd3a","reward_decision_digest":"a800ecdba04be602f61a904e9626819fa68fcf71191bdf8dda0b7c7989a94e81","manifest_commit":"ff23e28f3a6d0e9067b5024e5127a7bb697d1a0b","manifest_sha256":"f40b65cd3d2d05b9948945f3aa11cbeee794d341675d2c9fdfd9e94797f9225b","publication_journal_sha256":"7e994e7a917a30d43777cb89b45fe18c9e69c993afeab989e49dea30c3e06bfe","config_expected_commit":"2350c7610f1351cdef670413aa9a409941423f6d","evaluator_image_digest":"sha256:5e5dfa2715c980d7ec037b6f15208e1d240a6bc80668aabc3335c1f71b2b92d9","evaluated_image_digest":"sha256:98c9061c4a43a25e7b581a5193ca6e7f48e49e7b7fc03b7c1b6190a029befee2","host_qualification_sha256":"254caad08799e9928098ea489fc98b4f86cd8fcd76a8c7c7e0c33df799143274","threshold":0.269,"threshold_evidence_sha256":"ebe45b20f5fc3fc5b5342ebb869714d06de3d132ba68a707497a6918122ff7d8","prepared_at":"2026-11-09T16:20:07.734445652Z","build_ready_at":"2026-11-09T14:47:18.748213936Z","opens_at":"0001-01-01T00:00:00Z","intent_sha256":"e3d5f949027436a5eb67e3d887b14d234be6eb2133696cfbd98fcca0fc23933f","state":"prepared","winner_review_policy":"elected_winner_snow_union_v2","winner_review":{"round_id":"01a1855d-49bd-0250-90db-d0c0885f0e46","job_id":"01a1a440-fd2e-538a-365c-f4b23eed4739","reward_revision":1,"reward_decision_sha256":"a800ecdba04be602f61a904e9626819fa68fcf71191bdf8dda0b7c7989a94e81","started_at":"2026-11-09T15:14:55.27397861Z","deadline":"2026-11-09T15:44:55.27397861Z"}},"settlement_status":"pending","settlement_receipts":[]}
