Name: series-workflowlrppf Phase: Succeeded StartedAt: 2026-09-06 06:50:16 +0000 UTC FinishedAt: 2026-09-06 10:43:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[0] Phase: Succeeded StartedAt: 2026-09-06 06:50:16 +0000 UTC FinishedAt: 2026-09-06 06:53:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 06:50:16 +0000 UTC FinishedAt: 2026-09-06 06:53:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d761934c9483ecde93fe99d8705282f716dfee50", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d761934c9483ecde93fe99d8705282f716dfee50", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT" ], "series_id": "a8f69f24-58cb-46a5-b9db-e537411a4bb7" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_do_misc_fixups", "arch_bpf_timed_may_goto" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfZG9fbWlzY19maXh1cHMmIzM0OywKICAgICYjMzQ7YXJjaF9icGZfdGltZWRfbWF5X2dvdG8mIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIEJQRiB0aW1lZCBgbWF5X2dvdG9gIHRyYW1wb2xpbmUgY2FsbGluZyBjb252ZW50aW9uIGFjcm9zcyBhcmNoaXRlY3R1cmVzICh4ODZfNjQsIGFybTY0LCByaXNjdiwgczM5MCwgcG93ZXJwYykgYW5kIHVwZGF0ZXMgdGhlIHZlcmlmaWVyIGluc3RydWN0aW9uIGZpeHVwcyBpbiBga2VybmVsL2JwZi9maXh1cHMuY2AuIEluc3RlYWQgb2YgcGFzc2luZyB0aGUgc3RhY2sgb2Zmc2V0IGluIGBCUEZfUkVHX0FYYCBhbmQgaGF2aW5nIGVhY2ggYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRyYW1wb2xpbmUgY29tcHV0ZSBgRlAgJiM0Mzsgb2Zmc2V0YCwgdGhlIEJQRiBieXRlY29kZSBub3cgY29tcHV0ZXMgdGhlIHBvaW50ZXIgYEJQRl9SRUdfRlAgJiM0Mzsgc3RhY2tfb2ZmX2NudGAgaW4gYEJQRl9SRUdfQVhgIHByaW9yIHRvIGNhbGxpbmcgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKClgLlxuXG5UaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcgb3Igc3RydWN0IGZpZWxkcyB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgbWVtb3J5IGluaXRpYWxpemF0aW9uIGxvZ2ljLiBBbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGluc3RydWN0aW9uIHBhdGNoaW5nIG9yIHJlZ2lzdGVyIGhhbmRsaW5nIHdvdWxkIG1hbmlmZXN0IGFzIG91dC1vZi1ib3VuZHMgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgY29udHJvbCBmbG93IGVycm9ycywgd2hpY2ggYXJlIGNvdmVyZWQgYnkgS0FTQU4gYW5kIHRoZSBCUEYgdmVyaWZpZXIuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBieXRlY29kZSBmaXh1cHMgZm9yIHRpbWVkIG1heV9nb3RvIGluc3RydWN0aW9ucyBpbiB0aGUgdmVyaWZpZXIgKGJwZl9kb19taXNjX2ZpeHVwcyBpbiBrZXJuZWwvYnBmL2ZpeHVwcy5jKSBhbmQgdGhlIHg4NiBKSVQgdHJhbXBvbGluZSAoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8gaW4gYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TKSB0byBjYWxjdWxhdGUgdGhlIGNvdW50L3RpbWVzdGFtcCBwb2ludGVyIGluIEJQRiByZWdpc3RlcnMgYmVmb3JlIGludm9raW5nIHRoZSB0cmFtcG9saW5lLiBUaGlzIHRvdWNoZXMgY29yZSBCUEYgdmVyaWZpY2F0aW9uIGFuZCBleGVjdXRpb24gbG9naWMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ4ODE5NTdhZTVlMTJhNjE2YzNmYzg4NThhZjYwNjU0MzRlZmYxZGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDA2OjUxOjI3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbmluZGV4IGE5YTgwMjcxMWE3ZjkuLjUzMTQ4YzlhMWM1ODQgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC0xNCwxNiAmIzQzOzE0LDEwIEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIFx0c3RwXHR4MywgeDQsIFtzcCwgIzQ4XVxuIFxuIFx0Lypcbi1cdCAqIFN0YWNrIGRlcHRoIHdhcyBwYXNzZWQgaW4gQlBGX1JFR19BWCAoeDkpLCBhZGQgaXQgdG8gdGhlIEJQRl9GUFxuLVx0ICogKHgyNSkgdG8gZ2V0IHRoZSBwb2ludGVyIHRvIGNvdW50IGFuZCB0aW1lc3RhbXAgYW5kIHBhc3MgaXQgYXMgdGhlXG4tXHQgKiBmaXJzdCBhcmd1bWVudCBpbiB4MC5cbi1cdCAqXG4tXHQgKiBCZWZvcmUgZ2VuZXJhdGluZyB0aGUgY2FsbCB0byBhcmNoX2JwZl90aW1lZF9tYXlfZ290bywgdGhlIHZlcmlmaWVyXG4tXHQgKiBnZW5lcmF0ZXMgYSBsb2FkIGluc3RydWN0aW9uIHVzaW5nIEZQLCBpLmUuIFJFR19BWCA9ICoodTY0ICopKEZQIC1cbi1cdCAqIHN0YWNrX29mZl9jbnQpLCBzbyBCUEZfUkVHX0ZQICh4MjUpIGlzIGFsd2F5cyBzZXQgdXAgYnkgdGhlIGFybTY0XG4tXHQgKiBqaXQgaW4gdGhpcyBjYXNlLlxuJiM0MztcdCAqIEJQRl9SRUdfQVggKHg5KSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzXG4mIzQzO1x0ICogdGhlIGZpcnN0IGFyZ3VtZW50IGluIHgwLlxuIFx0ICovXG4tXHRhZGRcdHgwLCB4OSwgeDI1XG4mIzQzO1x0bW92XHR4MCwgeDlcbiBcdGJsXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbiBcdC8qIEJQRl9SRUdfQVgoeDkpIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgcmV0dXJuIHZhbHVlIHRvIGl0LiAqL1xuIFx0bW92XHR4OSwgeDBcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuaW5kZXggODRlY2Y2ZmE3ZjVkYy4uZDg4ODI1ZGQzNGZlYSAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC04LDcgJiM0Mzs4LDcgQEBcbiAgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIHRyYW1wb2xpbmUgZm9yIHBvd2VycGM2NFxuICAqXG4gICogQ3VzdG9tIEJQRiBjb252ZW50aW9uICh2ZXJpZmllci9KSVQpOlxuLSAqXHQtIGlucHV0OiAgc3RhY2sgb2Zmc2V0IGluIEJQRl9SRUdfQVggKHIxMilcbiYjNDM7ICpcdC0gaW5wdXQ6ICBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGX1JFR19BWCAocjEyKVxuICAqXHQtIG91dHB1dDogdXBkYXRlZCBjb3VudCBpbiBCUEZfUkVHX0FYIChyMTIpXG4gICpcbiAgKiBDYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggbm9ybWFsIHBvd2VycGM2NCBBQkk6XG5AQCAtMzIsMTAgJiM0MzszMiwxMCBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdHN0ZCAgICAgcjgsIDcyKHIxKVxuIFxuIFx0Lypcbi1cdCAqIHIzID0gQlBGX1JFR19GUCAmIzQzOyBCUEZfUkVHX0FYXG4tXHQgKiBCUEZfUkVHX0ZQIGlzIHIzMTsgQlBGX1JFR19BWCBpcyByMTIgKHN0YWNrIG9mZnNldCBpbiBieXRlcykuXG4mIzQzO1x0ICogQlBGX1JFR19BWCAocjEyKSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzXG4mIzQzO1x0ICogdGhlIGZpcnN0IGFyZ3VtZW50IGluIHIzLlxuIFx0ICovXG4tXHRhZGQgICAgIHIzLCByMzEsIHIxMlxuJiM0MztcdG1yICAgICAgcjMsIHIxMlxuIFx0YmwgICAgICBDRlVOQyhicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8pXG4gXG4gXHQvKiBQdXQgcmV0dXJuIHZhbHVlIGJhY2sgaW50byBBWCAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbmluZGV4IDAyYzYzN2Q4NzQyMDUuLjhjMDNlMjcyZTBiZjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC02LDEyICYjNDM7NiwxMSBAQFxuIFxuIC8qXG4gICogVHJhbXBvbGluZSBmb3IgdGhlIEJQRiB0aW1lZCBtYXlfZ290byBsb29wIGJvdW5kLiBDdXN0b20gY2FsbGluZyBjb252ZW50aW9uOlxuLSAqXHQtIGlucHV0OiAgc3RhY2sgb2Zmc2V0IGluIEJQRl9SRUdfQVggKHQwKVxuJiM0MzsgKlx0LSBpbnB1dDogIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlciBpbiBCUEZfUkVHX0FYICh0MClcbiAgKlx0LSBvdXRwdXQ6IHVwZGF0ZWQgY291bnQgaW4gQlBGX1JFR19BWCAodDApXG4gICpcbi0gKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLCB3aGVyZVxuLSAqIHB0ciA9IEJQRl9SRUdfRlAgKHM1KSAmIzQzOyBCUEZfUkVHX0FYICh0MCkuIEJQRiBSMC1SNSAoYTUsIGEwLWE0KSBhcmUgc2F2ZWRcbi0gKiBhY3Jvc3MgdGhlIGNhbGw7IEJQRl9SRUdfRlAgKHM1KSBpcyBjYWxsZWUtc2F2ZWQgYW5kIG5lZWRzIG5vIHNhdmluZy5cbiYjNDM7ICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSS5cbiYjNDM7ICogQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZCBhY3Jvc3MgdGhlIGNhbGwuXG4gICovXG4gXG4gU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG5AQCAtMjgsNyAmIzQzOzI3LDExIEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIFx0UkVHX1NcdGEzLCAxKlNaUkVHKHNwKVxuIFx0UkVHX1NcdGE0LCAwKlNaUkVHKHNwKVxuIFxuLVx0YWRkXHRhMCwgdDAsIHM1XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBCUEZfUkVHX0FYICh0MCkgY29udGFpbnMgdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlcjsgcGFzcyBpdCBhc1xuJiM0MztcdCAqIHRoZSBmaXJzdCBhcmd1bWVudCBpbiBhMC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRtdlx0YTAsIHQwXG4gXHRjYWxsXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbiBcdG12XHR0MCwgYTBcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggYzQ2ODcyYjA3MWNlNy4uNDA5OGMzMzc3YzIxMyAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0xODcyLDkgJiM0MzsxODcyLDkgQEAgc3RhdGljIG5vaW5saW5lIGludCBicGZfaml0X2luc24oc3RydWN0IGJwZl9qaXQgKmppdCwgc3RydWN0IGJwZl9wcm9nICpmcCxcbiBcdFx0aWYgKCh2b2lkICopZnVuYyA9PSBhcmNoX2JwZl90aW1lZF9tYXlfZ290bykge1xuIFx0XHRcdC8qXG4gXHRcdFx0ICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSBoYXMgYSBzcGVjaWFsIEFCSTogdGhlXG4tXHRcdFx0ICogcGFyYW1ldGVycyBhcmUgaW4gQlBGX1JFR19BWCBhbmQgQlBGX1JFR18xMDsgdGhlXG4tXHRcdFx0ICogcmV0dXJuIHZhbHVlIGlzIGluIEJQRl9SRUdfQVg7IGFuZCBhbGwgR1BScyBleGNlcHRcbi1cdFx0XHQgKiBSRUdfVzAsIFJFR19XMSwgYW5kIEJQRl9SRUdfQVggYXJlIGNhbGxlZS1zYXZlZC5cbiYjNDM7XHRcdFx0ICogcGFyYW1ldGVyIGFuZCByZXR1cm4gdmFsdWUgYXJlIGluIEJQRl9SRUdfQVg7IGFsbFxuJiM0MztcdFx0XHQgKiBHUFJzIGV4Y2VwdCBSRUdfVzAsIFJFR19XMSwgYW5kIEJQRl9SRUdfQVggYXJlXG4mIzQzO1x0XHRcdCAqIGNhbGxlZS1zYXZlZC5cbiBcdFx0XHQgKi9cbiBcbiBcdFx0XHQvKiBicmFzbCAlcjAsZnVuYyAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5pbmRleCAwNmY1NjdhNDYwZDdiLi5lMzRjOTk5ODJjNGEyIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuQEAgLTIxLDkgJiM0MzsyMSw5IEBAXG4gXG4gU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHQvKlxuLVx0ICogVGhpcyBmdW5jdGlvbiBoYXMgYSBzcGVjaWFsIEFCSTogdGhlIHBhcmFtZXRlcnMgYXJlIGluICVyMTIgYW5kXG4tXHQgKiAlcjEzOyB0aGUgcmV0dXJuIHZhbHVlIGlzIGluICVyMTI7IGFsbCBHUFJzIGV4Y2VwdCAlcjAsICVyMSwgYW5kXG4tXHQgKiAlcjEyIGFyZSBjYWxsZWUtc2F2ZWQ7IGFuZCB0aGUgcmV0dXJuIGFkZHJlc3MgaXMgaW4gJXIwLlxuJiM0MztcdCAqIFRoaXMgZnVuY3Rpb24gaGFzIGEgc3BlY2lhbCBBQkk6IHRoZSBwYXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZSBhcmVcbiYjNDM7XHQgKiBpbiAlcjEyOyBhbGwgR1BScyBleGNlcHQgJXIwLCAlcjEsIGFuZCAlcjEyIGFyZSBjYWxsZWUtc2F2ZWQ7IGFuZFxuJiM0MztcdCAqIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBpbiAlcjAuXG4gXHQgKi9cbiBcdHN0bWcgJXIyLCVyNSxGUkFNRV9PRkYmIzQzO1IyX09GRiglcjE1KVxuIFx0c3RnICVyMTQsRlJBTUVfT0ZGJiM0MztSMTRfT0ZGKCVyMTUpXG5AQCAtMzMsNyAmIzQzOzMzLDcgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHRsYXkgJXIxNSwtRlJBTUVfU0laRSglcjE1KVxuIFx0c3RnICVyMSxfX1NGX0JBQ0tDSEFJTiglcjE1KVxuIFxuLVx0bGF5ICVyMiwwKCVyMTIsJXIxMylcbiYjNDM7XHRsZ3IgJXIyLCVyMTJcbiBcdGJyYXNsICVyMTQsYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXG4gXHRsZ3IgJXIxMiwlcjJcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbmluZGV4IDU0YzY5MGNhZTE5MDguLjZlOWQ5ZTdjMmIxZDYgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuQEAgLTExLDEyICYjNDM7MTEsNiBAQFxuIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIFx0QU5OT1RBVEVfTk9FTkRCUlxuIFxuLVx0Lypcbi1cdCAqIHIxMCBwYXNzZXMgdXMgc3RhY2sgZGVwdGgsIGxvYWQgdGhlIHBvaW50ZXIgdG8gY291bnQgYW5kIHRpbWVzdGFtcFxuLVx0ICogaW50byByMTAgYnkgYWRkaW5nIGl0IHRvIEJQRiBmcmFtZSBwb2ludGVyLlxuLVx0ICovXG4tXHRsZWFxICglcmJwLCAlcjEwLCAxKSwgJXIxMFxuLVxuIFx0LyogU2V0dXAgZnJhbWUuICovXG4gXHRwdXNocSAlcmJwXG4gXHRtb3ZxICVyc3AsICVyYnBcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2ZpeHVwcy5jIGIva2VybmVsL2JwZi9maXh1cHMuY1xuaW5kZXggNjViNDQxZTRhMzUxNy4uZGM1OTUwMWEzMmJiZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvZml4dXBzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvZml4dXBzLmNcbkBAIC0xNzk3LDIwICYjNDM7MTc5NywyMCBAQCBpbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gXHRcdFx0c3RhY2tfZGVwdGhfZXh0cmEgPSAxNjtcbiBcdFx0XHRpbnNuX2J1ZlswXSA9IEJQRl9MRFhfTUVNKEJQRl9EVywgQlBGX1JFR19BWCwgQlBGX1JFR18xMCwgc3RhY2tfb2ZmX2NudCk7XG4gXHRcdFx0aWYgKGluc24tXHUwMDNlb2ZmIFx1MDAzZT0gMClcbi1cdFx0XHRcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cdTAwM2VvZmYgJiM0MzsgNSk7XG4mIzQzO1x0XHRcdFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVx1MDAzZW9mZiAmIzQzOyA2KTtcbiBcdFx0XHRlbHNlXG4gXHRcdFx0XHRpbnNuX2J1ZlsxXSA9IEJQRl9KTVBfSU1NKEJQRl9KRVEsIEJQRl9SRUdfQVgsIDAsIGluc24tXHUwMDNlb2ZmIC0gMSk7XG4gXHRcdFx0aW5zbl9idWZbMl0gPSBCUEZfQUxVNjRfSU1NKEJQRl9TVUIsIEJQRl9SRUdfQVgsIDEpO1xuLVx0XHRcdGluc25fYnVmWzNdID0gQlBGX0pNUF9JTU0oQlBGX0pORSwgQlBGX1JFR19BWCwgMCwgMik7XG4mIzQzO1x0XHRcdGluc25fYnVmWzNdID0gQlBGX0pNUF9JTU0oQlBGX0pORSwgQlBGX1JFR19BWCwgMCwgMyk7XG4gXHRcdFx0Lypcbi1cdFx0XHQgKiBBWCBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIHBhc3MgaW4gc3RhY2tfb2ZmX2NudFxuLVx0XHRcdCAqICh0byBhZGQgdG8gcjEwL2ZwKSwgYW5kIGFsc28gYXMgdGhlIHJldHVybiB2YWx1ZSBvZlxuLVx0XHRcdCAqIHRoZSBjYWxsIHRvIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvLlxuJiM0MztcdFx0XHQgKiBBWCBpcyB1c2VkIHRvIHBhc3MgRlAgJiM0Mzsgc3RhY2tfb2ZmX2NudCBhcyB0aGUgYXJndW1lbnQgdG9cbiYjNDM7XHRcdFx0ICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSwgYW5kIGFsc28gaG9sZHMgaXRzIHJldHVybiB2YWx1ZS5cbiBcdFx0XHQgKi9cbi1cdFx0XHRpbnNuX2J1Zls0XSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XG4tXHRcdFx0aW5zbl9idWZbNV0gPSBCUEZfRU1JVF9DQUxMKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKTtcbi1cdFx0XHRpbnNuX2J1Zls2XSA9IEJQRl9TVFhfTUVNKEJQRl9EVywgQlBGX1JFR18xMCwgQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XG4tXHRcdFx0Y250ID0gNztcbiYjNDM7XHRcdFx0aW5zbl9idWZbNF0gPSBCUEZfTU9WNjRfUkVHKEJQRl9SRUdfQVgsIEJQRl9SRUdfRlApO1xuJiM0MztcdFx0XHRpbnNuX2J1Zls1XSA9IEJQRl9BTFU2NF9JTU0oQlBGX0FERCwgQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XG4mIzQzO1x0XHRcdGluc25fYnVmWzZdID0gQlBGX0VNSVRfQ0FMTChhcmNoX2JwZl90aW1lZF9tYXlfZ290byk7XG4mIzQzO1x0XHRcdGluc25fYnVmWzddID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcbiYjNDM7XHRcdFx0Y250ID0gODtcbiBcbiBcdFx0XHRuZXdfcHJvZyA9IGJwZl9wYXRjaF9pbnNuX2RhdGEoZW52LCBpICYjNDM7IGRlbHRhLCBpbnNuX2J1ZiwgY250KTtcbiBcdFx0XHRpZiAoIW5ld19wcm9nKVxuQEAgLTI2NjEsNCAmIzQzOzI2NjEsMyBAQCBpbnQgYnBmX3JlbW92ZV9mYXN0Y2FsbF9zcGlsbHNfZmlsbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcbiBcdHJldHVybiAwO1xuIH1cbi1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbmluZGV4IDMyOGNmNjMwMjEwYTIuLmM1OTk2ZDlkYzhjYzkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuY1xuQEAgLTYzNSwxNSAmIzQzOzYzNSwxNiBAQCBfX3hsYXRlZChcJiMzNDs0OiByMCA9IFx1MDAyNih2b2lkIF9fcGVyY3B1ICopKHIwKVwmIzM0OylcbiBfX3hsYXRlZChcJiMzNDsuLi5cJiMzNDspXG4gLyogbWF5X2dvdG8gZXhwYW5zaW9uIHN0YXJ0cyAqL1xuIF9feGxhdGVkKFwmIzM0OzY6IHIxMiA9ICoodTY0ICopKHIxMCAtMjQpXCYjMzQ7KVxuLV9feGxhdGVkKFwmIzM0Ozc6IGlmIHIxMiA9PSAweDAgZ290byBwYyYjNDM7NlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7NzogaWYgcjEyID09IDB4MCBnb3RvIHBjJiM0Mzs3XCYjMzQ7KVxuIF9feGxhdGVkKFwmIzM0Ozg6IHIxMiAtPSAxXCYjMzQ7KVxuLV9feGxhdGVkKFwmIzM0Ozk6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7MlwmIzM0Oylcbi1fX3hsYXRlZChcJiMzNDsxMDogcjEyID0gLTI0XCYjMzQ7KVxuLV9feGxhdGVkKFwmIzM0OzExOiBjYWxsIHVua25vd25cJiMzNDspXG4tX194bGF0ZWQoXCYjMzQ7MTI6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDs5OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMmIzQzOzNcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0OzEwOiByMTIgPSByMTBcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0OzExOiByMTIgJiM0Mzs9IC0yNFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTI6IGNhbGwgdW5rbm93blwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTM6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXCYjMzQ7KVxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBlbmRzICovXG4tX194bGF0ZWQoXCYjMzQ7MTM6ICoodTY0ICopKHIxMCAtOCkgPSByMVwmIzM0Oylcbi1fX3hsYXRlZChcJiMzNDsxNDogZXhpdFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTQ6ICoodTY0ICopKHIxMCAtOCkgPSByMVwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTU6IGV4aXRcJiMzNDspXG4gX19zdWNjZXNzXG4gX19uYWtlZCB2b2lkIG1heV9nb3RvX2ludGVyYWN0aW9uX3g4Nl82NCh2b2lkKVxuIHtcbkBAIC02NzYsMTUgJiM0Mzs2NzcsMTYgQEAgX194bGF0ZWQoXCYjMzQ7MjogcjEgPSAxXCYjMzQ7KVxuIF9feGxhdGVkKFwmIzM0OzM6IGNhbGwgYnBmX2dldF9zbXBfcHJvY2Vzc29yX2lkXCYjMzQ7KVxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBzdGFydHMgKi9cbiBfX3hsYXRlZChcJiMzNDs0OiByMTIgPSAqKHU2NCAqKShyMTAgLTI0KVwmIzM0Oylcbi1fX3hsYXRlZChcJiMzNDs1OiBpZiByMTIgPT0gMHgwIGdvdG8gcGMmIzQzOzZcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0OzU6IGlmIHIxMiA9PSAweDAgZ290byBwYyYjNDM7N1wmIzM0OylcbiBfX3hsYXRlZChcJiMzNDs2OiByMTIgLT0gMVwmIzM0Oylcbi1fX3hsYXRlZChcJiMzNDs3OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMmIzQzOzJcJiMzNDspXG4tX194bGF0ZWQoXCYjMzQ7ODogcjEyID0gLTI0XCYjMzQ7KVxuLV9feGxhdGVkKFwmIzM0Ozk6IGNhbGwgdW5rbm93blwmIzM0Oylcbi1fX3hsYXRlZChcJiMzNDsxMDogKih1NjQgKikocjEwIC0yNCkgPSByMTJcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0Ozc6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7M1wmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7ODogcjEyID0gcjEwXCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDs5OiByMTIgJiM0Mzs9IC0yNFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTA6IGNhbGwgdW5rbm93blwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTE6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXCYjMzQ7KVxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBlbmRzICovXG4tX194bGF0ZWQoXCYjMzQ7MTE6ICoodTY0ICopKHIxMCAtOCkgPSByMVwmIzM0Oylcbi1fX3hsYXRlZChcJiMzNDsxMjogZXhpdFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTI6ICoodTY0ICopKHIxMCAtOCkgPSByMVwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTM6IGV4aXRcJiMzNDspXG4gX19zdWNjZXNzXG4gX19uYWtlZCB2b2lkIG1heV9nb3RvX2ludGVyYWN0aW9uKHZvaWQpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jXG5pbmRleCBkYjdlMzBkYTIzNGYxLi4xNzIxODk3MTYwZGM5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuY1xuQEAgLTkwLDE1ICYjNDM7OTAsMTYgQEAgX19hcmNoX2xvb25nYXJjaFxuIF9feGxhdGVkKFwmIzM0OzA6ICoodTY0ICopKHIxMCAtMTYpID0gNjU1MzVcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7MTogKih1NjQgKikocjEwIC04KSA9IDBcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7MjogcjEyID0gKih1NjQgKikocjEwIC0xNilcJiMzNDspXG4tX194bGF0ZWQoXCYjMzQ7MzogaWYgcjEyID09IDB4MCBnb3RvIHBjJiM0Mzs2XCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDszOiBpZiByMTIgPT0gMHgwIGdvdG8gcGMmIzQzOzdcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7NDogcjEyIC09IDFcJiMzNDspXG4tX194bGF0ZWQoXCYjMzQ7NTogaWYgcjEyICE9IDB4MCBnb3RvIHBjJiM0MzsyXCYjMzQ7KVxuLV9feGxhdGVkKFwmIzM0OzY6IHIxMiA9IC0xNlwmIzM0Oylcbi1fX3hsYXRlZChcJiMzNDs3OiBjYWxsIHVua25vd25cJiMzNDspXG4tX194bGF0ZWQoXCYjMzQ7ODogKih1NjQgKikocjEwIC0xNikgPSByMTJcJiMzNDspXG4tX194bGF0ZWQoXCYjMzQ7OTogcjAgPSAxXCYjMzQ7KVxuLV9feGxhdGVkKFwmIzM0OzEwOiByMCA9IDJcJiMzNDspXG4tX194bGF0ZWQoXCYjMzQ7MTE6IGV4aXRcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0OzU6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7M1wmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7NjogcjEyID0gcjEwXCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDs3OiByMTIgJiM0Mzs9IC0xNlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7ODogY2FsbCB1bmtub3duXCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDs5OiAqKHU2NCAqKShyMTAgLTE2KSA9IHIxMlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTA6IHIwID0gMVwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTE6IHIwID0gMlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTI6IGV4aXRcJiMzNDspXG4gX19zdWNjZXNzXG4gX19uYWtlZCB2b2lkIG1heV9nb3RvX2JhdGNoXzIodm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcbmluZGV4IDNkOTk5NGE1MjQ2NGUuLjYzOWI1MzM2M2M5YWMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jXG5AQCAtNzAsNiAmIzQzOzcwLDI1IEBAIF9fbmFrZWQgdm9pZCBub19wcml2YXRlX3N0YWNrX25lc3RlZCh2b2lkKVxuIFwmIzM0O1x0Ojo6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbiYjNDM7U0VDKFwmIzM0O2ZlbnRyeS9icGZfZmVudHJ5X3Rlc3Q5XCYjMzQ7KVxuJiM0MztfX2Rlc2NyaXB0aW9uKFwmIzM0O1ByaXZhdGUgc3RhY2ssIHRpbWVkIG1heV9nb3RvXCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3MgX19yZXR2YWwoMClcbiYjNDM7X19hcmNoX3g4Nl82NFxuJiM0MztfX2ppdGVkKFwmIzM0O1x0bW92YWJzcVx0JDB4e3suKn19LCAlcjlcJiMzNDspXG4mIzQzO19faml0ZWQoXCYjMzQ7Li4uXCYjMzQ7KVxuJiM0MztfX2ppdGVkKFwmIzM0O1x0bW92cVx0JXI5LCAlcjEwXCYjMzQ7KVxuJiM0MztfX2FyY2hfYXJtNjRcbiYjNDM7X19qaXRlZChcJiMzNDtcdG1vdlx0eDksIHgyNVwmIzM0OylcbiYjNDM7aW50IHByaXZhdGVfc3RhY2tfdGltZWRfbWF5X2dvdG8odm9pZClcbiYjNDM7e1xuJiM0MztcdHZvbGF0aWxlIF9fdTY0IHN0YWNrX3NwYWNlWzE2XSA9IHt9O1xuJiM0MztcbiYjNDM7XHR3aGlsZSAoY2FuX2xvb3ApXG4mIzQzO1x0XHQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiBzdGFja19zcGFjZVswXTtcbiYjNDM7fVxuJiM0MztcbiBfX3VzZWRcbiBfX25ha2VkIHN0YXRpYyB2b2lkIGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZyh2b2lkKVxuIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2RvX21pc2NfZml4dXBzJiMzNDssCiAgICAmIzM0O2FyY2hfYnBmX3RpbWVkX21heV9nb3RvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBieXRlY29kZSBmaXh1cHMgZm9yIHRpbWVkIG1heV9nb3RvIGluc3RydWN0aW9ucyBpbiB0aGUgdmVyaWZpZXIgKGJwZl9kb19taXNjX2ZpeHVwcyBpbiBrZXJuZWwvYnBmL2ZpeHVwcy5jKSBhbmQgdGhlIHg4NiBKSVQgdHJhbXBvbGluZSAoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8gaW4gYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TKSB0byBjYWxjdWxhdGUgdGhlIGNvdW50L3RpbWVzdGFtcCBwb2ludGVyIGluIEJQRiByZWdpc3RlcnMgYmVmb3JlIGludm9raW5nIHRoZSB0cmFtcG9saW5lLiBUaGlzIHRvdWNoZXMgY29yZSBCUEYgdmVyaWZpY2F0aW9uIGFuZCBleGVjdXRpb24gbG9naWMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ4ODE5NTdhZTVlMTJhNjE2YzNmYzg4NThhZjYwNjU0MzRlZmYxZGMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDA2OjUxOjI3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwppbmRleCBhOWE4MDI3MTFhN2Y5Li41MzE0OGM5YTFjNTg0IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwpAQCAtMTQsMTYgJiM0MzsxNCwxMCBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bykKIAlzdHAJeDMsIHg0LCBbc3AsICM0OF0KIAogCS8qCi0JICogU3RhY2sgZGVwdGggd2FzIHBhc3NlZCBpbiBCUEZfUkVHX0FYICh4OSksIGFkZCBpdCB0byB0aGUgQlBGX0ZQCi0JICogKHgyNSkgdG8gZ2V0IHRoZSBwb2ludGVyIHRvIGNvdW50IGFuZCB0aW1lc3RhbXAgYW5kIHBhc3MgaXQgYXMgdGhlCi0JICogZmlyc3QgYXJndW1lbnQgaW4geDAuCi0JICoKLQkgKiBCZWZvcmUgZ2VuZXJhdGluZyB0aGUgY2FsbCB0byBhcmNoX2JwZl90aW1lZF9tYXlfZ290bywgdGhlIHZlcmlmaWVyCi0JICogZ2VuZXJhdGVzIGEgbG9hZCBpbnN0cnVjdGlvbiB1c2luZyBGUCwgaS5lLiBSRUdfQVggPSAqKHU2NCAqKShGUCAtCi0JICogc3RhY2tfb2ZmX2NudCksIHNvIEJQRl9SRUdfRlAgKHgyNSkgaXMgYWx3YXlzIHNldCB1cCBieSB0aGUgYXJtNjQKLQkgKiBqaXQgaW4gdGhpcyBjYXNlLgomIzQzOwkgKiBCUEZfUkVHX0FYICh4OSkgY29udGFpbnMgdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlcjsgcGFzcyBpdCBhcwomIzQzOwkgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4geDAuCiAJICovCi0JYWRkCXgwLCB4OSwgeDI1CiYjNDM7CW1vdgl4MCwgeDkKIAlibAlicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8KIAkvKiBCUEZfUkVHX0FYKHg5KSB3aWxsIGJlIHN0b3JlZCBpbnRvIGNvdW50LCBzbyBtb3ZlIHJldHVybiB2YWx1ZSB0byBpdC4gKi8KIAltb3YJeDksIHgwCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwppbmRleCA4NGVjZjZmYTdmNWRjLi5kODg4MjVkZDM0ZmVhIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKQEAgLTgsNyAmIzQzOzgsNyBAQAogICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSB0cmFtcG9saW5lIGZvciBwb3dlcnBjNjQKICAqCiAgKiBDdXN0b20gQlBGIGNvbnZlbnRpb24gKHZlcmlmaWVyL0pJVCk6Ci0gKgktIGlucHV0OiAgc3RhY2sgb2Zmc2V0IGluIEJQRl9SRUdfQVggKHIxMikKJiM0MzsgKgktIGlucHV0OiAgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyIGluIEJQRl9SRUdfQVggKHIxMikKICAqCS0gb3V0cHV0OiB1cGRhdGVkIGNvdW50IGluIEJQRl9SRUdfQVggKHIxMikKICAqCiAgKiBDYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggbm9ybWFsIHBvd2VycGM2NCBBQkk6CkBAIC0zMiwxMCAmIzQzOzMyLDEwIEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKQogCXN0ZCAgICAgcjgsIDcyKHIxKQogCiAJLyoKLQkgKiByMyA9IEJQRl9SRUdfRlAgJiM0MzsgQlBGX1JFR19BWAotCSAqIEJQRl9SRUdfRlAgaXMgcjMxOyBCUEZfUkVHX0FYIGlzIHIxMiAoc3RhY2sgb2Zmc2V0IGluIGJ5dGVzKS4KJiM0MzsJICogQlBGX1JFR19BWCAocjEyKSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzCiYjNDM7CSAqIHRoZSBmaXJzdCBhcmd1bWVudCBpbiByMy4KIAkgKi8KLQlhZGQgICAgIHIzLCByMzEsIHIxMgomIzQzOwltciAgICAgIHIzLCByMTIKIAlibCAgICAgIENGVU5DKGJwZl9jaGVja190aW1lZF9tYXlfZ290bykKIAogCS8qIFB1dCByZXR1cm4gdmFsdWUgYmFjayBpbnRvIEFYICovCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCmluZGV4IDAyYzYzN2Q4NzQyMDUuLjhjMDNlMjcyZTBiZjUgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCkBAIC02LDEyICYjNDM7NiwxMSBAQAogCiAvKgogICogVHJhbXBvbGluZSBmb3IgdGhlIEJQRiB0aW1lZCBtYXlfZ290byBsb29wIGJvdW5kLiBDdXN0b20gY2FsbGluZyBjb252ZW50aW9uOgotICoJLSBpbnB1dDogIHN0YWNrIG9mZnNldCBpbiBCUEZfUkVHX0FYICh0MCkKJiM0MzsgKgktIGlucHV0OiAgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyIGluIEJQRl9SRUdfQVggKHQwKQogICoJLSBvdXRwdXQ6IHVwZGF0ZWQgY291bnQgaW4gQlBGX1JFR19BWCAodDApCiAgKgotICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSSwgd2hlcmUKLSAqIHB0ciA9IEJQRl9SRUdfRlAgKHM1KSAmIzQzOyBCUEZfUkVHX0FYICh0MCkuIEJQRiBSMC1SNSAoYTUsIGEwLWE0KSBhcmUgc2F2ZWQKLSAqIGFjcm9zcyB0aGUgY2FsbDsgQlBGX1JFR19GUCAoczUpIGlzIGNhbGxlZS1zYXZlZCBhbmQgbmVlZHMgbm8gc2F2aW5nLgomIzQzOyAqIENhbGxzIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggdGhlIHN0YW5kYXJkIFJJU0MtViBBQkkuCiYjNDM7ICogQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZCBhY3Jvc3MgdGhlIGNhbGwuCiAgKi8KIAogU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pCkBAIC0yOCw3ICYjNDM7MjcsMTEgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pCiAJUkVHX1MJYTMsIDEqU1pSRUcoc3ApCiAJUkVHX1MJYTQsIDAqU1pSRUcoc3ApCiAKLQlhZGQJYTAsIHQwLCBzNQomIzQzOwkvKgomIzQzOwkgKiBCUEZfUkVHX0FYICh0MCkgY29udGFpbnMgdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlcjsgcGFzcyBpdCBhcwomIzQzOwkgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4gYTAuCiYjNDM7CSAqLwomIzQzOwltdglhMCwgdDAKIAljYWxsCWJwZl9jaGVja190aW1lZF9tYXlfZ290bwogCW12CXQwLCBhMAogCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYwppbmRleCBjNDY4NzJiMDcxY2U3Li40MDk4YzMzNzdjMjEzIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTE4NzIsOSAmIzQzOzE4NzIsOSBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGJwZl9qaXRfaW5zbihzdHJ1Y3QgYnBmX2ppdCAqaml0LCBzdHJ1Y3QgYnBmX3Byb2cgKmZwLAogCQlpZiAoKHZvaWQgKilmdW5jID09IGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKSB7CiAJCQkvKgogCQkJICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSBoYXMgYSBzcGVjaWFsIEFCSTogdGhlCi0JCQkgKiBwYXJhbWV0ZXJzIGFyZSBpbiBCUEZfUkVHX0FYIGFuZCBCUEZfUkVHXzEwOyB0aGUKLQkJCSAqIHJldHVybiB2YWx1ZSBpcyBpbiBCUEZfUkVHX0FYOyBhbmQgYWxsIEdQUnMgZXhjZXB0Ci0JCQkgKiBSRUdfVzAsIFJFR19XMSwgYW5kIEJQRl9SRUdfQVggYXJlIGNhbGxlZS1zYXZlZC4KJiM0MzsJCQkgKiBwYXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZSBhcmUgaW4gQlBGX1JFR19BWDsgYWxsCiYjNDM7CQkJICogR1BScyBleGNlcHQgUkVHX1cwLCBSRUdfVzEsIGFuZCBCUEZfUkVHX0FYIGFyZQomIzQzOwkJCSAqIGNhbGxlZS1zYXZlZC4KIAkJCSAqLwogCiAJCQkvKiBicmFzbCAlcjAsZnVuYyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKaW5kZXggMDZmNTY3YTQ2MGQ3Yi4uZTM0Yzk5OTgyYzRhMiAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCkBAIC0yMSw5ICYjNDM7MjEsOSBAQAogCiBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bykKIAkvKgotCSAqIFRoaXMgZnVuY3Rpb24gaGFzIGEgc3BlY2lhbCBBQkk6IHRoZSBwYXJhbWV0ZXJzIGFyZSBpbiAlcjEyIGFuZAotCSAqICVyMTM7IHRoZSByZXR1cm4gdmFsdWUgaXMgaW4gJXIxMjsgYWxsIEdQUnMgZXhjZXB0ICVyMCwgJXIxLCBhbmQKLQkgKiAlcjEyIGFyZSBjYWxsZWUtc2F2ZWQ7IGFuZCB0aGUgcmV0dXJuIGFkZHJlc3MgaXMgaW4gJXIwLgomIzQzOwkgKiBUaGlzIGZ1bmN0aW9uIGhhcyBhIHNwZWNpYWwgQUJJOiB0aGUgcGFyYW1ldGVyIGFuZCByZXR1cm4gdmFsdWUgYXJlCiYjNDM7CSAqIGluICVyMTI7IGFsbCBHUFJzIGV4Y2VwdCAlcjAsICVyMSwgYW5kICVyMTIgYXJlIGNhbGxlZS1zYXZlZDsgYW5kCiYjNDM7CSAqIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBpbiAlcjAuCiAJICovCiAJc3RtZyAlcjIsJXI1LEZSQU1FX09GRiYjNDM7UjJfT0ZGKCVyMTUpCiAJc3RnICVyMTQsRlJBTUVfT0ZGJiM0MztSMTRfT0ZGKCVyMTUpCkBAIC0zMyw3ICYjNDM7MzMsNyBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bykKIAlsYXkgJXIxNSwtRlJBTUVfU0laRSglcjE1KQogCXN0ZyAlcjEsX19TRl9CQUNLQ0hBSU4oJXIxNSkKIAotCWxheSAlcjIsMCglcjEyLCVyMTMpCiYjNDM7CWxnciAlcjIsJXIxMgogCWJyYXNsICVyMTQsYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvCiAJbGdyICVyMTIsJXIyCiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwppbmRleCA1NGM2OTBjYWUxOTA4Li42ZTlkOWU3YzJiMWQ2IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCkBAIC0xMSwxMiAmIzQzOzExLDYgQEAKIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKQogCUFOTk9UQVRFX05PRU5EQlIKIAotCS8qCi0JICogcjEwIHBhc3NlcyB1cyBzdGFjayBkZXB0aCwgbG9hZCB0aGUgcG9pbnRlciB0byBjb3VudCBhbmQgdGltZXN0YW1wCi0JICogaW50byByMTAgYnkgYWRkaW5nIGl0IHRvIEJQRiBmcmFtZSBwb2ludGVyLgotCSAqLwotCWxlYXEgKCVyYnAsICVyMTAsIDEpLCAlcjEwCi0KIAkvKiBTZXR1cCBmcmFtZS4gKi8KIAlwdXNocSAlcmJwCiAJbW92cSAlcnNwLCAlcmJwCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2ZpeHVwcy5jIGIva2VybmVsL2JwZi9maXh1cHMuYwppbmRleCA2NWI0NDFlNGEzNTE3Li5kYzU5NTAxYTMyYmJkIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2ZpeHVwcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvZml4dXBzLmMKQEAgLTE3OTcsMjAgJiM0MzsxNzk3LDIwIEBAIGludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudikKIAkJCXN0YWNrX2RlcHRoX2V4dHJhID0gMTY7CiAJCQlpbnNuX2J1ZlswXSA9IEJQRl9MRFhfTUVNKEJQRl9EVywgQlBGX1JFR19BWCwgQlBGX1JFR18xMCwgc3RhY2tfb2ZmX2NudCk7CiAJCQlpZiAoaW5zbi0mZ3Q7b2ZmICZndDs9IDApCi0JCQkJaW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLSZndDtvZmYgJiM0MzsgNSk7CiYjNDM7CQkJCWluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi0mZ3Q7b2ZmICYjNDM7IDYpOwogCQkJZWxzZQogCQkJCWluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi0mZ3Q7b2ZmIC0gMSk7CiAJCQlpbnNuX2J1ZlsyXSA9IEJQRl9BTFU2NF9JTU0oQlBGX1NVQiwgQlBGX1JFR19BWCwgMSk7Ci0JCQlpbnNuX2J1ZlszXSA9IEJQRl9KTVBfSU1NKEJQRl9KTkUsIEJQRl9SRUdfQVgsIDAsIDIpOwomIzQzOwkJCWluc25fYnVmWzNdID0gQlBGX0pNUF9JTU0oQlBGX0pORSwgQlBGX1JFR19BWCwgMCwgMyk7CiAJCQkvKgotCQkJICogQVggaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBwYXNzIGluIHN0YWNrX29mZl9jbnQKLQkJCSAqICh0byBhZGQgdG8gcjEwL2ZwKSwgYW5kIGFsc28gYXMgdGhlIHJldHVybiB2YWx1ZSBvZgotCQkJICogdGhlIGNhbGwgdG8gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8uCiYjNDM7CQkJICogQVggaXMgdXNlZCB0byBwYXNzIEZQICYjNDM7IHN0YWNrX29mZl9jbnQgYXMgdGhlIGFyZ3VtZW50IHRvCiYjNDM7CQkJICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSwgYW5kIGFsc28gaG9sZHMgaXRzIHJldHVybiB2YWx1ZS4KIAkJCSAqLwotCQkJaW5zbl9idWZbNF0gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpOwotCQkJaW5zbl9idWZbNV0gPSBCUEZfRU1JVF9DQUxMKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKTsKLQkJCWluc25fYnVmWzZdID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTsKLQkJCWNudCA9IDc7CiYjNDM7CQkJaW5zbl9idWZbNF0gPSBCUEZfTU9WNjRfUkVHKEJQRl9SRUdfQVgsIEJQRl9SRUdfRlApOwomIzQzOwkJCWluc25fYnVmWzVdID0gQlBGX0FMVTY0X0lNTShCUEZfQURELCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTsKJiM0MzsJCQlpbnNuX2J1Zls2XSA9IEJQRl9FTUlUX0NBTEwoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pOwomIzQzOwkJCWluc25fYnVmWzddID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTsKJiM0MzsJCQljbnQgPSA4OwogCiAJCQluZXdfcHJvZyA9IGJwZl9wYXRjaF9pbnNuX2RhdGEoZW52LCBpICYjNDM7IGRlbHRhLCBpbnNuX2J1ZiwgY250KTsKIAkJCWlmICghbmV3X3Byb2cpCkBAIC0yNjYxLDQgJiM0MzsyNjYxLDMgQEAgaW50IGJwZl9yZW1vdmVfZmFzdGNhbGxfc3BpbGxzX2ZpbGxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiAKIAlyZXR1cm4gMDsKIH0KLQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jCmluZGV4IDMyOGNmNjMwMjEwYTIuLmM1OTk2ZDlkYzhjYzkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmMKQEAgLTYzNSwxNSAmIzQzOzYzNSwxNiBAQCBfX3hsYXRlZCgmIzM0OzQ6IHIwID0gJmFtcDsodm9pZCBfX3BlcmNwdSAqKShyMCkmIzM0OykKIF9feGxhdGVkKCYjMzQ7Li4uJiMzNDspCiAvKiBtYXlfZ290byBleHBhbnNpb24gc3RhcnRzICovCiBfX3hsYXRlZCgmIzM0OzY6IHIxMiA9ICoodTY0ICopKHIxMCAtMjQpJiMzNDspCi1fX3hsYXRlZCgmIzM0Ozc6IGlmIHIxMiA9PSAweDAgZ290byBwYyYjNDM7NiYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7NzogaWYgcjEyID09IDB4MCBnb3RvIHBjJiM0Mzs3JiMzNDspCiBfX3hsYXRlZCgmIzM0Ozg6IHIxMiAtPSAxJiMzNDspCi1fX3hsYXRlZCgmIzM0Ozk6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7MiYjMzQ7KQotX194bGF0ZWQoJiMzNDsxMDogcjEyID0gLTI0JiMzNDspCi1fX3hsYXRlZCgmIzM0OzExOiBjYWxsIHVua25vd24mIzM0OykKLV9feGxhdGVkKCYjMzQ7MTI6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs5OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMmIzQzOzMmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzEwOiByMTIgPSByMTAmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzExOiByMTIgJiM0Mzs9IC0yNCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTI6IGNhbGwgdW5rbm93biYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTM6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyJiMzNDspCiAvKiBtYXlfZ290byBleHBhbnNpb24gZW5kcyAqLwotX194bGF0ZWQoJiMzNDsxMzogKih1NjQgKikocjEwIC04KSA9IHIxJiMzNDspCi1fX3hsYXRlZCgmIzM0OzE0OiBleGl0JiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsxNDogKih1NjQgKikocjEwIC04KSA9IHIxJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsxNTogZXhpdCYjMzQ7KQogX19zdWNjZXNzCiBfX25ha2VkIHZvaWQgbWF5X2dvdG9faW50ZXJhY3Rpb25feDg2XzY0KHZvaWQpCiB7CkBAIC02NzYsMTUgJiM0Mzs2NzcsMTYgQEAgX194bGF0ZWQoJiMzNDsyOiByMSA9IDEmIzM0OykKIF9feGxhdGVkKCYjMzQ7MzogY2FsbCBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQmIzM0OykKIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBzdGFydHMgKi8KIF9feGxhdGVkKCYjMzQ7NDogcjEyID0gKih1NjQgKikocjEwIC0yNCkmIzM0OykKLV9feGxhdGVkKCYjMzQ7NTogaWYgcjEyID09IDB4MCBnb3RvIHBjJiM0Mzs2JiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs1OiBpZiByMTIgPT0gMHgwIGdvdG8gcGMmIzQzOzcmIzM0OykKIF9feGxhdGVkKCYjMzQ7NjogcjEyIC09IDEmIzM0OykKLV9feGxhdGVkKCYjMzQ7NzogaWYgcjEyICE9IDB4MCBnb3RvIHBjJiM0MzsyJiMzNDspCi1fX3hsYXRlZCgmIzM0Ozg6IHIxMiA9IC0yNCYjMzQ7KQotX194bGF0ZWQoJiMzNDs5OiBjYWxsIHVua25vd24mIzM0OykKLV9feGxhdGVkKCYjMzQ7MTA6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs3OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMmIzQzOzMmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0Ozg6IHIxMiA9IHIxMCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7OTogcjEyICYjNDM7PSAtMjQmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzEwOiBjYWxsIHVua25vd24mIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzExOiAqKHU2NCAqKShyMTAgLTI0KSA9IHIxMiYjMzQ7KQogLyogbWF5X2dvdG8gZXhwYW5zaW9uIGVuZHMgKi8KLV9feGxhdGVkKCYjMzQ7MTE6ICoodTY0ICopKHIxMCAtOCkgPSByMSYjMzQ7KQotX194bGF0ZWQoJiMzNDsxMjogZXhpdCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTI6ICoodTY0ICopKHIxMCAtOCkgPSByMSYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTM6IGV4aXQmIzM0OykKIF9fc3VjY2VzcwogX19uYWtlZCB2b2lkIG1heV9nb3RvX2ludGVyYWN0aW9uKHZvaWQpCiB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuYwppbmRleCBkYjdlMzBkYTIzNGYxLi4xNzIxODk3MTYwZGM5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmMKQEAgLTkwLDE1ICYjNDM7OTAsMTYgQEAgX19hcmNoX2xvb25nYXJjaAogX194bGF0ZWQoJiMzNDswOiAqKHU2NCAqKShyMTAgLTE2KSA9IDY1NTM1JiMzNDspCiBfX3hsYXRlZCgmIzM0OzE6ICoodTY0ICopKHIxMCAtOCkgPSAwJiMzNDspCiBfX3hsYXRlZCgmIzM0OzI6IHIxMiA9ICoodTY0ICopKHIxMCAtMTYpJiMzNDspCi1fX3hsYXRlZCgmIzM0OzM6IGlmIHIxMiA9PSAweDAgZ290byBwYyYjNDM7NiYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MzogaWYgcjEyID09IDB4MCBnb3RvIHBjJiM0Mzs3JiMzNDspCiBfX3hsYXRlZCgmIzM0OzQ6IHIxMiAtPSAxJiMzNDspCi1fX3hsYXRlZCgmIzM0OzU6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7MiYjMzQ7KQotX194bGF0ZWQoJiMzNDs2OiByMTIgPSAtMTYmIzM0OykKLV9feGxhdGVkKCYjMzQ7NzogY2FsbCB1bmtub3duJiMzNDspCi1fX3hsYXRlZCgmIzM0Ozg6ICoodTY0ICopKHIxMCAtMTYpID0gcjEyJiMzNDspCi1fX3hsYXRlZCgmIzM0Ozk6IHIwID0gMSYjMzQ7KQotX194bGF0ZWQoJiMzNDsxMDogcjAgPSAyJiMzNDspCi1fX3hsYXRlZCgmIzM0OzExOiBleGl0JiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs1OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMmIzQzOzMmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzY6IHIxMiA9IHIxMCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7NzogcjEyICYjNDM7PSAtMTYmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0Ozg6IGNhbGwgdW5rbm93biYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7OTogKih1NjQgKikocjEwIC0xNikgPSByMTImIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzEwOiByMCA9IDEmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzExOiByMCA9IDImIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzEyOiBleGl0JiMzNDspCiBfX3N1Y2Nlc3MKIF9fbmFrZWQgdm9pZCBtYXlfZ290b19iYXRjaF8yKHZvaWQpCiB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYwppbmRleCAzZDk5OTRhNTI0NjRlLi42MzliNTMzNjNjOWFjIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmMKQEAgLTcwLDYgJiM0Mzs3MCwyNSBAQCBfX25ha2VkIHZvaWQgbm9fcHJpdmF0ZV9zdGFja19uZXN0ZWQodm9pZCkKICYjMzQ7CTo6OiBfX2Nsb2JiZXJfYWxsKTsKIH0KIAomIzQzO1NFQygmIzM0O2ZlbnRyeS9icGZfZmVudHJ5X3Rlc3Q5JiMzNDspCiYjNDM7X19kZXNjcmlwdGlvbigmIzM0O1ByaXZhdGUgc3RhY2ssIHRpbWVkIG1heV9nb3RvJiMzNDspCiYjNDM7X19zdWNjZXNzIF9fcmV0dmFsKDApCiYjNDM7X19hcmNoX3g4Nl82NAomIzQzO19faml0ZWQoJiMzNDsJbW92YWJzcQkkMHh7ey4qfX0sICVyOSYjMzQ7KQomIzQzO19faml0ZWQoJiMzNDsuLi4mIzM0OykKJiM0MztfX2ppdGVkKCYjMzQ7CW1vdnEJJXI5LCAlcjEwJiMzNDspCiYjNDM7X19hcmNoX2FybTY0CiYjNDM7X19qaXRlZCgmIzM0Owltb3YJeDksIHgyNSYjMzQ7KQomIzQzO2ludCBwcml2YXRlX3N0YWNrX3RpbWVkX21heV9nb3RvKHZvaWQpCiYjNDM7ewomIzQzOwl2b2xhdGlsZSBfX3U2NCBzdGFja19zcGFjZVsxNl0gPSB7fTsKJiM0MzsKJiM0MzsJd2hpbGUgKGNhbl9sb29wKQomIzQzOwkJOwomIzQzOwomIzQzOwlyZXR1cm4gc3RhY2tfc3BhY2VbMF07CiYjNDM7fQomIzQzOwogX191c2VkCiBfX25ha2VkIHN0YXRpYyB2b2lkIGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZyh2b2lkKQogewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDEyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgcmV2aWV3IHJlcXVlc3QuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCBzbyBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIHRoZXJlLCB0aG91Z2ggSSYjMzk7bGwgYmUga2VlcGluZyBhbiBleWUgb24gdGhlIGJyb2FkZXIgaW1wbGljYXRpb25zIGFjcm9zcyBvdGhlciBhcmNoaXRlY3R1cmVzLgoKRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNoYW5nZXMuIFRoZSBwYXRjaCB0b3VjaGVzIHNldmVyYWwgZmlsZXM6IGFzc2VtYmx5IGZpbGVzIGZvciB2YXJpb3VzIGFyY2hpdGVjdHVyZXMgKGBhcm02NGAsIGBwb3dlcnBjYCwgYHJpc2N2YCwgYHMzOTBgLCBhbmQgYHg4NmApLCBwbHVzIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCBhbmQgc29tZSBzZWxmdGVzdHMuCgpJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIGJ5dGVjb2RlIGV4cGFuc2lvbiBmb3IgYG1heV9nb3RvYCBvciB0aW1lZCBgbWF5X2dvdG9gLiBQcmV2aW91c2x5LCB0aGUgc3RhY2sgb2Zmc2V0IGNvdW50IHdhcyBwYXNzZWQgaW4gYSByZWdpc3RlciAoQVgpIHRvIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHJhbXBvbGluZSwgd2hpY2ggd291bGQgdGhlbiBjb21wdXRlIHRoZSBmcmFtZSBwb2ludGVyIHBsdXMgdGhlIG9mZnNldC4gTm93LCB0aGUgZml4dXAgaXRzZWxmIGVtaXRzIGluc3RydWN0aW9ucyB0byAqcHJlY29tcHV0ZSogYEFYID0gRlAgJiM0Mzsgc3RhY2tfb2ZmX2NudGAgYmVmb3JlIHRoZSB0cmFtcG9saW5lIGNhbGwuIFRoaXMgaXMgZ29pbmcgdG8gY2xlYW4gdXAgdGhlIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBhc3NlbWJseSBjb2RlLgoKQ29uc2VxdWVudGx5LCB0aGVyZSBhcmUgY2hhbmdlcyBpbiB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRyYW1wb2xpbmVzLCBzcGVjaWZpY2FsbHkgdGhlIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgIGZpbGUuIFRoZSBvcmlnaW5hbCBgbGVhcSAoJXJicCwgJXIxMCwgMSksICVyMTBgIGluc3RydWN0aW9uIGluIHRoZSB4ODYgdHJhbXBvbGluZSBpcyBnb25lLiBUaGF0IG1ha2VzIHNlbnNlIHNpbmNlIFIxMC9BWCBub3cgZGlyZWN0bHkgY29udGFpbnMgdGhlIHBvaW50ZXIuCgpUaGUgaW1wb3J0YW50IHRoaW5nIGlzLCB0aGlzICpkb2VzKiB0b3VjaCBleGVjdXRhYmxlIGNvZGUgb24gYW1kNjQ6IGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCBhbmQgYGFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU2AsIHNvIHRoaXMgZGVmaW5pdGVseSBhZmZlY3RzIEJQRiBwcm9ncmFtIHZlcmlmaWNhdGlvbiwgbG9hZGluZywgSklUIGNvbXBpbGF0aW9uLCBhbmQgZXhlY3V0aW9uIG9mIHByb2dyYW1zIHRoYXQgdXNlIGBtYXlfZ290b2Agb3IgdGhlIHRpbWVkIHZhcmlhbnQuIEkmIzM5O2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGVzZSBhcmVhcyBjbG9zZWx5LCBtYWtpbmcgc3VyZSB0aGF0IGl0JiMzOTtzIHNhZmUgYW5kIHBlcmZvcm1zIGNvcnJlY3RseS4KCk5leHQgc3RlcDogSSYjMzk7bSBnb2luZyB0byBydW4gYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGdldCB0aGUgcmVsZXZhbnQgY29udGV4dCBmcm9tIHRob3NlIGtleSBmaWxlcy4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlc2UgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthcmNoX2JwZl90aW1lZF9tYXlfZ290byYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMC1cbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxMTpTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMi1cdEFOTk9UQVRFX05PRU5EQlJcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDgtXHRSRVRcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzo0OTpTWU1fRlVOQ19FTkQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI3MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYGZpeHVwcy5jYCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbi4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBga2VybmVsL2JwZi9maXh1cHMuY2AgZmlsZS4gSSByZW1lbWJlciBzb21ldGhpbmcgcmVsYXRlZCB0byB3aGF0IEkmIzM5O20gd29ya2luZyBvbiBiZWluZyBoYW5kbGVkIGFyb3VuZCBsaW5lIDE3OTcuIExldCYjMzk7cyBzdGFydCB0aGVyZSBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEkgaGF2ZSBhIGh1bmNoIHRoaXMgaXMgdGhlIHJlbGV2YW50IHNlY3Rpb24uIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzdGFydCBkaXNzZWN0aW5nIHRoYXQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvZml4dXBzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzg1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3ODU6XHRcdFx0XHQgKiBkZXB0aC04IHN0b3JlcyB0aGUgc3RhcnQgdGltZXN0YW1wIG9mIHRoZSBsb29wLlxuMTc4NjpcdFx0XHRcdCAqXG4xNzg3Olx0XHRcdFx0ICogVGhlIHN0YXJ0aW5nIHZhbHVlIG9mIGNvdW50IGlzIEJQRl9NQVhfVElNRURfTE9PUFNcbjE3ODg6XHRcdFx0XHQgKiAoMHhmZmZmKS4gIEV2ZXJ5IGl0ZXJhdGlvbiBsb2FkcyBpdCBhbmQgc3VicyBpdCBieSAxLFxuMTc4OTpcdFx0XHRcdCAqIHVudGlsIHRoZSB2YWx1ZSBiZWNvbWVzIDAgaW4gQVggKHRodXMsIDEgaW4gc3RhY2spLFxuMTc5MDpcdFx0XHRcdCAqIGFmdGVyIHdoaWNoIHdlIGNhbGwgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8sIHdoaWNoXG4xNzkxOlx0XHRcdFx0ICogZWl0aGVyIHNldHMgQVggdG8gMHhmZmZmIHRvIGtlZXAgbG9vcGluZywgb3IgdG8gMFxuMTc5MjpcdFx0XHRcdCAqIHVwb24gdGltZW91dC4gQVggaXMgdGhlbiBzdG9yZWQgaW50byB0aGUgc3RhY2suIEluXG4xNzkzOlx0XHRcdFx0ICogdGhlIG5leHQgaXRlcmF0aW9uLCB3ZSBlaXRoZXIgc2VlIDAgYW5kIGJyZWFrIG91dCwgb3JcbjE3OTQ6XHRcdFx0XHQgKiBjb250aW51ZSBpdGVyYXRpbmcgdW50aWwgdGhlIG5leHQgdGltZSB2YWx1ZSBpcyAwXG4xNzk1Olx0XHRcdFx0ICogYWZ0ZXIgc3VidHJhY3Rpb24sIHJpbnNlIGFuZCByZXBlYXQuXG4xNzk2Olx0XHRcdFx0ICovXG4xNzk3Olx0XHRcdFx0c3RhY2tfZGVwdGhfZXh0cmEgPSAxNjtcbjE3OTg6XHRcdFx0XHRpbnNuX2J1ZlswXSA9IEJQRl9MRFhfTUVNKEJQRl9EVywgQlBGX1JFR19BWCwgQlBGX1JFR18xMCwgc3RhY2tfb2ZmX2NudCk7XG4xNzk5Olx0XHRcdFx0aWYgKGluc24tXHUwMDNlb2ZmIFx1MDAzZT0gMClcbjE4MDA6XHRcdFx0XHRcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cdTAwM2VvZmYgJiM0MzsgNik7XG4xODAxOlx0XHRcdFx0ZWxzZVxuMTgwMjpcdFx0XHRcdFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVx1MDAzZW9mZiAtIDEpO1xuMTgwMzpcdFx0XHRcdGluc25fYnVmWzJdID0gQlBGX0FMVTY0X0lNTShCUEZfU1VCLCBCUEZfUkVHX0FYLCAxKTtcbjE4MDQ6XHRcdFx0XHRpbnNuX2J1ZlszXSA9IEJQRl9KTVBfSU1NKEJQRl9KTkUsIEJQRl9SRUdfQVgsIDAsIDMpO1xuMTgwNTpcdFx0XHRcdC8qXG4xODA2Olx0XHRcdFx0ICogQVggaXMgdXNlZCB0byBwYXNzIEZQICYjNDM7IHN0YWNrX29mZl9jbnQgYXMgdGhlIGFyZ3VtZW50IHRvXG4xODA3Olx0XHRcdFx0ICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSwgYW5kIGFsc28gaG9sZHMgaXRzIHJldHVybiB2YWx1ZS5cbjE4MDg6XHRcdFx0XHQgKi9cbjE4MDk6XHRcdFx0XHRpbnNuX2J1Zls0XSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR19BWCwgQlBGX1JFR19GUCk7XG4xODEwOlx0XHRcdFx0aW5zbl9idWZbNV0gPSBCUEZfQUxVNjRfSU1NKEJQRl9BREQsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpO1xuMTgxMTpcdFx0XHRcdGluc25fYnVmWzZdID0gQlBGX0VNSVRfQ0FMTChhcmNoX2JwZl90aW1lZF9tYXlfZ290byk7XG4xODEyOlx0XHRcdFx0aW5zbl9idWZbN10gPSBCUEZfU1RYX01FTShCUEZfRFcsIEJQRl9SRUdfMTAsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpO1xuMTgxMzpcdFx0XHRcdGNudCA9IDg7XG4xODE0Olx0XG4xODE1Olx0XHRcdFx0bmV3X3Byb2cgPSBicGZfcGF0Y2hfaW5zbl9kYXRhKGVudiwgaSAmIzQzOyBkZWx0YSwgaW5zbl9idWYsIGNudCk7XG4xODE2Olx0XHRcdFx0aWYgKCFuZXdfcHJvZylcbjE4MTc6XHRcdFx0XHRcdHJldHVybiAtRU5PTUVNO1xuMTgxODpcdFxuMTgxOTpcdFx0XHRcdGRlbHRhICYjNDM7PSBjbnQgLSAxO1xuMTgyMDpcdFx0XHRcdGVudi1cdTAwM2Vwcm9nID0gcHJvZyA9IG5ld19wcm9nO1xuMTgyMTpcdFx0XHRcdGluc24gPSBuZXdfcHJvZy1cdTAwM2VpbnNuc2kgJiM0MzsgaSAmIzQzOyBkZWx0YTtcbjE4MjI6XHRcdFx0XHRnb3RvIG5leHRfaW5zbjtcbjE4MjM6XHRcdFx0fSBlbHNlIGlmIChicGZfaXNfbWF5X2dvdG9faW5zbihpbnNuKSkge1xuMTgyNDpcdFx0XHRcdGludCBzdGFja19vZmYgPSAtc3RhY2tfZGVwdGggLSA4O1xuMTgyNTpcdFxuMTgyNjpcdFx0XHRcdHN0YWNrX2RlcHRoX2V4dHJhID0gODtcbjE4Mjc6XHRcdFx0XHRpbnNuX2J1ZlswXSA9IEJQRl9MRFhfTUVNKEJQRl9EVywgQlBGX1JFR19BWCwgQlBGX1JFR18xMCwgc3RhY2tfb2ZmKTtcbjE4Mjg6XHRcdFx0XHRpZiAoaW5zbi1cdTAwM2VvZmYgXHUwMDNlPSAwKVxuMTgyOTpcdFx0XHRcdFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVx1MDAzZW9mZiAmIzQzOyAyKTtcbjE4MzA6XHRcdFx0XHRlbHNlXG4xODMxOlx0XHRcdFx0XHRpbnNuX2J1ZlsxXSA9IEJQRl9KTVBfSU1NKEJQRl9KRVEsIEJQRl9SRUdfQVgsIDAsIGluc24tXHUwMDNlb2ZmIC0gMSk7XG4xODMyOlx0XHRcdFx0aW5zbl9idWZbMl0gPSBCUEZfQUxVNjRfSU1NKEJQRl9TVUIsIEJQRl9SRUdfQVgsIDEpO1xuMTgzMzpcdFx0XHRcdGluc25fYnVmWzNdID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmYpO1xuMTgzNDpcdFx0XHRcdGNudCA9IDQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2NjgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIEltcGxlbWVudGF0aW9uIERldGFpbHMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIEJQRiBhbmQgcG90ZW50aWFsIHRpbWUtcmVsYXRlZCAmIzM0O2dvdG8mIzM0OyBiZWhhdmlvciBvbiB4ODYgYXJjaGl0ZWN0dXJlcyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBhc3NlbWJseS4gSXQmIzM5O3Mgb2Z0ZW4gdGhlIHF1aWNrZXN0IHdheSB0byB1bmRlcnN0YW5kIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyBvZiBob3cgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzICphY3R1YWxseSogaW1wbGVtZW50ZWQsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggcGVyZm9ybWFuY2UtY3JpdGljYWwgY29kZSBsaWtlIEJQRiBmaWx0ZXJzLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBgYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYCBzcGVjaWZpY2FsbHkuIFJlYWRpbmcgdGhlIGFzc2VtYmx5IGlzIGdvaW5nIHRvIGdpdmUgbWUgdGhlIGRlZmluaXRpdmUgdmlldyBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZywgYnlwYXNzaW5nIGFueSBjb21waWxlciBvcHRpbWl6YXRpb25zIHRoYXQgbWlnaHQgb2JzY3VyZSB0aGUgbG9naWMgaW4gQyBjb2RlLiBUaW1lIHRvIGRpZyBpbiBhbmQgZ2V0IGEgcHJlY2lzZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4gICAzOlx0XG4gICA0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2VcbiAgIDU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9saW5rYWdlLmhcdTAwM2VcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2Nhc20vbm9zcGVjLWJyYW5jaC5oXHUwMDNlXG4gICA3Olx0XG4gICA4Olx0XHQuY29kZTY0XG4gICA5Olx0XHQuc2VjdGlvbiAudGV4dCwgXCYjMzQ7YXhcJiMzNDtcbiAgMTA6XHRcbiAgMTE6XHRTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiAgMTI6XHRcdEFOTk9UQVRFX05PRU5EQlJcbiAgMTM6XHRcbiAgMTQ6XHRcdC8qIFNldHVwIGZyYW1lLiAqL1xuICAxNTpcdFx0cHVzaHEgJXJicFxuICAxNjpcdFx0bW92cSAlcnNwLCAlcmJwXG4gIDE3Olx0XG4gIDE4Olx0XHQvKiBTYXZlIHIwLXI1LiAqL1xuICAxOTpcdFx0cHVzaHEgJXJheFxuICAyMDpcdFx0cHVzaHEgJXJkaVxuICAyMTpcdFx0cHVzaHEgJXJzaVxuICAyMjpcdFx0cHVzaHEgJXJkeFxuICAyMzpcdFx0cHVzaHEgJXJjeFxuICAyNDpcdFx0cHVzaHEgJXI4XG4gIDI1Olx0XG4gIDI2Olx0XHQvKlxuICAyNzpcdFx0ICogcjEwIGhhcyB0aGUgcG9pbnRlciB0byBjb3VudCBhbmQgdGltZXN0YW1wLCBwYXNzIGl0IGFzIGZpcnN0XG4gIDI4Olx0XHQgKiBhcmd1bWVudC5cbiAgMjk6XHRcdCAqL1xuICAzMDpcdFx0bW92cSAlcjEwLCAlcmRpXG4gIDMxOlx0XG4gIDMyOlx0XHQvKiBFbWl0IGNhbGwgZGVwdGggYWNjb3VudGluZyBmb3IgY2FsbCBiZWxvdy4gKi9cbiAgMzM6XHRcdENBTExfREVQVEhfQUNDT1VOVFxuICAzNDpcdFx0Y2FsbCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbiAgMzU6XHRcbiAgMzY6XHRcdC8qIEJQRl9SRUdfQVg9cjEwIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgcmV0dXJuIHZhbHVlIHRvIGl0LiAqL1xuICAzNzpcdFx0bW92cSAlcmF4LCAlcjEwXG4gIDM4Olx0XG4gIDM5Olx0XHQvKiBSZXN0b3JlIHI1LXIwLiAqL1xuICA0MDpcdFx0cG9wcSAlcjhcbiAgNDE6XHRcdHBvcHEgJXJjeFxuICA0MjpcdFx0cG9wcSAlcmR4XG4gIDQzOlx0XHRwb3BxICVyc2lcbiAgNDQ6XHRcdHBvcHEgJXJkaVxuICA0NTpcdFx0cG9wcSAlcmF4XG4gIDQ2Olx0XG4gIDQ3Olx0XHRsZWF2ZVxuICA0ODpcdFx0UkVUXG4gIDQ5Olx0U1lNX0ZVTkNfRU5EKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTE3CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBCUEYgVGltZWQgR290byBSZXN0cmljdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0aW1lZCBgZ290b2AgZnVuY3Rpb25hbGl0eSBpbiBCUEYgaXMgYmVpbmcgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IGhvdyBpdHMgYXZhaWxhYmlsaXR5IGlzIGRldGVybWluZWQgYWNyb3NzIGFyY2hpdGVjdHVyZXMuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGxvY2F0aW9ucyB3aGVyZSBgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvYCBhbmQgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBhcmUgZGVmaW5lZCBhbmQgY29uZmlndXJlZC4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBrZXJuZWwgbWFrZXMgdGhvc2UgZGVjaXNpb25zLgoKVG8ga2ljayB0aGluZ3Mgb2ZmLCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGFuZCBkaXJ0eSBzZWFyY2guIEEgYGdyZXBgIG9uIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2Agc2hvdWxkIHF1aWNrbHkgcmV2ZWFsIHRoZSByZWxldmFudCBmaWxlcyBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhhdCBmdW5jdGlvbi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgYmFzZSB0byBnbyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXJjaF9icGZfdGltZWRfbWF5X2dvdG8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MTMwMj1zdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTE3MjQtXHRcdC8qXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoxNzI1Olx0XHQgKiBDYWxsIHRvIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCkgaXMgZW1pdHRlZCBieSB0aGVcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTE3MjYtXHRcdCAqIHZlcmlmaWVyIGFuZCBjYWxsZWQgd2l0aCBjdXN0b20gY2FsbGluZyBjb252ZW50aW9uIHdpdGhcbi0tXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0xNzI4LVx0XHQgKi9cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjE3Mjk6XHRcdGlmIChmdW5jX2FkZHIgIT0gKHU2NClhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTE3MzAtXHRcdFx0ZW1pdChBNjRfTU9WKDEsIHIwLCBBNjRfUigwKSksIGN0eCk7XG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNS1cbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjY6U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy03LVx0LyogQWxsb2NhdGUgc3RhY2sgc3BhY2UgYW5kIGVtaXQgZnJhbWUgcmVjb3JkICovXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzMtXHRyZXRcbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM0OlNZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmM9OTY3PWludCBicGZfaml0X2J1aWxkX2JvZHkoc3RydWN0IGJwZl9wcm9nICpmcCwgdTMyICppbWFnZSwgdTMyICpmaW1hZ2UsIHN0cnVjdCBjb2RlZ2VuX2NvbnRleHQgKmN0eCxcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTc2OS1cdFx0XHQvKlxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jOjE3NzA6XHRcdFx0ICogQ2FsbCB0byBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIGlzIGVtaXR0ZWQgYnkgdGhlXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTc3MS1cdFx0XHQgKiB2ZXJpZmllciBhbmQgY2FsbGVkIHdpdGggY3VzdG9tIGNhbGxpbmcgY29udmVudGlvbiB3aXRoXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jLTE3ODItXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTc4MzpcdFx0XHRpZiAoZnVuY19hZGRyID09ICh1NjQpYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pIHtcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYy0xNzg0LVx0XHRcdFx0cmV0ID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTctLypcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6ODogKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIHRyYW1wb2xpbmUgZm9yIHBvd2VycGM2NFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy05LSAqXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xOS1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MjA6U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTIxLVx0LyogUHJvbG9ndWU6IHNhdmUgTFIsIGFsbG9jYXRlIGZyYW1lICovXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy01Ni1cdGJsclxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzo1NzpTWU1fRlVOQ19FTkQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYz0xMzYzPWludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTg0Ny1cdFx0LypcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTg0ODpcdFx0ICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSBpcyBlbWl0dGVkIGJ5IHRoZSB2ZXJpZmllciBhbmRcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTg0OS1cdFx0ICogcmV0dXJucyBpdHMgcmVzdWx0IGluIEJQRl9SRUdfQVggaW5zdGVhZCBvZiBCUEZfUkVHXzAsIHNvXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xODUxLVx0XHQgKi9cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTg1MjpcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyAhPSBCUEZfUFNFVURPX0NBTEwgXHUwMDI2XHUwMDI2IGFkZHIgIT0gKHU2NClhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTg1My1cdFx0XHRlbWl0X212KGJwZl90b19ydl9yZWcoQlBGX1JFR18wLCBjdHgpLCBSVl9SRUdfQTAsIGN0eCk7XG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTUtXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxNjpTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTE3LVx0YWRkaVx0c3AsIHNwLCAtKDgqU1pSRUcpXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDktXHRyZXRcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjUwOlNZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jPTk1NT1zdGF0aWMgbm9pbmxpbmUgaW50IGJwZl9qaXRfaW5zbihzdHJ1Y3QgYnBmX2ppdCAqaml0LCBzdHJ1Y3QgYnBmX3Byb2cgKmZwLFxuLS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMTg3MS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6MTg3MjpcdFx0aWYgKCh2b2lkICopZnVuYyA9PSBhcmNoX2JwZl90aW1lZF9tYXlfZ290bykge1xuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0xODczLVx0XHRcdC8qXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jOjE4NzQ6XHRcdFx0ICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSBoYXMgYSBzcGVjaWFsIEFCSTogdGhlXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTE4NzUtXHRcdFx0ICogcGFyYW1ldGVyIGFuZCByZXR1cm4gdmFsdWUgYXJlIGluIEJQRl9SRUdfQVg7IGFsbFxuLS1cbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMjEtXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjIyOlNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0yMy1cdC8qXG4tLVxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy00NC1cdEJSX0VYICVyMVxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzo0NTpTWU1fRlVOQ19FTkQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4tLVxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEwLVxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjExOlNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEyLVx0QU5OT1RBVEVfTk9FTkRCUlxuLS1cbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy00OC1cdFJFVFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjQ5OlNZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEyNTI9dm9pZCBhcmNoX2JwZl9zdGFja193YWxrKGJvb2wgKCpjb25zdW1lX2ZuKSh2b2lkICpjb29raWUsIHU2NCBpcCwgdTY0IHNwLCB1NjQgYnApLCB2b2lkICpjb29raWUpO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMjUzOnU2NCBhcmNoX2JwZl90aW1lZF9tYXlfZ290byh2b2lkKTtcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTI1NC11NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKik7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MzM4ND1ib29sIF9fd2VhayBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvKHZvaWQpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMzM4OC1cbmtlcm5lbC9icGYvY29yZS5jOjMzODk6dTY0IF9fd2VhayBhcmNoX2JwZl90aW1lZF9tYXlfZ290byh2b2lkKVxua2VybmVsL2JwZi9jb3JlLmMtMzM5MC17XG4tLVxua2VybmVsL2JwZi9maXh1cHMuYz0xNTA4PWludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE3ODktXHRcdFx0ICogdW50aWwgdGhlIHZhbHVlIGJlY29tZXMgMCBpbiBBWCAodGh1cywgMSBpbiBzdGFjayksXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjE3OTA6XHRcdFx0ICogYWZ0ZXIgd2hpY2ggd2UgY2FsbCBhcmNoX2JwZl90aW1lZF9tYXlfZ290bywgd2hpY2hcbmtlcm5lbC9icGYvZml4dXBzLmMtMTc5MS1cdFx0XHQgKiBlaXRoZXIgc2V0cyBBWCB0byAweGZmZmYgdG8ga2VlcCBsb29waW5nLCBvciB0byAwXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0xODA2LVx0XHRcdCAqIEFYIGlzIHVzZWQgdG8gcGFzcyBGUCAmIzQzOyBzdGFja19vZmZfY250IGFzIHRoZSBhcmd1bWVudCB0b1xua2VybmVsL2JwZi9maXh1cHMuYzoxODA3Olx0XHRcdCAqIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCksIGFuZCBhbHNvIGhvbGRzIGl0cyByZXR1cm4gdmFsdWUuXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE4MDgtXHRcdFx0ICovXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0xODEwLVx0XHRcdGluc25fYnVmWzVdID0gQlBGX0FMVTY0X0lNTShCUEZfQURELCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcbmtlcm5lbC9icGYvZml4dXBzLmM6MTgxMTpcdFx0XHRpbnNuX2J1Zls2XSA9IEJQRl9FTUlUX0NBTEwoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pO1xua2VybmVsL2JwZi9maXh1cHMuYy0xODEyLVx0XHRcdGluc25fYnVmWzddID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzNzgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlOgoKKipJbnZlc3RpZ2F0aW5nIHg4NiBKSVQgQ29tcGlsYXRpb24gZm9yIEJQRiBDYWxscyoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiBob3cgdGhpcyBpcyBoYW5kbGVkIG9uIHg4Ni4gSSYjMzk7bSB0aGlua2luZyB0aGUgYmVzdCBwbGFjZSB0byBzdGFydCBpcyBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYC4gSXQmIzM5O3MgYWxtb3N0IGFsd2F5cyB0aGUgZ28tdG8gZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSB4ODYgYXJjaGl0ZWN0dXJlIGhhbmRsZXMgdGhlIEpJVCBjb21waWxhdGlvbiBvZiBCUEYgaW5zdHJ1Y3Rpb25zIGFuZCBlc3BlY2lhbGx5IGZ1bmN0aW9uIGNhbGxzLiBJJiMzOTttIGtlZW4gdG8gc2VlIGhvdyB0aGV5JiMzOTt2ZSBvcHRpbWl6ZWQgdGhlIGNhbGxpbmcgY29udmVudGlvbnMsIGFyZ3VtZW50IHBhc3NpbmcsIGFuZCBhbnkgcG90ZW50aWFsIGlubGluaW5nIHRyaWNrcyB0aGV5JiMzOTtyZSB1c2luZyB0byBnZXQgdGhlIGJlc3QgcGVyZm9ybWFuY2Ugb3V0IG9mIHRoZSBnZW5lcmF0ZWQgY29kZS4gS25vd2luZyBob3cgdGhleSYjMzk7dmUgdGFja2xlZCB0aGlzIG9uIHg4NiB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIGFuZCBjb21wYXJpbmcgZGlmZmVyZW50IGFwcHJvYWNoZXMuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSB3YWl0aW5nIHRvIGJlIHVuY292ZXJlZCBpbiB0aGF0IGZpbGUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FyY2hfYnBmX3RpbWVkX21heV9nb3RvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEwLVxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjExOlNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEyLVx0QU5OT1RBVEVfTk9FTkRCUlxuLS1cbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy00OC1cdFJFVFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjQ5OlNZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MDAKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIENoYW5nZSBmb3IgUHJpdmF0ZSBTdGFja3MqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNoYW5nZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBtb2RpZmljYXRpb24uIFJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNgLiBUaGUgc3BlY2lmaWMgc2VjdGlvbiBvZiBpbnRlcmVzdCBpcyBgU0VDKCYjMzQ7ZmVudHJ5L2JwZl9mZW50cnlfdGVzdDkmIzM0OylgLCB3aGljaCBpcyBkZXNjcmliZWQgYXMgcmVsYXRpbmcgdG8gdGhlICYjMzQ7UHJpdmF0ZSBzdGFjaywgdGltZWQgbWF5X2dvdG8mIzM0OyBmdW5jdGlvbmFsaXR5LgoKUHJldmlvdXNseSwgdGhlIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgZnVuY3Rpb24gaGFkIGFuIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB3YXkgb2YgZGV0ZXJtaW5pbmcgYW4gZWZmZWN0aXZlIHN0YWNrIHBvaW50ZXIuIE9uIHg4NiwgaXQgd2FzIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBsZWFxICglcmJwLCAlcjEwLCAxKSwgJXIxMGAsIGFuZCBvbiBhcm02NCwgYW4gYGFkZCB4MCwgeDksIHgyNWAuIFRoaXMgd2FzIHJlbHlpbmcgb24gdGhlIGhhcmR3YXJlIGZyYW1lIHBvaW50ZXIgcmVnaXN0ZXIgKHJicCBvbiB4ODYsIHgyNSBvbiBhcm02NCkgdG8gY2FsY3VsYXRlIHRoZSBvZmZzZXQuCgpOb3csIHdpdGggdGhlIHByaXZhdGUgc3RhY2sgZmVhdHVyZSBlbmFibGVkLCB0aGluZ3MgZ2V0IG1vcmUgaW50ZXJlc3RpbmcuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB3aGVuIHRoZSBCUEYgcHJpdmF0ZSBzdGFjayBpcyBhY3RpdmUsIEJQRl9SRUdfRlAgKFIxMCkgaXNuJiMzOTt0IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZSBoYXJkd2FyZSBzdGFjayBmcmFtZSBwb2ludGVyICglcmJwKS4gRXNzZW50aWFsbHksIFIxMCBpcyBtYW5hZ2VkIHdpdGhpbiB0aGUgcHJpdmF0ZSBzdGFjayBidWZmZXIsIHNvIHdlIGNhbiYjMzk7dCBhc3N1bWUgYSBkaXJlY3QgY29ycmVzcG9uZGVuY2UgdG8gYCVyYnBgLiBUaGUga2V5IGhlcmUgaXMgdG8gc2VlIGhvdyB0aGUgYnBmIGNvZGUgY29tcHV0ZXMgdGhlIGZyYW1lIHBvaW50ZXIsIGFsbG93aW5nIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgdG8gc2ltcGx5IHVzZSB0aGUgcHJlY29tcHV0ZWQgdmFsdWUuIEkgbmVlZCB0byByZS1leGFtaW5lIHRoZSBgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvYCBhbmQgdGhlIHZlcmlmaWVyIGNvZGUgc3Vycm91bmRpbmcgdGhlIGB0aW1lZF9tYXlfZ290b2AgZnVuY3Rpb24gdG8gZ2V0IGEgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfdGltZWRfbWF5X2dvdG8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9Nj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0yMC1cdG1vdlx0eDAsIHg5XG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoyMTpcdGJsXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTIyLVx0LyogQlBGX1JFR19BWCh4OSkgd2lsbCBiZSBzdG9yZWQgaW50byBjb3VudCwgc28gbW92ZSByZXR1cm4gdmFsdWUgdG8gaXQuICovXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMy0gKlxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxNDogKiBDYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggbm9ybWFsIHBvd2VycGM2NCBBQkk6XG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTE1LSAqIFx0LSByMyA9IHB0ciwgcmV0dXJuIGluIHIzXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0yMD1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM4LVx0bXIgICAgICByMywgcjEyXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM5Olx0YmwgICAgICBDRlVOQyhicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8pXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTQwLVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTExLSAqXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxMjogKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLlxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTMtICogQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZCBhY3Jvc3MgdGhlIGNhbGwuXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9MTY9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzQtXHRtdlx0YTAsIHQwXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzozNTpcdGNhbGxcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzYtXHRtdlx0dDAsIGEwXG4tLVxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0yMj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM2LVx0bGdyICVyMiwlcjEyXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM3Olx0YnJhc2wgJXIxNCxicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzgtXHRsZ3IgJXIxMiwlcjJcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9MTE9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4tLVxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTMzLVx0Q0FMTF9ERVBUSF9BQ0NPVU5UXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MzQ6XHRjYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM1LVxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTI1Mz11NjQgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8odm9pZCk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEyNTQ6dTY0IGJwZl9jaGVja190aW1lZF9tYXlfZ290byhzdHJ1Y3QgYnBmX3RpbWVkX21heV9nb3RvICopO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMjU1LWJvb2wgYnBmX2hlbHBlcl9jaGFuZ2VzX3BrdF9kYXRhKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCk7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MzM5ND1zdGF0aWMgbm9pbmxpbmUgdm9pZCBicGZfcHJvZ19yZXBvcnRfbWF5X2dvdG9fdmlvbGF0aW9uKHZvaWQpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMzQwOS1cbmtlcm5lbC9icGYvY29yZS5jOjM0MTA6dTY0IGJwZl9jaGVja190aW1lZF9tYXlfZ290byhzdHJ1Y3QgYnBmX3RpbWVkX21heV9nb3RvICpwKVxua2VybmVsL2JwZi9jb3JlLmMtMzQxMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NjUxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgQlBGIEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhlIG51dHMgYW5kIGJvbHRzIG9mIHRoZSBCUEYgaW1wbGVtZW50YXRpb24uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBob3cgaXQmIzM5O3MgYnVpbHQgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBlbnZpcm9ubWVudC4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgcGF0aCBmcm9tIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZG93biB0byB0aGUgYWN0dWFsIGNvZGUuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGVzOyBJJiMzOTttIGJldHRpbmcgdGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVsZXZhbnQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLCBlc3BlY2lhbGx5IGFueXRoaW5nIHJlbGF0ZWQgdG8gQlBGIGl0c2VsZiBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGFkYXB0YXRpb25zIGxpa2UgdGhlIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgIGZpbGUuIFRoZW4sIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgaG93IHRoZXNlIGNvbXBvbmVudHMgYXJlIGxpbmtlZCB0b2dldGhlciwgSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBNYWtlZmlsZSBsb2NhdGVkIHdpdGhpbiBgYXJjaC94ODYvbmV0L2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGhvdyBldmVyeXRoaW5nIGZpdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90aW1lZF9tYXlfZ290byYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9uZXQvTWFrZWZpbGU9OD1lbHNlXG5hcmNoL3g4Ni9uZXQvTWFrZWZpbGU6OTogICAgICAgIG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wLm8gYnBmX3RpbWVkX21heV9nb3RvLm9cbmFyY2gveDg2L25ldC9NYWtlZmlsZS0xMC1lbmRpZlxuLS1cbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMC1cbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxMTpTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMi1cdEFOTk9UQVRFX05PRU5EQlJcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDgtXHRSRVRcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzo0OTpTWU1fRlVOQ19FTkQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MTg1CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCByZWxhdGVzIHRvIHRoZSBrZXJuZWwgYW5kIGVCUEY6CgoqKkludmVzdGlnYXRpbmcgYGZpeHVwcy5jYCBpbiB0aGUgZUJQRiBDb250ZXh0KioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgZml4dXBzLmNgIHNvdXJjZSBmaWxlIGlzIGJ1aWx0IHdpdGhpbiB0aGUgZUJQRiBzdWJzeXN0ZW0uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGBNYWtlZmlsZWAgaW4gdGhlIHJlbGV2YW50IGBrZXJuZWwvYnBmL2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIGJ1aWxkIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMuIFRoZSBgTWFrZWZpbGVgIHdpbGwgYmUgdGhlIGRlZmluaXRpdmUgc291cmNlIG9mIHRydXRoIGZvciBob3cgdGhpcyBzcGVjaWZpYyBmaWxlIGlzIGNvbXBpbGVkIGFuZCBsaW5rZWQuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBpdCBpcyBsaW5rZWQgc29tZXdoZXJlIGluIHRoZSBga2VybmVsL2JwZi9gIGRpcmVjdG9yeSwgaG93ZXZlciwgaXQmIzM5O3MgYWxzbyBwb3NzaWJsZSB0aGF0IHRoaXMgZmlsZSBpcyBpbmNsdWRlZCB2aWEgYW4gaW5jbHVkZSBzdGF0ZW1lbnQgaW4gYW5vdGhlciBmaWxlIGFuZCB0aGF0IHRoZSBgTWFrZWZpbGVgIHRoYXQgYnVpbGRzIGBmaXh1cHMuY2AgbWF5IGJlIGluIGFub3RoZXIgZm9sZGVyLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBmb2xkZXIgYW5kIGxvb2sgZm9yIGFuIGluY2x1ZGUgc3RhdGVtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmaXh1cHMubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT0xMz1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfbG9jYWxfc3RvcmFnZS5vIGJwZl90YXNrX3N0b3JhZ2Uub1xua2VybmVsL2JwZi9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBmaXh1cHMubyBjZmcubyBzdGF0ZXMubyBiYWNrdHJhY2subyBjaGVja19idGYub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xNS1vYmotJHtDT05GSUdfQlBGX0xTTX1cdCAgJiM0Mzs9IGJwZl9pbm9kZV9zdG9yYWdlLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1NTcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMjE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIEJQRiBgbWF5X2dvdG9gIGFuZCBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGBXb3J0aEZ1enppbmdgIGlzIGluZGVlZCB0cnVlLiBXZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgQlBGIHZlcmlmaWVyIGZpeHVwcyBhbmQgdGhlIHg4NiBCUEYgSklUIHRyYW1wb2xpbmUuIFNwZWNpZmljYWxseSwgYGJwZl9kb19taXNjX2ZpeHVwc2AgaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgIGFuZCBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIGluIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgIGFyZSBvZiBpbnRlcmVzdC4gIFRoZSBmYWN0IHRoYXQgcHJvZ3JhbXMgdXNpbmcgYG1heV9nb3RvYCBvciB0aW1lZCBgbWF5X2dvdG9gIGNhbiBiZSBsb2FkZWQgdmlhIGBzeXNfYnBmKEJQRl9QUk9HX0xPQUQpYCBieSBwb3RlbnRpYWxseSB1bnByaXZpbGVnZWQgdXNlcnNwYWNlLCBldmVuIHRocm91Z2ggdG9vbHMgbGlrZSBzeXprYWxsZXIsIGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgYSBjYW5kaWRhdGUuCgpUaGUgY3JpdGljYWwgcGF0aCBpcyBjbGVhcjogYGJwZl9kb19taXNjX2ZpeHVwc2AgcmV3cml0ZXMgaW5zdHJ1Y3Rpb25zIGZvciBgbWF5X2dvdG9gLCBhbmQgd2hlbiB0aGUgSklUZWQgcHJvZ3JhbSBydW5zIG9uIHg4NiwgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBpcyBjYWxsZWQuIFRoaXMgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCAqbW9kaWZpYWJsZSogZXhlY3V0YWJsZSBrZXJuZWwgY29kZSwgd2hpY2gsIGFzIHdlIGtub3csIGlzIGFuIGV4Y2VsbGVudCBwbGFjZSB0byBsb29rIGZvciBzdWJ0bGUgYnVncy4gSSYjMzk7bSB0aGlua2luZyBpbnN0cnVjdGlvbiByZXdyaXRpbmcsIGJyYW5jaCBvZmZzZXRzLCBhbmQgcmVnaXN0ZXIgYWxsb2NhdGlvbiB3aXRoaW4gYGJwZl9kb19taXNjX2ZpeHVwc2Ag4oCTIHNwZWNpZmljYWxseSB0aGluZ3MgbGlrZSBgaW5zbi0mZ3Q7b2ZmICYjNDM7IDZgLCBgZGVsdGEgJiM0Mzs9IGNudCAtIDFgLCBBWCByZWdpc3RlciBoYW5kbGluZywgYW5kIHN0YWNrIG9mZnNldHMsIHRoZXkgYXJlIGFsbCByaXBlIGZvciBmdXp6aW5nLiBBbHNvLCB0aGUgZXhlY3V0aW9uIG9mIHRoZSByZXN1bHRpbmcgQlBGIHByb2dyYW1zIGlzIHdvcnRoIGZ1enppbmcsIHRvby4KClNvLCBgV29ydGhGdXp6aW5nYCA9IFRydWUuCgpOb3csIGxldCYjMzk7cyByZWZpbmUgdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QuICBXZSBrbm93IHRoYXQ6CgoqICAgYGJwZl9kb19taXNjX2ZpeHVwc2AgKGluIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCkgaXMgZGVmaW5pdGVseSBvbiB0aGUgbGlzdC4KKiAgIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgKGluIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgKSBpcywgb2YgY291cnNlLCBhIHByaW1hcnkgZm9jdXMuCiogICBBbmQgd2hpbGUgaXQmIzM5O3Mgbm90IG1vZGlmaWVkIGRpcmVjdGx5LCBgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvYCAoaW4gYGtlcm5lbC9icGYvY29yZS5jYCkgaXMgdGhlIHRhcmdldCBjYWxsZWQgYnkgdGhlIHRyYW1wb2xpbmUuCgpOb3csIGxldCYjMzk7cyB2ZXJpZnkgaWYgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBpcywgaW4gZmFjdCwgYSBzeW1ib2wuIENvbmZpcm1lZC4gV2UgaGF2ZSB0aGUgZGVmaW5pdGlvbnMgaW4gYGluY2x1ZGUvbGludXgvZmlsdGVyLmhgLCBgYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYCwgYW5kIGBrZXJuZWwvYnBmL2NvcmUuY2AuIFdlIGhhdmUgYGJwZl9kb19taXNjX2ZpeHVwc2AgaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgLCB0b28uCgpJJiMzOTt2ZSBjaGVja2VkLCBhbmQgdGhlICpvbmx5KiBtb2RpZmljYXRpb24gaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgIGlzIGluZGVlZCB3aXRoaW4gYGJwZl9kb19taXNjX2ZpeHVwc2AuIEFuZCBubyBvdGhlciBmdW5jdGlvbnMsIGJlc2lkZXMgdGhhdCBhbmQgYSB0cmFpbGluZyBuZXdsaW5lLCB3ZXJlIHRvdWNoZWQuCgpMb29raW5nIGF0IGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgLCB0aGUgY2hhbmdlIHRvIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2Agc2VlbXMgdG8gYmUgdGhlIHJlbW92YWwgb2YgYGxlYXEgKCVyYnAsICVyMTAsIDEpLCAlcjEwYC4KCkRpdmluZyBkZWVwZXIsIEkgY2hlY2tlZCBvdGhlciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZmlsZXMgYW5kIHJlYWxpemVkIHRoZSBpbXBhY3QgaXMgbm90IGNvbmZpbmVkIHRvIHg4Ni4gVGhlIHJlbGV2YW50IHBhcnRzIGFyZToKIC0gYGFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYAogLSBgYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU2AKIC0gYGFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYAogLSBgYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY2AsIGBhcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYAogLSBgYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYAoKU28gb24gYW1kNjQ6Ci0gYGtlcm5lbC9icGYvZml4dXBzLmNgOiBgYnBmX2RvX21pc2NfZml4dXBzYAotIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgOiBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gCgpBcyBmb3IgdGhlIGNvbmZpZ3MsIHdlIG5lZWQgYEJQRl9TWVNDQUxMYCBmb3IgYGZpeHVwcy5jYCAodmVyaWZpZXIsIGBzeXNfYnBmYCkgYW5kIGBCUEZfSklUYCBmb3IgYGJwZl90aW1lZF9tYXlfZ290by5TYCAoQlBGIEpJVCkuIEkmIzM5O2xsIGRvdWJsZS1jaGVjayBmb3Igb3RoZXIgcmVsZXZhbnQgY29uZmlncywgYnV0IHRoaXMgc2VlbXMgdG8gYmUKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfdGltZWRfbWF5X2dvdG8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvY29yZS5jPTMzOTQ9c3RhdGljIG5vaW5saW5lIHZvaWQgYnBmX3Byb2dfcmVwb3J0X21heV9nb3RvX3Zpb2xhdGlvbih2b2lkKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTM0MDktXG5rZXJuZWwvYnBmL2NvcmUuYzozNDEwOnU2NCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8oc3RydWN0IGJwZl90aW1lZF9tYXlfZ290byAqcClcbmtlcm5lbC9icGYvY29yZS5jLTM0MTEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTk1NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZyBwcm9jZXNzLCByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgQlBGIENvcmUqKgoKT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIEkmIzM5O3ZlIGdvdCBhIGh1bmNoIGFib3V0IHRoZSBpc3N1ZSwgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gYGtlcm5lbC9icGYvY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgYXJvdW5kIGxpbmVzIDMzODAgdGhyb3VnaCAzNDIwLiBUaGF0IHNlY3Rpb24gbGlrZWx5IGRlYWxzIHdpdGggWyoqaW5zZXJ0IHlvdXIgaHlwb3RoZXNpcyBoZXJlLCBiYXNlZCBvbiB5b3VyIGV4cGVydGlzZSBhbmQgd2hlcmUgeW91IHdvdWxkIHJlYXNvbmFibHkgbG9vayB3aXRoaW4gdGhlIGJwZiBjb3JlKipdLiBJdCBjb3VsZCBiZSBzb21ldGhpbmcgcmVsYXRlZCB0byBbKipzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGF0IGFyZWEqKl0sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBteSBoeXBvdGhlc2lzIGJ5IHJldmlld2luZyB0aGUgY29kZSBpdHNlbGYuIEhvcGVmdWxseSwgdGhpcyBhcmVhIHdpbGwgZ2l2ZSBtZSBzb21lIGNsYXJpdHkgb24gWyoqdGhlIHByb2JsZW0geW91IGFyZSB0cnlpbmcgdG8gc29sdmUqKl0gYW5kIGZyb20gdGhlcmUsIGFsbG93IG1lIHRvIGZpZ3VyZSBvdXQgWyoqdGhlIGRlc2lyZWQgcmVzb2x1dGlvbioqXS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzgwOlx0dm9pZCBfX3dlYWsgYXJjaF9icGZfc3RhY2tfd2Fsayhib29sICgqY29uc3VtZV9mbikodm9pZCAqY29va2llLCB1NjQgaXAsIHU2NCBzcCwgdTY0IGJwKSwgdm9pZCAqY29va2llKVxuMzM4MTpcdHtcbjMzODI6XHR9XG4zMzgzOlx0XG4zMzg0Olx0Ym9vbCBfX3dlYWsgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKVxuMzM4NTpcdHtcbjMzODY6XHRcdHJldHVybiBmYWxzZTtcbjMzODc6XHR9XG4zMzg4Olx0XG4zMzg5Olx0dTY0IF9fd2VhayBhcmNoX2JwZl90aW1lZF9tYXlfZ290byh2b2lkKVxuMzM5MDpcdHtcbjMzOTE6XHRcdHJldHVybiAwO1xuMzM5MjpcdH1cbjMzOTM6XHRcbjMzOTQ6XHRzdGF0aWMgbm9pbmxpbmUgdm9pZCBicGZfcHJvZ19yZXBvcnRfbWF5X2dvdG9fdmlvbGF0aW9uKHZvaWQpXG4zMzk1Olx0e1xuMzM5NjpcdCNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbjMzOTc6XHRcdHN0cnVjdCBicGZfc3RyZWFtX3N0YWdlIHNzO1xuMzM5ODpcdFx0c3RydWN0IGJwZl9wcm9nICpwcm9nO1xuMzM5OTpcdFxuMzQwMDpcdFx0cHJvZyA9IGJwZl9wcm9nX2ZpbmRfZnJvbV9zdGFjaygpO1xuMzQwMTpcdFx0aWYgKCFwcm9nKVxuMzQwMjpcdFx0XHRyZXR1cm47XG4zNDAzOlx0XHRicGZfc3RyZWFtX3N0YWdlKHNzLCBwcm9nLCBCUEZfU1RERVJSLCAoe1xuMzQwNDpcdFx0XHRicGZfc3RyZWFtX3ByaW50ayhzcywgXCYjMzQ7RVJST1I6IFRpbWVvdXQgZGV0ZWN0ZWQgZm9yIG1heV9nb3RvIGluc3RydWN0aW9uXFxuXCYjMzQ7KTtcbjM0MDU6XHRcdFx0YnBmX3N0cmVhbV9kdW1wX3N0YWNrKHNzKTtcbjM0MDY6XHRcdH0pKTtcbjM0MDc6XHQjZW5kaWZcbjM0MDg6XHR9XG4zNDA5Olx0XG4zNDEwOlx0dTY0IGJwZl9jaGVja190aW1lZF9tYXlfZ290byhzdHJ1Y3QgYnBmX3RpbWVkX21heV9nb3RvICpwKVxuMzQxMTpcdHtcbjM0MTI6XHRcdHU2NCB0aW1lID0ga3RpbWVfZ2V0X21vbm9fZmFzdF9ucygpO1xuMzQxMzpcdFxuMzQxNDpcdFx0LyogUG9wdWxhdGUgdGhlIHRpbWVzdGFtcCBmb3IgdGhpcyBzdGFjayBmcmFtZSwgYW5kIHJlZnJlc2ggY291bnQuICovXG4zNDE1Olx0XHRpZiAoIXAtXHUwMDNldGltZXN0YW1wKSB7XG4zNDE2Olx0XHRcdHAtXHUwMDNldGltZXN0YW1wID0gdGltZTtcbjM0MTc6XHRcdFx0cmV0dXJuIEJQRl9NQVhfVElNRURfTE9PUFM7XG4zNDE4Olx0XHR9XG4zNDE5Olx0XHQvKiBDaGVjayBpZiB3ZSYjMzk7dmUgZXhoYXVzdGVkIG91ciB0aW1lIHNsaWNlLCBhbmQgemVybyBjb3VudC4gKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4MjEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSB3ZXJlIHRoaW5raW5nIHRocm91Z2ggdGhlIHByb2Nlc3M6CgoqKlZlcmlmeWluZyBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2Agb24geDg2KioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRoaXMgc3RyYWlnaHQuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG9gIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBvbiB4ODYgYXJjaGl0ZWN0dXJlcy4gSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byB0aGUgZGV0YWlscyB0byBtYWtlIHN1cmUgaXQmIzM5O3MgYmVoYXZpbmcgYXMgZXhwZWN0ZWQgYW5kIGNvbmZpcm0gYW55IHJlbGV2YW50IGNvbnNpZGVyYXRpb25zLiBJIGV4cGVjdCB0aGVyZSBtaWdodCBiZSBzb21lIHNwZWNpZmljIHg4NiBudWFuY2VzIEkgbmVlZCB0byBhY2NvdW50IGZvciwgZ2l2ZW4gaXRzIGluc3RydWN0aW9uIHNldCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBKSVQgY29tcGlsYXRpb24gcHJvY2Vzcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzIG9yIHBpdGZhbGxzIHJlbGF0ZWQgdG8gdGhpcyBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTQzMzk9dTY0IGJwZl9hcmNoX3VhZGRyZXNzX2xpbWl0KHZvaWQpXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTQzNDMtXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6NDM0NDpib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MzQ1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExNjkKCQkJCQkJCW91dHB1dDogMTgyCgkJCQkJCQl0aG91Z2h0czogMzA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgcHJpbWFyeSB0aGluZyBJJiMzOTttIHNlZWluZyBpcyB0aGF0IG9uIHg4NiwgdGhlIHN5c3RlbSBjb3JyZWN0bHkgaWRlbnRpZmllcyB3aGVuIHRoZSBKSVQgaXMgaW4gdXNlLCB0aGFua3MgdG8gYGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8oKWAuIFdlIGNhbiBjb25maXJtIHRoaXMgYmVjYXVzZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLCBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX0pJVGAsIGFyZSBpbiBwbGFjZS4KCkxldCYjMzk7cyBxdWlja2x5IHZlcmlmeSB0aGF0IHRoZSBtZXRhZGF0YSBmb3IgYHNldC1yZXN1bHRzYCBpcyBjb21wbGV0ZS4gWXVwLCBpdCYjMzk7cyBhbGwgdGhlcmU6IGBXb3J0aEZ1enppbmdgIGlzIHNldCB0byBgdHJ1ZWAsIHdoaWNoIG1ha2VzIHNlbnNlIGJlY2F1c2UgdGhpcyBwYXRjaCBkaXJlY3RseSBtb2RpZmllcyBob3cgdGhlIHZlcmlmaWVyIGhhbmRsZXMgYG1heV9nb3RvYCBsb29wIGluc3RydWN0aW9ucy4gVGhlIGBSZWFzb25pbmdgIGV4cGxhaW5zIHRoaXMgcGVyZmVjdGx5LCBkZXRhaWxpbmcgdGhlIGFsdGVyYXRpb25zIHRvIHRoZSBpbnN0cnVjdGlvbiBwYXRjaGluZyB3aXRoaW4gYGJwZl9kb19taXNjX2ZpeHVwc2AgYW5kIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHJhbXBvbGluZSB1cGRhdGUgaW4gYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBmb3IgeDg2L2FtZDY0IGFuZCBvdGhlciBhcmNoaXRlY3R1cmVzLiBUaGUgY3JpdGljYWwgcG9pbnQgaXMgcGFzc2luZyB0aGUgZnJhbWUgcG9pbnRlciBvZmZzZXQgY2FsY3VsYXRpb24gZGlyZWN0bHkgaW4gdGhlIEJQRiBieXRlY29kZSBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgaXQgaW4gdGhlIEpJVCB0cmFtcG9saW5lLiBUaGlzIGNvZGUgaXMgdHJpZ2dlcmVkIGJ5IGxvYWRpbmcgYW5kIGV4ZWN1dGluZyBCUEYgcHJvZ3JhbXMgd2l0aCB0aGUgYG1heV9nb3RvYCBpbnN0cnVjdGlvbiB0aHJvdWdoIHRoZSBgYnBmKClgIHN5c2NhbGwuCgpJJiMzOTt2ZSBhbHNvIGdvdCB0aGUgYEZvY3VzU3ltYm9sc2AgY292ZXJlZDogYGJwZl9kb19taXNjX2ZpeHVwc2AgYW5kIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIEFuZCB5ZXMsIGBFbmFibGVDb25maWdzYCBpcyBjb3JyZWN0bHkgc2V0IHRvIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfSklUYC4KCkkmIzM5O3ZlIGNoZWNrZWQgdG8gc2VlIGlmIGFueSBvdGhlciBmdW5jdGlvbnMgYXJlIG1vZGlmaWVkIG9yIGFmZmVjdGVkLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQmIzM5O3MganVzdCB0aGUgYWZvcmVtZW50aW9uZWQgYGJwZl9kb19taXNjX2ZpeHVwc2AgYW5kIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2Agb24gYW1kNjQuIFRoYXQmIzM5O3MgZ29vZDsga2VlcHMgdGhlIHNjb3BlIGxpbWl0ZWQuCgpTZWVtcyBsaWtlIGV2ZXJ5dGhpbmcmIzM5O3MgaW4gb3JkZXIuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9kb19taXNjX2ZpeHVwcyYjMzQ7LAogICAgJiMzNDthcmNoX2JwZl90aW1lZF9tYXlfZ290byYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBCUEYgYnl0ZWNvZGUgZml4dXBzIGZvciB0aW1lZCBtYXlfZ290byBpbnN0cnVjdGlvbnMgaW4gdGhlIHZlcmlmaWVyIChicGZfZG9fbWlzY19maXh1cHMgaW4ga2VybmVsL2JwZi9maXh1cHMuYykgYW5kIHRoZSB4ODYgSklUIHRyYW1wb2xpbmUgKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvIGluIGFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUykgdG8gY2FsY3VsYXRlIHRoZSBjb3VudC90aW1lc3RhbXAgcG9pbnRlciBpbiBCUEYgcmVnaXN0ZXJzIGJlZm9yZSBpbnZva2luZyB0aGUgdHJhbXBvbGluZS4gVGhpcyB0b3VjaGVzIGNvcmUgQlBGIHZlcmlmaWNhdGlvbiBhbmQgZXhlY3V0aW9uIGxvZ2ljIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfZG9fbWlzY19maXh1cHMmIzM0OywKICAgICYjMzQ7YXJjaF9icGZfdGltZWRfbWF5X2dvdG8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIGJ5dGVjb2RlIGZpeHVwcyBmb3IgdGltZWQgbWF5X2dvdG8gaW5zdHJ1Y3Rpb25zIGluIHRoZSB2ZXJpZmllciAoYnBmX2RvX21pc2NfZml4dXBzIGluIGtlcm5lbC9icGYvZml4dXBzLmMpIGFuZCB0aGUgeDg2IEpJVCB0cmFtcG9saW5lIChhcmNoX2JwZl90aW1lZF9tYXlfZ290byBpbiBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMpIHRvIGNhbGN1bGF0ZSB0aGUgY291bnQvdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGIHJlZ2lzdGVycyBiZWZvcmUgaW52b2tpbmcgdGhlIHRyYW1wb2xpbmUuIFRoaXMgdG91Y2hlcyBjb3JlIEJQRiB2ZXJpZmljYXRpb24gYW5kIGV4ZWN1dGlvbiBsb2dpYyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBCUEYgdGltZWQgYG1heV9nb3RvYCB0cmFtcG9saW5lIGNhbGxpbmcgY29udmVudGlvbiBhY3Jvc3MgYXJjaGl0ZWN0dXJlcyAoeDg2XzY0LCBhcm02NCwgcmlzY3YsIHMzOTAsIHBvd2VycGMpIGFuZCB1cGRhdGVzIHRoZSB2ZXJpZmllciBpbnN0cnVjdGlvbiBmaXh1cHMgaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgLiBJbnN0ZWFkIG9mIHBhc3NpbmcgdGhlIHN0YWNrIG9mZnNldCBpbiBgQlBGX1JFR19BWGAgYW5kIGhhdmluZyBlYWNoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0cmFtcG9saW5lIGNvbXB1dGUgYEZQICYjNDM7IG9mZnNldGAsIHRoZSBCUEYgYnl0ZWNvZGUgbm93IGNvbXB1dGVzIHRoZSBwb2ludGVyIGBCUEZfUkVHX0ZQICYjNDM7IHN0YWNrX29mZl9jbnRgIGluIGBCUEZfUkVHX0FYYCBwcmlvciB0byBjYWxsaW5nIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpYC5cblxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nIG9yIHN0cnVjdCBmaWVsZHMgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiBsb2dpYy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBpbnN0cnVjdGlvbiBwYXRjaGluZyBvciByZWdpc3RlciBoYW5kbGluZyB3b3VsZCBtYW5pZmVzdCBhcyBvdXQtb2YtYm91bmRzIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIGNvbnRyb2wgZmxvdyBlcnJvcnMsIHdoaWNoIGFyZSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCB0aGUgQlBGIHZlcmlmaWVyLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDg4MTk1N2FlNWUxMmE2MTZjM2ZjODg1OGFmNjA2NTQzNGVmZjFkYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMDY6NTE6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCmluZGV4IGE5YTgwMjcxMWE3ZjkuLjUzMTQ4YzlhMWM1ODQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCkBAIC0xNCwxNiAmIzQzOzE0LDEwIEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKQogCXN0cAl4MywgeDQsIFtzcCwgIzQ4XQogCiAJLyoKLQkgKiBTdGFjayBkZXB0aCB3YXMgcGFzc2VkIGluIEJQRl9SRUdfQVggKHg5KSwgYWRkIGl0IHRvIHRoZSBCUEZfRlAKLQkgKiAoeDI1KSB0byBnZXQgdGhlIHBvaW50ZXIgdG8gY291bnQgYW5kIHRpbWVzdGFtcCBhbmQgcGFzcyBpdCBhcyB0aGUKLQkgKiBmaXJzdCBhcmd1bWVudCBpbiB4MC4KLQkgKgotCSAqIEJlZm9yZSBnZW5lcmF0aW5nIHRoZSBjYWxsIHRvIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvLCB0aGUgdmVyaWZpZXIKLQkgKiBnZW5lcmF0ZXMgYSBsb2FkIGluc3RydWN0aW9uIHVzaW5nIEZQLCBpLmUuIFJFR19BWCA9ICoodTY0ICopKEZQIC0KLQkgKiBzdGFja19vZmZfY250KSwgc28gQlBGX1JFR19GUCAoeDI1KSBpcyBhbHdheXMgc2V0IHVwIGJ5IHRoZSBhcm02NAotCSAqIGppdCBpbiB0aGlzIGNhc2UuCiYjNDM7CSAqIEJQRl9SRUdfQVggKHg5KSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzCiYjNDM7CSAqIHRoZSBmaXJzdCBhcmd1bWVudCBpbiB4MC4KIAkgKi8KLQlhZGQJeDAsIHg5LCB4MjUKJiM0MzsJbW92CXgwLCB4OQogCWJsCWJwZl9jaGVja190aW1lZF9tYXlfZ290bwogCS8qIEJQRl9SRUdfQVgoeDkpIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgcmV0dXJuIHZhbHVlIHRvIGl0LiAqLwogCW1vdgl4OSwgeDAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCmluZGV4IDg0ZWNmNmZhN2Y1ZGMuLmQ4ODgyNWRkMzRmZWEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwpAQCAtOCw3ICYjNDM7OCw3IEBACiAgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIHRyYW1wb2xpbmUgZm9yIHBvd2VycGM2NAogICoKICAqIEN1c3RvbSBCUEYgY29udmVudGlvbiAodmVyaWZpZXIvSklUKToKLSAqCS0gaW5wdXQ6ICBzdGFjayBvZmZzZXQgaW4gQlBGX1JFR19BWCAocjEyKQomIzQzOyAqCS0gaW5wdXQ6ICBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGX1JFR19BWCAocjEyKQogICoJLSBvdXRwdXQ6IHVwZGF0ZWQgY291bnQgaW4gQlBGX1JFR19BWCAocjEyKQogICoKICAqIENhbGwgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCBub3JtYWwgcG93ZXJwYzY0IEFCSToKQEAgLTMyLDEwICYjNDM7MzIsMTAgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pCiAJc3RkICAgICByOCwgNzIocjEpCiAKIAkvKgotCSAqIHIzID0gQlBGX1JFR19GUCAmIzQzOyBCUEZfUkVHX0FYCi0JICogQlBGX1JFR19GUCBpcyByMzE7IEJQRl9SRUdfQVggaXMgcjEyIChzdGFjayBvZmZzZXQgaW4gYnl0ZXMpLgomIzQzOwkgKiBCUEZfUkVHX0FYIChyMTIpIGNvbnRhaW5zIHRoZSBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXI7IHBhc3MgaXQgYXMKJiM0MzsJICogdGhlIGZpcnN0IGFyZ3VtZW50IGluIHIzLgogCSAqLwotCWFkZCAgICAgcjMsIHIzMSwgcjEyCiYjNDM7CW1yICAgICAgcjMsIHIxMgogCWJsICAgICAgQ0ZVTkMoYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKQogCiAJLyogUHV0IHJldHVybiB2YWx1ZSBiYWNrIGludG8gQVggKi8KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKaW5kZXggMDJjNjM3ZDg3NDIwNS4uOGMwM2UyNzJlMGJmNSAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKQEAgLTYsMTIgJiM0Mzs2LDExIEBACiAKIC8qCiAgKiBUcmFtcG9saW5lIGZvciB0aGUgQlBGIHRpbWVkIG1heV9nb3RvIGxvb3AgYm91bmQuIEN1c3RvbSBjYWxsaW5nIGNvbnZlbnRpb246Ci0gKgktIGlucHV0OiAgc3RhY2sgb2Zmc2V0IGluIEJQRl9SRUdfQVggKHQwKQomIzQzOyAqCS0gaW5wdXQ6ICBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGX1JFR19BWCAodDApCiAgKgktIG91dHB1dDogdXBkYXRlZCBjb3VudCBpbiBCUEZfUkVHX0FYICh0MCkKICAqCi0gKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLCB3aGVyZQotICogcHRyID0gQlBGX1JFR19GUCAoczUpICYjNDM7IEJQRl9SRUdfQVggKHQwKS4gQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZAotICogYWNyb3NzIHRoZSBjYWxsOyBCUEZfUkVHX0ZQIChzNSkgaXMgY2FsbGVlLXNhdmVkIGFuZCBuZWVkcyBubyBzYXZpbmcuCiYjNDM7ICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSS4KJiM0MzsgKiBCUEYgUjAtUjUgKGE1LCBhMC1hNCkgYXJlIHNhdmVkIGFjcm9zcyB0aGUgY2FsbC4KICAqLwogCiBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bykKQEAgLTI4LDcgJiM0MzsyNywxMSBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bykKIAlSRUdfUwlhMywgMSpTWlJFRyhzcCkKIAlSRUdfUwlhNCwgMCpTWlJFRyhzcCkKIAotCWFkZAlhMCwgdDAsIHM1CiYjNDM7CS8qCiYjNDM7CSAqIEJQRl9SRUdfQVggKHQwKSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzCiYjNDM7CSAqIHRoZSBmaXJzdCBhcmd1bWVudCBpbiBhMC4KJiM0MzsJICovCiYjNDM7CW12CWEwLCB0MAogCWNhbGwJYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvCiAJbXYJdDAsIGEwCiAKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jCmluZGV4IGM0Njg3MmIwNzFjZTcuLjQwOThjMzM3N2MyMTMgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYwpAQCAtMTg3Miw5ICYjNDM7MTg3Miw5IEBAIHN0YXRpYyBub2lubGluZSBpbnQgYnBmX2ppdF9pbnNuKHN0cnVjdCBicGZfaml0ICpqaXQsIHN0cnVjdCBicGZfcHJvZyAqZnAsCiAJCWlmICgodm9pZCAqKWZ1bmMgPT0gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pIHsKIAkJCS8qCiAJCQkgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIGhhcyBhIHNwZWNpYWwgQUJJOiB0aGUKLQkJCSAqIHBhcmFtZXRlcnMgYXJlIGluIEJQRl9SRUdfQVggYW5kIEJQRl9SRUdfMTA7IHRoZQotCQkJICogcmV0dXJuIHZhbHVlIGlzIGluIEJQRl9SRUdfQVg7IGFuZCBhbGwgR1BScyBleGNlcHQKLQkJCSAqIFJFR19XMCwgUkVHX1cxLCBhbmQgQlBGX1JFR19BWCBhcmUgY2FsbGVlLXNhdmVkLgomIzQzOwkJCSAqIHBhcmFtZXRlciBhbmQgcmV0dXJuIHZhbHVlIGFyZSBpbiBCUEZfUkVHX0FYOyBhbGwKJiM0MzsJCQkgKiBHUFJzIGV4Y2VwdCBSRUdfVzAsIFJFR19XMSwgYW5kIEJQRl9SRUdfQVggYXJlCiYjNDM7CQkJICogY2FsbGVlLXNhdmVkLgogCQkJICovCiAKIAkJCS8qIGJyYXNsICVyMCxmdW5jICovCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwppbmRleCAwNmY1NjdhNDYwZDdiLi5lMzRjOTk5ODJjNGEyIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKQEAgLTIxLDkgJiM0MzsyMSw5IEBACiAKIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKQogCS8qCi0JICogVGhpcyBmdW5jdGlvbiBoYXMgYSBzcGVjaWFsIEFCSTogdGhlIHBhcmFtZXRlcnMgYXJlIGluICVyMTIgYW5kCi0JICogJXIxMzsgdGhlIHJldHVybiB2YWx1ZSBpcyBpbiAlcjEyOyBhbGwgR1BScyBleGNlcHQgJXIwLCAlcjEsIGFuZAotCSAqICVyMTIgYXJlIGNhbGxlZS1zYXZlZDsgYW5kIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBpbiAlcjAuCiYjNDM7CSAqIFRoaXMgZnVuY3Rpb24gaGFzIGEgc3BlY2lhbCBBQkk6IHRoZSBwYXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZSBhcmUKJiM0MzsJICogaW4gJXIxMjsgYWxsIEdQUnMgZXhjZXB0ICVyMCwgJXIxLCBhbmQgJXIxMiBhcmUgY2FsbGVlLXNhdmVkOyBhbmQKJiM0MzsJICogdGhlIHJldHVybiBhZGRyZXNzIGlzIGluICVyMC4KIAkgKi8KIAlzdG1nICVyMiwlcjUsRlJBTUVfT0ZGJiM0MztSMl9PRkYoJXIxNSkKIAlzdGcgJXIxNCxGUkFNRV9PRkYmIzQzO1IxNF9PRkYoJXIxNSkKQEAgLTMzLDcgJiM0MzszMyw3IEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKQogCWxheSAlcjE1LC1GUkFNRV9TSVpFKCVyMTUpCiAJc3RnICVyMSxfX1NGX0JBQ0tDSEFJTiglcjE1KQogCi0JbGF5ICVyMiwwKCVyMTIsJXIxMykKJiM0MzsJbGdyICVyMiwlcjEyCiAJYnJhc2wgJXIxNCxicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8KIAlsZ3IgJXIxMiwlcjIKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCmluZGV4IDU0YzY5MGNhZTE5MDguLjZlOWQ5ZTdjMmIxZDYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKQEAgLTExLDEyICYjNDM7MTEsNiBAQAogU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pCiAJQU5OT1RBVEVfTk9FTkRCUgogCi0JLyoKLQkgKiByMTAgcGFzc2VzIHVzIHN0YWNrIGRlcHRoLCBsb2FkIHRoZSBwb2ludGVyIHRvIGNvdW50IGFuZCB0aW1lc3RhbXAKLQkgKiBpbnRvIHIxMCBieSBhZGRpbmcgaXQgdG8gQlBGIGZyYW1lIHBvaW50ZXIuCi0JICovCi0JbGVhcSAoJXJicCwgJXIxMCwgMSksICVyMTAKLQogCS8qIFNldHVwIGZyYW1lLiAqLwogCXB1c2hxICVyYnAKIAltb3ZxICVyc3AsICVyYnAKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvZml4dXBzLmMgYi9rZXJuZWwvYnBmL2ZpeHVwcy5jCmluZGV4IDY1YjQ0MWU0YTM1MTcuLmRjNTk1MDFhMzJiYmQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvZml4dXBzLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9maXh1cHMuYwpAQCAtMTc5NywyMCAmIzQzOzE3OTcsMjAgQEAgaW50IGJwZl9kb19taXNjX2ZpeHVwcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KQogCQkJc3RhY2tfZGVwdGhfZXh0cmEgPSAxNjsKIAkJCWluc25fYnVmWzBdID0gQlBGX0xEWF9NRU0oQlBGX0RXLCBCUEZfUkVHX0FYLCBCUEZfUkVHXzEwLCBzdGFja19vZmZfY250KTsKIAkJCWlmIChpbnNuLSZndDtvZmYgJmd0Oz0gMCkKLQkJCQlpbnNuX2J1ZlsxXSA9IEJQRl9KTVBfSU1NKEJQRl9KRVEsIEJQRl9SRUdfQVgsIDAsIGluc24tJmd0O29mZiAmIzQzOyA1KTsKJiM0MzsJCQkJaW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLSZndDtvZmYgJiM0MzsgNik7CiAJCQllbHNlCiAJCQkJaW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLSZndDtvZmYgLSAxKTsKIAkJCWluc25fYnVmWzJdID0gQlBGX0FMVTY0X0lNTShCUEZfU1VCLCBCUEZfUkVHX0FYLCAxKTsKLQkJCWluc25fYnVmWzNdID0gQlBGX0pNUF9JTU0oQlBGX0pORSwgQlBGX1JFR19BWCwgMCwgMik7CiYjNDM7CQkJaW5zbl9idWZbM10gPSBCUEZfSk1QX0lNTShCUEZfSk5FLCBCUEZfUkVHX0FYLCAwLCAzKTsKIAkJCS8qCi0JCQkgKiBBWCBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIHBhc3MgaW4gc3RhY2tfb2ZmX2NudAotCQkJICogKHRvIGFkZCB0byByMTAvZnApLCBhbmQgYWxzbyBhcyB0aGUgcmV0dXJuIHZhbHVlIG9mCi0JCQkgKiB0aGUgY2FsbCB0byBhcmNoX2JwZl90aW1lZF9tYXlfZ290by4KJiM0MzsJCQkgKiBBWCBpcyB1c2VkIHRvIHBhc3MgRlAgJiM0Mzsgc3RhY2tfb2ZmX2NudCBhcyB0aGUgYXJndW1lbnQgdG8KJiM0MzsJCQkgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpLCBhbmQgYWxzbyBob2xkcyBpdHMgcmV0dXJuIHZhbHVlLgogCQkJICovCi0JCQlpbnNuX2J1Zls0XSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7Ci0JCQlpbnNuX2J1Zls1XSA9IEJQRl9FTUlUX0NBTEwoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pOwotCQkJaW5zbl9idWZbNl0gPSBCUEZfU1RYX01FTShCUEZfRFcsIEJQRl9SRUdfMTAsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpOwotCQkJY250ID0gNzsKJiM0MzsJCQlpbnNuX2J1Zls0XSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR19BWCwgQlBGX1JFR19GUCk7CiYjNDM7CQkJaW5zbl9idWZbNV0gPSBCUEZfQUxVNjRfSU1NKEJQRl9BREQsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpOwomIzQzOwkJCWluc25fYnVmWzZdID0gQlBGX0VNSVRfQ0FMTChhcmNoX2JwZl90aW1lZF9tYXlfZ290byk7CiYjNDM7CQkJaW5zbl9idWZbN10gPSBCUEZfU1RYX01FTShCUEZfRFcsIEJQRl9SRUdfMTAsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpOwomIzQzOwkJCWNudCA9IDg7CiAKIAkJCW5ld19wcm9nID0gYnBmX3BhdGNoX2luc25fZGF0YShlbnYsIGkgJiM0MzsgZGVsdGEsIGluc25fYnVmLCBjbnQpOwogCQkJaWYgKCFuZXdfcHJvZykKQEAgLTI2NjEsNCAmIzQzOzI2NjEsMyBAQCBpbnQgYnBmX3JlbW92ZV9mYXN0Y2FsbF9zcGlsbHNfZmlsbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudikKIAogCXJldHVybiAwOwogfQotCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmMKaW5kZXggMzI4Y2Y2MzAyMTBhMi4uYzU5OTZkOWRjOGNjOSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuYwpAQCAtNjM1LDE1ICYjNDM7NjM1LDE2IEBAIF9feGxhdGVkKCYjMzQ7NDogcjAgPSAmYW1wOyh2b2lkIF9fcGVyY3B1ICopKHIwKSYjMzQ7KQogX194bGF0ZWQoJiMzNDsuLi4mIzM0OykKIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBzdGFydHMgKi8KIF9feGxhdGVkKCYjMzQ7NjogcjEyID0gKih1NjQgKikocjEwIC0yNCkmIzM0OykKLV9feGxhdGVkKCYjMzQ7NzogaWYgcjEyID09IDB4MCBnb3RvIHBjJiM0Mzs2JiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs3OiBpZiByMTIgPT0gMHgwIGdvdG8gcGMmIzQzOzcmIzM0OykKIF9feGxhdGVkKCYjMzQ7ODogcjEyIC09IDEmIzM0OykKLV9feGxhdGVkKCYjMzQ7OTogaWYgcjEyICE9IDB4MCBnb3RvIHBjJiM0MzsyJiMzNDspCi1fX3hsYXRlZCgmIzM0OzEwOiByMTIgPSAtMjQmIzM0OykKLV9feGxhdGVkKCYjMzQ7MTE6IGNhbGwgdW5rbm93biYjMzQ7KQotX194bGF0ZWQoJiMzNDsxMjogKih1NjQgKikocjEwIC0yNCkgPSByMTImIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0Ozk6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7MyYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTA6IHIxMiA9IHIxMCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTE6IHIxMiAmIzQzOz0gLTI0JiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsxMjogY2FsbCB1bmtub3duJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsxMzogKih1NjQgKikocjEwIC0yNCkgPSByMTImIzM0OykKIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBlbmRzICovCi1fX3hsYXRlZCgmIzM0OzEzOiAqKHU2NCAqKShyMTAgLTgpID0gcjEmIzM0OykKLV9feGxhdGVkKCYjMzQ7MTQ6IGV4aXQmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzE0OiAqKHU2NCAqKShyMTAgLTgpID0gcjEmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzE1OiBleGl0JiMzNDspCiBfX3N1Y2Nlc3MKIF9fbmFrZWQgdm9pZCBtYXlfZ290b19pbnRlcmFjdGlvbl94ODZfNjQodm9pZCkKIHsKQEAgLTY3NiwxNSAmIzQzOzY3NywxNiBAQCBfX3hsYXRlZCgmIzM0OzI6IHIxID0gMSYjMzQ7KQogX194bGF0ZWQoJiMzNDszOiBjYWxsIGJwZl9nZXRfc21wX3Byb2Nlc3Nvcl9pZCYjMzQ7KQogLyogbWF5X2dvdG8gZXhwYW5zaW9uIHN0YXJ0cyAqLwogX194bGF0ZWQoJiMzNDs0OiByMTIgPSAqKHU2NCAqKShyMTAgLTI0KSYjMzQ7KQotX194bGF0ZWQoJiMzNDs1OiBpZiByMTIgPT0gMHgwIGdvdG8gcGMmIzQzOzYmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzU6IGlmIHIxMiA9PSAweDAgZ290byBwYyYjNDM7NyYjMzQ7KQogX194bGF0ZWQoJiMzNDs2OiByMTIgLT0gMSYjMzQ7KQotX194bGF0ZWQoJiMzNDs3OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMmIzQzOzImIzM0OykKLV9feGxhdGVkKCYjMzQ7ODogcjEyID0gLTI0JiMzNDspCi1fX3hsYXRlZCgmIzM0Ozk6IGNhbGwgdW5rbm93biYjMzQ7KQotX194bGF0ZWQoJiMzNDsxMDogKih1NjQgKikocjEwIC0yNCkgPSByMTImIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0Ozc6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7MyYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7ODogcjEyID0gcjEwJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs5OiByMTIgJiM0Mzs9IC0yNCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTA6IGNhbGwgdW5rbm93biYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTE6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyJiMzNDspCiAvKiBtYXlfZ290byBleHBhbnNpb24gZW5kcyAqLwotX194bGF0ZWQoJiMzNDsxMTogKih1NjQgKikocjEwIC04KSA9IHIxJiMzNDspCi1fX3hsYXRlZCgmIzM0OzEyOiBleGl0JiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsxMjogKih1NjQgKikocjEwIC04KSA9IHIxJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsxMzogZXhpdCYjMzQ7KQogX19zdWNjZXNzCiBfX25ha2VkIHZvaWQgbWF5X2dvdG9faW50ZXJhY3Rpb24odm9pZCkKIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jCmluZGV4IGRiN2UzMGRhMjM0ZjEuLjE3MjE4OTcxNjBkYzkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuYwpAQCAtOTAsMTUgJiM0Mzs5MCwxNiBAQCBfX2FyY2hfbG9vbmdhcmNoCiBfX3hsYXRlZCgmIzM0OzA6ICoodTY0ICopKHIxMCAtMTYpID0gNjU1MzUmIzM0OykKIF9feGxhdGVkKCYjMzQ7MTogKih1NjQgKikocjEwIC04KSA9IDAmIzM0OykKIF9feGxhdGVkKCYjMzQ7MjogcjEyID0gKih1NjQgKikocjEwIC0xNikmIzM0OykKLV9feGxhdGVkKCYjMzQ7MzogaWYgcjEyID09IDB4MCBnb3RvIHBjJiM0Mzs2JiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDszOiBpZiByMTIgPT0gMHgwIGdvdG8gcGMmIzQzOzcmIzM0OykKIF9feGxhdGVkKCYjMzQ7NDogcjEyIC09IDEmIzM0OykKLV9feGxhdGVkKCYjMzQ7NTogaWYgcjEyICE9IDB4MCBnb3RvIHBjJiM0MzsyJiMzNDspCi1fX3hsYXRlZCgmIzM0OzY6IHIxMiA9IC0xNiYjMzQ7KQotX194bGF0ZWQoJiMzNDs3OiBjYWxsIHVua25vd24mIzM0OykKLV9feGxhdGVkKCYjMzQ7ODogKih1NjQgKikocjEwIC0xNikgPSByMTImIzM0OykKLV9feGxhdGVkKCYjMzQ7OTogcjAgPSAxJiMzNDspCi1fX3hsYXRlZCgmIzM0OzEwOiByMCA9IDImIzM0OykKLV9feGxhdGVkKCYjMzQ7MTE6IGV4aXQmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzU6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7MyYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7NjogcjEyID0gcjEwJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs3OiByMTIgJiM0Mzs9IC0xNiYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7ODogY2FsbCB1bmtub3duJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs5OiAqKHU2NCAqKShyMTAgLTE2KSA9IHIxMiYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTA6IHIwID0gMSYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTE6IHIwID0gMiYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTI6IGV4aXQmIzM0OykKIF9fc3VjY2VzcwogX19uYWtlZCB2b2lkIG1heV9nb3RvX2JhdGNoXzIodm9pZCkKIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jCmluZGV4IDNkOTk5NGE1MjQ2NGUuLjYzOWI1MzM2M2M5YWMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYwpAQCAtNzAsNiAmIzQzOzcwLDI1IEBAIF9fbmFrZWQgdm9pZCBub19wcml2YXRlX3N0YWNrX25lc3RlZCh2b2lkKQogJiMzNDsJOjo6IF9fY2xvYmJlcl9hbGwpOwogfQogCiYjNDM7U0VDKCYjMzQ7ZmVudHJ5L2JwZl9mZW50cnlfdGVzdDkmIzM0OykKJiM0MztfX2Rlc2NyaXB0aW9uKCYjMzQ7UHJpdmF0ZSBzdGFjaywgdGltZWQgbWF5X2dvdG8mIzM0OykKJiM0MztfX3N1Y2Nlc3MgX19yZXR2YWwoMCkKJiM0MztfX2FyY2hfeDg2XzY0CiYjNDM7X19qaXRlZCgmIzM0Owltb3ZhYnNxCSQweHt7Lip9fSwgJXI5JiMzNDspCiYjNDM7X19qaXRlZCgmIzM0Oy4uLiYjMzQ7KQomIzQzO19faml0ZWQoJiMzNDsJbW92cQklcjksICVyMTAmIzM0OykKJiM0MztfX2FyY2hfYXJtNjQKJiM0MztfX2ppdGVkKCYjMzQ7CW1vdgl4OSwgeDI1JiMzNDspCiYjNDM7aW50IHByaXZhdGVfc3RhY2tfdGltZWRfbWF5X2dvdG8odm9pZCkKJiM0Mzt7CiYjNDM7CXZvbGF0aWxlIF9fdTY0IHN0YWNrX3NwYWNlWzE2XSA9IHt9OwomIzQzOwomIzQzOwl3aGlsZSAoY2FuX2xvb3ApCiYjNDM7CQk7CiYjNDM7CiYjNDM7CXJldHVybiBzdGFja19zcGFjZVswXTsKJiM0Mzt9CiYjNDM7CiBfX3VzZWQKIF9fbmFrZWQgc3RhdGljIHZvaWQgY3VtdWxhdGl2ZV9zdGFja19kZXB0aF9zdWJwcm9nKHZvaWQpCiB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjI0CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIFBhdGNoIGFuZCBJdHMgS0FTQU4vS01TQU4gSW1wbGljYXRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGlzc2VjdCB3aGF0IGl0JiMzOTtzIGRvaW5nLCB0aGUgcHJvYmxlbSBpdCYjMzk7cyBhZGRyZXNzaW5nLCBhbmQgaG93IGl0IG1pZ2h0IGltcGFjdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBLQVNBTiBhbmQgS01TQU4uCgpGaXJzdCwgSSBuZWVkIHRvIGdldCBhIHNvbGlkIGdyYXNwIG9mIHRoZSBtb2RpZmljYXRpb25zLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSB0b3VjaGluZyBga2VybmVsL2JwZi9maXh1cHMuY2AgYW5kIHNvbWUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEpJVC90cmFtcG9saW5lIGZpbGVzIOKAkyBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgcmVsYXRlZCB0byBCUEYgdGltZWQgYG1heV9nb3RvYCAoYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBmb3IgYXJtNjQsIHBvd2VycGMsIHJpc2N2LCBzMzkwLCBhbmQgeDg2KS4gVGhpcyBpbXBsaWVzIHNvbWUgY3JpdGljYWwgY2hhbmdlcyBpbiBob3cgQlBGIGNvZGUgaGFuZGxlcyBqdW1wcyB1bmRlciB0aW1lZCBjb25kaXRpb25zLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gYGtlcm5lbC9icGYvZml4dXBzLmNgIGFyb3VuZCBsaW5lIDE3OTcuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmVoYXZpb3Igb2YgYGJwZl90aW1lZF9tYXlfZ290b2AgZGlyZWN0bHkuIEkmIzM5O2xsIGVpdGhlciByZWFjaCBmb3IgYGdyZXBwZXJgIG9yIGp1c3QgcmVhZCB0aGUgZmlsZSBkaXJlY3RseSB0byBncmFzcCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IHRoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfdGltZWRfbWF5X2dvdG8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9Nj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0yMC1cdG1vdlx0eDAsIHg5XG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoyMTpcdGJsXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTIyLVx0LyogQlBGX1JFR19BWCh4OSkgd2lsbCBiZSBzdG9yZWQgaW50byBjb3VudCwgc28gbW92ZSByZXR1cm4gdmFsdWUgdG8gaXQuICovXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMy0gKlxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxNDogKiBDYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggbm9ybWFsIHBvd2VycGM2NCBBQkk6XG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTE1LSAqIFx0LSByMyA9IHB0ciwgcmV0dXJuIGluIHIzXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0yMD1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM4LVx0bXIgICAgICByMywgcjEyXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM5Olx0YmwgICAgICBDRlVOQyhicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8pXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTQwLVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTExLSAqXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxMjogKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLlxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTMtICogQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZCBhY3Jvc3MgdGhlIGNhbGwuXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9MTY9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzQtXHRtdlx0YTAsIHQwXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzozNTpcdGNhbGxcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzYtXHRtdlx0dDAsIGEwXG4tLVxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0yMj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM2LVx0bGdyICVyMiwlcjEyXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM3Olx0YnJhc2wgJXIxNCxicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzgtXHRsZ3IgJXIxMiwlcjJcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9MTE9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4tLVxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTMzLVx0Q0FMTF9ERVBUSF9BQ0NPVU5UXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MzQ6XHRjYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM1LVxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTI1Mz11NjQgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8odm9pZCk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEyNTQ6dTY0IGJwZl9jaGVja190aW1lZF9tYXlfZ290byhzdHJ1Y3QgYnBmX3RpbWVkX21heV9nb3RvICopO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMjU1LWJvb2wgYnBmX2hlbHBlcl9jaGFuZ2VzX3BrdF9kYXRhKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCk7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MzM5ND1zdGF0aWMgbm9pbmxpbmUgdm9pZCBicGZfcHJvZ19yZXBvcnRfbWF5X2dvdG9fdmlvbGF0aW9uKHZvaWQpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMzQwOS1cbmtlcm5lbC9icGYvY29yZS5jOjM0MTA6dTY0IGJwZl9jaGVja190aW1lZF9tYXlfZ290byhzdHJ1Y3QgYnBmX3RpbWVkX21heV9nb3RvICpwKVxua2VybmVsL2JwZi9jb3JlLmMtMzQxMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MTkKCQkJCQkJCW91dHB1dDogMAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgQVBJIGNhbGwgYW5kIHdoYXQgSSYjMzk7ZCBiZSB0aGlua2luZyBhYm91dCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkLgoKKipEZWVwIERpdmUgaW50byBgZml4dXBzLmNgIGFuZCBhIEtleSBTZWN0aW9uIG9mIEJQRiBLZXJuZWwgQ29kZSoqCgpBbHJpZ2h0LCBzbyB0aGUgY2FsbCBsb2cgZmxhZ2dlZCBgZGVmYXVsdF9hcGk6cmVhZC1maWxlYCB0YXJnZXRpbmcgYGtlcm5lbC9icGYvZml4dXBzLmNgLCBzcGVjaWZpY2FsbHkgZnJvbSBsaW5lIDE3ODAgdG8gbGluZSAxODMwICg1MCBsaW5lcykuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBgZml4dXBzLmNgIGluIHRoZSBCUEYga2VybmVsIGNvZGUgaXMgd2hlcmUgYSBsb3Qgb2YgdGhlLCB3ZWxsLCAqZml4dXBzKiBoYXBwZW4g4oCTIGNydWNpYWwgYWRqdXN0bWVudHMgYW5kIG1vZGlmaWNhdGlvbnMgdG8gdGhlIEJQRiBieXRlY29kZSBiZWZvcmUgaXQmIzM5O3MgYWN0dWFsbHkgZXhlY3V0ZWQuIFRoaXMgZmlsZSBpcyBvZnRlbiBhIGNyaXRpY2FsIGFyZWEgZm9yIGFkZHJlc3NpbmcgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgaGFuZGxpbmcgY29tcGF0aWJpbGl0eSBpc3N1ZXMgYWNyb3NzIGRpZmZlcmVudCBrZXJuZWwgdmVyc2lvbnMsIG9yIGltcGxlbWVudGluZyBhZHZhbmNlZCBmZWF0dXJlcy4gR2l2ZW4gdGhlIGxpbmUgcmFuZ2UsIEkmIzM5O2Qgd2FudCB0byBnZXQgYSBsb29rIGF0IHRoaXMuCgpNeSBpbml0aWFsIHRob3VnaHRzIHdvdWxkIGJlOgoKKiAgICoqV2hhdCYjMzk7cyB0aGUgY29udGV4dD8qKiBXaHkgaXMgdGhpcyBzZWN0aW9uIGJlaW5nIGZsYWdnZWQ/IElzIHRoZXJlIGFuIHVudXN1YWwgcGF0dGVybiBpbiB0aGUgc3lzdGVtIHRoYXQmIzM5O3MgZHJpdmluZyB0aGlzPyBJcyB0aGlzIGZyb20gdGhlIHNvdXJjZSB0cmVlIG9yIGluIGRlcGxveWVkIHByb2R1Y3Rpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGxhcmdlciBwaWN0dXJlIGlzIGtleSB0byBpbnRlcnByZXRpbmcgdGhlIGNhbGwuCiogICAqKldoYXQmIzM5O3MgKmJlaW5nKiBmaXhlZD8qKiBUaGUgc3BlY2lmaWMgZml4dXAgbWVjaGFuaXNtcyB0aGF0IGFyZSBoYXBwZW5pbmcgaW4gdGhpcyBzZWdtZW50IG9mIGNvZGUgYXJlIHRoZSBtb3N0IGNyaXRpY2FsLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhZGp1c3RtZW50cyB0byBpbnN0cnVjdGlvbiBvZmZzZXRzLCBoYW5kbGluZyBvZiB1bnN1cHBvcnRlZCBvcGNvZGVzLCBkZWFsaW5nIHdpdGggcG90ZW50aWFsIG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9ucywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSB0eXBlIG9mIGZpeHVwIGhlYXZpbHkgaW5kaWNhdGVzIHRoZSBwb3NzaWJsZSBwcm9ibGVtLgoqICAgKipLZXJuZWwgVmVyc2lvbiBDb250ZXh0OioqIFRoaXMgc2VjdGlvbiBsaWtlbHkgY2hhbmdlcyBxdWl0ZSBhIGJpdCBiZXR3ZWVuIGtlcm5lbCB2ZXJzaW9ucy4gS25vd2luZyB0aGUgdmVyc2lvbiBoZWxwcyB6ZXJvIGluIG9uIHdoYXQgdnVsbmVyYWJpbGl0aWVzIGFyZSBwcmVzZW50LCBhbmQgaG93IHRoZXkgYXJlIGFkZHJlc3NlZC4gSXMgdGhpcyByZWxhdGVkIHRvIGEgc3BlY2lmaWMga2VybmVsIHBhdGNoPwoqICAgKipTZWN1cml0eSBJbXBsaWNhdGlvbnM6KiogSWYgdGhpcyBpbnZvbHZlcyBtZW1vcnkgbWFuaXB1bGF0aW9uLCBvciBwb3RlbnRpYWxseSBvdmVyd3JpdGluZyBCUEYgYnl0ZWNvZGUsIHRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgY29uY2VybmluZyBmcm9tIGEgc2VjdXJpdHkgc3RhbmRwb2ludC4gQ291bGQgdGhpcyBiZSByZWxhdGVkIHRvIGEga25vd24gdnVsbmVyYWJpbGl0eSwgYSBtaXRpZ2F0aW9uIHN0cmF0ZWd5LCBvciBhIG5vdmVsIGF0dGFjayB2ZWN0b3I/IEkmIzM5O2QgYmUgbG9va2luZyBmb3IgdGhlIHRlbGwtdGFsZSBzaWducy4KKiAgICoqUGVyZm9ybWFuY2UgSW1wYWN0OioqIEZpeHVwcyBjYW4gaW50cm9kdWNlIG92ZXJoZWFkLCBzbyBpdCYjMzk7cyBnb29kIHRvIGJlIGF3YXJlIG9mIHRoZSBydW50aW1lIGNvc3RzLiBIb3cgY3JpdGljYWwgaXMgdGhpcyBwZXJmb3JtYW5jZSBoaXQgZm9yIHRoZSBvdmVyYWxsIG9wZXJhdGlvbiBvZiB0aGUgc3lzdGVtPwoKU28sIEkmIzM5O2QgYmUgbWVudGFsbHkgcHJlcGFyaW5nIHRvIGRpZyBpbnRvIHRoYXQgc3BlY2lmaWMgc2VjdGlvbiBvZiBgZml4dXBzLmNgLCBsb29raW5nIGZvciB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gQmFzZWQgb24gZXhwZXJpZW5jZSwgSSB3b3VsZCBoYXZlIHN1c3BpY2lvbnMgdG8gZXhwbG9yZSAtIGJ1dCBJJiMzOTtkIG5lZWQgdG8gZXhhbWluZSB0aGUgc291cmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzM1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBQYXRjaDogQSBEZWVwIERpdmUqKgoKT2theSwgbGV0JiMzOTtzIGRpc3NlY3QgdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCBmb2N1cyBpcyB0byB1bmRlcnN0YW5kIHByZWNpc2VseSB3aGF0JiMzOTtzIGNoYW5naW5nIGFuZCB3aHksIGVzcGVjaWFsbHkgZ2l2ZW4gaXRzIHByb3hpbWl0eSB0byB0aGUgQlBGIGluZnJhc3RydWN0dXJlLCBhbiBhcmVhIEkmIzM5O20gaW50aW1hdGVseSBmYW1pbGlhciB3aXRoLgoKRmlyc3QgZ2xhbmNlIHRlbGxzIG1lIHRoaXMgcmV2b2x2ZXMgYXJvdW5kIGhvdyB3ZSBoYW5kbGUgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBhbmQgdGhlIHJlbGF0ZWQgc3RhY2sgb2Zmc2V0IGNhbGN1bGF0aW9ucyB3aXRoaW4gdGhlIEJQRiBieXRlY29kZS4gVGhlIGNvcmUgYWx0ZXJhdGlvbiBhcHBlYXJzIHRvIGJlIGluIGBicGZfZG9fbWlzY19maXh1cHNgIHdpdGhpbiBga2VybmVsL2JwZi9maXh1cHMuY2AuCgpQcmV2aW91c2x5LCB0aGUgY29kZSBkaXJlY3RseSBsb2FkZWQgYHN0YWNrX29mZl9jbnRgIGludG8gYEJQRl9SRUdfQVhgLCB3aGljaCBJIHJlY2FsbCB3YXMgdGhlbiB1c2VkIGFzIGFuIGFyZ3VtZW50IHBhc3NlZCB0byBhIHRyYW1wb2xpbmUsIHdoZXJlIHRoZSBhY3R1YWwgc3RhY2sgcG9pbnRlciBjYWxjdWxhdGlvbiBoYXBwZW5lZC4gVGhlIHBhdGNoIGluZGljYXRlcyBhIHNoaWZ0IGluIHRoaXMgYXBwcm9hY2guCgpUaGUgY29kZSBub3cgY2FsY3VsYXRlcyB0aGUgZWZmZWN0aXZlIHN0YWNrIHBvaW50ZXIsIGBGUCAmIzQzOyBzdGFja19vZmZfY250YCwgd2l0aGluIHRoZSAqQlBGIGJ5dGVjb2RlIGl0c2VsZiogYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nIHBvaW50ZXIgaW50byBgQlBGX1JFR19BWGAgYmVmb3JlIHRoZSBjYWxsLiBUaGlzIGlzIHRoZSBjcml0aWNhbCBjaGFuZ2UuIFNwZWNpZmljYWxseSwgaXQgaW52b2x2ZXMgdGhlIGZvbGxvd2luZyBhZGp1c3RtZW50czogdGhlIGp1bXAgb2Zmc2V0IGlzIGNoYW5nZWQgZnJvbSBgaW5zbi0mZ3Q7b2ZmICYjNDM7IDVgIHRvIGBpbnNuLSZndDtvZmYgJiM0MzsgNmAsIGFuZCBgaW5zbl9idWZbNF1gIG5vdyBjb3BpZXMgdGhlIEZyYW1lIFBvaW50ZXIgdG8gYEFYYC4gYGluc25fYnVmWzVdYCB0aGVuIGFkZHMgYHN0YWNrX29mZl9jbnRgIHRvIHRoZSBGcmFtZSBQb2ludGVyIGluIGBBWGAuIEZ1cnRoZXIsIHRoZSBKdW1wIGluc3RydWN0aW9uIG9mZnNldCBpcyBjaGFuZ2VkIGZyb20gMiB0byAzLCBhbmQgdGhlIGNvdW50IGlzIHVwZGF0ZWQgdG8gOC4KClRoZSBjb21tZW50IG1lbnRpb25zIHRoaXMgaXMgY2xlYW5lciB3aGVuIGRlYWxpbmcgd2l0aCBwcml2YXRlIHN0YWNrcywgYW5kIEkgaW1tZWRpYXRlbHkgc2VlIHRoZSBiZW5lZml0LiBCeSBjYWxjdWxhdGluZyB0aGUgc3RhY2sgcG9pbnRlciB3aXRoaW4gdGhlIEJQRiBwcm9ncmFtLCB3ZSBjZW50cmFsaXplIHRoaXMgbG9naWMsIGRlY291cGxpbmcgdGhlIHRyYW1wb2xpbmUgZnJvbSB0aGUgc3BlY2lmaWNzIG9mIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSYjMzk7cyBmcmFtZSBwb2ludGVyIGxheW91dCAoZS5nLiwgaW4gYSBwcml2YXRlIHN0YWNrIGNvbnRleHQsIHRoZSBmcmFtZSBwb2ludGVyIG1pZ2h0IHBvaW50IHRvIHRoZSBwcml2YXRlIHN0YWNrLCBub3QgdGhlIG5hdGl2ZSBgJXJicGApLgoKTm93LCBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBieSB0YWtpbmcgYSBwZWVrIGF0IHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHJhbXBvbGluZSBpbXBsZW1lbnRhdGlvbnMgKGFybTY0LCBwb3dlcnBjLCByaXNjdiwgczM5MCwgeDg2KS4gSXQgc2VlbXMgdGhleSBwcmV2aW91c2x5IHJlY2VpdmVkIHRoZSBvZmZzZXQsIGFkZGVkIGl0IHRvIHRoZSBmcmFtZSBwb2ludGVyLCBhbmQgbm93IHJlY2VpdmUgdGhlIGNhbGN1bGF0ZWQgcG9pbnRlciBkaXJlY3RseSB2aWEgQVguCgpUaGUgcGF0Y2gmIzM5O3MgbG9naWMgaXMgc291bmQuIFdlIGNhbGN1bGF0ZSB0aGUgcG9pbnRlciBpbiBieXRlY29kZSB1c2luZyB0aGUgZnJhbWUgcG9pbnRlciwgYW5kIHRoZW4gYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCwgd2hpY2ggcHJlc3VtYWJseSB0aGVuIHBhc3NlcyB0aGF0IGRpcmVjdGx5IHRvIGBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9gLgoKVG8gZW5zdXJlIHRoZXJlIGFyZSBubyBzdWJ0bGUgcmVncmVzc2lvbnMsIEkgc2hvdWxkIHRha2UgYSBjbG9zZSBsb29rIGF0IGBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9gIGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSBwYXRocy4gSSYjMzk7bGwgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGNoYW5nZSBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHVuZXhwZWN0ZWQgYmVoYXZpb3Igb3IgcGVyZm9ybWFuY2UgaW1wYWN0cywgZXNwZWNpYWxseSBpbiBlZGdlIGNhc2VzIG9yIHdpdGggY29tcGxleCBCUEYgcHJvZ3JhbXMuIFRoaXMgY2hhbmdlIGlzIHN1YnRsZSwgYnV0IHBvdGVudGlhbGx5IGZhci1yZWFjaGluZywgYW5kIHRoZSBkZXZpbCBpcyBhbHdheXMgaW4gdGhlIGRldGFpbHMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM0MDA6XHRcdHByb2cgPSBicGZfcHJvZ19maW5kX2Zyb21fc3RhY2soKTtcbjM0MDE6XHRcdGlmICghcHJvZylcbjM0MDI6XHRcdFx0cmV0dXJuO1xuMzQwMzpcdFx0YnBmX3N0cmVhbV9zdGFnZShzcywgcHJvZywgQlBGX1NUREVSUiwgKHtcbjM0MDQ6XHRcdFx0YnBmX3N0cmVhbV9wcmludGsoc3MsIFwmIzM0O0VSUk9SOiBUaW1lb3V0IGRldGVjdGVkIGZvciBtYXlfZ290byBpbnN0cnVjdGlvblxcblwmIzM0Oyk7XG4zNDA1Olx0XHRcdGJwZl9zdHJlYW1fZHVtcF9zdGFjayhzcyk7XG4zNDA2Olx0XHR9KSk7XG4zNDA3Olx0I2VuZGlmXG4zNDA4Olx0fVxuMzQwOTpcdFxuMzQxMDpcdHU2NCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8oc3RydWN0IGJwZl90aW1lZF9tYXlfZ290byAqcClcbjM0MTE6XHR7XG4zNDEyOlx0XHR1NjQgdGltZSA9IGt0aW1lX2dldF9tb25vX2Zhc3RfbnMoKTtcbjM0MTM6XHRcbjM0MTQ6XHRcdC8qIFBvcHVsYXRlIHRoZSB0aW1lc3RhbXAgZm9yIHRoaXMgc3RhY2sgZnJhbWUsIGFuZCByZWZyZXNoIGNvdW50LiAqL1xuMzQxNTpcdFx0aWYgKCFwLVx1MDAzZXRpbWVzdGFtcCkge1xuMzQxNjpcdFx0XHRwLVx1MDAzZXRpbWVzdGFtcCA9IHRpbWU7XG4zNDE3Olx0XHRcdHJldHVybiBCUEZfTUFYX1RJTUVEX0xPT1BTO1xuMzQxODpcdFx0fVxuMzQxOTpcdFx0LyogQ2hlY2sgaWYgd2UmIzM5O3ZlIGV4aGF1c3RlZCBvdXIgdGltZSBzbGljZSwgYW5kIHplcm8gY291bnQuICovXG4zNDIwOlx0XHRpZiAodW5saWtlbHkodGltZSAtIHAtXHUwMDNldGltZXN0YW1wIFx1MDAzZT0gKE5TRUNfUEVSX1NFQyAvIDQpKSkge1xuMzQyMTpcdFx0XHRicGZfcHJvZ19yZXBvcnRfbWF5X2dvdG9fdmlvbGF0aW9uKCk7XG4zNDIyOlx0XHRcdHJldHVybiAwO1xuMzQyMzpcdFx0fVxuMzQyNDpcdFx0LyogUmVmcmVzaCB0aGUgY291bnQgZm9yIHRoZSBzdGFjayBmcmFtZS4gKi9cbjM0MjU6XHRcdHJldHVybiBCUEZfTUFYX1RJTUVEX0xPT1BTO1xuMzQyNjpcdH1cbjM0Mjc6XHRcbjM0Mjg6XHQvKiBmb3IgY29uZmlncyB3aXRob3V0IE1NVSBvciAzMi1iaXQgKi9cbjM0Mjk6XHRfX3dlYWsgY29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGFyZW5hX21hcF9vcHM7XG4zNDMwOlx0X193ZWFrIHU2NCBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEpXG4zNDMxOlx0e1xuMzQzMjpcdFx0cmV0dXJuIDA7XG4zNDMzOlx0fVxuMzQzNDpcdF9fd2VhayB1NjQgYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHN0cnVjdCBicGZfYXJlbmEgKmFyZW5hKVxuMzQzNTpcdHtcbjM0MzY6XHRcdHJldHVybiAwO1xuMzQzNzpcdH1cbjM0Mzg6XHRcbjM0Mzk6XHQjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjEyCgkJCQkJCQlvdXRwdXQ6IDI0NwoJCQkJCQkJdGhvdWdodHM6IDMyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBDaGVjazogUmVmYWN0b3JpbmcgQlBGIFRyYW1wb2xpbmUgQ2FsbGluZyBDb252ZW50aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgc2NhbiBmb3IgS01TQU4gaXNzdWVzIGludm9sdmVzIGNoZWNraW5nIGZvciBhIGZldyBrZXkgdGhpbmdzOiB1bmluaXRpYWxpemVkIGRhdGEgbWFraW5nIGl0cyB3YXkgaW50byB1c2VyIHNwYWNlLCBjb25kaXRpb25hbCBsb2dpYyByZWx5aW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcyBpbiBkYXRhIHN0cnVjdHVyZXMsIGFuZCBhbnkgdnVsbmVyYWJpbGl0aWVzIGluIGJvdW5kcyBjaGVja3MgdGhhdCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBCYXNlZCBvbiB0aGlzIHBhdGNoJiMzOTtzIGNoYW5nZXMsIG5vbmUgb2YgdGhvc2UgYXBwZWFyIHRvIGJlIHByZXNlbnQuCgpTcGVjaWZpY2FsbHksIHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIGNhbGxpbmcgY29udmVudGlvbiBmb3IgdGhlIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgdHJhbXBvbGluZS4gSXQmIzM5O3MgYWJvdXQgaG93IHRoZSBwb2ludGVyLCBjYWxjdWxhdGVkIGZyb20gdGhlIGZyYW1lIHBvaW50ZXIgYW5kIHN0YWNrIG9mZnNldCwgaXMgcGFzc2VkIGFjcm9zcyBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcyAoeDg2LCBhcm02NCwgcmlzY3YsIHMzOTAsIGFuZCBwb3dlcnBjKS4gSW5zdGVhZCBvZiB0aGUgdHJhbXBvbGluZSBjYWxjdWxhdGluZyBpdCBpbnRlcm5hbGx5LCB0aGUgY29tcHV0YXRpb24gaXMgZG9uZSBiZWZvcmVoYW5kIGFuZCB0aGUgcmVzdWx0LCBgQlBGX1JFR19BWGAsIGlzIGRpcmVjdGx5IHBhc3NlZC4gVGhpcyBlbmFibGVzIGNvbXBhdGliaWxpdHkgd2l0aCBmZWF0dXJlcyBsaWtlIEJQRiBwcml2YXRlIHN0YWNrcy4KClRoZSBwb3RlbnRpYWwgcmlza3MgaGVyZSBhcmUgcHJpbWFyaWx5IGluY29ycmVjdCByZWdpc3RlciB2YWx1ZXMsIGJhZCBicmFuY2ggb2Zmc2V0cyBpbiB0aGUgQlBGIEpJVCBvciB2ZXJpZmllciBmaXh1cHMsIG9yIG1lbW9yeSBjb3JydXB0aW9uL291dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGVzZSBhcmUgd2VsbC11bmRlcnN0b29kIGlzc3VlcywgZmFsbGluZyB1bmRlciB0eXBpY2FsIEtBU0FOIGFuZCB2ZXJpZmllciBjb3JyZWN0bmVzcyB0ZXN0aW5nLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZS4KClRoZXJlZm9yZSwgYE5lZWRzS01TQU5gIGlzIGRlZmluaXRlbHkgYGZhbHNlYC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgQlBGIHRpbWVkIGBtYXlfZ290b2AgdHJhbXBvbGluZSBjYWxsaW5nIGNvbnZlbnRpb24gYWNyb3NzIGFyY2hpdGVjdHVyZXMgKHg4Nl82NCwgYXJtNjQsIHJpc2N2LCBzMzkwLCBwb3dlcnBjKSBhbmQgdXBkYXRlcyB0aGUgdmVyaWZpZXIgaW5zdHJ1Y3Rpb24gZml4dXBzIGluIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYC4gSW5zdGVhZCBvZiBwYXNzaW5nIHRoZSBzdGFjayBvZmZzZXQgaW4gYEJQRl9SRUdfQVhgIGFuZCBoYXZpbmcgZWFjaCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHJhbXBvbGluZSBjb21wdXRlIGBGUCAmIzQzOyBvZmZzZXRgLCB0aGUgQlBGIGJ5dGVjb2RlIG5vdyBjb21wdXRlcyB0aGUgcG9pbnRlciBgQlBGX1JFR19GUCAmIzQzOyBzdGFja19vZmZfY250YCBpbiBgQlBGX1JFR19BWGAgcHJpb3IgdG8gY2FsbGluZyBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKWAuXG5cblRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBuZXcgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZyBvciBzdHJ1Y3QgZmllbGRzIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24gbG9naWMuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggaW5zdHJ1Y3Rpb24gcGF0Y2hpbmcgb3IgcmVnaXN0ZXIgaGFuZGxpbmcgd291bGQgbWFuaWZlc3QgYXMgb3V0LW9mLWJvdW5kcyBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBjb250cm9sIGZsb3cgZXJyb3JzLCB3aGljaCBhcmUgY292ZXJlZCBieSBLQVNBTiBhbmQgdGhlIEJQRiB2ZXJpZmllci4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgQlBGIHRpbWVkIGBtYXlfZ290b2AgdHJhbXBvbGluZSBjYWxsaW5nIGNvbnZlbnRpb24gYWNyb3NzIGFyY2hpdGVjdHVyZXMgKHg4Nl82NCwgYXJtNjQsIHJpc2N2LCBzMzkwLCBwb3dlcnBjKSBhbmQgdXBkYXRlcyB0aGUgdmVyaWZpZXIgaW5zdHJ1Y3Rpb24gZml4dXBzIGluIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYC4gSW5zdGVhZCBvZiBwYXNzaW5nIHRoZSBzdGFjayBvZmZzZXQgaW4gYEJQRl9SRUdfQVhgIGFuZCBoYXZpbmcgZWFjaCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHJhbXBvbGluZSBjb21wdXRlIGBGUCAmIzQzOyBvZmZzZXRgLCB0aGUgQlBGIGJ5dGVjb2RlIG5vdyBjb21wdXRlcyB0aGUgcG9pbnRlciBgQlBGX1JFR19GUCAmIzQzOyBzdGFja19vZmZfY250YCBpbiBgQlBGX1JFR19BWGAgcHJpb3IgdG8gY2FsbGluZyBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKWAuXG5cblRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBuZXcgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZyBvciBzdHJ1Y3QgZmllbGRzIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24gbG9naWMuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggaW5zdHJ1Y3Rpb24gcGF0Y2hpbmcgb3IgcmVnaXN0ZXIgaGFuZGxpbmcgd291bGQgbWFuaWZlc3QgYXMgb3V0LW9mLWJvdW5kcyBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBjb250cm9sIGZsb3cgZXJyb3JzLCB3aGljaCBhcmUgY292ZXJlZCBieSBLQVNBTiBhbmQgdGhlIEJQRiB2ZXJpZmllci4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTE6MjguNjIzNzA2NDY1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzNTE4MjQ5NTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2RvX21pc2NfZml4dXBzXCIsXG4gICAgXCJhcmNoX2JwZl90aW1lZF9tYXlfZ290b1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBCUEYgdGltZWQgYG1heV9nb3RvYCB0cmFtcG9saW5lIGNhbGxpbmcgY29udmVudGlvbiBhY3Jvc3MgYXJjaGl0ZWN0dXJlcyAoeDg2XzY0LCBhcm02NCwgcmlzY3YsIHMzOTAsIHBvd2VycGMpIGFuZCB1cGRhdGVzIHRoZSB2ZXJpZmllciBpbnN0cnVjdGlvbiBmaXh1cHMgaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgLiBJbnN0ZWFkIG9mIHBhc3NpbmcgdGhlIHN0YWNrIG9mZnNldCBpbiBgQlBGX1JFR19BWGAgYW5kIGhhdmluZyBlYWNoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0cmFtcG9saW5lIGNvbXB1dGUgYEZQICsgb2Zmc2V0YCwgdGhlIEJQRiBieXRlY29kZSBub3cgY29tcHV0ZXMgdGhlIHBvaW50ZXIgYEJQRl9SRUdfRlAgKyBzdGFja19vZmZfY250YCBpbiBgQlBGX1JFR19BWGAgcHJpb3IgdG8gY2FsbGluZyBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKWAuXFxuXFxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nIG9yIHN0cnVjdCBmaWVsZHMgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiBsb2dpYy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBpbnN0cnVjdGlvbiBwYXRjaGluZyBvciByZWdpc3RlciBoYW5kbGluZyB3b3VsZCBtYW5pZmVzdCBhcyBvdXQtb2YtYm91bmRzIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIGNvbnRyb2wgZmxvdyBlcnJvcnMsIHdoaWNoIGFyZSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCB0aGUgQlBGIHZlcmlmaWVyLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBieXRlY29kZSBmaXh1cHMgZm9yIHRpbWVkIG1heV9nb3RvIGluc3RydWN0aW9ucyBpbiB0aGUgdmVyaWZpZXIgKGJwZl9kb19taXNjX2ZpeHVwcyBpbiBrZXJuZWwvYnBmL2ZpeHVwcy5jKSBhbmQgdGhlIHg4NiBKSVQgdHJhbXBvbGluZSAoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8gaW4gYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TKSB0byBjYWxjdWxhdGUgdGhlIGNvdW50L3RpbWVzdGFtcCBwb2ludGVyIGluIEJQRiByZWdpc3RlcnMgYmVmb3JlIGludm9raW5nIHRoZSB0cmFtcG9saW5lLiBUaGlzIHRvdWNoZXMgY29yZSBCUEYgdmVyaWZpY2F0aW9uIGFuZCBleGVjdXRpb24gbG9naWMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTE6MjguNjIzNzExNjA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQxMTM3NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0ODgxOTU3YWU1ZTEyYTYxNmMzZmM4ODU4YWY2MDY1NDM0ZWZmMWRjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gU2VwIDYgMDY6NTE6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xcbmluZGV4IGE5YTgwMjcxMWE3ZjkuLjUzMTQ4YzlhMWM1ODQgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcXG4rKysgYi9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xcbkBAIC0xNCwxNiArMTQsMTAgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuIFxcdHN0cFxcdHgzLCB4NCwgW3NwLCAjNDhdXFxuIFxcbiBcXHQvKlxcbi1cXHQgKiBTdGFjayBkZXB0aCB3YXMgcGFzc2VkIGluIEJQRl9SRUdfQVggKHg5KSwgYWRkIGl0IHRvIHRoZSBCUEZfRlBcXG4tXFx0ICogKHgyNSkgdG8gZ2V0IHRoZSBwb2ludGVyIHRvIGNvdW50IGFuZCB0aW1lc3RhbXAgYW5kIHBhc3MgaXQgYXMgdGhlXFxuLVxcdCAqIGZpcnN0IGFyZ3VtZW50IGluIHgwLlxcbi1cXHQgKlxcbi1cXHQgKiBCZWZvcmUgZ2VuZXJhdGluZyB0aGUgY2FsbCB0byBhcmNoX2JwZl90aW1lZF9tYXlfZ290bywgdGhlIHZlcmlmaWVyXFxuLVxcdCAqIGdlbmVyYXRlcyBhIGxvYWQgaW5zdHJ1Y3Rpb24gdXNpbmcgRlAsIGkuZS4gUkVHX0FYID0gKih1NjQgKikoRlAgLVxcbi1cXHQgKiBzdGFja19vZmZfY250KSwgc28gQlBGX1JFR19GUCAoeDI1KSBpcyBhbHdheXMgc2V0IHVwIGJ5IHRoZSBhcm02NFxcbi1cXHQgKiBqaXQgaW4gdGhpcyBjYXNlLlxcbitcXHQgKiBCUEZfUkVHX0FYICh4OSkgY29udGFpbnMgdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlcjsgcGFzcyBpdCBhc1xcbitcXHQgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4geDAuXFxuIFxcdCAqL1xcbi1cXHRhZGRcXHR4MCwgeDksIHgyNVxcbitcXHRtb3ZcXHR4MCwgeDlcXG4gXFx0YmxcXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cXG4gXFx0LyogQlBGX1JFR19BWCh4OSkgd2lsbCBiZSBzdG9yZWQgaW50byBjb3VudCwgc28gbW92ZSByZXR1cm4gdmFsdWUgdG8gaXQuICovXFxuIFxcdG1vdlxcdHg5LCB4MFxcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xcbmluZGV4IDg0ZWNmNmZhN2Y1ZGMuLmQ4ODgyNWRkMzRmZWEgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xcbisrKyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcXG5AQCAtOCw3ICs4LDcgQEBcXG4gICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSB0cmFtcG9saW5lIGZvciBwb3dlcnBjNjRcXG4gICpcXG4gICogQ3VzdG9tIEJQRiBjb252ZW50aW9uICh2ZXJpZmllci9KSVQpOlxcbi0gKlxcdC0gaW5wdXQ6ICBzdGFjayBvZmZzZXQgaW4gQlBGX1JFR19BWCAocjEyKVxcbisgKlxcdC0gaW5wdXQ6ICBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGX1JFR19BWCAocjEyKVxcbiAgKlxcdC0gb3V0cHV0OiB1cGRhdGVkIGNvdW50IGluIEJQRl9SRUdfQVggKHIxMilcXG4gICpcXG4gICogQ2FsbCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIG5vcm1hbCBwb3dlcnBjNjQgQUJJOlxcbkBAIC0zMiwxMCArMzIsMTAgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuIFxcdHN0ZCAgICAgcjgsIDcyKHIxKVxcbiBcXG4gXFx0LypcXG4tXFx0ICogcjMgPSBCUEZfUkVHX0ZQICsgQlBGX1JFR19BWFxcbi1cXHQgKiBCUEZfUkVHX0ZQIGlzIHIzMTsgQlBGX1JFR19BWCBpcyByMTIgKHN0YWNrIG9mZnNldCBpbiBieXRlcykuXFxuK1xcdCAqIEJQRl9SRUdfQVggKHIxMikgY29udGFpbnMgdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlcjsgcGFzcyBpdCBhc1xcbitcXHQgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4gcjMuXFxuIFxcdCAqL1xcbi1cXHRhZGQgICAgIHIzLCByMzEsIHIxMlxcbitcXHRtciAgICAgIHIzLCByMTJcXG4gXFx0YmwgICAgICBDRlVOQyhicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8pXFxuIFxcbiBcXHQvKiBQdXQgcmV0dXJuIHZhbHVlIGJhY2sgaW50byBBWCAqL1xcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXFxuaW5kZXggMDJjNjM3ZDg3NDIwNS4uOGMwM2UyNzJlMGJmNSAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXFxuQEAgLTYsMTIgKzYsMTEgQEBcXG4gXFxuIC8qXFxuICAqIFRyYW1wb2xpbmUgZm9yIHRoZSBCUEYgdGltZWQgbWF5X2dvdG8gbG9vcCBib3VuZC4gQ3VzdG9tIGNhbGxpbmcgY29udmVudGlvbjpcXG4tICpcXHQtIGlucHV0OiAgc3RhY2sgb2Zmc2V0IGluIEJQRl9SRUdfQVggKHQwKVxcbisgKlxcdC0gaW5wdXQ6ICBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGX1JFR19BWCAodDApXFxuICAqXFx0LSBvdXRwdXQ6IHVwZGF0ZWQgY291bnQgaW4gQlBGX1JFR19BWCAodDApXFxuICAqXFxuLSAqIENhbGxzIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggdGhlIHN0YW5kYXJkIFJJU0MtViBBQkksIHdoZXJlXFxuLSAqIHB0ciA9IEJQRl9SRUdfRlAgKHM1KSArIEJQRl9SRUdfQVggKHQwKS4gQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZFxcbi0gKiBhY3Jvc3MgdGhlIGNhbGw7IEJQRl9SRUdfRlAgKHM1KSBpcyBjYWxsZWUtc2F2ZWQgYW5kIG5lZWRzIG5vIHNhdmluZy5cXG4rICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSS5cXG4rICogQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZCBhY3Jvc3MgdGhlIGNhbGwuXFxuICAqL1xcbiBcXG4gU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuQEAgLTI4LDcgKzI3LDExIEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbiBcXHRSRUdfU1xcdGEzLCAxKlNaUkVHKHNwKVxcbiBcXHRSRUdfU1xcdGE0LCAwKlNaUkVHKHNwKVxcbiBcXG4tXFx0YWRkXFx0YTAsIHQwLCBzNVxcbitcXHQvKlxcbitcXHQgKiBCUEZfUkVHX0FYICh0MCkgY29udGFpbnMgdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlcjsgcGFzcyBpdCBhc1xcbitcXHQgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4gYTAuXFxuK1xcdCAqL1xcbitcXHRtdlxcdGEwLCB0MFxcbiBcXHRjYWxsXFx0YnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuIFxcdG12XFx0dDAsIGEwXFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xcbmluZGV4IGM0Njg3MmIwNzFjZTcuLjQwOThjMzM3N2MyMTMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xcbisrKyBiL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcXG5AQCAtMTg3Miw5ICsxODcyLDkgQEAgc3RhdGljIG5vaW5saW5lIGludCBicGZfaml0X2luc24oc3RydWN0IGJwZl9qaXQgKmppdCwgc3RydWN0IGJwZl9wcm9nICpmcCxcXG4gXFx0XFx0aWYgKCh2b2lkICopZnVuYyA9PSBhcmNoX2JwZl90aW1lZF9tYXlfZ290bykge1xcbiBcXHRcXHRcXHQvKlxcbiBcXHRcXHRcXHQgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIGhhcyBhIHNwZWNpYWwgQUJJOiB0aGVcXG4tXFx0XFx0XFx0ICogcGFyYW1ldGVycyBhcmUgaW4gQlBGX1JFR19BWCBhbmQgQlBGX1JFR18xMDsgdGhlXFxuLVxcdFxcdFxcdCAqIHJldHVybiB2YWx1ZSBpcyBpbiBCUEZfUkVHX0FYOyBhbmQgYWxsIEdQUnMgZXhjZXB0XFxuLVxcdFxcdFxcdCAqIFJFR19XMCwgUkVHX1cxLCBhbmQgQlBGX1JFR19BWCBhcmUgY2FsbGVlLXNhdmVkLlxcbitcXHRcXHRcXHQgKiBwYXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZSBhcmUgaW4gQlBGX1JFR19BWDsgYWxsXFxuK1xcdFxcdFxcdCAqIEdQUnMgZXhjZXB0IFJFR19XMCwgUkVHX1cxLCBhbmQgQlBGX1JFR19BWCBhcmVcXG4rXFx0XFx0XFx0ICogY2FsbGVlLXNhdmVkLlxcbiBcXHRcXHRcXHQgKi9cXG4gXFxuIFxcdFxcdFxcdC8qIGJyYXNsICVyMCxmdW5jICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXFxuaW5kZXggMDZmNTY3YTQ2MGQ3Yi4uZTM0Yzk5OTgyYzRhMiAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXFxuKysrIGIvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xcbkBAIC0yMSw5ICsyMSw5IEBAXFxuIFxcbiBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4gXFx0LypcXG4tXFx0ICogVGhpcyBmdW5jdGlvbiBoYXMgYSBzcGVjaWFsIEFCSTogdGhlIHBhcmFtZXRlcnMgYXJlIGluICVyMTIgYW5kXFxuLVxcdCAqICVyMTM7IHRoZSByZXR1cm4gdmFsdWUgaXMgaW4gJXIxMjsgYWxsIEdQUnMgZXhjZXB0ICVyMCwgJXIxLCBhbmRcXG4tXFx0ICogJXIxMiBhcmUgY2FsbGVlLXNhdmVkOyBhbmQgdGhlIHJldHVybiBhZGRyZXNzIGlzIGluICVyMC5cXG4rXFx0ICogVGhpcyBmdW5jdGlvbiBoYXMgYSBzcGVjaWFsIEFCSTogdGhlIHBhcmFtZXRlciBhbmQgcmV0dXJuIHZhbHVlIGFyZVxcbitcXHQgKiBpbiAlcjEyOyBhbGwgR1BScyBleGNlcHQgJXIwLCAlcjEsIGFuZCAlcjEyIGFyZSBjYWxsZWUtc2F2ZWQ7IGFuZFxcbitcXHQgKiB0aGUgcmV0dXJuIGFkZHJlc3MgaXMgaW4gJXIwLlxcbiBcXHQgKi9cXG4gXFx0c3RtZyAlcjIsJXI1LEZSQU1FX09GRitSMl9PRkYoJXIxNSlcXG4gXFx0c3RnICVyMTQsRlJBTUVfT0ZGK1IxNF9PRkYoJXIxNSlcXG5AQCAtMzMsNyArMzMsNyBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4gXFx0bGF5ICVyMTUsLUZSQU1FX1NJWkUoJXIxNSlcXG4gXFx0c3RnICVyMSxfX1NGX0JBQ0tDSEFJTiglcjE1KVxcbiBcXG4tXFx0bGF5ICVyMiwwKCVyMTIsJXIxMylcXG4rXFx0bGdyICVyMiwlcjEyXFxuIFxcdGJyYXNsICVyMTQsYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuIFxcdGxnciAlcjEyLCVyMlxcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXFxuaW5kZXggNTRjNjkwY2FlMTkwOC4uNmU5ZDllN2MyYjFkNiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcXG4rKysgYi9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcXG5AQCAtMTEsMTIgKzExLDYgQEBcXG4gU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuIFxcdEFOTk9UQVRFX05PRU5EQlJcXG4gXFxuLVxcdC8qXFxuLVxcdCAqIHIxMCBwYXNzZXMgdXMgc3RhY2sgZGVwdGgsIGxvYWQgdGhlIHBvaW50ZXIgdG8gY291bnQgYW5kIHRpbWVzdGFtcFxcbi1cXHQgKiBpbnRvIHIxMCBieSBhZGRpbmcgaXQgdG8gQlBGIGZyYW1lIHBvaW50ZXIuXFxuLVxcdCAqL1xcbi1cXHRsZWFxICglcmJwLCAlcjEwLCAxKSwgJXIxMFxcbi1cXG4gXFx0LyogU2V0dXAgZnJhbWUuICovXFxuIFxcdHB1c2hxICVyYnBcXG4gXFx0bW92cSAlcnNwLCAlcmJwXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvZml4dXBzLmMgYi9rZXJuZWwvYnBmL2ZpeHVwcy5jXFxuaW5kZXggNjViNDQxZTRhMzUxNy4uZGM1OTUwMWEzMmJiZCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL2ZpeHVwcy5jXFxuKysrIGIva2VybmVsL2JwZi9maXh1cHMuY1xcbkBAIC0xNzk3LDIwICsxNzk3LDIwIEBAIGludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4gXFx0XFx0XFx0c3RhY2tfZGVwdGhfZXh0cmEgPSAxNjtcXG4gXFx0XFx0XFx0aW5zbl9idWZbMF0gPSBCUEZfTERYX01FTShCUEZfRFcsIEJQRl9SRUdfQVgsIEJQRl9SRUdfMTAsIHN0YWNrX29mZl9jbnQpO1xcbiBcXHRcXHRcXHRpZiAoaW5zbi1cXHUwMDNlb2ZmIFxcdTAwM2U9IDApXFxuLVxcdFxcdFxcdFxcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cXHUwMDNlb2ZmICsgNSk7XFxuK1xcdFxcdFxcdFxcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cXHUwMDNlb2ZmICsgNik7XFxuIFxcdFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0XFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVxcdTAwM2VvZmYgLSAxKTtcXG4gXFx0XFx0XFx0aW5zbl9idWZbMl0gPSBCUEZfQUxVNjRfSU1NKEJQRl9TVUIsIEJQRl9SRUdfQVgsIDEpO1xcbi1cXHRcXHRcXHRpbnNuX2J1ZlszXSA9IEJQRl9KTVBfSU1NKEJQRl9KTkUsIEJQRl9SRUdfQVgsIDAsIDIpO1xcbitcXHRcXHRcXHRpbnNuX2J1ZlszXSA9IEJQRl9KTVBfSU1NKEJQRl9KTkUsIEJQRl9SRUdfQVgsIDAsIDMpO1xcbiBcXHRcXHRcXHQvKlxcbi1cXHRcXHRcXHQgKiBBWCBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIHBhc3MgaW4gc3RhY2tfb2ZmX2NudFxcbi1cXHRcXHRcXHQgKiAodG8gYWRkIHRvIHIxMC9mcCksIGFuZCBhbHNvIGFzIHRoZSByZXR1cm4gdmFsdWUgb2ZcXG4tXFx0XFx0XFx0ICogdGhlIGNhbGwgdG8gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8uXFxuK1xcdFxcdFxcdCAqIEFYIGlzIHVzZWQgdG8gcGFzcyBGUCArIHN0YWNrX29mZl9jbnQgYXMgdGhlIGFyZ3VtZW50IHRvXFxuK1xcdFxcdFxcdCAqIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCksIGFuZCBhbHNvIGhvbGRzIGl0cyByZXR1cm4gdmFsdWUuXFxuIFxcdFxcdFxcdCAqL1xcbi1cXHRcXHRcXHRpbnNuX2J1Zls0XSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XFxuLVxcdFxcdFxcdGluc25fYnVmWzVdID0gQlBGX0VNSVRfQ0FMTChhcmNoX2JwZl90aW1lZF9tYXlfZ290byk7XFxuLVxcdFxcdFxcdGluc25fYnVmWzZdID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcXG4tXFx0XFx0XFx0Y250ID0gNztcXG4rXFx0XFx0XFx0aW5zbl9idWZbNF0gPSBCUEZfTU9WNjRfUkVHKEJQRl9SRUdfQVgsIEJQRl9SRUdfRlApO1xcbitcXHRcXHRcXHRpbnNuX2J1Zls1XSA9IEJQRl9BTFU2NF9JTU0oQlBGX0FERCwgQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XFxuK1xcdFxcdFxcdGluc25fYnVmWzZdID0gQlBGX0VNSVRfQ0FMTChhcmNoX2JwZl90aW1lZF9tYXlfZ290byk7XFxuK1xcdFxcdFxcdGluc25fYnVmWzddID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcXG4rXFx0XFx0XFx0Y250ID0gODtcXG4gXFxuIFxcdFxcdFxcdG5ld19wcm9nID0gYnBmX3BhdGNoX2luc25fZGF0YShlbnYsIGkgKyBkZWx0YSwgaW5zbl9idWYsIGNudCk7XFxuIFxcdFxcdFxcdGlmICghbmV3X3Byb2cpXFxuQEAgLTI2NjEsNCArMjY2MSwzIEBAIGludCBicGZfcmVtb3ZlX2Zhc3RjYWxsX3NwaWxsc19maWxscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4tXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuY1xcbmluZGV4IDMyOGNmNjMwMjEwYTIuLmM1OTk2ZDlkYzhjYzkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXFxuQEAgLTYzNSwxNSArNjM1LDE2IEBAIF9feGxhdGVkKFxcXCI0OiByMCA9IFxcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcXFwiKVxcbiBfX3hsYXRlZChcXFwiLi4uXFxcIilcXG4gLyogbWF5X2dvdG8gZXhwYW5zaW9uIHN0YXJ0cyAqL1xcbiBfX3hsYXRlZChcXFwiNjogcjEyID0gKih1NjQgKikocjEwIC0yNClcXFwiKVxcbi1fX3hsYXRlZChcXFwiNzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzZcXFwiKVxcbitfX3hsYXRlZChcXFwiNzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzdcXFwiKVxcbiBfX3hsYXRlZChcXFwiODogcjEyIC09IDFcXFwiKVxcbi1fX3hsYXRlZChcXFwiOTogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzJcXFwiKVxcbi1fX3hsYXRlZChcXFwiMTA6IHIxMiA9IC0yNFxcXCIpXFxuLV9feGxhdGVkKFxcXCIxMTogY2FsbCB1bmtub3duXFxcIilcXG4tX194bGF0ZWQoXFxcIjEyOiAqKHU2NCAqKShyMTAgLTI0KSA9IHIxMlxcXCIpXFxuK19feGxhdGVkKFxcXCI5OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMrM1xcXCIpXFxuK19feGxhdGVkKFxcXCIxMDogcjEyID0gcjEwXFxcIilcXG4rX194bGF0ZWQoXFxcIjExOiByMTIgKz0gLTI0XFxcIilcXG4rX194bGF0ZWQoXFxcIjEyOiBjYWxsIHVua25vd25cXFwiKVxcbitfX3hsYXRlZChcXFwiMTM6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXFxcIilcXG4gLyogbWF5X2dvdG8gZXhwYW5zaW9uIGVuZHMgKi9cXG4tX194bGF0ZWQoXFxcIjEzOiAqKHU2NCAqKShyMTAgLTgpID0gcjFcXFwiKVxcbi1fX3hsYXRlZChcXFwiMTQ6IGV4aXRcXFwiKVxcbitfX3hsYXRlZChcXFwiMTQ6ICoodTY0ICopKHIxMCAtOCkgPSByMVxcXCIpXFxuK19feGxhdGVkKFxcXCIxNTogZXhpdFxcXCIpXFxuIF9fc3VjY2Vzc1xcbiBfX25ha2VkIHZvaWQgbWF5X2dvdG9faW50ZXJhY3Rpb25feDg2XzY0KHZvaWQpXFxuIHtcXG5AQCAtNjc2LDE1ICs2NzcsMTYgQEAgX194bGF0ZWQoXFxcIjI6IHIxID0gMVxcXCIpXFxuIF9feGxhdGVkKFxcXCIzOiBjYWxsIGJwZl9nZXRfc21wX3Byb2Nlc3Nvcl9pZFxcXCIpXFxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBzdGFydHMgKi9cXG4gX194bGF0ZWQoXFxcIjQ6IHIxMiA9ICoodTY0ICopKHIxMCAtMjQpXFxcIilcXG4tX194bGF0ZWQoXFxcIjU6IGlmIHIxMiA9PSAweDAgZ290byBwYys2XFxcIilcXG4rX194bGF0ZWQoXFxcIjU6IGlmIHIxMiA9PSAweDAgZ290byBwYys3XFxcIilcXG4gX194bGF0ZWQoXFxcIjY6IHIxMiAtPSAxXFxcIilcXG4tX194bGF0ZWQoXFxcIjc6IGlmIHIxMiAhPSAweDAgZ290byBwYysyXFxcIilcXG4tX194bGF0ZWQoXFxcIjg6IHIxMiA9IC0yNFxcXCIpXFxuLV9feGxhdGVkKFxcXCI5OiBjYWxsIHVua25vd25cXFwiKVxcbi1fX3hsYXRlZChcXFwiMTA6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXFxcIilcXG4rX194bGF0ZWQoXFxcIjc6IGlmIHIxMiAhPSAweDAgZ290byBwYyszXFxcIilcXG4rX194bGF0ZWQoXFxcIjg6IHIxMiA9IHIxMFxcXCIpXFxuK19feGxhdGVkKFxcXCI5OiByMTIgKz0gLTI0XFxcIilcXG4rX194bGF0ZWQoXFxcIjEwOiBjYWxsIHVua25vd25cXFwiKVxcbitfX3hsYXRlZChcXFwiMTE6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXFxcIilcXG4gLyogbWF5X2dvdG8gZXhwYW5zaW9uIGVuZHMgKi9cXG4tX194bGF0ZWQoXFxcIjExOiAqKHU2NCAqKShyMTAgLTgpID0gcjFcXFwiKVxcbi1fX3hsYXRlZChcXFwiMTI6IGV4aXRcXFwiKVxcbitfX3hsYXRlZChcXFwiMTI6ICoodTY0ICopKHIxMCAtOCkgPSByMVxcXCIpXFxuK19feGxhdGVkKFxcXCIxMzogZXhpdFxcXCIpXFxuIF9fc3VjY2Vzc1xcbiBfX25ha2VkIHZvaWQgbWF5X2dvdG9faW50ZXJhY3Rpb24odm9pZClcXG4ge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuY1xcbmluZGV4IGRiN2UzMGRhMjM0ZjEuLjE3MjE4OTcxNjBkYzkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmNcXG5AQCAtOTAsMTUgKzkwLDE2IEBAIF9fYXJjaF9sb29uZ2FyY2hcXG4gX194bGF0ZWQoXFxcIjA6ICoodTY0ICopKHIxMCAtMTYpID0gNjU1MzVcXFwiKVxcbiBfX3hsYXRlZChcXFwiMTogKih1NjQgKikocjEwIC04KSA9IDBcXFwiKVxcbiBfX3hsYXRlZChcXFwiMjogcjEyID0gKih1NjQgKikocjEwIC0xNilcXFwiKVxcbi1fX3hsYXRlZChcXFwiMzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzZcXFwiKVxcbitfX3hsYXRlZChcXFwiMzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzdcXFwiKVxcbiBfX3hsYXRlZChcXFwiNDogcjEyIC09IDFcXFwiKVxcbi1fX3hsYXRlZChcXFwiNTogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzJcXFwiKVxcbi1fX3hsYXRlZChcXFwiNjogcjEyID0gLTE2XFxcIilcXG4tX194bGF0ZWQoXFxcIjc6IGNhbGwgdW5rbm93blxcXCIpXFxuLV9feGxhdGVkKFxcXCI4OiAqKHU2NCAqKShyMTAgLTE2KSA9IHIxMlxcXCIpXFxuLV9feGxhdGVkKFxcXCI5OiByMCA9IDFcXFwiKVxcbi1fX3hsYXRlZChcXFwiMTA6IHIwID0gMlxcXCIpXFxuLV9feGxhdGVkKFxcXCIxMTogZXhpdFxcXCIpXFxuK19feGxhdGVkKFxcXCI1OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMrM1xcXCIpXFxuK19feGxhdGVkKFxcXCI2OiByMTIgPSByMTBcXFwiKVxcbitfX3hsYXRlZChcXFwiNzogcjEyICs9IC0xNlxcXCIpXFxuK19feGxhdGVkKFxcXCI4OiBjYWxsIHVua25vd25cXFwiKVxcbitfX3hsYXRlZChcXFwiOTogKih1NjQgKikocjEwIC0xNikgPSByMTJcXFwiKVxcbitfX3hsYXRlZChcXFwiMTA6IHIwID0gMVxcXCIpXFxuK19feGxhdGVkKFxcXCIxMTogcjAgPSAyXFxcIilcXG4rX194bGF0ZWQoXFxcIjEyOiBleGl0XFxcIilcXG4gX19zdWNjZXNzXFxuIF9fbmFrZWQgdm9pZCBtYXlfZ290b19iYXRjaF8yKHZvaWQpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcXG5pbmRleCAzZDk5OTRhNTI0NjRlLi42MzliNTMzNjNjOWFjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jXFxuQEAgLTcwLDYgKzcwLDI1IEBAIF9fbmFrZWQgdm9pZCBub19wcml2YXRlX3N0YWNrX25lc3RlZCh2b2lkKVxcbiBcXFwiXFx0Ojo6IF9fY2xvYmJlcl9hbGwpO1xcbiB9XFxuIFxcbitTRUMoXFxcImZlbnRyeS9icGZfZmVudHJ5X3Rlc3Q5XFxcIilcXG4rX19kZXNjcmlwdGlvbihcXFwiUHJpdmF0ZSBzdGFjaywgdGltZWQgbWF5X2dvdG9cXFwiKVxcbitfX3N1Y2Nlc3MgX19yZXR2YWwoMClcXG4rX19hcmNoX3g4Nl82NFxcbitfX2ppdGVkKFxcXCJcXHRtb3ZhYnNxXFx0JDB4e3suKn19LCAlcjlcXFwiKVxcbitfX2ppdGVkKFxcXCIuLi5cXFwiKVxcbitfX2ppdGVkKFxcXCJcXHRtb3ZxXFx0JXI5LCAlcjEwXFxcIilcXG4rX19hcmNoX2FybTY0XFxuK19faml0ZWQoXFxcIlxcdG1vdlxcdHg5LCB4MjVcXFwiKVxcbitpbnQgcHJpdmF0ZV9zdGFja190aW1lZF9tYXlfZ290byh2b2lkKVxcbit7XFxuK1xcdHZvbGF0aWxlIF9fdTY0IHN0YWNrX3NwYWNlWzE2XSA9IHt9O1xcbitcXG4rXFx0d2hpbGUgKGNhbl9sb29wKVxcbitcXHRcXHQ7XFxuK1xcbitcXHRyZXR1cm4gc3RhY2tfc3BhY2VbMF07XFxuK31cXG4rXFxuIF9fdXNlZFxcbiBfX25ha2VkIHN0YXRpYyB2b2lkIGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZyh2b2lkKVxcbiB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUxOjI5LjA0ODQ4MDU5N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTAyNzU3MTI2MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2RvX21pc2NfZml4dXBzXCIsXG4gICAgXCJhcmNoX2JwZl90aW1lZF9tYXlfZ290b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBieXRlY29kZSBmaXh1cHMgZm9yIHRpbWVkIG1heV9nb3RvIGluc3RydWN0aW9ucyBpbiB0aGUgdmVyaWZpZXIgKGJwZl9kb19taXNjX2ZpeHVwcyBpbiBrZXJuZWwvYnBmL2ZpeHVwcy5jKSBhbmQgdGhlIHg4NiBKSVQgdHJhbXBvbGluZSAoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8gaW4gYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TKSB0byBjYWxjdWxhdGUgdGhlIGNvdW50L3RpbWVzdGFtcCBwb2ludGVyIGluIEJQRiByZWdpc3RlcnMgYmVmb3JlIGludm9raW5nIHRoZSB0cmFtcG9saW5lLiBUaGlzIHRvdWNoZXMgY29yZSBCUEYgdmVyaWZpY2F0aW9uIGFuZCBleGVjdXRpb24gbG9naWMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0ODgxOTU3YWU1ZTEyYTYxNmMzZmM4ODU4YWY2MDY1NDM0ZWZmMWRjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwNjo1MToyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbmluZGV4IGE5YTgwMjcxMWE3ZjkuLjUzMTQ4YzlhMWM1ODQgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuKysrIGIvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC0xNCwxNiArMTQsMTAgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHRzdHBcdHgzLCB4NCwgW3NwLCAjNDhdXG4gXG4gXHQvKlxuLVx0ICogU3RhY2sgZGVwdGggd2FzIHBhc3NlZCBpbiBCUEZfUkVHX0FYICh4OSksIGFkZCBpdCB0byB0aGUgQlBGX0ZQXG4tXHQgKiAoeDI1KSB0byBnZXQgdGhlIHBvaW50ZXIgdG8gY291bnQgYW5kIHRpbWVzdGFtcCBhbmQgcGFzcyBpdCBhcyB0aGVcbi1cdCAqIGZpcnN0IGFyZ3VtZW50IGluIHgwLlxuLVx0ICpcbi1cdCAqIEJlZm9yZSBnZW5lcmF0aW5nIHRoZSBjYWxsIHRvIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvLCB0aGUgdmVyaWZpZXJcbi1cdCAqIGdlbmVyYXRlcyBhIGxvYWQgaW5zdHJ1Y3Rpb24gdXNpbmcgRlAsIGkuZS4gUkVHX0FYID0gKih1NjQgKikoRlAgLVxuLVx0ICogc3RhY2tfb2ZmX2NudCksIHNvIEJQRl9SRUdfRlAgKHgyNSkgaXMgYWx3YXlzIHNldCB1cCBieSB0aGUgYXJtNjRcbi1cdCAqIGppdCBpbiB0aGlzIGNhc2UuXG4rXHQgKiBCUEZfUkVHX0FYICh4OSkgY29udGFpbnMgdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlcjsgcGFzcyBpdCBhc1xuK1x0ICogdGhlIGZpcnN0IGFyZ3VtZW50IGluIHgwLlxuIFx0ICovXG4tXHRhZGRcdHgwLCB4OSwgeDI1XG4rXHRtb3ZcdHgwLCB4OVxuIFx0YmxcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuIFx0LyogQlBGX1JFR19BWCh4OSkgd2lsbCBiZSBzdG9yZWQgaW50byBjb3VudCwgc28gbW92ZSByZXR1cm4gdmFsdWUgdG8gaXQuICovXG4gXHRtb3ZcdHg5LCB4MFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5pbmRleCA4NGVjZjZmYTdmNWRjLi5kODg4MjVkZDM0ZmVhIDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuKysrIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuQEAgLTgsNyArOCw3IEBAXG4gICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSB0cmFtcG9saW5lIGZvciBwb3dlcnBjNjRcbiAgKlxuICAqIEN1c3RvbSBCUEYgY29udmVudGlvbiAodmVyaWZpZXIvSklUKTpcbi0gKlx0LSBpbnB1dDogIHN0YWNrIG9mZnNldCBpbiBCUEZfUkVHX0FYIChyMTIpXG4rICpcdC0gaW5wdXQ6ICBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGX1JFR19BWCAocjEyKVxuICAqXHQtIG91dHB1dDogdXBkYXRlZCBjb3VudCBpbiBCUEZfUkVHX0FYIChyMTIpXG4gICpcbiAgKiBDYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggbm9ybWFsIHBvd2VycGM2NCBBQkk6XG5AQCAtMzIsMTAgKzMyLDEwIEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIFx0c3RkICAgICByOCwgNzIocjEpXG4gXG4gXHQvKlxuLVx0ICogcjMgPSBCUEZfUkVHX0ZQICsgQlBGX1JFR19BWFxuLVx0ICogQlBGX1JFR19GUCBpcyByMzE7IEJQRl9SRUdfQVggaXMgcjEyIChzdGFjayBvZmZzZXQgaW4gYnl0ZXMpLlxuK1x0ICogQlBGX1JFR19BWCAocjEyKSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzXG4rXHQgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4gcjMuXG4gXHQgKi9cbi1cdGFkZCAgICAgcjMsIHIzMSwgcjEyXG4rXHRtciAgICAgIHIzLCByMTJcbiBcdGJsICAgICAgQ0ZVTkMoYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKVxuIFxuIFx0LyogUHV0IHJldHVybiB2YWx1ZSBiYWNrIGludG8gQVggKi9cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5pbmRleCAwMmM2MzdkODc0MjA1Li44YzAzZTI3MmUwYmY1IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5AQCAtNiwxMiArNiwxMSBAQFxuIFxuIC8qXG4gICogVHJhbXBvbGluZSBmb3IgdGhlIEJQRiB0aW1lZCBtYXlfZ290byBsb29wIGJvdW5kLiBDdXN0b20gY2FsbGluZyBjb252ZW50aW9uOlxuLSAqXHQtIGlucHV0OiAgc3RhY2sgb2Zmc2V0IGluIEJQRl9SRUdfQVggKHQwKVxuKyAqXHQtIGlucHV0OiAgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyIGluIEJQRl9SRUdfQVggKHQwKVxuICAqXHQtIG91dHB1dDogdXBkYXRlZCBjb3VudCBpbiBCUEZfUkVHX0FYICh0MClcbiAgKlxuLSAqIENhbGxzIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggdGhlIHN0YW5kYXJkIFJJU0MtViBBQkksIHdoZXJlXG4tICogcHRyID0gQlBGX1JFR19GUCAoczUpICsgQlBGX1JFR19BWCAodDApLiBCUEYgUjAtUjUgKGE1LCBhMC1hNCkgYXJlIHNhdmVkXG4tICogYWNyb3NzIHRoZSBjYWxsOyBCUEZfUkVHX0ZQIChzNSkgaXMgY2FsbGVlLXNhdmVkIGFuZCBuZWVkcyBubyBzYXZpbmcuXG4rICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSS5cbisgKiBCUEYgUjAtUjUgKGE1LCBhMC1hNCkgYXJlIHNhdmVkIGFjcm9zcyB0aGUgY2FsbC5cbiAgKi9cbiBcbiBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbkBAIC0yOCw3ICsyNywxMSBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdFJFR19TXHRhMywgMSpTWlJFRyhzcClcbiBcdFJFR19TXHRhNCwgMCpTWlJFRyhzcClcbiBcbi1cdGFkZFx0YTAsIHQwLCBzNVxuK1x0LypcbitcdCAqIEJQRl9SRUdfQVggKHQwKSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzXG4rXHQgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4gYTAuXG4rXHQgKi9cbitcdG12XHRhMCwgdDBcbiBcdGNhbGxcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuIFx0bXZcdHQwLCBhMFxuIFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jXG5pbmRleCBjNDY4NzJiMDcxY2U3Li40MDk4YzMzNzdjMjEzIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xuKysrIGIvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTE4NzIsOSArMTg3Miw5IEBAIHN0YXRpYyBub2lubGluZSBpbnQgYnBmX2ppdF9pbnNuKHN0cnVjdCBicGZfaml0ICpqaXQsIHN0cnVjdCBicGZfcHJvZyAqZnAsXG4gXHRcdGlmICgodm9pZCAqKWZ1bmMgPT0gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pIHtcbiBcdFx0XHQvKlxuIFx0XHRcdCAqIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCkgaGFzIGEgc3BlY2lhbCBBQkk6IHRoZVxuLVx0XHRcdCAqIHBhcmFtZXRlcnMgYXJlIGluIEJQRl9SRUdfQVggYW5kIEJQRl9SRUdfMTA7IHRoZVxuLVx0XHRcdCAqIHJldHVybiB2YWx1ZSBpcyBpbiBCUEZfUkVHX0FYOyBhbmQgYWxsIEdQUnMgZXhjZXB0XG4tXHRcdFx0ICogUkVHX1cwLCBSRUdfVzEsIGFuZCBCUEZfUkVHX0FYIGFyZSBjYWxsZWUtc2F2ZWQuXG4rXHRcdFx0ICogcGFyYW1ldGVyIGFuZCByZXR1cm4gdmFsdWUgYXJlIGluIEJQRl9SRUdfQVg7IGFsbFxuK1x0XHRcdCAqIEdQUnMgZXhjZXB0IFJFR19XMCwgUkVHX1cxLCBhbmQgQlBGX1JFR19BWCBhcmVcbitcdFx0XHQgKiBjYWxsZWUtc2F2ZWQuXG4gXHRcdFx0ICovXG4gXG4gXHRcdFx0LyogYnJhc2wgJXIwLGZ1bmMgKi9cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuaW5kZXggMDZmNTY3YTQ2MGQ3Yi4uZTM0Yzk5OTgyYzRhMiAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbisrKyBiL2FyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC0yMSw5ICsyMSw5IEBAXG4gXG4gU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHQvKlxuLVx0ICogVGhpcyBmdW5jdGlvbiBoYXMgYSBzcGVjaWFsIEFCSTogdGhlIHBhcmFtZXRlcnMgYXJlIGluICVyMTIgYW5kXG4tXHQgKiAlcjEzOyB0aGUgcmV0dXJuIHZhbHVlIGlzIGluICVyMTI7IGFsbCBHUFJzIGV4Y2VwdCAlcjAsICVyMSwgYW5kXG4tXHQgKiAlcjEyIGFyZSBjYWxsZWUtc2F2ZWQ7IGFuZCB0aGUgcmV0dXJuIGFkZHJlc3MgaXMgaW4gJXIwLlxuK1x0ICogVGhpcyBmdW5jdGlvbiBoYXMgYSBzcGVjaWFsIEFCSTogdGhlIHBhcmFtZXRlciBhbmQgcmV0dXJuIHZhbHVlIGFyZVxuK1x0ICogaW4gJXIxMjsgYWxsIEdQUnMgZXhjZXB0ICVyMCwgJXIxLCBhbmQgJXIxMiBhcmUgY2FsbGVlLXNhdmVkOyBhbmRcbitcdCAqIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBpbiAlcjAuXG4gXHQgKi9cbiBcdHN0bWcgJXIyLCVyNSxGUkFNRV9PRkYrUjJfT0ZGKCVyMTUpXG4gXHRzdGcgJXIxNCxGUkFNRV9PRkYrUjE0X09GRiglcjE1KVxuQEAgLTMzLDcgKzMzLDcgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHRsYXkgJXIxNSwtRlJBTUVfU0laRSglcjE1KVxuIFx0c3RnICVyMSxfX1NGX0JBQ0tDSEFJTiglcjE1KVxuIFxuLVx0bGF5ICVyMiwwKCVyMTIsJXIxMylcbitcdGxnciAlcjIsJXIxMlxuIFx0YnJhc2wgJXIxNCxicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbiBcdGxnciAlcjEyLCVyMlxuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuaW5kZXggNTRjNjkwY2FlMTkwOC4uNmU5ZDllN2MyYjFkNiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuKysrIGIvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5AQCAtMTEsMTIgKzExLDYgQEBcbiBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdEFOTk9UQVRFX05PRU5EQlJcbiBcbi1cdC8qXG4tXHQgKiByMTAgcGFzc2VzIHVzIHN0YWNrIGRlcHRoLCBsb2FkIHRoZSBwb2ludGVyIHRvIGNvdW50IGFuZCB0aW1lc3RhbXBcbi1cdCAqIGludG8gcjEwIGJ5IGFkZGluZyBpdCB0byBCUEYgZnJhbWUgcG9pbnRlci5cbi1cdCAqL1xuLVx0bGVhcSAoJXJicCwgJXIxMCwgMSksICVyMTBcbi1cbiBcdC8qIFNldHVwIGZyYW1lLiAqL1xuIFx0cHVzaHEgJXJicFxuIFx0bW92cSAlcnNwLCAlcmJwXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9maXh1cHMuYyBiL2tlcm5lbC9icGYvZml4dXBzLmNcbmluZGV4IDY1YjQ0MWU0YTM1MTcuLmRjNTk1MDFhMzJiYmQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2ZpeHVwcy5jXG4rKysgYi9rZXJuZWwvYnBmL2ZpeHVwcy5jXG5AQCAtMTc5NywyMCArMTc5NywyMCBAQCBpbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gXHRcdFx0c3RhY2tfZGVwdGhfZXh0cmEgPSAxNjtcbiBcdFx0XHRpbnNuX2J1ZlswXSA9IEJQRl9MRFhfTUVNKEJQRl9EVywgQlBGX1JFR19BWCwgQlBGX1JFR18xMCwgc3RhY2tfb2ZmX2NudCk7XG4gXHRcdFx0aWYgKGluc24tXHUwMDNlb2ZmIFx1MDAzZT0gMClcbi1cdFx0XHRcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cdTAwM2VvZmYgKyA1KTtcbitcdFx0XHRcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cdTAwM2VvZmYgKyA2KTtcbiBcdFx0XHRlbHNlXG4gXHRcdFx0XHRpbnNuX2J1ZlsxXSA9IEJQRl9KTVBfSU1NKEJQRl9KRVEsIEJQRl9SRUdfQVgsIDAsIGluc24tXHUwMDNlb2ZmIC0gMSk7XG4gXHRcdFx0aW5zbl9idWZbMl0gPSBCUEZfQUxVNjRfSU1NKEJQRl9TVUIsIEJQRl9SRUdfQVgsIDEpO1xuLVx0XHRcdGluc25fYnVmWzNdID0gQlBGX0pNUF9JTU0oQlBGX0pORSwgQlBGX1JFR19BWCwgMCwgMik7XG4rXHRcdFx0aW5zbl9idWZbM10gPSBCUEZfSk1QX0lNTShCUEZfSk5FLCBCUEZfUkVHX0FYLCAwLCAzKTtcbiBcdFx0XHQvKlxuLVx0XHRcdCAqIEFYIGlzIHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gcGFzcyBpbiBzdGFja19vZmZfY250XG4tXHRcdFx0ICogKHRvIGFkZCB0byByMTAvZnApLCBhbmQgYWxzbyBhcyB0aGUgcmV0dXJuIHZhbHVlIG9mXG4tXHRcdFx0ICogdGhlIGNhbGwgdG8gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8uXG4rXHRcdFx0ICogQVggaXMgdXNlZCB0byBwYXNzIEZQICsgc3RhY2tfb2ZmX2NudCBhcyB0aGUgYXJndW1lbnQgdG9cbitcdFx0XHQgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpLCBhbmQgYWxzbyBob2xkcyBpdHMgcmV0dXJuIHZhbHVlLlxuIFx0XHRcdCAqL1xuLVx0XHRcdGluc25fYnVmWzRdID0gQlBGX01PVjY0X0lNTShCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcbi1cdFx0XHRpbnNuX2J1Zls1XSA9IEJQRl9FTUlUX0NBTEwoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pO1xuLVx0XHRcdGluc25fYnVmWzZdID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcbi1cdFx0XHRjbnQgPSA3O1xuK1x0XHRcdGluc25fYnVmWzRdID0gQlBGX01PVjY0X1JFRyhCUEZfUkVHX0FYLCBCUEZfUkVHX0ZQKTtcbitcdFx0XHRpbnNuX2J1Zls1XSA9IEJQRl9BTFU2NF9JTU0oQlBGX0FERCwgQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XG4rXHRcdFx0aW5zbl9idWZbNl0gPSBCUEZfRU1JVF9DQUxMKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKTtcbitcdFx0XHRpbnNuX2J1Zls3XSA9IEJQRl9TVFhfTUVNKEJQRl9EVywgQlBGX1JFR18xMCwgQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XG4rXHRcdFx0Y250ID0gODtcbiBcbiBcdFx0XHRuZXdfcHJvZyA9IGJwZl9wYXRjaF9pbnNuX2RhdGEoZW52LCBpICsgZGVsdGEsIGluc25fYnVmLCBjbnQpO1xuIFx0XHRcdGlmICghbmV3X3Byb2cpXG5AQCAtMjY2MSw0ICsyNjYxLDMgQEAgaW50IGJwZl9yZW1vdmVfZmFzdGNhbGxfc3BpbGxzX2ZpbGxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4tXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXG5pbmRleCAzMjhjZjYzMDIxMGEyLi5jNTk5NmQ5ZGM4Y2M5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbkBAIC02MzUsMTUgKzYzNSwxNiBAQCBfX3hsYXRlZChcIjQ6IHIwID0gXHUwMDI2KHZvaWQgX19wZXJjcHUgKikocjApXCIpXG4gX194bGF0ZWQoXCIuLi5cIilcbiAvKiBtYXlfZ290byBleHBhbnNpb24gc3RhcnRzICovXG4gX194bGF0ZWQoXCI2OiByMTIgPSAqKHU2NCAqKShyMTAgLTI0KVwiKVxuLV9feGxhdGVkKFwiNzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzZcIilcbitfX3hsYXRlZChcIjc6IGlmIHIxMiA9PSAweDAgZ290byBwYys3XCIpXG4gX194bGF0ZWQoXCI4OiByMTIgLT0gMVwiKVxuLV9feGxhdGVkKFwiOTogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzJcIilcbi1fX3hsYXRlZChcIjEwOiByMTIgPSAtMjRcIilcbi1fX3hsYXRlZChcIjExOiBjYWxsIHVua25vd25cIilcbi1fX3hsYXRlZChcIjEyOiAqKHU2NCAqKShyMTAgLTI0KSA9IHIxMlwiKVxuK19feGxhdGVkKFwiOTogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzNcIilcbitfX3hsYXRlZChcIjEwOiByMTIgPSByMTBcIilcbitfX3hsYXRlZChcIjExOiByMTIgKz0gLTI0XCIpXG4rX194bGF0ZWQoXCIxMjogY2FsbCB1bmtub3duXCIpXG4rX194bGF0ZWQoXCIxMzogKih1NjQgKikocjEwIC0yNCkgPSByMTJcIilcbiAvKiBtYXlfZ290byBleHBhbnNpb24gZW5kcyAqL1xuLV9feGxhdGVkKFwiMTM6ICoodTY0ICopKHIxMCAtOCkgPSByMVwiKVxuLV9feGxhdGVkKFwiMTQ6IGV4aXRcIilcbitfX3hsYXRlZChcIjE0OiAqKHU2NCAqKShyMTAgLTgpID0gcjFcIilcbitfX3hsYXRlZChcIjE1OiBleGl0XCIpXG4gX19zdWNjZXNzXG4gX19uYWtlZCB2b2lkIG1heV9nb3RvX2ludGVyYWN0aW9uX3g4Nl82NCh2b2lkKVxuIHtcbkBAIC02NzYsMTUgKzY3NywxNiBAQCBfX3hsYXRlZChcIjI6IHIxID0gMVwiKVxuIF9feGxhdGVkKFwiMzogY2FsbCBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWRcIilcbiAvKiBtYXlfZ290byBleHBhbnNpb24gc3RhcnRzICovXG4gX194bGF0ZWQoXCI0OiByMTIgPSAqKHU2NCAqKShyMTAgLTI0KVwiKVxuLV9feGxhdGVkKFwiNTogaWYgcjEyID09IDB4MCBnb3RvIHBjKzZcIilcbitfX3hsYXRlZChcIjU6IGlmIHIxMiA9PSAweDAgZ290byBwYys3XCIpXG4gX194bGF0ZWQoXCI2OiByMTIgLT0gMVwiKVxuLV9feGxhdGVkKFwiNzogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzJcIilcbi1fX3hsYXRlZChcIjg6IHIxMiA9IC0yNFwiKVxuLV9feGxhdGVkKFwiOTogY2FsbCB1bmtub3duXCIpXG4tX194bGF0ZWQoXCIxMDogKih1NjQgKikocjEwIC0yNCkgPSByMTJcIilcbitfX3hsYXRlZChcIjc6IGlmIHIxMiAhPSAweDAgZ290byBwYyszXCIpXG4rX194bGF0ZWQoXCI4OiByMTIgPSByMTBcIilcbitfX3hsYXRlZChcIjk6IHIxMiArPSAtMjRcIilcbitfX3hsYXRlZChcIjEwOiBjYWxsIHVua25vd25cIilcbitfX3hsYXRlZChcIjExOiAqKHU2NCAqKShyMTAgLTI0KSA9IHIxMlwiKVxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBlbmRzICovXG4tX194bGF0ZWQoXCIxMTogKih1NjQgKikocjEwIC04KSA9IHIxXCIpXG4tX194bGF0ZWQoXCIxMjogZXhpdFwiKVxuK19feGxhdGVkKFwiMTI6ICoodTY0ICopKHIxMCAtOCkgPSByMVwiKVxuK19feGxhdGVkKFwiMTM6IGV4aXRcIilcbiBfX3N1Y2Nlc3NcbiBfX25ha2VkIHZvaWQgbWF5X2dvdG9faW50ZXJhY3Rpb24odm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmNcbmluZGV4IGRiN2UzMGRhMjM0ZjEuLjE3MjE4OTcxNjBkYzkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jXG5AQCAtOTAsMTUgKzkwLDE2IEBAIF9fYXJjaF9sb29uZ2FyY2hcbiBfX3hsYXRlZChcIjA6ICoodTY0ICopKHIxMCAtMTYpID0gNjU1MzVcIilcbiBfX3hsYXRlZChcIjE6ICoodTY0ICopKHIxMCAtOCkgPSAwXCIpXG4gX194bGF0ZWQoXCIyOiByMTIgPSAqKHU2NCAqKShyMTAgLTE2KVwiKVxuLV9feGxhdGVkKFwiMzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzZcIilcbitfX3hsYXRlZChcIjM6IGlmIHIxMiA9PSAweDAgZ290byBwYys3XCIpXG4gX194bGF0ZWQoXCI0OiByMTIgLT0gMVwiKVxuLV9feGxhdGVkKFwiNTogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzJcIilcbi1fX3hsYXRlZChcIjY6IHIxMiA9IC0xNlwiKVxuLV9feGxhdGVkKFwiNzogY2FsbCB1bmtub3duXCIpXG4tX194bGF0ZWQoXCI4OiAqKHU2NCAqKShyMTAgLTE2KSA9IHIxMlwiKVxuLV9feGxhdGVkKFwiOTogcjAgPSAxXCIpXG4tX194bGF0ZWQoXCIxMDogcjAgPSAyXCIpXG4tX194bGF0ZWQoXCIxMTogZXhpdFwiKVxuK19feGxhdGVkKFwiNTogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzNcIilcbitfX3hsYXRlZChcIjY6IHIxMiA9IHIxMFwiKVxuK19feGxhdGVkKFwiNzogcjEyICs9IC0xNlwiKVxuK19feGxhdGVkKFwiODogY2FsbCB1bmtub3duXCIpXG4rX194bGF0ZWQoXCI5OiAqKHU2NCAqKShyMTAgLTE2KSA9IHIxMlwiKVxuK19feGxhdGVkKFwiMTA6IHIwID0gMVwiKVxuK19feGxhdGVkKFwiMTE6IHIwID0gMlwiKVxuK19feGxhdGVkKFwiMTI6IGV4aXRcIilcbiBfX3N1Y2Nlc3NcbiBfX25ha2VkIHZvaWQgbWF5X2dvdG9fYmF0Y2hfMih2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suY1xuaW5kZXggM2Q5OTk0YTUyNDY0ZS4uNjM5YjUzMzYzYzlhYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcbkBAIC03MCw2ICs3MCwyNSBAQCBfX25ha2VkIHZvaWQgbm9fcHJpdmF0ZV9zdGFja19uZXN0ZWQodm9pZClcbiBcIlx0Ojo6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbitTRUMoXCJmZW50cnkvYnBmX2ZlbnRyeV90ZXN0OVwiKVxuK19fZGVzY3JpcHRpb24oXCJQcml2YXRlIHN0YWNrLCB0aW1lZCBtYXlfZ290b1wiKVxuK19fc3VjY2VzcyBfX3JldHZhbCgwKVxuK19fYXJjaF94ODZfNjRcbitfX2ppdGVkKFwiXHRtb3ZhYnNxXHQkMHh7ey4qfX0sICVyOVwiKVxuK19faml0ZWQoXCIuLi5cIilcbitfX2ppdGVkKFwiXHRtb3ZxXHQlcjksICVyMTBcIilcbitfX2FyY2hfYXJtNjRcbitfX2ppdGVkKFwiXHRtb3ZcdHg5LCB4MjVcIilcbitpbnQgcHJpdmF0ZV9zdGFja190aW1lZF9tYXlfZ290byh2b2lkKVxuK3tcbitcdHZvbGF0aWxlIF9fdTY0IHN0YWNrX3NwYWNlWzE2XSA9IHt9O1xuK1xuK1x0d2hpbGUgKGNhbl9sb29wKVxuK1x0XHQ7XG4rXG4rXHRyZXR1cm4gc3RhY2tfc3BhY2VbMF07XG4rfVxuK1xuIF9fdXNlZFxuIF9fbmFrZWQgc3RhdGljIHZvaWQgY3VtdWxhdGl2ZV9zdGFja19kZXB0aF9zdWJwcm9nKHZvaWQpXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTE6MjkuMDQ4NDgyMjk3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjQ4NDUxMTc0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgcmV2aWV3IHJlcXVlc3QuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCBzbyBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIHRoZXJlLCB0aG91Z2ggSSdsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvbiB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgYWNyb3NzIG90aGVyIGFyY2hpdGVjdHVyZXMuXG5cbkZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjaGFuZ2VzLiBUaGUgcGF0Y2ggdG91Y2hlcyBzZXZlcmFsIGZpbGVzOiBhc3NlbWJseSBmaWxlcyBmb3IgdmFyaW91cyBhcmNoaXRlY3R1cmVzIChgYXJtNjRgLCBgcG93ZXJwY2AsIGByaXNjdmAsIGBzMzkwYCwgYW5kIGB4ODZgKSwgcGx1cyBga2VybmVsL2JwZi9maXh1cHMuY2AgYW5kIHNvbWUgc2VsZnRlc3RzLlxuXG5JdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIGJ5dGVjb2RlIGV4cGFuc2lvbiBmb3IgYG1heV9nb3RvYCBvciB0aW1lZCBgbWF5X2dvdG9gLiBQcmV2aW91c2x5LCB0aGUgc3RhY2sgb2Zmc2V0IGNvdW50IHdhcyBwYXNzZWQgaW4gYSByZWdpc3RlciAoQVgpIHRvIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHJhbXBvbGluZSwgd2hpY2ggd291bGQgdGhlbiBjb21wdXRlIHRoZSBmcmFtZSBwb2ludGVyIHBsdXMgdGhlIG9mZnNldC4gTm93LCB0aGUgZml4dXAgaXRzZWxmIGVtaXRzIGluc3RydWN0aW9ucyB0byAqcHJlY29tcHV0ZSogYEFYID0gRlAgKyBzdGFja19vZmZfY250YCBiZWZvcmUgdGhlIHRyYW1wb2xpbmUgY2FsbC4gVGhpcyBpcyBnb2luZyB0byBjbGVhbiB1cCB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGFzc2VtYmx5IGNvZGUuXG5cbkNvbnNlcXVlbnRseSwgdGhlcmUgYXJlIGNoYW5nZXMgaW4gdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0cmFtcG9saW5lcywgc3BlY2lmaWNhbGx5IHRoZSBgYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYCBmaWxlLiBUaGUgb3JpZ2luYWwgYGxlYXEgKCVyYnAsICVyMTAsIDEpLCAlcjEwYCBpbnN0cnVjdGlvbiBpbiB0aGUgeDg2IHRyYW1wb2xpbmUgaXMgZ29uZS4gVGhhdCBtYWtlcyBzZW5zZSBzaW5jZSBSMTAvQVggbm93IGRpcmVjdGx5IGNvbnRhaW5zIHRoZSBwb2ludGVyLlxuXG5UaGUgaW1wb3J0YW50IHRoaW5nIGlzLCB0aGlzICpkb2VzKiB0b3VjaCBleGVjdXRhYmxlIGNvZGUgb24gYW1kNjQ6IGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCBhbmQgYGFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU2AsIHNvIHRoaXMgZGVmaW5pdGVseSBhZmZlY3RzIEJQRiBwcm9ncmFtIHZlcmlmaWNhdGlvbiwgbG9hZGluZywgSklUIGNvbXBpbGF0aW9uLCBhbmQgZXhlY3V0aW9uIG9mIHByb2dyYW1zIHRoYXQgdXNlIGBtYXlfZ290b2Agb3IgdGhlIHRpbWVkIHZhcmlhbnQuIEknbGwgbmVlZCB0byBzY3J1dGluaXplIHRoZXNlIGFyZWFzIGNsb3NlbHksIG1ha2luZyBzdXJlIHRoYXQgaXQncyBzYWZlIGFuZCBwZXJmb3JtcyBjb3JyZWN0bHkuXG5cbk5leHQgc3RlcDogSSdtIGdvaW5nIHRvIHJ1biBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSByZWxldmFudCBjb250ZXh0IGZyb20gdGhvc2Uga2V5IGZpbGVzLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDEyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTc5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTI6MzMuODkzNjAxODc4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1OTY5NTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFyY2hfYnBmX3RpbWVkX21heV9nb3RvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMC1cXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MTE6U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEyLVxcdEFOTk9UQVRFX05PRU5EQlJcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy00OC1cXHRSRVRcXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6NDk6U1lNX0ZVTkNfRU5EKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MjozMy45NTk1Nzk5NzRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjA2NzY0NTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBmaXh1cHMuY2AqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbi4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBga2VybmVsL2JwZi9maXh1cHMuY2AgZmlsZS4gSSByZW1lbWJlciBzb21ldGhpbmcgcmVsYXRlZCB0byB3aGF0IEknbSB3b3JraW5nIG9uIGJlaW5nIGhhbmRsZWQgYXJvdW5kIGxpbmUgMTc5Ny4gTGV0J3Mgc3RhcnQgdGhlcmUgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBJIGhhdmUgYSBodW5jaCB0aGlzIGlzIHRoZSByZWxldmFudCBzZWN0aW9uLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc3RhcnQgZGlzc2VjdGluZyB0aGF0IGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNzAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MjozNS41NjYzNDY4NDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDExMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwia2VybmVsL2JwZi9maXh1cHMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzg1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNzg1OlxcdFxcdFxcdFxcdCAqIGRlcHRoLTggc3RvcmVzIHRoZSBzdGFydCB0aW1lc3RhbXAgb2YgdGhlIGxvb3AuXFxuMTc4NjpcXHRcXHRcXHRcXHQgKlxcbjE3ODc6XFx0XFx0XFx0XFx0ICogVGhlIHN0YXJ0aW5nIHZhbHVlIG9mIGNvdW50IGlzIEJQRl9NQVhfVElNRURfTE9PUFNcXG4xNzg4OlxcdFxcdFxcdFxcdCAqICgweGZmZmYpLiAgRXZlcnkgaXRlcmF0aW9uIGxvYWRzIGl0IGFuZCBzdWJzIGl0IGJ5IDEsXFxuMTc4OTpcXHRcXHRcXHRcXHQgKiB1bnRpbCB0aGUgdmFsdWUgYmVjb21lcyAwIGluIEFYICh0aHVzLCAxIGluIHN0YWNrKSxcXG4xNzkwOlxcdFxcdFxcdFxcdCAqIGFmdGVyIHdoaWNoIHdlIGNhbGwgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8sIHdoaWNoXFxuMTc5MTpcXHRcXHRcXHRcXHQgKiBlaXRoZXIgc2V0cyBBWCB0byAweGZmZmYgdG8ga2VlcCBsb29waW5nLCBvciB0byAwXFxuMTc5MjpcXHRcXHRcXHRcXHQgKiB1cG9uIHRpbWVvdXQuIEFYIGlzIHRoZW4gc3RvcmVkIGludG8gdGhlIHN0YWNrLiBJblxcbjE3OTM6XFx0XFx0XFx0XFx0ICogdGhlIG5leHQgaXRlcmF0aW9uLCB3ZSBlaXRoZXIgc2VlIDAgYW5kIGJyZWFrIG91dCwgb3JcXG4xNzk0OlxcdFxcdFxcdFxcdCAqIGNvbnRpbnVlIGl0ZXJhdGluZyB1bnRpbCB0aGUgbmV4dCB0aW1lIHZhbHVlIGlzIDBcXG4xNzk1OlxcdFxcdFxcdFxcdCAqIGFmdGVyIHN1YnRyYWN0aW9uLCByaW5zZSBhbmQgcmVwZWF0LlxcbjE3OTY6XFx0XFx0XFx0XFx0ICovXFxuMTc5NzpcXHRcXHRcXHRcXHRzdGFja19kZXB0aF9leHRyYSA9IDE2O1xcbjE3OTg6XFx0XFx0XFx0XFx0aW5zbl9idWZbMF0gPSBCUEZfTERYX01FTShCUEZfRFcsIEJQRl9SRUdfQVgsIEJQRl9SRUdfMTAsIHN0YWNrX29mZl9jbnQpO1xcbjE3OTk6XFx0XFx0XFx0XFx0aWYgKGluc24tXFx1MDAzZW9mZiBcXHUwMDNlPSAwKVxcbjE4MDA6XFx0XFx0XFx0XFx0XFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVxcdTAwM2VvZmYgKyA2KTtcXG4xODAxOlxcdFxcdFxcdFxcdGVsc2VcXG4xODAyOlxcdFxcdFxcdFxcdFxcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cXHUwMDNlb2ZmIC0gMSk7XFxuMTgwMzpcXHRcXHRcXHRcXHRpbnNuX2J1ZlsyXSA9IEJQRl9BTFU2NF9JTU0oQlBGX1NVQiwgQlBGX1JFR19BWCwgMSk7XFxuMTgwNDpcXHRcXHRcXHRcXHRpbnNuX2J1ZlszXSA9IEJQRl9KTVBfSU1NKEJQRl9KTkUsIEJQRl9SRUdfQVgsIDAsIDMpO1xcbjE4MDU6XFx0XFx0XFx0XFx0LypcXG4xODA2OlxcdFxcdFxcdFxcdCAqIEFYIGlzIHVzZWQgdG8gcGFzcyBGUCArIHN0YWNrX29mZl9jbnQgYXMgdGhlIGFyZ3VtZW50IHRvXFxuMTgwNzpcXHRcXHRcXHRcXHQgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpLCBhbmQgYWxzbyBob2xkcyBpdHMgcmV0dXJuIHZhbHVlLlxcbjE4MDg6XFx0XFx0XFx0XFx0ICovXFxuMTgwOTpcXHRcXHRcXHRcXHRpbnNuX2J1Zls0XSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR19BWCwgQlBGX1JFR19GUCk7XFxuMTgxMDpcXHRcXHRcXHRcXHRpbnNuX2J1Zls1XSA9IEJQRl9BTFU2NF9JTU0oQlBGX0FERCwgQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XFxuMTgxMTpcXHRcXHRcXHRcXHRpbnNuX2J1Zls2XSA9IEJQRl9FTUlUX0NBTEwoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pO1xcbjE4MTI6XFx0XFx0XFx0XFx0aW5zbl9idWZbN10gPSBCUEZfU1RYX01FTShCUEZfRFcsIEJQRl9SRUdfMTAsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpO1xcbjE4MTM6XFx0XFx0XFx0XFx0Y250ID0gODtcXG4xODE0OlxcdFxcbjE4MTU6XFx0XFx0XFx0XFx0bmV3X3Byb2cgPSBicGZfcGF0Y2hfaW5zbl9kYXRhKGVudiwgaSArIGRlbHRhLCBpbnNuX2J1ZiwgY250KTtcXG4xODE2OlxcdFxcdFxcdFxcdGlmICghbmV3X3Byb2cpXFxuMTgxNzpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4xODE4OlxcdFxcbjE4MTk6XFx0XFx0XFx0XFx0ZGVsdGEgKz0gY250IC0gMTtcXG4xODIwOlxcdFxcdFxcdFxcdGVudi1cXHUwMDNlcHJvZyA9IHByb2cgPSBuZXdfcHJvZztcXG4xODIxOlxcdFxcdFxcdFxcdGluc24gPSBuZXdfcHJvZy1cXHUwMDNlaW5zbnNpICsgaSArIGRlbHRhO1xcbjE4MjI6XFx0XFx0XFx0XFx0Z290byBuZXh0X2luc247XFxuMTgyMzpcXHRcXHRcXHR9IGVsc2UgaWYgKGJwZl9pc19tYXlfZ290b19pbnNuKGluc24pKSB7XFxuMTgyNDpcXHRcXHRcXHRcXHRpbnQgc3RhY2tfb2ZmID0gLXN0YWNrX2RlcHRoIC0gODtcXG4xODI1OlxcdFxcbjE4MjY6XFx0XFx0XFx0XFx0c3RhY2tfZGVwdGhfZXh0cmEgPSA4O1xcbjE4Mjc6XFx0XFx0XFx0XFx0aW5zbl9idWZbMF0gPSBCUEZfTERYX01FTShCUEZfRFcsIEJQRl9SRUdfQVgsIEJQRl9SRUdfMTAsIHN0YWNrX29mZik7XFxuMTgyODpcXHRcXHRcXHRcXHRpZiAoaW5zbi1cXHUwMDNlb2ZmIFxcdTAwM2U9IDApXFxuMTgyOTpcXHRcXHRcXHRcXHRcXHRpbnNuX2J1ZlsxXSA9IEJQRl9KTVBfSU1NKEJQRl9KRVEsIEJQRl9SRUdfQVgsIDAsIGluc24tXFx1MDAzZW9mZiArIDIpO1xcbjE4MzA6XFx0XFx0XFx0XFx0ZWxzZVxcbjE4MzE6XFx0XFx0XFx0XFx0XFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVxcdTAwM2VvZmYgLSAxKTtcXG4xODMyOlxcdFxcdFxcdFxcdGluc25fYnVmWzJdID0gQlBGX0FMVTY0X0lNTShCUEZfU1VCLCBCUEZfUkVHX0FYLCAxKTtcXG4xODMzOlxcdFxcdFxcdFxcdGluc25fYnVmWzNdID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmYpO1xcbjE4MzQ6XFx0XFx0XFx0XFx0Y250ID0gNDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTI6MzUuNTY2NDkxNzE4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjY1NDcxNTQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJbXBsZW1lbnRhdGlvbiBEZXRhaWxzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gQlBGIGFuZCBwb3RlbnRpYWwgdGltZS1yZWxhdGVkIFwiZ290b1wiIGJlaGF2aW9yIG9uIHg4NiBhcmNoaXRlY3R1cmVzIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdGFjay4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGFzc2VtYmx5LiBJdCdzIG9mdGVuIHRoZSBxdWlja2VzdCB3YXkgdG8gdW5kZXJzdGFuZCB0aGUgbG93LWxldmVsIGRldGFpbHMgb2YgaG93IGEgcGFydGljdWxhciBmdW5jdGlvbiBpcyAqYWN0dWFsbHkqIGltcGxlbWVudGVkLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHBlcmZvcm1hbmNlLWNyaXRpY2FsIGNvZGUgbGlrZSBCUEYgZmlsdGVycy4gV2UncmUgdGFsa2luZyBhYm91dCBgYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYCBzcGVjaWZpY2FsbHkuIFJlYWRpbmcgdGhlIGFzc2VtYmx5IGlzIGdvaW5nIHRvIGdpdmUgbWUgdGhlIGRlZmluaXRpdmUgdmlldyBvZiB3aGF0J3MgaGFwcGVuaW5nLCBieXBhc3NpbmcgYW55IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgdGhhdCBtaWdodCBvYnNjdXJlIHRoZSBsb2dpYyBpbiBDIGNvZGUuIFRpbWUgdG8gZGlnIGluIGFuZCBnZXQgYSBwcmVjaXNlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjY4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MjozOC4yMjEyMDkyNTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0LyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xcbiAgIDM6XFx0XFxuICAgNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZXhwb3J0LmhcXHUwMDNlXFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbGlua2FnZS5oXFx1MDAzZVxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2FzbS9ub3NwZWMtYnJhbmNoLmhcXHUwMDNlXFxuICAgNzpcXHRcXG4gICA4OlxcdFxcdC5jb2RlNjRcXG4gICA5OlxcdFxcdC5zZWN0aW9uIC50ZXh0LCBcXFwiYXhcXFwiXFxuICAxMDpcXHRcXG4gIDExOlxcdFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbiAgMTI6XFx0XFx0QU5OT1RBVEVfTk9FTkRCUlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHQvKiBTZXR1cCBmcmFtZS4gKi9cXG4gIDE1OlxcdFxcdHB1c2hxICVyYnBcXG4gIDE2OlxcdFxcdG1vdnEgJXJzcCwgJXJicFxcbiAgMTc6XFx0XFxuICAxODpcXHRcXHQvKiBTYXZlIHIwLXI1LiAqL1xcbiAgMTk6XFx0XFx0cHVzaHEgJXJheFxcbiAgMjA6XFx0XFx0cHVzaHEgJXJkaVxcbiAgMjE6XFx0XFx0cHVzaHEgJXJzaVxcbiAgMjI6XFx0XFx0cHVzaHEgJXJkeFxcbiAgMjM6XFx0XFx0cHVzaHEgJXJjeFxcbiAgMjQ6XFx0XFx0cHVzaHEgJXI4XFxuICAyNTpcXHRcXG4gIDI2OlxcdFxcdC8qXFxuICAyNzpcXHRcXHQgKiByMTAgaGFzIHRoZSBwb2ludGVyIHRvIGNvdW50IGFuZCB0aW1lc3RhbXAsIHBhc3MgaXQgYXMgZmlyc3RcXG4gIDI4OlxcdFxcdCAqIGFyZ3VtZW50LlxcbiAgMjk6XFx0XFx0ICovXFxuICAzMDpcXHRcXHRtb3ZxICVyMTAsICVyZGlcXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0LyogRW1pdCBjYWxsIGRlcHRoIGFjY291bnRpbmcgZm9yIGNhbGwgYmVsb3cuICovXFxuICAzMzpcXHRcXHRDQUxMX0RFUFRIX0FDQ09VTlRcXG4gIDM0OlxcdFxcdGNhbGwgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuICAzNTpcXHRcXG4gIDM2OlxcdFxcdC8qIEJQRl9SRUdfQVg9cjEwIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgcmV0dXJuIHZhbHVlIHRvIGl0LiAqL1xcbiAgMzc6XFx0XFx0bW92cSAlcmF4LCAlcjEwXFxuICAzODpcXHRcXG4gIDM5OlxcdFxcdC8qIFJlc3RvcmUgcjUtcjAuICovXFxuICA0MDpcXHRcXHRwb3BxICVyOFxcbiAgNDE6XFx0XFx0cG9wcSAlcmN4XFxuICA0MjpcXHRcXHRwb3BxICVyZHhcXG4gIDQzOlxcdFxcdHBvcHEgJXJzaVxcbiAgNDQ6XFx0XFx0cG9wcSAlcmRpXFxuICA0NTpcXHRcXHRwb3BxICVyYXhcXG4gIDQ2OlxcdFxcbiAgNDc6XFx0XFx0bGVhdmVcXG4gIDQ4OlxcdFxcdFJFVFxcbiAgNDk6XFx0U1lNX0ZVTkNfRU5EKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MjozOC4yMjEyODYwNjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjEyMzEyMDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgQlBGIFRpbWVkIEdvdG8gUmVzdHJpY3Rpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0aW1lZCBgZ290b2AgZnVuY3Rpb25hbGl0eSBpbiBCUEYgaXMgYmVpbmcgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IGhvdyBpdHMgYXZhaWxhYmlsaXR5IGlzIGRldGVybWluZWQgYWNyb3NzIGFyY2hpdGVjdHVyZXMuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGxvY2F0aW9ucyB3aGVyZSBgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvYCBhbmQgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBhcmUgZGVmaW5lZCBhbmQgY29uZmlndXJlZC4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGtlcm5lbCBtYWtlcyB0aG9zZSBkZWNpc2lvbnMuXG5cblRvIGtpY2sgdGhpbmdzIG9mZiwgbGV0J3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGFuZCBkaXJ0eSBzZWFyY2guIEEgYGdyZXBgIG9uIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2Agc2hvdWxkIHF1aWNrbHkgcmV2ZWFsIHRoZSByZWxldmFudCBmaWxlcyBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhhdCBmdW5jdGlvbi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgYmFzZSB0byBnbyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1MTcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUyOjQwLjQzMzYwMjEzN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1NzUwNjIzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhcmNoX2JwZl90aW1lZF9tYXlfZ290b1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0xMzAyPXN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0xNzI0LVxcdFxcdC8qXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MTcyNTpcXHRcXHQgKiBDYWxsIHRvIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCkgaXMgZW1pdHRlZCBieSB0aGVcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0xNzI2LVxcdFxcdCAqIHZlcmlmaWVyIGFuZCBjYWxsZWQgd2l0aCBjdXN0b20gY2FsbGluZyBjb252ZW50aW9uIHdpdGhcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTE3MjgtXFx0XFx0ICovXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MTcyOTpcXHRcXHRpZiAoZnVuY19hZGRyICE9ICh1NjQpYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMTczMC1cXHRcXHRcXHRlbWl0KEE2NF9NT1YoMSwgcjAsIEE2NF9SKDApKSwgY3R4KTtcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTUtXFxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6NjpTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy03LVxcdC8qIEFsbG9jYXRlIHN0YWNrIHNwYWNlIGFuZCBlbWl0IGZyYW1lIHJlY29yZCAqL1xcbi0tXFxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzMtXFx0cmV0XFxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MzQ6U1lNX0ZVTkNfRU5EKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jPTk2Nz1pbnQgYnBmX2ppdF9idWlsZF9ib2R5KHN0cnVjdCBicGZfcHJvZyAqZnAsIHUzMiAqaW1hZ2UsIHUzMiAqZmltYWdlLCBzdHJ1Y3QgY29kZWdlbl9jb250ZXh0ICpjdHgsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTc2OS1cXHRcXHRcXHQvKlxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYzoxNzcwOlxcdFxcdFxcdCAqIENhbGwgdG8gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSBpcyBlbWl0dGVkIGJ5IHRoZVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYy0xNzcxLVxcdFxcdFxcdCAqIHZlcmlmaWVyIGFuZCBjYWxsZWQgd2l0aCBjdXN0b20gY2FsbGluZyBjb252ZW50aW9uIHdpdGhcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYy0xNzgyLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYzoxNzgzOlxcdFxcdFxcdGlmIChmdW5jX2FkZHIgPT0gKHU2NClhcmNoX2JwZl90aW1lZF9tYXlfZ290bykge1xcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYy0xNzg0LVxcdFxcdFxcdFxcdHJldCA9IDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTctLypcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjg6ICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSB0cmFtcG9saW5lIGZvciBwb3dlcnBjNjRcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTktICpcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTktXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoyMDpTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTIxLVxcdC8qIFByb2xvZ3VlOiBzYXZlIExSLCBhbGxvY2F0ZSBmcmFtZSAqL1xcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy01Ni1cXHRibHJcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjU3OlNZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9MTM2Mz1pbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTg0Ny1cXHRcXHQvKlxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTg0ODpcXHRcXHQgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIGlzIGVtaXR0ZWQgYnkgdGhlIHZlcmlmaWVyIGFuZFxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTg0OS1cXHRcXHQgKiByZXR1cm5zIGl0cyByZXN1bHQgaW4gQlBGX1JFR19BWCBpbnN0ZWFkIG9mIEJQRl9SRUdfMCwgc29cXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTg1MS1cXHRcXHQgKi9cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjE4NTI6XFx0XFx0aWYgKGluc24tXFx1MDAzZXNyY19yZWcgIT0gQlBGX1BTRVVET19DQUxMIFxcdTAwMjZcXHUwMDI2IGFkZHIgIT0gKHU2NClhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTE4NTMtXFx0XFx0XFx0ZW1pdF9tdihicGZfdG9fcnZfcmVnKEJQRl9SRUdfMCwgY3R4KSwgUlZfUkVHX0EwLCBjdHgpO1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTUtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MTY6U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTctXFx0YWRkaVxcdHNwLCBzcCwgLSg4KlNaUkVHKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDktXFx0cmV0XFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6NTA6U1lNX0ZVTkNfRU5EKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYz05NTU9c3RhdGljIG5vaW5saW5lIGludCBicGZfaml0X2luc24oc3RydWN0IGJwZl9qaXQgKmppdCwgc3RydWN0IGJwZl9wcm9nICpmcCxcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMTg3MS1cXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jOjE4NzI6XFx0XFx0aWYgKCh2b2lkICopZnVuYyA9PSBhcmNoX2JwZl90aW1lZF9tYXlfZ290bykge1xcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMTg3My1cXHRcXHRcXHQvKlxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6MTg3NDpcXHRcXHRcXHQgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIGhhcyBhIHNwZWNpYWwgQUJJOiB0aGVcXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTE4NzUtXFx0XFx0XFx0ICogcGFyYW1ldGVyIGFuZCByZXR1cm4gdmFsdWUgYXJlIGluIEJQRl9SRUdfQVg7IGFsbFxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0yMS1cXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjIyOlNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMjMtXFx0LypcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDQtXFx0QlJfRVggJXIxXFxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzo0NTpTWU1fRlVOQ19FTkQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTAtXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjExOlNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMi1cXHRBTk5PVEFURV9OT0VOREJSXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDgtXFx0UkVUXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjQ5OlNZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTI1Mj12b2lkIGFyY2hfYnBmX3N0YWNrX3dhbGsoYm9vbCAoKmNvbnN1bWVfZm4pKHZvaWQgKmNvb2tpZSwgdTY0IGlwLCB1NjQgc3AsIHU2NCBicCksIHZvaWQgKmNvb2tpZSk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMjUzOnU2NCBhcmNoX2JwZl90aW1lZF9tYXlfZ290byh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTEyNTQtdTY0IGJwZl9jaGVja190aW1lZF9tYXlfZ290byhzdHJ1Y3QgYnBmX3RpbWVkX21heV9nb3RvICopO1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MzM4ND1ib29sIF9fd2VhayBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvKHZvaWQpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0zMzg4LVxcbmtlcm5lbC9icGYvY29yZS5jOjMzODk6dTY0IF9fd2VhayBhcmNoX2JwZl90aW1lZF9tYXlfZ290byh2b2lkKVxcbmtlcm5lbC9icGYvY29yZS5jLTMzOTAte1xcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYz0xNTA4PWludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmMtMTc4OS1cXHRcXHRcXHQgKiB1bnRpbCB0aGUgdmFsdWUgYmVjb21lcyAwIGluIEFYICh0aHVzLCAxIGluIHN0YWNrKSxcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjE3OTA6XFx0XFx0XFx0ICogYWZ0ZXIgd2hpY2ggd2UgY2FsbCBhcmNoX2JwZl90aW1lZF9tYXlfZ290bywgd2hpY2hcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE3OTEtXFx0XFx0XFx0ICogZWl0aGVyIHNldHMgQVggdG8gMHhmZmZmIHRvIGtlZXAgbG9vcGluZywgb3IgdG8gMFxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0xODA2LVxcdFxcdFxcdCAqIEFYIGlzIHVzZWQgdG8gcGFzcyBGUCArIHN0YWNrX29mZl9jbnQgYXMgdGhlIGFyZ3VtZW50IHRvXFxua2VybmVsL2JwZi9maXh1cHMuYzoxODA3OlxcdFxcdFxcdCAqIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCksIGFuZCBhbHNvIGhvbGRzIGl0cyByZXR1cm4gdmFsdWUuXFxua2VybmVsL2JwZi9maXh1cHMuYy0xODA4LVxcdFxcdFxcdCAqL1xcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0xODEwLVxcdFxcdFxcdGluc25fYnVmWzVdID0gQlBGX0FMVTY0X0lNTShCUEZfQURELCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjE4MTE6XFx0XFx0XFx0aW5zbl9idWZbNl0gPSBCUEZfRU1JVF9DQUxMKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE4MTItXFx0XFx0XFx0aW5zbl9idWZbN10gPSBCUEZfU1RYX01FTShCUEZfRFcsIEJQRl9SRUdfMTAsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1Mjo0Mi4xOTExMTcwNjFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE1ODEwNzc1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2U6XG5cbioqSW52ZXN0aWdhdGluZyB4ODYgSklUIENvbXBpbGF0aW9uIGZvciBCUEYgQ2FsbHMqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBndXRzIG9mIGhvdyB0aGlzIGlzIGhhbmRsZWQgb24geDg2LiBJJ20gdGhpbmtpbmcgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgYGFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY2AuIEl0J3MgYWxtb3N0IGFsd2F5cyB0aGUgZ28tdG8gZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSB4ODYgYXJjaGl0ZWN0dXJlIGhhbmRsZXMgdGhlIEpJVCBjb21waWxhdGlvbiBvZiBCUEYgaW5zdHJ1Y3Rpb25zIGFuZCBlc3BlY2lhbGx5IGZ1bmN0aW9uIGNhbGxzLiBJJ20ga2VlbiB0byBzZWUgaG93IHRoZXkndmUgb3B0aW1pemVkIHRoZSBjYWxsaW5nIGNvbnZlbnRpb25zLCBhcmd1bWVudCBwYXNzaW5nLCBhbmQgYW55IHBvdGVudGlhbCBpbmxpbmluZyB0cmlja3MgdGhleSdyZSB1c2luZyB0byBnZXQgdGhlIGJlc3QgcGVyZm9ybWFuY2Ugb3V0IG9mIHRoZSBnZW5lcmF0ZWQgY29kZS4gS25vd2luZyBob3cgdGhleSd2ZSB0YWNrbGVkIHRoaXMgb24geDg2IHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIGV2YWx1YXRpbmcgYW5kIGNvbXBhcmluZyBkaWZmZXJlbnQgYXBwcm9hY2hlcy4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgd2FpdGluZyB0byBiZSB1bmNvdmVyZWQgaW4gdGhhdCBmaWxlIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDM3OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUyOjQ0LjM0OTIyODA5OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMwMzI5NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXJjaF9icGZfdGltZWRfbWF5X2dvdG9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEwLVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxMTpTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTItXFx0QU5OT1RBVEVfTk9FTkRCUlxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTQ4LVxcdFJFVFxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzo0OTpTWU1fRlVOQ19FTkQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUyOjQ0LjQxMjI2OTE0NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDcxNjU3OTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBDaGFuZ2UgZm9yIFByaXZhdGUgU3RhY2tzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgY2hhbmdlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIG1vZGlmaWNhdGlvbi4gUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jYC4gVGhlIHNwZWNpZmljIHNlY3Rpb24gb2YgaW50ZXJlc3QgaXMgYFNFQyhcImZlbnRyeS9icGZfZmVudHJ5X3Rlc3Q5XCIpYCwgd2hpY2ggaXMgZGVzY3JpYmVkIGFzIHJlbGF0aW5nIHRvIHRoZSBcIlByaXZhdGUgc3RhY2ssIHRpbWVkIG1heV9nb3RvXCIgZnVuY3Rpb25hbGl0eS5cblxuUHJldmlvdXNseSwgdGhlIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgZnVuY3Rpb24gaGFkIGFuIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB3YXkgb2YgZGV0ZXJtaW5pbmcgYW4gZWZmZWN0aXZlIHN0YWNrIHBvaW50ZXIuIE9uIHg4NiwgaXQgd2FzIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBsZWFxICglcmJwLCAlcjEwLCAxKSwgJXIxMGAsIGFuZCBvbiBhcm02NCwgYW4gYGFkZCB4MCwgeDksIHgyNWAuIFRoaXMgd2FzIHJlbHlpbmcgb24gdGhlIGhhcmR3YXJlIGZyYW1lIHBvaW50ZXIgcmVnaXN0ZXIgKHJicCBvbiB4ODYsIHgyNSBvbiBhcm02NCkgdG8gY2FsY3VsYXRlIHRoZSBvZmZzZXQuXG5cbk5vdywgd2l0aCB0aGUgcHJpdmF0ZSBzdGFjayBmZWF0dXJlIGVuYWJsZWQsIHRoaW5ncyBnZXQgbW9yZSBpbnRlcmVzdGluZy4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHdoZW4gdGhlIEJQRiBwcml2YXRlIHN0YWNrIGlzIGFjdGl2ZSwgQlBGX1JFR19GUCAoUjEwKSBpc24ndCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyB0aGUgaGFyZHdhcmUgc3RhY2sgZnJhbWUgcG9pbnRlciAoJXJicCkuIEVzc2VudGlhbGx5LCBSMTAgaXMgbWFuYWdlZCB3aXRoaW4gdGhlIHByaXZhdGUgc3RhY2sgYnVmZmVyLCBzbyB3ZSBjYW4ndCBhc3N1bWUgYSBkaXJlY3QgY29ycmVzcG9uZGVuY2UgdG8gYCVyYnBgLiBUaGUga2V5IGhlcmUgaXMgdG8gc2VlIGhvdyB0aGUgYnBmIGNvZGUgY29tcHV0ZXMgdGhlIGZyYW1lIHBvaW50ZXIsIGFsbG93aW5nIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgdG8gc2ltcGx5IHVzZSB0aGUgcHJlY29tcHV0ZWQgdmFsdWUuIEkgbmVlZCB0byByZS1leGFtaW5lIHRoZSBgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvYCBhbmQgdGhlIHZlcmlmaWVyIGNvZGUgc3Vycm91bmRpbmcgdGhlIGB0aW1lZF9tYXlfZ290b2AgZnVuY3Rpb24gdG8gZ2V0IGEgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDgwMCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1Mjo0Ny44ODM5Mjk1ODVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTY1MzA2OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTY9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0yMC1cXHRtb3ZcXHR4MCwgeDlcXG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoyMTpcXHRibFxcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xcbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTIyLVxcdC8qIEJQRl9SRUdfQVgoeDkpIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgcmV0dXJuIHZhbHVlIHRvIGl0LiAqL1xcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMy0gKlxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MTQ6ICogQ2FsbCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIG5vcm1hbCBwb3dlcnBjNjQgQUJJOlxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTUtICogXFx0LSByMyA9IHB0ciwgcmV0dXJuIGluIHIzXFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTIwPVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zOC1cXHRtciAgICAgIHIzLCByMTJcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM5OlxcdGJsICAgICAgQ0ZVTkMoYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDAtXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMS0gKlxcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjEyOiAqIENhbGxzIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggdGhlIHN0YW5kYXJkIFJJU0MtViBBQkkuXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTMtICogQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZCBhY3Jvc3MgdGhlIGNhbGwuXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0xNj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM0LVxcdG12XFx0YTAsIHQwXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MzU6XFx0Y2FsbFxcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM2LVxcdG12XFx0dDAsIGEwXFxuLS1cXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTIyPVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zNi1cXHRsZ3IgJXIyLCVyMTJcXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM3OlxcdGJyYXNsICVyMTQsYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zOC1cXHRsZ3IgJXIxMiwlcjJcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0xMT1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zMy1cXHRDQUxMX0RFUFRIX0FDQ09VTlRcXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MzQ6XFx0Y2FsbCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzUtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEyNTM9dTY0IGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKHZvaWQpO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTI1NDp1NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKik7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMjU1LWJvb2wgYnBmX2hlbHBlcl9jaGFuZ2VzX3BrdF9kYXRhKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCk7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0zMzk0PXN0YXRpYyBub2lubGluZSB2b2lkIGJwZl9wcm9nX3JlcG9ydF9tYXlfZ290b192aW9sYXRpb24odm9pZClcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTM0MDktXFxua2VybmVsL2JwZi9jb3JlLmM6MzQxMDp1NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKnApXFxua2VybmVsL2JwZi9jb3JlLmMtMzQxMS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUyOjQ5Ljc0MDQ2NTkyM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjM5MjQ3NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBCUEYgSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBudXRzIGFuZCBib2x0cyBvZiB0aGUgQlBGIGltcGxlbWVudGF0aW9uLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IGl0J3MgYnVpbHQgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBlbnZpcm9ubWVudC4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBwYXRoIGZyb20gdGhlIGJhc2UgY29uZmlndXJhdGlvbiBkb3duIHRvIHRoZSBhY3R1YWwgY29kZS4gTXkgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXM7IEknbSBiZXR0aW5nIHRoYXQncyB3aGVyZSB0aGUgcmVsZXZhbnQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLCBlc3BlY2lhbGx5IGFueXRoaW5nIHJlbGF0ZWQgdG8gQlBGIGl0c2VsZiBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGFkYXB0YXRpb25zIGxpa2UgdGhlIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgIGZpbGUuIFRoZW4sIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgaG93IHRoZXNlIGNvbXBvbmVudHMgYXJlIGxpbmtlZCB0b2dldGhlciwgSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIE1ha2VmaWxlIGxvY2F0ZWQgd2l0aGluIGBhcmNoL3g4Ni9uZXQvYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IGV2ZXJ5dGhpbmcgZml0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2NTEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1Mjo1Mi4zNzk3MTU4OTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTAwODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90aW1lZF9tYXlfZ290b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9uZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvbmV0L01ha2VmaWxlPTg9ZWxzZVxcbmFyY2gveDg2L25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcC5vIGJwZl90aW1lZF9tYXlfZ290by5vXFxuYXJjaC94ODYvbmV0L01ha2VmaWxlLTEwLWVuZGlmXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTAtXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjExOlNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMi1cXHRBTk5PVEFURV9OT0VOREJSXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDgtXFx0UkVUXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjQ5OlNZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTI6NTIuNDI0NjIwOTg2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NDU1MjkxMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHJlbGF0ZXMgdG8gdGhlIGtlcm5lbCBhbmQgZUJQRjpcblxuKipJbnZlc3RpZ2F0aW5nIGBmaXh1cHMuY2AgaW4gdGhlIGVCUEYgQ29udGV4dCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgZml4dXBzLmNgIHNvdXJjZSBmaWxlIGlzIGJ1aWx0IHdpdGhpbiB0aGUgZUJQRiBzdWJzeXN0ZW0uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGBNYWtlZmlsZWAgaW4gdGhlIHJlbGV2YW50IGBrZXJuZWwvYnBmL2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgYnVpbGQgcnVsZXMgYW5kIGRlcGVuZGVuY2llcy4gVGhlIGBNYWtlZmlsZWAgd2lsbCBiZSB0aGUgZGVmaW5pdGl2ZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGhvdyB0aGlzIHNwZWNpZmljIGZpbGUgaXMgY29tcGlsZWQgYW5kIGxpbmtlZC4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgbGlua2VkIHNvbWV3aGVyZSBpbiB0aGUgYGtlcm5lbC9icGYvYCBkaXJlY3RvcnksIGhvd2V2ZXIsIGl0J3MgYWxzbyBwb3NzaWJsZSB0aGF0IHRoaXMgZmlsZSBpcyBpbmNsdWRlZCB2aWEgYW4gaW5jbHVkZSBzdGF0ZW1lbnQgaW4gYW5vdGhlciBmaWxlIGFuZCB0aGF0IHRoZSBgTWFrZWZpbGVgIHRoYXQgYnVpbGRzIGBmaXh1cHMuY2AgbWF5IGJlIGluIGFub3RoZXIgZm9sZGVyLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGZvbGRlciBhbmQgbG9vayBmb3IgYW4gaW5jbHVkZSBzdGF0ZW1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTg1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTI6NTQuMDcwMTUyOTI3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODk3MTE5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaXh1cHMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfbG9jYWxfc3RvcmFnZS5vIGJwZl90YXNrX3N0b3JhZ2Uub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBmaXh1cHMubyBjZmcubyBzdGF0ZXMubyBiYWNrdHJhY2subyBjaGVja19idGYub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTUtb2JqLSR7Q09ORklHX0JQRl9MU019XFx0ICArPSBicGZfaW5vZGVfc3RvcmFnZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUyOjU0LjExOTEzMTg3NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4OTk4NjE1MDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIEJQRiBgbWF5X2dvdG9gIGFuZCBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgV29ydGhGdXp6aW5nYCBpcyBpbmRlZWQgdHJ1ZS4gV2UncmUgbG9va2luZyBhdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgQlBGIHZlcmlmaWVyIGZpeHVwcyBhbmQgdGhlIHg4NiBCUEYgSklUIHRyYW1wb2xpbmUuIFNwZWNpZmljYWxseSwgYGJwZl9kb19taXNjX2ZpeHVwc2AgaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgIGFuZCBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIGluIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgIGFyZSBvZiBpbnRlcmVzdC4gIFRoZSBmYWN0IHRoYXQgcHJvZ3JhbXMgdXNpbmcgYG1heV9nb3RvYCBvciB0aW1lZCBgbWF5X2dvdG9gIGNhbiBiZSBsb2FkZWQgdmlhIGBzeXNfYnBmKEJQRl9QUk9HX0xPQUQpYCBieSBwb3RlbnRpYWxseSB1bnByaXZpbGVnZWQgdXNlcnNwYWNlLCBldmVuIHRocm91Z2ggdG9vbHMgbGlrZSBzeXprYWxsZXIsIGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgYSBjYW5kaWRhdGUuXG5cblRoZSBjcml0aWNhbCBwYXRoIGlzIGNsZWFyOiBgYnBmX2RvX21pc2NfZml4dXBzYCByZXdyaXRlcyBpbnN0cnVjdGlvbnMgZm9yIGBtYXlfZ290b2AsIGFuZCB3aGVuIHRoZSBKSVRlZCBwcm9ncmFtIHJ1bnMgb24geDg2LCBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIGlzIGNhbGxlZC4gVGhpcyBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggKm1vZGlmaWFibGUqIGV4ZWN1dGFibGUga2VybmVsIGNvZGUsIHdoaWNoLCBhcyB3ZSBrbm93LCBpcyBhbiBleGNlbGxlbnQgcGxhY2UgdG8gbG9vayBmb3Igc3VidGxlIGJ1Z3MuIEknbSB0aGlua2luZyBpbnN0cnVjdGlvbiByZXdyaXRpbmcsIGJyYW5jaCBvZmZzZXRzLCBhbmQgcmVnaXN0ZXIgYWxsb2NhdGlvbiB3aXRoaW4gYGJwZl9kb19taXNjX2ZpeHVwc2Ag4oCTIHNwZWNpZmljYWxseSB0aGluZ3MgbGlrZSBgaW5zbi1cdTAwM2VvZmYgKyA2YCwgYGRlbHRhICs9IGNudCAtIDFgLCBBWCByZWdpc3RlciBoYW5kbGluZywgYW5kIHN0YWNrIG9mZnNldHMsIHRoZXkgYXJlIGFsbCByaXBlIGZvciBmdXp6aW5nLiBBbHNvLCB0aGUgZXhlY3V0aW9uIG9mIHRoZSByZXN1bHRpbmcgQlBGIHByb2dyYW1zIGlzIHdvcnRoIGZ1enppbmcsIHRvby5cblxuU28sIGBXb3J0aEZ1enppbmdgID0gVHJ1ZS5cblxuTm93LCBsZXQncyByZWZpbmUgdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QuICBXZSBrbm93IHRoYXQ6XG5cbiogICBgYnBmX2RvX21pc2NfZml4dXBzYCAoaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgKSBpcyBkZWZpbml0ZWx5IG9uIHRoZSBsaXN0LlxuKiAgIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgKGluIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgKSBpcywgb2YgY291cnNlLCBhIHByaW1hcnkgZm9jdXMuXG4qICAgQW5kIHdoaWxlIGl0J3Mgbm90IG1vZGlmaWVkIGRpcmVjdGx5LCBgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvYCAoaW4gYGtlcm5lbC9icGYvY29yZS5jYCkgaXMgdGhlIHRhcmdldCBjYWxsZWQgYnkgdGhlIHRyYW1wb2xpbmUuXG5cbk5vdywgbGV0J3MgdmVyaWZ5IGlmIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgaXMsIGluIGZhY3QsIGEgc3ltYm9sLiBDb25maXJtZWQuIFdlIGhhdmUgdGhlIGRlZmluaXRpb25zIGluIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYCwgYGFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU2AsIGFuZCBga2VybmVsL2JwZi9jb3JlLmNgLiBXZSBoYXZlIGBicGZfZG9fbWlzY19maXh1cHNgIGluIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCwgdG9vLlxuXG5JJ3ZlIGNoZWNrZWQsIGFuZCB0aGUgKm9ubHkqIG1vZGlmaWNhdGlvbiBpbiBga2VybmVsL2JwZi9maXh1cHMuY2AgaXMgaW5kZWVkIHdpdGhpbiBgYnBmX2RvX21pc2NfZml4dXBzYC4gQW5kIG5vIG90aGVyIGZ1bmN0aW9ucywgYmVzaWRlcyB0aGF0IGFuZCBhIHRyYWlsaW5nIG5ld2xpbmUsIHdlcmUgdG91Y2hlZC5cblxuTG9va2luZyBhdCBgYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYCwgdGhlIGNoYW5nZSB0byBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIHNlZW1zIHRvIGJlIHRoZSByZW1vdmFsIG9mIGBsZWFxICglcmJwLCAlcjEwLCAxKSwgJXIxMGAuXG5cbkRpdmluZyBkZWVwZXIsIEkgY2hlY2tlZCBvdGhlciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZmlsZXMgYW5kIHJlYWxpemVkIHRoZSBpbXBhY3QgaXMgbm90IGNvbmZpbmVkIHRvIHg4Ni4gVGhlIHJlbGV2YW50IHBhcnRzIGFyZTpcbiAtIGBhcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU2BcbiAtIGBhcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYFxuIC0gYGFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYFxuIC0gYGFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNgLCBgYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU2BcbiAtIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgXG5cblNvIG9uIGFtZDY0OlxuLSBga2VybmVsL2JwZi9maXh1cHMuY2A6IGBicGZfZG9fbWlzY19maXh1cHNgXG4tIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgOiBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gXG5cbkFzIGZvciB0aGUgY29uZmlncywgd2UgbmVlZCBgQlBGX1NZU0NBTExgIGZvciBgZml4dXBzLmNgICh2ZXJpZmllciwgYHN5c19icGZgKSBhbmQgYEJQRl9KSVRgIGZvciBgYnBmX3RpbWVkX21heV9nb3RvLlNgIChCUEYgSklUKS4gSSdsbCBkb3VibGUtY2hlY2sgZm9yIG90aGVyIHJlbGV2YW50IGNvbmZpZ3MsIGJ1dCB0aGlzIHNlZW1zIHRvIGJlXG5cbiIsIklucHV0VG9rZW5zIjoxNzU1NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6MDMuMTE3NzQ5NDNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTE2MTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9jaGVja190aW1lZF9tYXlfZ290b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvY29yZS5jPTMzOTQ9c3RhdGljIG5vaW5saW5lIHZvaWQgYnBmX3Byb2dfcmVwb3J0X21heV9nb3RvX3Zpb2xhdGlvbih2b2lkKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMzQwOS1cXG5rZXJuZWwvYnBmL2NvcmUuYzozNDEwOnU2NCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8oc3RydWN0IGJwZl90aW1lZF9tYXlfZ290byAqcClcXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDExLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6MDMuMTY2ODcwMzg3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3NzgwOTMyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2VzcywgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgcmVxdWVzdGVkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgQlBGIENvcmUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gSSd2ZSBnb3QgYSBodW5jaCBhYm91dCB0aGUgaXNzdWUsIGFuZCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIGBrZXJuZWwvYnBmL2NvcmUuY2AuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IHRoZSBjb2RlIGFyb3VuZCBsaW5lcyAzMzgwIHRocm91Z2ggMzQyMC4gVGhhdCBzZWN0aW9uIGxpa2VseSBkZWFscyB3aXRoIFsqKmluc2VydCB5b3VyIGh5cG90aGVzaXMgaGVyZSwgYmFzZWQgb24geW91ciBleHBlcnRpc2UgYW5kIHdoZXJlIHlvdSB3b3VsZCByZWFzb25hYmx5IGxvb2sgd2l0aGluIHRoZSBicGYgY29yZSoqXS4gSXQgY291bGQgYmUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gWyoqc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhhdCBhcmVhKipdLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gbXkgaHlwb3RoZXNpcyBieSByZXZpZXdpbmcgdGhlIGNvZGUgaXRzZWxmLiBIb3BlZnVsbHksIHRoaXMgYXJlYSB3aWxsIGdpdmUgbWUgc29tZSBjbGFyaXR5IG9uIFsqKnRoZSBwcm9ibGVtIHlvdSBhcmUgdHJ5aW5nIHRvIHNvbHZlKipdIGFuZCBmcm9tIHRoZXJlLCBhbGxvdyBtZSB0byBmaWd1cmUgb3V0IFsqKnRoZSBkZXNpcmVkIHJlc29sdXRpb24qKl0uIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTk1NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUzOjA1Ljk0NDk2Njc1NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQ0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwia2VybmVsL2JwZi9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzM4MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzM4MDpcXHR2b2lkIF9fd2VhayBhcmNoX2JwZl9zdGFja193YWxrKGJvb2wgKCpjb25zdW1lX2ZuKSh2b2lkICpjb29raWUsIHU2NCBpcCwgdTY0IHNwLCB1NjQgYnApLCB2b2lkICpjb29raWUpXFxuMzM4MTpcXHR7XFxuMzM4MjpcXHR9XFxuMzM4MzpcXHRcXG4zMzg0OlxcdGJvb2wgX193ZWFrIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcXG4zMzg1OlxcdHtcXG4zMzg2OlxcdFxcdHJldHVybiBmYWxzZTtcXG4zMzg3OlxcdH1cXG4zMzg4OlxcdFxcbjMzODk6XFx0dTY0IF9fd2VhayBhcmNoX2JwZl90aW1lZF9tYXlfZ290byh2b2lkKVxcbjMzOTA6XFx0e1xcbjMzOTE6XFx0XFx0cmV0dXJuIDA7XFxuMzM5MjpcXHR9XFxuMzM5MzpcXHRcXG4zMzk0OlxcdHN0YXRpYyBub2lubGluZSB2b2lkIGJwZl9wcm9nX3JlcG9ydF9tYXlfZ290b192aW9sYXRpb24odm9pZClcXG4zMzk1OlxcdHtcXG4zMzk2OlxcdCNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG4zMzk3OlxcdFxcdHN0cnVjdCBicGZfc3RyZWFtX3N0YWdlIHNzO1xcbjMzOTg6XFx0XFx0c3RydWN0IGJwZl9wcm9nICpwcm9nO1xcbjMzOTk6XFx0XFxuMzQwMDpcXHRcXHRwcm9nID0gYnBmX3Byb2dfZmluZF9mcm9tX3N0YWNrKCk7XFxuMzQwMTpcXHRcXHRpZiAoIXByb2cpXFxuMzQwMjpcXHRcXHRcXHRyZXR1cm47XFxuMzQwMzpcXHRcXHRicGZfc3RyZWFtX3N0YWdlKHNzLCBwcm9nLCBCUEZfU1RERVJSLCAoe1xcbjM0MDQ6XFx0XFx0XFx0YnBmX3N0cmVhbV9wcmludGsoc3MsIFxcXCJFUlJPUjogVGltZW91dCBkZXRlY3RlZCBmb3IgbWF5X2dvdG8gaW5zdHJ1Y3Rpb25cXFxcblxcXCIpO1xcbjM0MDU6XFx0XFx0XFx0YnBmX3N0cmVhbV9kdW1wX3N0YWNrKHNzKTtcXG4zNDA2OlxcdFxcdH0pKTtcXG4zNDA3OlxcdCNlbmRpZlxcbjM0MDg6XFx0fVxcbjM0MDk6XFx0XFxuMzQxMDpcXHR1NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKnApXFxuMzQxMTpcXHR7XFxuMzQxMjpcXHRcXHR1NjQgdGltZSA9IGt0aW1lX2dldF9tb25vX2Zhc3RfbnMoKTtcXG4zNDEzOlxcdFxcbjM0MTQ6XFx0XFx0LyogUG9wdWxhdGUgdGhlIHRpbWVzdGFtcCBmb3IgdGhpcyBzdGFjayBmcmFtZSwgYW5kIHJlZnJlc2ggY291bnQuICovXFxuMzQxNTpcXHRcXHRpZiAoIXAtXFx1MDAzZXRpbWVzdGFtcCkge1xcbjM0MTY6XFx0XFx0XFx0cC1cXHUwMDNldGltZXN0YW1wID0gdGltZTtcXG4zNDE3OlxcdFxcdFxcdHJldHVybiBCUEZfTUFYX1RJTUVEX0xPT1BTO1xcbjM0MTg6XFx0XFx0fVxcbjM0MTk6XFx0XFx0LyogQ2hlY2sgaWYgd2UndmUgZXhoYXVzdGVkIG91ciB0aW1lIHNsaWNlLCBhbmQgemVybyBjb3VudC4gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6MDUuOTQ1MTEyODA0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NjY1ODYyNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSB3ZXJlIHRoaW5raW5nIHRocm91Z2ggdGhlIHByb2Nlc3M6XG5cbioqVmVyaWZ5aW5nIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCBvbiB4ODYqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHN0cmFpZ2h0LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgb24geDg2IGFyY2hpdGVjdHVyZXMuIEknbSBnb2luZyB0byBkaWcgaW50byB0aGUgZGV0YWlscyB0byBtYWtlIHN1cmUgaXQncyBiZWhhdmluZyBhcyBleHBlY3RlZCBhbmQgY29uZmlybSBhbnkgcmVsZXZhbnQgY29uc2lkZXJhdGlvbnMuIEkgZXhwZWN0IHRoZXJlIG1pZ2h0IGJlIHNvbWUgc3BlY2lmaWMgeDg2IG51YW5jZXMgSSBuZWVkIHRvIGFjY291bnQgZm9yLCBnaXZlbiBpdHMgaW5zdHJ1Y3Rpb24gc2V0IGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcyBvciBwaXRmYWxscyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4MjEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUzOjA3LjgxMTcwMTU3MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAzNzY2MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9NDMzOT11NjQgYnBmX2FyY2hfdWFkZHJlc3NfbGltaXQodm9pZClcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MzQzLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzo0MzQ0OmJvb2wgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MzQ1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6MDcuODcyMDg1NjM3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4NTQyNzExODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgcHJpbWFyeSB0aGluZyBJJ20gc2VlaW5nIGlzIHRoYXQgb24geDg2LCB0aGUgc3lzdGVtIGNvcnJlY3RseSBpZGVudGlmaWVzIHdoZW4gdGhlIEpJVCBpcyBpbiB1c2UsIHRoYW5rcyB0byBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290bygpYC4gV2UgY2FuIGNvbmZpcm0gdGhpcyBiZWNhdXNlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMsIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfSklUYCwgYXJlIGluIHBsYWNlLlxuXG5MZXQncyBxdWlja2x5IHZlcmlmeSB0aGF0IHRoZSBtZXRhZGF0YSBmb3IgYHNldC1yZXN1bHRzYCBpcyBjb21wbGV0ZS4gWXVwLCBpdCdzIGFsbCB0aGVyZTogYFdvcnRoRnV6emluZ2AgaXMgc2V0IHRvIGB0cnVlYCwgd2hpY2ggbWFrZXMgc2Vuc2UgYmVjYXVzZSB0aGlzIHBhdGNoIGRpcmVjdGx5IG1vZGlmaWVzIGhvdyB0aGUgdmVyaWZpZXIgaGFuZGxlcyBgbWF5X2dvdG9gIGxvb3AgaW5zdHJ1Y3Rpb25zLiBUaGUgYFJlYXNvbmluZ2AgZXhwbGFpbnMgdGhpcyBwZXJmZWN0bHksIGRldGFpbGluZyB0aGUgYWx0ZXJhdGlvbnMgdG8gdGhlIGluc3RydWN0aW9uIHBhdGNoaW5nIHdpdGhpbiBgYnBmX2RvX21pc2NfZml4dXBzYCBhbmQgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0cmFtcG9saW5lIHVwZGF0ZSBpbiBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIGZvciB4ODYvYW1kNjQgYW5kIG90aGVyIGFyY2hpdGVjdHVyZXMuIFRoZSBjcml0aWNhbCBwb2ludCBpcyBwYXNzaW5nIHRoZSBmcmFtZSBwb2ludGVyIG9mZnNldCBjYWxjdWxhdGlvbiBkaXJlY3RseSBpbiB0aGUgQlBGIGJ5dGVjb2RlIGluc3RlYWQgb2YgaGFyZGNvZGluZyBpdCBpbiB0aGUgSklUIHRyYW1wb2xpbmUuIFRoaXMgY29kZSBpcyB0cmlnZ2VyZWQgYnkgbG9hZGluZyBhbmQgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyB3aXRoIHRoZSBgbWF5X2dvdG9gIGluc3RydWN0aW9uIHRocm91Z2ggdGhlIGBicGYoKWAgc3lzY2FsbC5cblxuSSd2ZSBhbHNvIGdvdCB0aGUgYEZvY3VzU3ltYm9sc2AgY292ZXJlZDogYGJwZl9kb19taXNjX2ZpeHVwc2AgYW5kIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIEFuZCB5ZXMsIGBFbmFibGVDb25maWdzYCBpcyBjb3JyZWN0bHkgc2V0IHRvIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfSklUYC5cblxuSSd2ZSBjaGVja2VkIHRvIHNlZSBpZiBhbnkgb3RoZXIgZnVuY3Rpb25zIGFyZSBtb2RpZmllZCBvciBhZmZlY3RlZC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGl0J3MganVzdCB0aGUgYWZvcmVtZW50aW9uZWQgYGJwZl9kb19taXNjX2ZpeHVwc2AgYW5kIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2Agb24gYW1kNjQuIFRoYXQncyBnb29kOyBrZWVwcyB0aGUgc2NvcGUgbGltaXRlZC5cblxuU2VlbXMgbGlrZSBldmVyeXRoaW5nJ3MgaW4gb3JkZXIuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTE2OSwiT3V0cHV0VG9rZW5zIjoxODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6MTEuNzI2MzU5MDgzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkyNDM3OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2RvX21pc2NfZml4dXBzXCIsXG4gICAgXCJhcmNoX2JwZl90aW1lZF9tYXlfZ290b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBieXRlY29kZSBmaXh1cHMgZm9yIHRpbWVkIG1heV9nb3RvIGluc3RydWN0aW9ucyBpbiB0aGUgdmVyaWZpZXIgKGJwZl9kb19taXNjX2ZpeHVwcyBpbiBrZXJuZWwvYnBmL2ZpeHVwcy5jKSBhbmQgdGhlIHg4NiBKSVQgdHJhbXBvbGluZSAoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8gaW4gYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TKSB0byBjYWxjdWxhdGUgdGhlIGNvdW50L3RpbWVzdGFtcCBwb2ludGVyIGluIEJQRiByZWdpc3RlcnMgYmVmb3JlIGludm9raW5nIHRoZSB0cmFtcG9saW5lLiBUaGlzIHRvdWNoZXMgY29yZSBCUEYgdmVyaWZpY2F0aW9uIGFuZCBleGVjdXRpb24gbG9naWMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9kb19taXNjX2ZpeHVwc1wiLFxuICAgIFwiYXJjaF9icGZfdGltZWRfbWF5X2dvdG9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBCUEYgYnl0ZWNvZGUgZml4dXBzIGZvciB0aW1lZCBtYXlfZ290byBpbnN0cnVjdGlvbnMgaW4gdGhlIHZlcmlmaWVyIChicGZfZG9fbWlzY19maXh1cHMgaW4ga2VybmVsL2JwZi9maXh1cHMuYykgYW5kIHRoZSB4ODYgSklUIHRyYW1wb2xpbmUgKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvIGluIGFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUykgdG8gY2FsY3VsYXRlIHRoZSBjb3VudC90aW1lc3RhbXAgcG9pbnRlciBpbiBCUEYgcmVnaXN0ZXJzIGJlZm9yZSBpbnZva2luZyB0aGUgdHJhbXBvbGluZS4gVGhpcyB0b3VjaGVzIGNvcmUgQlBGIHZlcmlmaWNhdGlvbiBhbmQgZXhlY3V0aW9uIGxvZ2ljIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUzOjExLjgwNTYxMDg1N1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAzMzYzMzY0MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MzoxMS44MDYyNTk3MzdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozMDMzNTY4MzExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBCUEYgdGltZWQgYG1heV9nb3RvYCB0cmFtcG9saW5lIGNhbGxpbmcgY29udmVudGlvbiBhY3Jvc3MgYXJjaGl0ZWN0dXJlcyAoeDg2XzY0LCBhcm02NCwgcmlzY3YsIHMzOTAsIHBvd2VycGMpIGFuZCB1cGRhdGVzIHRoZSB2ZXJpZmllciBpbnN0cnVjdGlvbiBmaXh1cHMgaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgLiBJbnN0ZWFkIG9mIHBhc3NpbmcgdGhlIHN0YWNrIG9mZnNldCBpbiBgQlBGX1JFR19BWGAgYW5kIGhhdmluZyBlYWNoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0cmFtcG9saW5lIGNvbXB1dGUgYEZQICsgb2Zmc2V0YCwgdGhlIEJQRiBieXRlY29kZSBub3cgY29tcHV0ZXMgdGhlIHBvaW50ZXIgYEJQRl9SRUdfRlAgKyBzdGFja19vZmZfY250YCBpbiBgQlBGX1JFR19BWGAgcHJpb3IgdG8gY2FsbGluZyBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKWAuXFxuXFxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nIG9yIHN0cnVjdCBmaWVsZHMgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiBsb2dpYy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBpbnN0cnVjdGlvbiBwYXRjaGluZyBvciByZWdpc3RlciBoYW5kbGluZyB3b3VsZCBtYW5pZmVzdCBhcyBvdXQtb2YtYm91bmRzIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIGNvbnRyb2wgZmxvdyBlcnJvcnMsIHdoaWNoIGFyZSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCB0aGUgQlBGIHZlcmlmaWVyLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ4ODE5NTdhZTVlMTJhNjE2YzNmYzg4NThhZjYwNjU0MzRlZmYxZGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDA2OjUxOjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuaW5kZXggYTlhODAyNzExYTdmOS4uNTMxNDhjOWExYzU4NCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG4rKysgYi9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuQEAgLTE0LDE2ICsxNCwxMCBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdHN0cFx0eDMsIHg0LCBbc3AsICM0OF1cbiBcbiBcdC8qXG4tXHQgKiBTdGFjayBkZXB0aCB3YXMgcGFzc2VkIGluIEJQRl9SRUdfQVggKHg5KSwgYWRkIGl0IHRvIHRoZSBCUEZfRlBcbi1cdCAqICh4MjUpIHRvIGdldCB0aGUgcG9pbnRlciB0byBjb3VudCBhbmQgdGltZXN0YW1wIGFuZCBwYXNzIGl0IGFzIHRoZVxuLVx0ICogZmlyc3QgYXJndW1lbnQgaW4geDAuXG4tXHQgKlxuLVx0ICogQmVmb3JlIGdlbmVyYXRpbmcgdGhlIGNhbGwgdG8gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8sIHRoZSB2ZXJpZmllclxuLVx0ICogZ2VuZXJhdGVzIGEgbG9hZCBpbnN0cnVjdGlvbiB1c2luZyBGUCwgaS5lLiBSRUdfQVggPSAqKHU2NCAqKShGUCAtXG4tXHQgKiBzdGFja19vZmZfY250KSwgc28gQlBGX1JFR19GUCAoeDI1KSBpcyBhbHdheXMgc2V0IHVwIGJ5IHRoZSBhcm02NFxuLVx0ICogaml0IGluIHRoaXMgY2FzZS5cbitcdCAqIEJQRl9SRUdfQVggKHg5KSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzXG4rXHQgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4geDAuXG4gXHQgKi9cbi1cdGFkZFx0eDAsIHg5LCB4MjVcbitcdG1vdlx0eDAsIHg5XG4gXHRibFx0YnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXG4gXHQvKiBCUEZfUkVHX0FYKHg5KSB3aWxsIGJlIHN0b3JlZCBpbnRvIGNvdW50LCBzbyBtb3ZlIHJldHVybiB2YWx1ZSB0byBpdC4gKi9cbiBcdG1vdlx0eDksIHgwXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbmluZGV4IDg0ZWNmNmZhN2Y1ZGMuLmQ4ODgyNWRkMzRmZWEgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG4rKysgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5AQCAtOCw3ICs4LDcgQEBcbiAgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIHRyYW1wb2xpbmUgZm9yIHBvd2VycGM2NFxuICAqXG4gICogQ3VzdG9tIEJQRiBjb252ZW50aW9uICh2ZXJpZmllci9KSVQpOlxuLSAqXHQtIGlucHV0OiAgc3RhY2sgb2Zmc2V0IGluIEJQRl9SRUdfQVggKHIxMilcbisgKlx0LSBpbnB1dDogIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlciBpbiBCUEZfUkVHX0FYIChyMTIpXG4gICpcdC0gb3V0cHV0OiB1cGRhdGVkIGNvdW50IGluIEJQRl9SRUdfQVggKHIxMilcbiAgKlxuICAqIENhbGwgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCBub3JtYWwgcG93ZXJwYzY0IEFCSTpcbkBAIC0zMiwxMCArMzIsMTAgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHRzdGQgICAgIHI4LCA3MihyMSlcbiBcbiBcdC8qXG4tXHQgKiByMyA9IEJQRl9SRUdfRlAgKyBCUEZfUkVHX0FYXG4tXHQgKiBCUEZfUkVHX0ZQIGlzIHIzMTsgQlBGX1JFR19BWCBpcyByMTIgKHN0YWNrIG9mZnNldCBpbiBieXRlcykuXG4rXHQgKiBCUEZfUkVHX0FYIChyMTIpIGNvbnRhaW5zIHRoZSBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXI7IHBhc3MgaXQgYXNcbitcdCAqIHRoZSBmaXJzdCBhcmd1bWVudCBpbiByMy5cbiBcdCAqL1xuLVx0YWRkICAgICByMywgcjMxLCByMTJcbitcdG1yICAgICAgcjMsIHIxMlxuIFx0YmwgICAgICBDRlVOQyhicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8pXG4gXG4gXHQvKiBQdXQgcmV0dXJuIHZhbHVlIGJhY2sgaW50byBBWCAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbmluZGV4IDAyYzYzN2Q4NzQyMDUuLjhjMDNlMjcyZTBiZjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC02LDEyICs2LDExIEBAXG4gXG4gLypcbiAgKiBUcmFtcG9saW5lIGZvciB0aGUgQlBGIHRpbWVkIG1heV9nb3RvIGxvb3AgYm91bmQuIEN1c3RvbSBjYWxsaW5nIGNvbnZlbnRpb246XG4tICpcdC0gaW5wdXQ6ICBzdGFjayBvZmZzZXQgaW4gQlBGX1JFR19BWCAodDApXG4rICpcdC0gaW5wdXQ6ICBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGX1JFR19BWCAodDApXG4gICpcdC0gb3V0cHV0OiB1cGRhdGVkIGNvdW50IGluIEJQRl9SRUdfQVggKHQwKVxuICAqXG4tICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSSwgd2hlcmVcbi0gKiBwdHIgPSBCUEZfUkVHX0ZQIChzNSkgKyBCUEZfUkVHX0FYICh0MCkuIEJQRiBSMC1SNSAoYTUsIGEwLWE0KSBhcmUgc2F2ZWRcbi0gKiBhY3Jvc3MgdGhlIGNhbGw7IEJQRl9SRUdfRlAgKHM1KSBpcyBjYWxsZWUtc2F2ZWQgYW5kIG5lZWRzIG5vIHNhdmluZy5cbisgKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLlxuKyAqIEJQRiBSMC1SNSAoYTUsIGEwLWE0KSBhcmUgc2F2ZWQgYWNyb3NzIHRoZSBjYWxsLlxuICAqL1xuIFxuIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuQEAgLTI4LDcgKzI3LDExIEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIFx0UkVHX1NcdGEzLCAxKlNaUkVHKHNwKVxuIFx0UkVHX1NcdGE0LCAwKlNaUkVHKHNwKVxuIFxuLVx0YWRkXHRhMCwgdDAsIHM1XG4rXHQvKlxuK1x0ICogQlBGX1JFR19BWCAodDApIGNvbnRhaW5zIHRoZSBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXI7IHBhc3MgaXQgYXNcbitcdCAqIHRoZSBmaXJzdCBhcmd1bWVudCBpbiBhMC5cbitcdCAqL1xuK1x0bXZcdGEwLCB0MFxuIFx0Y2FsbFx0YnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXG4gXHRtdlx0dDAsIGEwXG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IGM0Njg3MmIwNzFjZTcuLjQwOThjMzM3N2MyMTMgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jXG4rKysgYi9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMTg3Miw5ICsxODcyLDkgQEAgc3RhdGljIG5vaW5saW5lIGludCBicGZfaml0X2luc24oc3RydWN0IGJwZl9qaXQgKmppdCwgc3RydWN0IGJwZl9wcm9nICpmcCxcbiBcdFx0aWYgKCh2b2lkICopZnVuYyA9PSBhcmNoX2JwZl90aW1lZF9tYXlfZ290bykge1xuIFx0XHRcdC8qXG4gXHRcdFx0ICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSBoYXMgYSBzcGVjaWFsIEFCSTogdGhlXG4tXHRcdFx0ICogcGFyYW1ldGVycyBhcmUgaW4gQlBGX1JFR19BWCBhbmQgQlBGX1JFR18xMDsgdGhlXG4tXHRcdFx0ICogcmV0dXJuIHZhbHVlIGlzIGluIEJQRl9SRUdfQVg7IGFuZCBhbGwgR1BScyBleGNlcHRcbi1cdFx0XHQgKiBSRUdfVzAsIFJFR19XMSwgYW5kIEJQRl9SRUdfQVggYXJlIGNhbGxlZS1zYXZlZC5cbitcdFx0XHQgKiBwYXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZSBhcmUgaW4gQlBGX1JFR19BWDsgYWxsXG4rXHRcdFx0ICogR1BScyBleGNlcHQgUkVHX1cwLCBSRUdfVzEsIGFuZCBCUEZfUkVHX0FYIGFyZVxuK1x0XHRcdCAqIGNhbGxlZS1zYXZlZC5cbiBcdFx0XHQgKi9cbiBcbiBcdFx0XHQvKiBicmFzbCAlcjAsZnVuYyAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5pbmRleCAwNmY1NjdhNDYwZDdiLi5lMzRjOTk5ODJjNGEyIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuKysrIGIvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuQEAgLTIxLDkgKzIxLDkgQEBcbiBcbiBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdC8qXG4tXHQgKiBUaGlzIGZ1bmN0aW9uIGhhcyBhIHNwZWNpYWwgQUJJOiB0aGUgcGFyYW1ldGVycyBhcmUgaW4gJXIxMiBhbmRcbi1cdCAqICVyMTM7IHRoZSByZXR1cm4gdmFsdWUgaXMgaW4gJXIxMjsgYWxsIEdQUnMgZXhjZXB0ICVyMCwgJXIxLCBhbmRcbi1cdCAqICVyMTIgYXJlIGNhbGxlZS1zYXZlZDsgYW5kIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBpbiAlcjAuXG4rXHQgKiBUaGlzIGZ1bmN0aW9uIGhhcyBhIHNwZWNpYWwgQUJJOiB0aGUgcGFyYW1ldGVyIGFuZCByZXR1cm4gdmFsdWUgYXJlXG4rXHQgKiBpbiAlcjEyOyBhbGwgR1BScyBleGNlcHQgJXIwLCAlcjEsIGFuZCAlcjEyIGFyZSBjYWxsZWUtc2F2ZWQ7IGFuZFxuK1x0ICogdGhlIHJldHVybiBhZGRyZXNzIGlzIGluICVyMC5cbiBcdCAqL1xuIFx0c3RtZyAlcjIsJXI1LEZSQU1FX09GRitSMl9PRkYoJXIxNSlcbiBcdHN0ZyAlcjE0LEZSQU1FX09GRitSMTRfT0ZGKCVyMTUpXG5AQCAtMzMsNyArMzMsNyBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdGxheSAlcjE1LC1GUkFNRV9TSVpFKCVyMTUpXG4gXHRzdGcgJXIxLF9fU0ZfQkFDS0NIQUlOKCVyMTUpXG4gXG4tXHRsYXkgJXIyLDAoJXIxMiwlcjEzKVxuK1x0bGdyICVyMiwlcjEyXG4gXHRicmFzbCAlcjE0LGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuIFx0bGdyICVyMTIsJXIyXG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5pbmRleCA1NGM2OTBjYWUxOTA4Li42ZTlkOWU3YzJiMWQ2IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG4rKysgYi9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC0xMSwxMiArMTEsNiBAQFxuIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIFx0QU5OT1RBVEVfTk9FTkRCUlxuIFxuLVx0Lypcbi1cdCAqIHIxMCBwYXNzZXMgdXMgc3RhY2sgZGVwdGgsIGxvYWQgdGhlIHBvaW50ZXIgdG8gY291bnQgYW5kIHRpbWVzdGFtcFxuLVx0ICogaW50byByMTAgYnkgYWRkaW5nIGl0IHRvIEJQRiBmcmFtZSBwb2ludGVyLlxuLVx0ICovXG4tXHRsZWFxICglcmJwLCAlcjEwLCAxKSwgJXIxMFxuLVxuIFx0LyogU2V0dXAgZnJhbWUuICovXG4gXHRwdXNocSAlcmJwXG4gXHRtb3ZxICVyc3AsICVyYnBcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2ZpeHVwcy5jIGIva2VybmVsL2JwZi9maXh1cHMuY1xuaW5kZXggNjViNDQxZTRhMzUxNy4uZGM1OTUwMWEzMmJiZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvZml4dXBzLmNcbisrKyBiL2tlcm5lbC9icGYvZml4dXBzLmNcbkBAIC0xNzk3LDIwICsxNzk3LDIwIEBAIGludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcdFx0XHRzdGFja19kZXB0aF9leHRyYSA9IDE2O1xuIFx0XHRcdGluc25fYnVmWzBdID0gQlBGX0xEWF9NRU0oQlBGX0RXLCBCUEZfUkVHX0FYLCBCUEZfUkVHXzEwLCBzdGFja19vZmZfY250KTtcbiBcdFx0XHRpZiAoaW5zbi1cdTAwM2VvZmYgXHUwMDNlPSAwKVxuLVx0XHRcdFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVx1MDAzZW9mZiArIDUpO1xuK1x0XHRcdFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVx1MDAzZW9mZiArIDYpO1xuIFx0XHRcdGVsc2VcbiBcdFx0XHRcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cdTAwM2VvZmYgLSAxKTtcbiBcdFx0XHRpbnNuX2J1ZlsyXSA9IEJQRl9BTFU2NF9JTU0oQlBGX1NVQiwgQlBGX1JFR19BWCwgMSk7XG4tXHRcdFx0aW5zbl9idWZbM10gPSBCUEZfSk1QX0lNTShCUEZfSk5FLCBCUEZfUkVHX0FYLCAwLCAyKTtcbitcdFx0XHRpbnNuX2J1ZlszXSA9IEJQRl9KTVBfSU1NKEJQRl9KTkUsIEJQRl9SRUdfQVgsIDAsIDMpO1xuIFx0XHRcdC8qXG4tXHRcdFx0ICogQVggaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBwYXNzIGluIHN0YWNrX29mZl9jbnRcbi1cdFx0XHQgKiAodG8gYWRkIHRvIHIxMC9mcCksIGFuZCBhbHNvIGFzIHRoZSByZXR1cm4gdmFsdWUgb2Zcbi1cdFx0XHQgKiB0aGUgY2FsbCB0byBhcmNoX2JwZl90aW1lZF9tYXlfZ290by5cbitcdFx0XHQgKiBBWCBpcyB1c2VkIHRvIHBhc3MgRlAgKyBzdGFja19vZmZfY250IGFzIHRoZSBhcmd1bWVudCB0b1xuK1x0XHRcdCAqIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCksIGFuZCBhbHNvIGhvbGRzIGl0cyByZXR1cm4gdmFsdWUuXG4gXHRcdFx0ICovXG4tXHRcdFx0aW5zbl9idWZbNF0gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpO1xuLVx0XHRcdGluc25fYnVmWzVdID0gQlBGX0VNSVRfQ0FMTChhcmNoX2JwZl90aW1lZF9tYXlfZ290byk7XG4tXHRcdFx0aW5zbl9idWZbNl0gPSBCUEZfU1RYX01FTShCUEZfRFcsIEJQRl9SRUdfMTAsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpO1xuLVx0XHRcdGNudCA9IDc7XG4rXHRcdFx0aW5zbl9idWZbNF0gPSBCUEZfTU9WNjRfUkVHKEJQRl9SRUdfQVgsIEJQRl9SRUdfRlApO1xuK1x0XHRcdGluc25fYnVmWzVdID0gQlBGX0FMVTY0X0lNTShCUEZfQURELCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcbitcdFx0XHRpbnNuX2J1Zls2XSA9IEJQRl9FTUlUX0NBTEwoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pO1xuK1x0XHRcdGluc25fYnVmWzddID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcbitcdFx0XHRjbnQgPSA4O1xuIFxuIFx0XHRcdG5ld19wcm9nID0gYnBmX3BhdGNoX2luc25fZGF0YShlbnYsIGkgKyBkZWx0YSwgaW5zbl9idWYsIGNudCk7XG4gXHRcdFx0aWYgKCFuZXdfcHJvZylcbkBAIC0yNjYxLDQgKzI2NjEsMyBAQCBpbnQgYnBmX3JlbW92ZV9mYXN0Y2FsbF9zcGlsbHNfZmlsbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcbiBcdHJldHVybiAwO1xuIH1cbi1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbmluZGV4IDMyOGNmNjMwMjEwYTIuLmM1OTk2ZDlkYzhjYzkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuY1xuQEAgLTYzNSwxNSArNjM1LDE2IEBAIF9feGxhdGVkKFwiNDogcjAgPSBcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcIilcbiBfX3hsYXRlZChcIi4uLlwiKVxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBzdGFydHMgKi9cbiBfX3hsYXRlZChcIjY6IHIxMiA9ICoodTY0ICopKHIxMCAtMjQpXCIpXG4tX194bGF0ZWQoXCI3OiBpZiByMTIgPT0gMHgwIGdvdG8gcGMrNlwiKVxuK19feGxhdGVkKFwiNzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzdcIilcbiBfX3hsYXRlZChcIjg6IHIxMiAtPSAxXCIpXG4tX194bGF0ZWQoXCI5OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMrMlwiKVxuLV9feGxhdGVkKFwiMTA6IHIxMiA9IC0yNFwiKVxuLV9feGxhdGVkKFwiMTE6IGNhbGwgdW5rbm93blwiKVxuLV9feGxhdGVkKFwiMTI6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXCIpXG4rX194bGF0ZWQoXCI5OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMrM1wiKVxuK19feGxhdGVkKFwiMTA6IHIxMiA9IHIxMFwiKVxuK19feGxhdGVkKFwiMTE6IHIxMiArPSAtMjRcIilcbitfX3hsYXRlZChcIjEyOiBjYWxsIHVua25vd25cIilcbitfX3hsYXRlZChcIjEzOiAqKHU2NCAqKShyMTAgLTI0KSA9IHIxMlwiKVxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBlbmRzICovXG4tX194bGF0ZWQoXCIxMzogKih1NjQgKikocjEwIC04KSA9IHIxXCIpXG4tX194bGF0ZWQoXCIxNDogZXhpdFwiKVxuK19feGxhdGVkKFwiMTQ6ICoodTY0ICopKHIxMCAtOCkgPSByMVwiKVxuK19feGxhdGVkKFwiMTU6IGV4aXRcIilcbiBfX3N1Y2Nlc3NcbiBfX25ha2VkIHZvaWQgbWF5X2dvdG9faW50ZXJhY3Rpb25feDg2XzY0KHZvaWQpXG4ge1xuQEAgLTY3NiwxNSArNjc3LDE2IEBAIF9feGxhdGVkKFwiMjogcjEgPSAxXCIpXG4gX194bGF0ZWQoXCIzOiBjYWxsIGJwZl9nZXRfc21wX3Byb2Nlc3Nvcl9pZFwiKVxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBzdGFydHMgKi9cbiBfX3hsYXRlZChcIjQ6IHIxMiA9ICoodTY0ICopKHIxMCAtMjQpXCIpXG4tX194bGF0ZWQoXCI1OiBpZiByMTIgPT0gMHgwIGdvdG8gcGMrNlwiKVxuK19feGxhdGVkKFwiNTogaWYgcjEyID09IDB4MCBnb3RvIHBjKzdcIilcbiBfX3hsYXRlZChcIjY6IHIxMiAtPSAxXCIpXG4tX194bGF0ZWQoXCI3OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMrMlwiKVxuLV9feGxhdGVkKFwiODogcjEyID0gLTI0XCIpXG4tX194bGF0ZWQoXCI5OiBjYWxsIHVua25vd25cIilcbi1fX3hsYXRlZChcIjEwOiAqKHU2NCAqKShyMTAgLTI0KSA9IHIxMlwiKVxuK19feGxhdGVkKFwiNzogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzNcIilcbitfX3hsYXRlZChcIjg6IHIxMiA9IHIxMFwiKVxuK19feGxhdGVkKFwiOTogcjEyICs9IC0yNFwiKVxuK19feGxhdGVkKFwiMTA6IGNhbGwgdW5rbm93blwiKVxuK19feGxhdGVkKFwiMTE6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXCIpXG4gLyogbWF5X2dvdG8gZXhwYW5zaW9uIGVuZHMgKi9cbi1fX3hsYXRlZChcIjExOiAqKHU2NCAqKShyMTAgLTgpID0gcjFcIilcbi1fX3hsYXRlZChcIjEyOiBleGl0XCIpXG4rX194bGF0ZWQoXCIxMjogKih1NjQgKikocjEwIC04KSA9IHIxXCIpXG4rX194bGF0ZWQoXCIxMzogZXhpdFwiKVxuIF9fc3VjY2Vzc1xuIF9fbmFrZWQgdm9pZCBtYXlfZ290b19pbnRlcmFjdGlvbih2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuY1xuaW5kZXggZGI3ZTMwZGEyMzRmMS4uMTcyMTg5NzE2MGRjOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmNcbkBAIC05MCwxNSArOTAsMTYgQEAgX19hcmNoX2xvb25nYXJjaFxuIF9feGxhdGVkKFwiMDogKih1NjQgKikocjEwIC0xNikgPSA2NTUzNVwiKVxuIF9feGxhdGVkKFwiMTogKih1NjQgKikocjEwIC04KSA9IDBcIilcbiBfX3hsYXRlZChcIjI6IHIxMiA9ICoodTY0ICopKHIxMCAtMTYpXCIpXG4tX194bGF0ZWQoXCIzOiBpZiByMTIgPT0gMHgwIGdvdG8gcGMrNlwiKVxuK19feGxhdGVkKFwiMzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzdcIilcbiBfX3hsYXRlZChcIjQ6IHIxMiAtPSAxXCIpXG4tX194bGF0ZWQoXCI1OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMrMlwiKVxuLV9feGxhdGVkKFwiNjogcjEyID0gLTE2XCIpXG4tX194bGF0ZWQoXCI3OiBjYWxsIHVua25vd25cIilcbi1fX3hsYXRlZChcIjg6ICoodTY0ICopKHIxMCAtMTYpID0gcjEyXCIpXG4tX194bGF0ZWQoXCI5OiByMCA9IDFcIilcbi1fX3hsYXRlZChcIjEwOiByMCA9IDJcIilcbi1fX3hsYXRlZChcIjExOiBleGl0XCIpXG4rX194bGF0ZWQoXCI1OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMrM1wiKVxuK19feGxhdGVkKFwiNjogcjEyID0gcjEwXCIpXG4rX194bGF0ZWQoXCI3OiByMTIgKz0gLTE2XCIpXG4rX194bGF0ZWQoXCI4OiBjYWxsIHVua25vd25cIilcbitfX3hsYXRlZChcIjk6ICoodTY0ICopKHIxMCAtMTYpID0gcjEyXCIpXG4rX194bGF0ZWQoXCIxMDogcjAgPSAxXCIpXG4rX194bGF0ZWQoXCIxMTogcjAgPSAyXCIpXG4rX194bGF0ZWQoXCIxMjogZXhpdFwiKVxuIF9fc3VjY2Vzc1xuIF9fbmFrZWQgdm9pZCBtYXlfZ290b19iYXRjaF8yKHZvaWQpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jXG5pbmRleCAzZDk5OTRhNTI0NjRlLi42MzliNTMzNjNjOWFjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suY1xuQEAgLTcwLDYgKzcwLDI1IEBAIF9fbmFrZWQgdm9pZCBub19wcml2YXRlX3N0YWNrX25lc3RlZCh2b2lkKVxuIFwiXHQ6OjogX19jbG9iYmVyX2FsbCk7XG4gfVxuIFxuK1NFQyhcImZlbnRyeS9icGZfZmVudHJ5X3Rlc3Q5XCIpXG4rX19kZXNjcmlwdGlvbihcIlByaXZhdGUgc3RhY2ssIHRpbWVkIG1heV9nb3RvXCIpXG4rX19zdWNjZXNzIF9fcmV0dmFsKDApXG4rX19hcmNoX3g4Nl82NFxuK19faml0ZWQoXCJcdG1vdmFic3FcdCQweHt7Lip9fSwgJXI5XCIpXG4rX19qaXRlZChcIi4uLlwiKVxuK19faml0ZWQoXCJcdG1vdnFcdCVyOSwgJXIxMFwiKVxuK19fYXJjaF9hcm02NFxuK19faml0ZWQoXCJcdG1vdlx0eDksIHgyNVwiKVxuK2ludCBwcml2YXRlX3N0YWNrX3RpbWVkX21heV9nb3RvKHZvaWQpXG4re1xuK1x0dm9sYXRpbGUgX191NjQgc3RhY2tfc3BhY2VbMTZdID0ge307XG4rXG4rXHR3aGlsZSAoY2FuX2xvb3ApXG4rXHRcdDtcbitcbitcdHJldHVybiBzdGFja19zcGFjZVswXTtcbit9XG4rXG4gX191c2VkXG4gX19uYWtlZCBzdGF0aWMgdm9pZCBjdW11bGF0aXZlX3N0YWNrX2RlcHRoX3N1YnByb2codm9pZClcbiB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MzoxMS44MDYyNjI2MTdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjUzMzMwMjkwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBQYXRjaCBhbmQgSXRzIEtBU0FOL0tNU0FOIEltcGxpY2F0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkaXNzZWN0IHdoYXQgaXQncyBkb2luZywgdGhlIHByb2JsZW0gaXQncyBhZGRyZXNzaW5nLCBhbmQgaG93IGl0IG1pZ2h0IGltcGFjdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBLQVNBTiBhbmQgS01TQU4uXG5cbkZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhlIG1vZGlmaWNhdGlvbnMuIEl0IGxvb2tzIGxpa2Ugd2UncmUgdG91Y2hpbmcgYGtlcm5lbC9icGYvZml4dXBzLmNgIGFuZCBzb21lIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBKSVQvdHJhbXBvbGluZSBmaWxlcyDigJMgc3BlY2lmaWNhbGx5IHRoZSBvbmVzIHJlbGF0ZWQgdG8gQlBGIHRpbWVkIGBtYXlfZ290b2AgKGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgZm9yIGFybTY0LCBwb3dlcnBjLCByaXNjdiwgczM5MCwgYW5kIHg4NikuIFRoaXMgaW1wbGllcyBzb21lIGNyaXRpY2FsIGNoYW5nZXMgaW4gaG93IEJQRiBjb2RlIGhhbmRsZXMganVtcHMgdW5kZXIgdGltZWQgY29uZGl0aW9ucy5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gYGtlcm5lbC9icGYvZml4dXBzLmNgIGFyb3VuZCBsaW5lIDE3OTcuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBiZWhhdmlvciBvZiBgYnBmX3RpbWVkX21heV9nb3RvYCBkaXJlY3RseS4gSSdsbCBlaXRoZXIgcmVhY2ggZm9yIGBncmVwcGVyYCBvciBqdXN0IHJlYWQgdGhlIGZpbGUgZGlyZWN0bHkgdG8gZ3Jhc3AgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSB0aGVyZS4gTGV0J3Mgc2VlIHdoYXQncyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMjQsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MzoxNC4zMzk1Njc5OVoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM0MzQwNzE2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9Nj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTIwLVxcdG1vdlxcdHgwLCB4OVxcbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjIxOlxcdGJsXFx0YnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMjItXFx0LyogQlBGX1JFR19BWCh4OSkgd2lsbCBiZSBzdG9yZWQgaW50byBjb3VudCwgc28gbW92ZSByZXR1cm4gdmFsdWUgdG8gaXQuICovXFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEzLSAqXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxNDogKiBDYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggbm9ybWFsIHBvd2VycGM2NCBBQkk6XFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xNS0gKiBcXHQtIHIzID0gcHRyLCByZXR1cm4gaW4gcjNcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9MjA9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM4LVxcdG1yICAgICAgcjMsIHIxMlxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6Mzk6XFx0YmwgICAgICBDRlVOQyhicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8pXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy00MC1cXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTExLSAqXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MTI6ICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSS5cXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMy0gKiBCUEYgUjAtUjUgKGE1LCBhMC1hNCkgYXJlIHNhdmVkIGFjcm9zcyB0aGUgY2FsbC5cXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTE2PVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzQtXFx0bXZcXHRhMCwgdDBcXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzozNTpcXHRjYWxsXFx0YnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzYtXFx0bXZcXHR0MCwgYTBcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9MjI9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuLS1cXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM2LVxcdGxnciAlcjIsJXIxMlxcbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6Mzc6XFx0YnJhc2wgJXIxNCxicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM4LVxcdGxnciAlcjEyLCVyMlxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTExPVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTMzLVxcdENBTExfREVQVEhfQUNDT1VOVFxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzozNDpcXHRjYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zNS1cXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTI1Mz11NjQgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8odm9pZCk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMjU0OnU2NCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8oc3RydWN0IGJwZl90aW1lZF9tYXlfZ290byAqKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTEyNTUtYm9vbCBicGZfaGVscGVyX2NoYW5nZXNfcGt0X2RhdGEoZW51bSBicGZfZnVuY19pZCBmdW5jX2lkKTtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTMzOTQ9c3RhdGljIG5vaW5saW5lIHZvaWQgYnBmX3Byb2dfcmVwb3J0X21heV9nb3RvX3Zpb2xhdGlvbih2b2lkKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMzQwOS1cXG5rZXJuZWwvYnBmL2NvcmUuYzozNDEwOnU2NCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8oc3RydWN0IGJwZl90aW1lZF9tYXlfZ290byAqcClcXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDExLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6MTYuNjgyOTgyNjQ1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM5Nzk5MzA5NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IEFQSSBjYWxsIGFuZCB3aGF0IEknZCBiZSB0aGlua2luZyBhYm91dCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkLlxuXG4qKkRlZXAgRGl2ZSBpbnRvIGBmaXh1cHMuY2AgYW5kIGEgS2V5IFNlY3Rpb24gb2YgQlBGIEtlcm5lbCBDb2RlKipcblxuQWxyaWdodCwgc28gdGhlIGNhbGwgbG9nIGZsYWdnZWQgYGRlZmF1bHRfYXBpOnJlYWQtZmlsZWAgdGFyZ2V0aW5nIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCwgc3BlY2lmaWNhbGx5IGZyb20gbGluZSAxNzgwIHRvIGxpbmUgMTgzMCAoNTAgbGluZXMpLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gYGZpeHVwcy5jYCBpbiB0aGUgQlBGIGtlcm5lbCBjb2RlIGlzIHdoZXJlIGEgbG90IG9mIHRoZSwgd2VsbCwgKmZpeHVwcyogaGFwcGVuIOKAkyBjcnVjaWFsIGFkanVzdG1lbnRzIGFuZCBtb2RpZmljYXRpb25zIHRvIHRoZSBCUEYgYnl0ZWNvZGUgYmVmb3JlIGl0J3MgYWN0dWFsbHkgZXhlY3V0ZWQuIFRoaXMgZmlsZSBpcyBvZnRlbiBhIGNyaXRpY2FsIGFyZWEgZm9yIGFkZHJlc3NpbmcgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgaGFuZGxpbmcgY29tcGF0aWJpbGl0eSBpc3N1ZXMgYWNyb3NzIGRpZmZlcmVudCBrZXJuZWwgdmVyc2lvbnMsIG9yIGltcGxlbWVudGluZyBhZHZhbmNlZCBmZWF0dXJlcy4gR2l2ZW4gdGhlIGxpbmUgcmFuZ2UsIEknZCB3YW50IHRvIGdldCBhIGxvb2sgYXQgdGhpcy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0cyB3b3VsZCBiZTpcblxuKiAgICoqV2hhdCdzIHRoZSBjb250ZXh0PyoqIFdoeSBpcyB0aGlzIHNlY3Rpb24gYmVpbmcgZmxhZ2dlZD8gSXMgdGhlcmUgYW4gdW51c3VhbCBwYXR0ZXJuIGluIHRoZSBzeXN0ZW0gdGhhdCdzIGRyaXZpbmcgdGhpcz8gSXMgdGhpcyBmcm9tIHRoZSBzb3VyY2UgdHJlZSBvciBpbiBkZXBsb3llZCBwcm9kdWN0aW9uPyBVbmRlcnN0YW5kaW5nIHRoZSBsYXJnZXIgcGljdHVyZSBpcyBrZXkgdG8gaW50ZXJwcmV0aW5nIHRoZSBjYWxsLlxuKiAgICoqV2hhdCdzICpiZWluZyogZml4ZWQ/KiogVGhlIHNwZWNpZmljIGZpeHVwIG1lY2hhbmlzbXMgdGhhdCBhcmUgaGFwcGVuaW5nIGluIHRoaXMgc2VnbWVudCBvZiBjb2RlIGFyZSB0aGUgbW9zdCBjcml0aWNhbC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYWRqdXN0bWVudHMgdG8gaW5zdHJ1Y3Rpb24gb2Zmc2V0cywgaGFuZGxpbmcgb2YgdW5zdXBwb3J0ZWQgb3Bjb2RlcywgZGVhbGluZyB3aXRoIHBvdGVudGlhbCBtZW1vcnkgYWNjZXNzIHZpb2xhdGlvbnMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgdHlwZSBvZiBmaXh1cCBoZWF2aWx5IGluZGljYXRlcyB0aGUgcG9zc2libGUgcHJvYmxlbS5cbiogICAqKktlcm5lbCBWZXJzaW9uIENvbnRleHQ6KiogVGhpcyBzZWN0aW9uIGxpa2VseSBjaGFuZ2VzIHF1aXRlIGEgYml0IGJldHdlZW4ga2VybmVsIHZlcnNpb25zLiBLbm93aW5nIHRoZSB2ZXJzaW9uIGhlbHBzIHplcm8gaW4gb24gd2hhdCB2dWxuZXJhYmlsaXRpZXMgYXJlIHByZXNlbnQsIGFuZCBob3cgdGhleSBhcmUgYWRkcmVzc2VkLiBJcyB0aGlzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBrZXJuZWwgcGF0Y2g/XG4qICAgKipTZWN1cml0eSBJbXBsaWNhdGlvbnM6KiogSWYgdGhpcyBpbnZvbHZlcyBtZW1vcnkgbWFuaXB1bGF0aW9uLCBvciBwb3RlbnRpYWxseSBvdmVyd3JpdGluZyBCUEYgYnl0ZWNvZGUsIHRoYXQncyBpbW1lZGlhdGVseSBjb25jZXJuaW5nIGZyb20gYSBzZWN1cml0eSBzdGFuZHBvaW50LiBDb3VsZCB0aGlzIGJlIHJlbGF0ZWQgdG8gYSBrbm93biB2dWxuZXJhYmlsaXR5LCBhIG1pdGlnYXRpb24gc3RyYXRlZ3ksIG9yIGEgbm92ZWwgYXR0YWNrIHZlY3Rvcj8gSSdkIGJlIGxvb2tpbmcgZm9yIHRoZSB0ZWxsLXRhbGUgc2lnbnMuXG4qICAgKipQZXJmb3JtYW5jZSBJbXBhY3Q6KiogRml4dXBzIGNhbiBpbnRyb2R1Y2Ugb3ZlcmhlYWQsIHNvIGl0J3MgZ29vZCB0byBiZSBhd2FyZSBvZiB0aGUgcnVudGltZSBjb3N0cy4gSG93IGNyaXRpY2FsIGlzIHRoaXMgcGVyZm9ybWFuY2UgaGl0IGZvciB0aGUgb3ZlcmFsbCBvcGVyYXRpb24gb2YgdGhlIHN5c3RlbT9cblxuU28sIEknZCBiZSBtZW50YWxseSBwcmVwYXJpbmcgdG8gZGlnIGludG8gdGhhdCBzcGVjaWZpYyBzZWN0aW9uIG9mIGBmaXh1cHMuY2AsIGxvb2tpbmcgZm9yIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBCYXNlZCBvbiBleHBlcmllbmNlLCBJIHdvdWxkIGhhdmUgc3VzcGljaW9ucyB0byBleHBsb3JlIC0gYnV0IEknZCBuZWVkIHRvIGV4YW1pbmUgdGhlIHNvdXJjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODgxOSwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6MjAuNjYyOTE3MzkzWiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3MzM2NDM5ODU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIFBhdGNoOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIGxldCdzIGRpc3NlY3QgdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCBmb2N1cyBpcyB0byB1bmRlcnN0YW5kIHByZWNpc2VseSB3aGF0J3MgY2hhbmdpbmcgYW5kIHdoeSwgZXNwZWNpYWxseSBnaXZlbiBpdHMgcHJveGltaXR5IHRvIHRoZSBCUEYgaW5mcmFzdHJ1Y3R1cmUsIGFuIGFyZWEgSSdtIGludGltYXRlbHkgZmFtaWxpYXIgd2l0aC5cblxuRmlyc3QgZ2xhbmNlIHRlbGxzIG1lIHRoaXMgcmV2b2x2ZXMgYXJvdW5kIGhvdyB3ZSBoYW5kbGUgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBhbmQgdGhlIHJlbGF0ZWQgc3RhY2sgb2Zmc2V0IGNhbGN1bGF0aW9ucyB3aXRoaW4gdGhlIEJQRiBieXRlY29kZS4gVGhlIGNvcmUgYWx0ZXJhdGlvbiBhcHBlYXJzIHRvIGJlIGluIGBicGZfZG9fbWlzY19maXh1cHNgIHdpdGhpbiBga2VybmVsL2JwZi9maXh1cHMuY2AuXG5cblByZXZpb3VzbHksIHRoZSBjb2RlIGRpcmVjdGx5IGxvYWRlZCBgc3RhY2tfb2ZmX2NudGAgaW50byBgQlBGX1JFR19BWGAsIHdoaWNoIEkgcmVjYWxsIHdhcyB0aGVuIHVzZWQgYXMgYW4gYXJndW1lbnQgcGFzc2VkIHRvIGEgdHJhbXBvbGluZSwgd2hlcmUgdGhlIGFjdHVhbCBzdGFjayBwb2ludGVyIGNhbGN1bGF0aW9uIGhhcHBlbmVkLiBUaGUgcGF0Y2ggaW5kaWNhdGVzIGEgc2hpZnQgaW4gdGhpcyBhcHByb2FjaC5cblxuVGhlIGNvZGUgbm93IGNhbGN1bGF0ZXMgdGhlIGVmZmVjdGl2ZSBzdGFjayBwb2ludGVyLCBgRlAgKyBzdGFja19vZmZfY250YCwgd2l0aGluIHRoZSAqQlBGIGJ5dGVjb2RlIGl0c2VsZiogYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nIHBvaW50ZXIgaW50byBgQlBGX1JFR19BWGAgYmVmb3JlIHRoZSBjYWxsLiBUaGlzIGlzIHRoZSBjcml0aWNhbCBjaGFuZ2UuIFNwZWNpZmljYWxseSwgaXQgaW52b2x2ZXMgdGhlIGZvbGxvd2luZyBhZGp1c3RtZW50czogdGhlIGp1bXAgb2Zmc2V0IGlzIGNoYW5nZWQgZnJvbSBgaW5zbi1cdTAwM2VvZmYgKyA1YCB0byBgaW5zbi1cdTAwM2VvZmYgKyA2YCwgYW5kIGBpbnNuX2J1Zls0XWAgbm93IGNvcGllcyB0aGUgRnJhbWUgUG9pbnRlciB0byBgQVhgLiBgaW5zbl9idWZbNV1gIHRoZW4gYWRkcyBgc3RhY2tfb2ZmX2NudGAgdG8gdGhlIEZyYW1lIFBvaW50ZXIgaW4gYEFYYC4gRnVydGhlciwgdGhlIEp1bXAgaW5zdHJ1Y3Rpb24gb2Zmc2V0IGlzIGNoYW5nZWQgZnJvbSAyIHRvIDMsIGFuZCB0aGUgY291bnQgaXMgdXBkYXRlZCB0byA4LlxuXG5UaGUgY29tbWVudCBtZW50aW9ucyB0aGlzIGlzIGNsZWFuZXIgd2hlbiBkZWFsaW5nIHdpdGggcHJpdmF0ZSBzdGFja3MsIGFuZCBJIGltbWVkaWF0ZWx5IHNlZSB0aGUgYmVuZWZpdC4gQnkgY2FsY3VsYXRpbmcgdGhlIHN0YWNrIHBvaW50ZXIgd2l0aGluIHRoZSBCUEYgcHJvZ3JhbSwgd2UgY2VudHJhbGl6ZSB0aGlzIGxvZ2ljLCBkZWNvdXBsaW5nIHRoZSB0cmFtcG9saW5lIGZyb20gdGhlIHNwZWNpZmljcyBvZiB0aGUgdW5kZXJseWluZyBhcmNoaXRlY3R1cmUncyBmcmFtZSBwb2ludGVyIGxheW91dCAoZS5nLiwgaW4gYSBwcml2YXRlIHN0YWNrIGNvbnRleHQsIHRoZSBmcmFtZSBwb2ludGVyIG1pZ2h0IHBvaW50IHRvIHRoZSBwcml2YXRlIHN0YWNrLCBub3QgdGhlIG5hdGl2ZSBgJXJicGApLlxuXG5Ob3csIEknbGwgbmVlZCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgYnkgdGFraW5nIGEgcGVlayBhdCB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRyYW1wb2xpbmUgaW1wbGVtZW50YXRpb25zIChhcm02NCwgcG93ZXJwYywgcmlzY3YsIHMzOTAsIHg4NikuIEl0IHNlZW1zIHRoZXkgcHJldmlvdXNseSByZWNlaXZlZCB0aGUgb2Zmc2V0LCBhZGRlZCBpdCB0byB0aGUgZnJhbWUgcG9pbnRlciwgYW5kIG5vdyByZWNlaXZlIHRoZSBjYWxjdWxhdGVkIHBvaW50ZXIgZGlyZWN0bHkgdmlhIEFYLlxuXG5UaGUgcGF0Y2gncyBsb2dpYyBpcyBzb3VuZC4gV2UgY2FsY3VsYXRlIHRoZSBwb2ludGVyIGluIGJ5dGVjb2RlIHVzaW5nIHRoZSBmcmFtZSBwb2ludGVyLCBhbmQgdGhlbiBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gLCB3aGljaCBwcmVzdW1hYmx5IHRoZW4gcGFzc2VzIHRoYXQgZGlyZWN0bHkgdG8gYGJwZl9jaGVja190aW1lZF9tYXlfZ290b2AuXG5cblRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gc3VidGxlIHJlZ3Jlc3Npb25zLCBJIHNob3VsZCB0YWtlIGEgY2xvc2UgbG9vayBhdCBgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvYCBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgcGF0aHMuIEknbGwgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgdW5leHBlY3RlZCBiZWhhdmlvciBvciBwZXJmb3JtYW5jZSBpbXBhY3RzLCBlc3BlY2lhbGx5IGluIGVkZ2UgY2FzZXMgb3Igd2l0aCBjb21wbGV4IEJQRiBwcm9ncmFtcy4gVGhpcyBjaGFuZ2UgaXMgc3VidGxlLCBidXQgcG90ZW50aWFsbHkgZmFyLXJlYWNoaW5nLCBhbmQgdGhlIGRldmlsIGlzIGFsd2F5cyBpbiB0aGUgZGV0YWlscyFcblxuXG4iLCJJbnB1dFRva2VucyI6ODczNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MzozNy45OTkzNjEyMTlaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9icGYvY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM0MDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM0MDA6XFx0XFx0cHJvZyA9IGJwZl9wcm9nX2ZpbmRfZnJvbV9zdGFjaygpO1xcbjM0MDE6XFx0XFx0aWYgKCFwcm9nKVxcbjM0MDI6XFx0XFx0XFx0cmV0dXJuO1xcbjM0MDM6XFx0XFx0YnBmX3N0cmVhbV9zdGFnZShzcywgcHJvZywgQlBGX1NUREVSUiwgKHtcXG4zNDA0OlxcdFxcdFxcdGJwZl9zdHJlYW1fcHJpbnRrKHNzLCBcXFwiRVJST1I6IFRpbWVvdXQgZGV0ZWN0ZWQgZm9yIG1heV9nb3RvIGluc3RydWN0aW9uXFxcXG5cXFwiKTtcXG4zNDA1OlxcdFxcdFxcdGJwZl9zdHJlYW1fZHVtcF9zdGFjayhzcyk7XFxuMzQwNjpcXHRcXHR9KSk7XFxuMzQwNzpcXHQjZW5kaWZcXG4zNDA4OlxcdH1cXG4zNDA5OlxcdFxcbjM0MTA6XFx0dTY0IGJwZl9jaGVja190aW1lZF9tYXlfZ290byhzdHJ1Y3QgYnBmX3RpbWVkX21heV9nb3RvICpwKVxcbjM0MTE6XFx0e1xcbjM0MTI6XFx0XFx0dTY0IHRpbWUgPSBrdGltZV9nZXRfbW9ub19mYXN0X25zKCk7XFxuMzQxMzpcXHRcXG4zNDE0OlxcdFxcdC8qIFBvcHVsYXRlIHRoZSB0aW1lc3RhbXAgZm9yIHRoaXMgc3RhY2sgZnJhbWUsIGFuZCByZWZyZXNoIGNvdW50LiAqL1xcbjM0MTU6XFx0XFx0aWYgKCFwLVxcdTAwM2V0aW1lc3RhbXApIHtcXG4zNDE2OlxcdFxcdFxcdHAtXFx1MDAzZXRpbWVzdGFtcCA9IHRpbWU7XFxuMzQxNzpcXHRcXHRcXHRyZXR1cm4gQlBGX01BWF9USU1FRF9MT09QUztcXG4zNDE4OlxcdFxcdH1cXG4zNDE5OlxcdFxcdC8qIENoZWNrIGlmIHdlJ3ZlIGV4aGF1c3RlZCBvdXIgdGltZSBzbGljZSwgYW5kIHplcm8gY291bnQuICovXFxuMzQyMDpcXHRcXHRpZiAodW5saWtlbHkodGltZSAtIHAtXFx1MDAzZXRpbWVzdGFtcCBcXHUwMDNlPSAoTlNFQ19QRVJfU0VDIC8gNCkpKSB7XFxuMzQyMTpcXHRcXHRcXHRicGZfcHJvZ19yZXBvcnRfbWF5X2dvdG9fdmlvbGF0aW9uKCk7XFxuMzQyMjpcXHRcXHRcXHRyZXR1cm4gMDtcXG4zNDIzOlxcdFxcdH1cXG4zNDI0OlxcdFxcdC8qIFJlZnJlc2ggdGhlIGNvdW50IGZvciB0aGUgc3RhY2sgZnJhbWUuICovXFxuMzQyNTpcXHRcXHRyZXR1cm4gQlBGX01BWF9USU1FRF9MT09QUztcXG4zNDI2OlxcdH1cXG4zNDI3OlxcdFxcbjM0Mjg6XFx0LyogZm9yIGNvbmZpZ3Mgd2l0aG91dCBNTVUgb3IgMzItYml0ICovXFxuMzQyOTpcXHRfX3dlYWsgY29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGFyZW5hX21hcF9vcHM7XFxuMzQzMDpcXHRfX3dlYWsgdTY0IGJwZl9hcmVuYV9nZXRfdXNlcl92bV9zdGFydChzdHJ1Y3QgYnBmX2FyZW5hICphcmVuYSlcXG4zNDMxOlxcdHtcXG4zNDMyOlxcdFxcdHJldHVybiAwO1xcbjM0MzM6XFx0fVxcbjM0MzQ6XFx0X193ZWFrIHU2NCBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEpXFxuMzQzNTpcXHR7XFxuMzQzNjpcXHRcXHRyZXR1cm4gMDtcXG4zNDM3OlxcdH1cXG4zNDM4OlxcdFxcbjM0Mzk6XFx0I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MzozNy45OTk1NTQxNTlaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDE0MjM2ODAzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBDaGVjazogUmVmYWN0b3JpbmcgQlBGIFRyYW1wb2xpbmUgQ2FsbGluZyBDb252ZW50aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gZm9yIEtNU0FOIGlzc3VlcyBpbnZvbHZlcyBjaGVja2luZyBmb3IgYSBmZXcga2V5IHRoaW5nczogdW5pbml0aWFsaXplZCBkYXRhIG1ha2luZyBpdHMgd2F5IGludG8gdXNlciBzcGFjZSwgY29uZGl0aW9uYWwgbG9naWMgcmVseWluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBmaWVsZHMgaW4gZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgYW55IHZ1bG5lcmFiaWxpdGllcyBpbiBib3VuZHMgY2hlY2tzIHRoYXQgY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gQmFzZWQgb24gdGhpcyBwYXRjaCdzIGNoYW5nZXMsIG5vbmUgb2YgdGhvc2UgYXBwZWFyIHRvIGJlIHByZXNlbnQuXG5cblNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgY2FsbGluZyBjb252ZW50aW9uIGZvciB0aGUgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCB0cmFtcG9saW5lLiBJdCdzIGFib3V0IGhvdyB0aGUgcG9pbnRlciwgY2FsY3VsYXRlZCBmcm9tIHRoZSBmcmFtZSBwb2ludGVyIGFuZCBzdGFjayBvZmZzZXQsIGlzIHBhc3NlZCBhY3Jvc3MgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMgKHg4NiwgYXJtNjQsIHJpc2N2LCBzMzkwLCBhbmQgcG93ZXJwYykuIEluc3RlYWQgb2YgdGhlIHRyYW1wb2xpbmUgY2FsY3VsYXRpbmcgaXQgaW50ZXJuYWxseSwgdGhlIGNvbXB1dGF0aW9uIGlzIGRvbmUgYmVmb3JlaGFuZCBhbmQgdGhlIHJlc3VsdCwgYEJQRl9SRUdfQVhgLCBpcyBkaXJlY3RseSBwYXNzZWQuIFRoaXMgZW5hYmxlcyBjb21wYXRpYmlsaXR5IHdpdGggZmVhdHVyZXMgbGlrZSBCUEYgcHJpdmF0ZSBzdGFja3MuXG5cblRoZSBwb3RlbnRpYWwgcmlza3MgaGVyZSBhcmUgcHJpbWFyaWx5IGluY29ycmVjdCByZWdpc3RlciB2YWx1ZXMsIGJhZCBicmFuY2ggb2Zmc2V0cyBpbiB0aGUgQlBGIEpJVCBvciB2ZXJpZmllciBmaXh1cHMsIG9yIG1lbW9yeSBjb3JydXB0aW9uL291dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGVzZSBhcmUgd2VsbC11bmRlcnN0b29kIGlzc3VlcywgZmFsbGluZyB1bmRlciB0eXBpY2FsIEtBU0FOIGFuZCB2ZXJpZmllciBjb3JyZWN0bmVzcyB0ZXN0aW5nLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZS5cblxuVGhlcmVmb3JlLCBgTmVlZHNLTVNBTmAgaXMgZGVmaW5pdGVseSBgZmFsc2VgLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyMTIsIk91dHB1dFRva2VucyI6MjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6NDIuMTQxOTI1Mjc2WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIEJQRiB0aW1lZCBgbWF5X2dvdG9gIHRyYW1wb2xpbmUgY2FsbGluZyBjb252ZW50aW9uIGFjcm9zcyBhcmNoaXRlY3R1cmVzICh4ODZfNjQsIGFybTY0LCByaXNjdiwgczM5MCwgcG93ZXJwYykgYW5kIHVwZGF0ZXMgdGhlIHZlcmlmaWVyIGluc3RydWN0aW9uIGZpeHVwcyBpbiBga2VybmVsL2JwZi9maXh1cHMuY2AuIEluc3RlYWQgb2YgcGFzc2luZyB0aGUgc3RhY2sgb2Zmc2V0IGluIGBCUEZfUkVHX0FYYCBhbmQgaGF2aW5nIGVhY2ggYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRyYW1wb2xpbmUgY29tcHV0ZSBgRlAgKyBvZmZzZXRgLCB0aGUgQlBGIGJ5dGVjb2RlIG5vdyBjb21wdXRlcyB0aGUgcG9pbnRlciBgQlBGX1JFR19GUCArIHN0YWNrX29mZl9jbnRgIGluIGBCUEZfUkVHX0FYYCBwcmlvciB0byBjYWxsaW5nIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpYC5cXG5cXG5UaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcgb3Igc3RydWN0IGZpZWxkcyB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgbWVtb3J5IGluaXRpYWxpemF0aW9uIGxvZ2ljLiBBbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGluc3RydWN0aW9uIHBhdGNoaW5nIG9yIHJlZ2lzdGVyIGhhbmRsaW5nIHdvdWxkIG1hbmlmZXN0IGFzIG91dC1vZi1ib3VuZHMgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgY29udHJvbCBmbG93IGVycm9ycywgd2hpY2ggYXJlIGNvdmVyZWQgYnkgS0FTQU4gYW5kIHRoZSBCUEYgdmVyaWZpZXIuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBCUEYgdGltZWQgYG1heV9nb3RvYCB0cmFtcG9saW5lIGNhbGxpbmcgY29udmVudGlvbiBhY3Jvc3MgYXJjaGl0ZWN0dXJlcyAoeDg2XzY0LCBhcm02NCwgcmlzY3YsIHMzOTAsIHBvd2VycGMpIGFuZCB1cGRhdGVzIHRoZSB2ZXJpZmllciBpbnN0cnVjdGlvbiBmaXh1cHMgaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgLiBJbnN0ZWFkIG9mIHBhc3NpbmcgdGhlIHN0YWNrIG9mZnNldCBpbiBgQlBGX1JFR19BWGAgYW5kIGhhdmluZyBlYWNoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0cmFtcG9saW5lIGNvbXB1dGUgYEZQICsgb2Zmc2V0YCwgdGhlIEJQRiBieXRlY29kZSBub3cgY29tcHV0ZXMgdGhlIHBvaW50ZXIgYEJQRl9SRUdfRlAgKyBzdGFja19vZmZfY250YCBpbiBgQlBGX1JFR19BWGAgcHJpb3IgdG8gY2FsbGluZyBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKWAuXFxuXFxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nIG9yIHN0cnVjdCBmaWVsZHMgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiBsb2dpYy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBpbnN0cnVjdGlvbiBwYXRjaGluZyBvciByZWdpc3RlciBoYW5kbGluZyB3b3VsZCBtYW5pZmVzdCBhcyBvdXQtb2YtYm91bmRzIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIGNvbnRyb2wgZmxvdyBlcnJvcnMsIHdoaWNoIGFyZSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCB0aGUgQlBGIHZlcmlmaWVyLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrppf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 06:50:16 +0000 UTC FinishedAt: 2026-09-06 06:53:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d761934c9483ecde93fe99d8705282f716dfee50", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d761934c9483ecde93fe99d8705282f716dfee50", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_JIT" ], "series_id": "a8f69f24-58cb-46a5-b9db-e537411a4bb7" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_do_misc_fixups", "arch_bpf_timed_may_goto" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfZG9fbWlzY19maXh1cHMmIzM0OywKICAgICYjMzQ7YXJjaF9icGZfdGltZWRfbWF5X2dvdG8mIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZWZhY3RvcnMgdGhlIEJQRiB0aW1lZCBgbWF5X2dvdG9gIHRyYW1wb2xpbmUgY2FsbGluZyBjb252ZW50aW9uIGFjcm9zcyBhcmNoaXRlY3R1cmVzICh4ODZfNjQsIGFybTY0LCByaXNjdiwgczM5MCwgcG93ZXJwYykgYW5kIHVwZGF0ZXMgdGhlIHZlcmlmaWVyIGluc3RydWN0aW9uIGZpeHVwcyBpbiBga2VybmVsL2JwZi9maXh1cHMuY2AuIEluc3RlYWQgb2YgcGFzc2luZyB0aGUgc3RhY2sgb2Zmc2V0IGluIGBCUEZfUkVHX0FYYCBhbmQgaGF2aW5nIGVhY2ggYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRyYW1wb2xpbmUgY29tcHV0ZSBgRlAgJiM0Mzsgb2Zmc2V0YCwgdGhlIEJQRiBieXRlY29kZSBub3cgY29tcHV0ZXMgdGhlIHBvaW50ZXIgYEJQRl9SRUdfRlAgJiM0Mzsgc3RhY2tfb2ZmX2NudGAgaW4gYEJQRl9SRUdfQVhgIHByaW9yIHRvIGNhbGxpbmcgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKClgLlxuXG5UaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcgb3Igc3RydWN0IGZpZWxkcyB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgbWVtb3J5IGluaXRpYWxpemF0aW9uIGxvZ2ljLiBBbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGluc3RydWN0aW9uIHBhdGNoaW5nIG9yIHJlZ2lzdGVyIGhhbmRsaW5nIHdvdWxkIG1hbmlmZXN0IGFzIG91dC1vZi1ib3VuZHMgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgY29udHJvbCBmbG93IGVycm9ycywgd2hpY2ggYXJlIGNvdmVyZWQgYnkgS0FTQU4gYW5kIHRoZSBCUEYgdmVyaWZpZXIuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBieXRlY29kZSBmaXh1cHMgZm9yIHRpbWVkIG1heV9nb3RvIGluc3RydWN0aW9ucyBpbiB0aGUgdmVyaWZpZXIgKGJwZl9kb19taXNjX2ZpeHVwcyBpbiBrZXJuZWwvYnBmL2ZpeHVwcy5jKSBhbmQgdGhlIHg4NiBKSVQgdHJhbXBvbGluZSAoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8gaW4gYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TKSB0byBjYWxjdWxhdGUgdGhlIGNvdW50L3RpbWVzdGFtcCBwb2ludGVyIGluIEJQRiByZWdpc3RlcnMgYmVmb3JlIGludm9raW5nIHRoZSB0cmFtcG9saW5lLiBUaGlzIHRvdWNoZXMgY29yZSBCUEYgdmVyaWZpY2F0aW9uIGFuZCBleGVjdXRpb24gbG9naWMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ4ODE5NTdhZTVlMTJhNjE2YzNmYzg4NThhZjYwNjU0MzRlZmYxZGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDA2OjUxOjI3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbmluZGV4IGE5YTgwMjcxMWE3ZjkuLjUzMTQ4YzlhMWM1ODQgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC0xNCwxNiAmIzQzOzE0LDEwIEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIFx0c3RwXHR4MywgeDQsIFtzcCwgIzQ4XVxuIFxuIFx0Lypcbi1cdCAqIFN0YWNrIGRlcHRoIHdhcyBwYXNzZWQgaW4gQlBGX1JFR19BWCAoeDkpLCBhZGQgaXQgdG8gdGhlIEJQRl9GUFxuLVx0ICogKHgyNSkgdG8gZ2V0IHRoZSBwb2ludGVyIHRvIGNvdW50IGFuZCB0aW1lc3RhbXAgYW5kIHBhc3MgaXQgYXMgdGhlXG4tXHQgKiBmaXJzdCBhcmd1bWVudCBpbiB4MC5cbi1cdCAqXG4tXHQgKiBCZWZvcmUgZ2VuZXJhdGluZyB0aGUgY2FsbCB0byBhcmNoX2JwZl90aW1lZF9tYXlfZ290bywgdGhlIHZlcmlmaWVyXG4tXHQgKiBnZW5lcmF0ZXMgYSBsb2FkIGluc3RydWN0aW9uIHVzaW5nIEZQLCBpLmUuIFJFR19BWCA9ICoodTY0ICopKEZQIC1cbi1cdCAqIHN0YWNrX29mZl9jbnQpLCBzbyBCUEZfUkVHX0ZQICh4MjUpIGlzIGFsd2F5cyBzZXQgdXAgYnkgdGhlIGFybTY0XG4tXHQgKiBqaXQgaW4gdGhpcyBjYXNlLlxuJiM0MztcdCAqIEJQRl9SRUdfQVggKHg5KSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzXG4mIzQzO1x0ICogdGhlIGZpcnN0IGFyZ3VtZW50IGluIHgwLlxuIFx0ICovXG4tXHRhZGRcdHgwLCB4OSwgeDI1XG4mIzQzO1x0bW92XHR4MCwgeDlcbiBcdGJsXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbiBcdC8qIEJQRl9SRUdfQVgoeDkpIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgcmV0dXJuIHZhbHVlIHRvIGl0LiAqL1xuIFx0bW92XHR4OSwgeDBcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuaW5kZXggODRlY2Y2ZmE3ZjVkYy4uZDg4ODI1ZGQzNGZlYSAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC04LDcgJiM0Mzs4LDcgQEBcbiAgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIHRyYW1wb2xpbmUgZm9yIHBvd2VycGM2NFxuICAqXG4gICogQ3VzdG9tIEJQRiBjb252ZW50aW9uICh2ZXJpZmllci9KSVQpOlxuLSAqXHQtIGlucHV0OiAgc3RhY2sgb2Zmc2V0IGluIEJQRl9SRUdfQVggKHIxMilcbiYjNDM7ICpcdC0gaW5wdXQ6ICBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGX1JFR19BWCAocjEyKVxuICAqXHQtIG91dHB1dDogdXBkYXRlZCBjb3VudCBpbiBCUEZfUkVHX0FYIChyMTIpXG4gICpcbiAgKiBDYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggbm9ybWFsIHBvd2VycGM2NCBBQkk6XG5AQCAtMzIsMTAgJiM0MzszMiwxMCBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdHN0ZCAgICAgcjgsIDcyKHIxKVxuIFxuIFx0Lypcbi1cdCAqIHIzID0gQlBGX1JFR19GUCAmIzQzOyBCUEZfUkVHX0FYXG4tXHQgKiBCUEZfUkVHX0ZQIGlzIHIzMTsgQlBGX1JFR19BWCBpcyByMTIgKHN0YWNrIG9mZnNldCBpbiBieXRlcykuXG4mIzQzO1x0ICogQlBGX1JFR19BWCAocjEyKSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzXG4mIzQzO1x0ICogdGhlIGZpcnN0IGFyZ3VtZW50IGluIHIzLlxuIFx0ICovXG4tXHRhZGQgICAgIHIzLCByMzEsIHIxMlxuJiM0MztcdG1yICAgICAgcjMsIHIxMlxuIFx0YmwgICAgICBDRlVOQyhicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8pXG4gXG4gXHQvKiBQdXQgcmV0dXJuIHZhbHVlIGJhY2sgaW50byBBWCAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbmluZGV4IDAyYzYzN2Q4NzQyMDUuLjhjMDNlMjcyZTBiZjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC02LDEyICYjNDM7NiwxMSBAQFxuIFxuIC8qXG4gICogVHJhbXBvbGluZSBmb3IgdGhlIEJQRiB0aW1lZCBtYXlfZ290byBsb29wIGJvdW5kLiBDdXN0b20gY2FsbGluZyBjb252ZW50aW9uOlxuLSAqXHQtIGlucHV0OiAgc3RhY2sgb2Zmc2V0IGluIEJQRl9SRUdfQVggKHQwKVxuJiM0MzsgKlx0LSBpbnB1dDogIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlciBpbiBCUEZfUkVHX0FYICh0MClcbiAgKlx0LSBvdXRwdXQ6IHVwZGF0ZWQgY291bnQgaW4gQlBGX1JFR19BWCAodDApXG4gICpcbi0gKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLCB3aGVyZVxuLSAqIHB0ciA9IEJQRl9SRUdfRlAgKHM1KSAmIzQzOyBCUEZfUkVHX0FYICh0MCkuIEJQRiBSMC1SNSAoYTUsIGEwLWE0KSBhcmUgc2F2ZWRcbi0gKiBhY3Jvc3MgdGhlIGNhbGw7IEJQRl9SRUdfRlAgKHM1KSBpcyBjYWxsZWUtc2F2ZWQgYW5kIG5lZWRzIG5vIHNhdmluZy5cbiYjNDM7ICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSS5cbiYjNDM7ICogQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZCBhY3Jvc3MgdGhlIGNhbGwuXG4gICovXG4gXG4gU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG5AQCAtMjgsNyAmIzQzOzI3LDExIEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIFx0UkVHX1NcdGEzLCAxKlNaUkVHKHNwKVxuIFx0UkVHX1NcdGE0LCAwKlNaUkVHKHNwKVxuIFxuLVx0YWRkXHRhMCwgdDAsIHM1XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBCUEZfUkVHX0FYICh0MCkgY29udGFpbnMgdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlcjsgcGFzcyBpdCBhc1xuJiM0MztcdCAqIHRoZSBmaXJzdCBhcmd1bWVudCBpbiBhMC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRtdlx0YTAsIHQwXG4gXHRjYWxsXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbiBcdG12XHR0MCwgYTBcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggYzQ2ODcyYjA3MWNlNy4uNDA5OGMzMzc3YzIxMyAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0xODcyLDkgJiM0MzsxODcyLDkgQEAgc3RhdGljIG5vaW5saW5lIGludCBicGZfaml0X2luc24oc3RydWN0IGJwZl9qaXQgKmppdCwgc3RydWN0IGJwZl9wcm9nICpmcCxcbiBcdFx0aWYgKCh2b2lkICopZnVuYyA9PSBhcmNoX2JwZl90aW1lZF9tYXlfZ290bykge1xuIFx0XHRcdC8qXG4gXHRcdFx0ICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSBoYXMgYSBzcGVjaWFsIEFCSTogdGhlXG4tXHRcdFx0ICogcGFyYW1ldGVycyBhcmUgaW4gQlBGX1JFR19BWCBhbmQgQlBGX1JFR18xMDsgdGhlXG4tXHRcdFx0ICogcmV0dXJuIHZhbHVlIGlzIGluIEJQRl9SRUdfQVg7IGFuZCBhbGwgR1BScyBleGNlcHRcbi1cdFx0XHQgKiBSRUdfVzAsIFJFR19XMSwgYW5kIEJQRl9SRUdfQVggYXJlIGNhbGxlZS1zYXZlZC5cbiYjNDM7XHRcdFx0ICogcGFyYW1ldGVyIGFuZCByZXR1cm4gdmFsdWUgYXJlIGluIEJQRl9SRUdfQVg7IGFsbFxuJiM0MztcdFx0XHQgKiBHUFJzIGV4Y2VwdCBSRUdfVzAsIFJFR19XMSwgYW5kIEJQRl9SRUdfQVggYXJlXG4mIzQzO1x0XHRcdCAqIGNhbGxlZS1zYXZlZC5cbiBcdFx0XHQgKi9cbiBcbiBcdFx0XHQvKiBicmFzbCAlcjAsZnVuYyAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5pbmRleCAwNmY1NjdhNDYwZDdiLi5lMzRjOTk5ODJjNGEyIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuQEAgLTIxLDkgJiM0MzsyMSw5IEBAXG4gXG4gU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHQvKlxuLVx0ICogVGhpcyBmdW5jdGlvbiBoYXMgYSBzcGVjaWFsIEFCSTogdGhlIHBhcmFtZXRlcnMgYXJlIGluICVyMTIgYW5kXG4tXHQgKiAlcjEzOyB0aGUgcmV0dXJuIHZhbHVlIGlzIGluICVyMTI7IGFsbCBHUFJzIGV4Y2VwdCAlcjAsICVyMSwgYW5kXG4tXHQgKiAlcjEyIGFyZSBjYWxsZWUtc2F2ZWQ7IGFuZCB0aGUgcmV0dXJuIGFkZHJlc3MgaXMgaW4gJXIwLlxuJiM0MztcdCAqIFRoaXMgZnVuY3Rpb24gaGFzIGEgc3BlY2lhbCBBQkk6IHRoZSBwYXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZSBhcmVcbiYjNDM7XHQgKiBpbiAlcjEyOyBhbGwgR1BScyBleGNlcHQgJXIwLCAlcjEsIGFuZCAlcjEyIGFyZSBjYWxsZWUtc2F2ZWQ7IGFuZFxuJiM0MztcdCAqIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBpbiAlcjAuXG4gXHQgKi9cbiBcdHN0bWcgJXIyLCVyNSxGUkFNRV9PRkYmIzQzO1IyX09GRiglcjE1KVxuIFx0c3RnICVyMTQsRlJBTUVfT0ZGJiM0MztSMTRfT0ZGKCVyMTUpXG5AQCAtMzMsNyAmIzQzOzMzLDcgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHRsYXkgJXIxNSwtRlJBTUVfU0laRSglcjE1KVxuIFx0c3RnICVyMSxfX1NGX0JBQ0tDSEFJTiglcjE1KVxuIFxuLVx0bGF5ICVyMiwwKCVyMTIsJXIxMylcbiYjNDM7XHRsZ3IgJXIyLCVyMTJcbiBcdGJyYXNsICVyMTQsYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXG4gXHRsZ3IgJXIxMiwlcjJcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbmluZGV4IDU0YzY5MGNhZTE5MDguLjZlOWQ5ZTdjMmIxZDYgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuQEAgLTExLDEyICYjNDM7MTEsNiBAQFxuIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIFx0QU5OT1RBVEVfTk9FTkRCUlxuIFxuLVx0Lypcbi1cdCAqIHIxMCBwYXNzZXMgdXMgc3RhY2sgZGVwdGgsIGxvYWQgdGhlIHBvaW50ZXIgdG8gY291bnQgYW5kIHRpbWVzdGFtcFxuLVx0ICogaW50byByMTAgYnkgYWRkaW5nIGl0IHRvIEJQRiBmcmFtZSBwb2ludGVyLlxuLVx0ICovXG4tXHRsZWFxICglcmJwLCAlcjEwLCAxKSwgJXIxMFxuLVxuIFx0LyogU2V0dXAgZnJhbWUuICovXG4gXHRwdXNocSAlcmJwXG4gXHRtb3ZxICVyc3AsICVyYnBcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2ZpeHVwcy5jIGIva2VybmVsL2JwZi9maXh1cHMuY1xuaW5kZXggNjViNDQxZTRhMzUxNy4uZGM1OTUwMWEzMmJiZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvZml4dXBzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvZml4dXBzLmNcbkBAIC0xNzk3LDIwICYjNDM7MTc5NywyMCBAQCBpbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gXHRcdFx0c3RhY2tfZGVwdGhfZXh0cmEgPSAxNjtcbiBcdFx0XHRpbnNuX2J1ZlswXSA9IEJQRl9MRFhfTUVNKEJQRl9EVywgQlBGX1JFR19BWCwgQlBGX1JFR18xMCwgc3RhY2tfb2ZmX2NudCk7XG4gXHRcdFx0aWYgKGluc24tXHUwMDNlb2ZmIFx1MDAzZT0gMClcbi1cdFx0XHRcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cdTAwM2VvZmYgJiM0MzsgNSk7XG4mIzQzO1x0XHRcdFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVx1MDAzZW9mZiAmIzQzOyA2KTtcbiBcdFx0XHRlbHNlXG4gXHRcdFx0XHRpbnNuX2J1ZlsxXSA9IEJQRl9KTVBfSU1NKEJQRl9KRVEsIEJQRl9SRUdfQVgsIDAsIGluc24tXHUwMDNlb2ZmIC0gMSk7XG4gXHRcdFx0aW5zbl9idWZbMl0gPSBCUEZfQUxVNjRfSU1NKEJQRl9TVUIsIEJQRl9SRUdfQVgsIDEpO1xuLVx0XHRcdGluc25fYnVmWzNdID0gQlBGX0pNUF9JTU0oQlBGX0pORSwgQlBGX1JFR19BWCwgMCwgMik7XG4mIzQzO1x0XHRcdGluc25fYnVmWzNdID0gQlBGX0pNUF9JTU0oQlBGX0pORSwgQlBGX1JFR19BWCwgMCwgMyk7XG4gXHRcdFx0Lypcbi1cdFx0XHQgKiBBWCBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIHBhc3MgaW4gc3RhY2tfb2ZmX2NudFxuLVx0XHRcdCAqICh0byBhZGQgdG8gcjEwL2ZwKSwgYW5kIGFsc28gYXMgdGhlIHJldHVybiB2YWx1ZSBvZlxuLVx0XHRcdCAqIHRoZSBjYWxsIHRvIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvLlxuJiM0MztcdFx0XHQgKiBBWCBpcyB1c2VkIHRvIHBhc3MgRlAgJiM0Mzsgc3RhY2tfb2ZmX2NudCBhcyB0aGUgYXJndW1lbnQgdG9cbiYjNDM7XHRcdFx0ICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSwgYW5kIGFsc28gaG9sZHMgaXRzIHJldHVybiB2YWx1ZS5cbiBcdFx0XHQgKi9cbi1cdFx0XHRpbnNuX2J1Zls0XSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XG4tXHRcdFx0aW5zbl9idWZbNV0gPSBCUEZfRU1JVF9DQUxMKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKTtcbi1cdFx0XHRpbnNuX2J1Zls2XSA9IEJQRl9TVFhfTUVNKEJQRl9EVywgQlBGX1JFR18xMCwgQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XG4tXHRcdFx0Y250ID0gNztcbiYjNDM7XHRcdFx0aW5zbl9idWZbNF0gPSBCUEZfTU9WNjRfUkVHKEJQRl9SRUdfQVgsIEJQRl9SRUdfRlApO1xuJiM0MztcdFx0XHRpbnNuX2J1Zls1XSA9IEJQRl9BTFU2NF9JTU0oQlBGX0FERCwgQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XG4mIzQzO1x0XHRcdGluc25fYnVmWzZdID0gQlBGX0VNSVRfQ0FMTChhcmNoX2JwZl90aW1lZF9tYXlfZ290byk7XG4mIzQzO1x0XHRcdGluc25fYnVmWzddID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcbiYjNDM7XHRcdFx0Y250ID0gODtcbiBcbiBcdFx0XHRuZXdfcHJvZyA9IGJwZl9wYXRjaF9pbnNuX2RhdGEoZW52LCBpICYjNDM7IGRlbHRhLCBpbnNuX2J1ZiwgY250KTtcbiBcdFx0XHRpZiAoIW5ld19wcm9nKVxuQEAgLTI2NjEsNCAmIzQzOzI2NjEsMyBAQCBpbnQgYnBmX3JlbW92ZV9mYXN0Y2FsbF9zcGlsbHNfZmlsbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcbiBcdHJldHVybiAwO1xuIH1cbi1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbmluZGV4IDMyOGNmNjMwMjEwYTIuLmM1OTk2ZDlkYzhjYzkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuY1xuQEAgLTYzNSwxNSAmIzQzOzYzNSwxNiBAQCBfX3hsYXRlZChcJiMzNDs0OiByMCA9IFx1MDAyNih2b2lkIF9fcGVyY3B1ICopKHIwKVwmIzM0OylcbiBfX3hsYXRlZChcJiMzNDsuLi5cJiMzNDspXG4gLyogbWF5X2dvdG8gZXhwYW5zaW9uIHN0YXJ0cyAqL1xuIF9feGxhdGVkKFwmIzM0OzY6IHIxMiA9ICoodTY0ICopKHIxMCAtMjQpXCYjMzQ7KVxuLV9feGxhdGVkKFwmIzM0Ozc6IGlmIHIxMiA9PSAweDAgZ290byBwYyYjNDM7NlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7NzogaWYgcjEyID09IDB4MCBnb3RvIHBjJiM0Mzs3XCYjMzQ7KVxuIF9feGxhdGVkKFwmIzM0Ozg6IHIxMiAtPSAxXCYjMzQ7KVxuLV9feGxhdGVkKFwmIzM0Ozk6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7MlwmIzM0Oylcbi1fX3hsYXRlZChcJiMzNDsxMDogcjEyID0gLTI0XCYjMzQ7KVxuLV9feGxhdGVkKFwmIzM0OzExOiBjYWxsIHVua25vd25cJiMzNDspXG4tX194bGF0ZWQoXCYjMzQ7MTI6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDs5OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMmIzQzOzNcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0OzEwOiByMTIgPSByMTBcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0OzExOiByMTIgJiM0Mzs9IC0yNFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTI6IGNhbGwgdW5rbm93blwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTM6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXCYjMzQ7KVxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBlbmRzICovXG4tX194bGF0ZWQoXCYjMzQ7MTM6ICoodTY0ICopKHIxMCAtOCkgPSByMVwmIzM0Oylcbi1fX3hsYXRlZChcJiMzNDsxNDogZXhpdFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTQ6ICoodTY0ICopKHIxMCAtOCkgPSByMVwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTU6IGV4aXRcJiMzNDspXG4gX19zdWNjZXNzXG4gX19uYWtlZCB2b2lkIG1heV9nb3RvX2ludGVyYWN0aW9uX3g4Nl82NCh2b2lkKVxuIHtcbkBAIC02NzYsMTUgJiM0Mzs2NzcsMTYgQEAgX194bGF0ZWQoXCYjMzQ7MjogcjEgPSAxXCYjMzQ7KVxuIF9feGxhdGVkKFwmIzM0OzM6IGNhbGwgYnBmX2dldF9zbXBfcHJvY2Vzc29yX2lkXCYjMzQ7KVxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBzdGFydHMgKi9cbiBfX3hsYXRlZChcJiMzNDs0OiByMTIgPSAqKHU2NCAqKShyMTAgLTI0KVwmIzM0Oylcbi1fX3hsYXRlZChcJiMzNDs1OiBpZiByMTIgPT0gMHgwIGdvdG8gcGMmIzQzOzZcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0OzU6IGlmIHIxMiA9PSAweDAgZ290byBwYyYjNDM7N1wmIzM0OylcbiBfX3hsYXRlZChcJiMzNDs2OiByMTIgLT0gMVwmIzM0Oylcbi1fX3hsYXRlZChcJiMzNDs3OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMmIzQzOzJcJiMzNDspXG4tX194bGF0ZWQoXCYjMzQ7ODogcjEyID0gLTI0XCYjMzQ7KVxuLV9feGxhdGVkKFwmIzM0Ozk6IGNhbGwgdW5rbm93blwmIzM0Oylcbi1fX3hsYXRlZChcJiMzNDsxMDogKih1NjQgKikocjEwIC0yNCkgPSByMTJcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0Ozc6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7M1wmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7ODogcjEyID0gcjEwXCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDs5OiByMTIgJiM0Mzs9IC0yNFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTA6IGNhbGwgdW5rbm93blwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTE6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXCYjMzQ7KVxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBlbmRzICovXG4tX194bGF0ZWQoXCYjMzQ7MTE6ICoodTY0ICopKHIxMCAtOCkgPSByMVwmIzM0Oylcbi1fX3hsYXRlZChcJiMzNDsxMjogZXhpdFwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTI6ICoodTY0ICopKHIxMCAtOCkgPSByMVwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTM6IGV4aXRcJiMzNDspXG4gX19zdWNjZXNzXG4gX19uYWtlZCB2b2lkIG1heV9nb3RvX2ludGVyYWN0aW9uKHZvaWQpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jXG5pbmRleCBkYjdlMzBkYTIzNGYxLi4xNzIxODk3MTYwZGM5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuY1xuQEAgLTkwLDE1ICYjNDM7OTAsMTYgQEAgX19hcmNoX2xvb25nYXJjaFxuIF9feGxhdGVkKFwmIzM0OzA6ICoodTY0ICopKHIxMCAtMTYpID0gNjU1MzVcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7MTogKih1NjQgKikocjEwIC04KSA9IDBcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7MjogcjEyID0gKih1NjQgKikocjEwIC0xNilcJiMzNDspXG4tX194bGF0ZWQoXCYjMzQ7MzogaWYgcjEyID09IDB4MCBnb3RvIHBjJiM0Mzs2XCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDszOiBpZiByMTIgPT0gMHgwIGdvdG8gcGMmIzQzOzdcJiMzNDspXG4gX194bGF0ZWQoXCYjMzQ7NDogcjEyIC09IDFcJiMzNDspXG4tX194bGF0ZWQoXCYjMzQ7NTogaWYgcjEyICE9IDB4MCBnb3RvIHBjJiM0MzsyXCYjMzQ7KVxuLV9feGxhdGVkKFwmIzM0OzY6IHIxMiA9IC0xNlwmIzM0Oylcbi1fX3hsYXRlZChcJiMzNDs3OiBjYWxsIHVua25vd25cJiMzNDspXG4tX194bGF0ZWQoXCYjMzQ7ODogKih1NjQgKikocjEwIC0xNikgPSByMTJcJiMzNDspXG4tX194bGF0ZWQoXCYjMzQ7OTogcjAgPSAxXCYjMzQ7KVxuLV9feGxhdGVkKFwmIzM0OzEwOiByMCA9IDJcJiMzNDspXG4tX194bGF0ZWQoXCYjMzQ7MTE6IGV4aXRcJiMzNDspXG4mIzQzO19feGxhdGVkKFwmIzM0OzU6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7M1wmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7NjogcjEyID0gcjEwXCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDs3OiByMTIgJiM0Mzs9IC0xNlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7ODogY2FsbCB1bmtub3duXCYjMzQ7KVxuJiM0MztfX3hsYXRlZChcJiMzNDs5OiAqKHU2NCAqKShyMTAgLTE2KSA9IHIxMlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTA6IHIwID0gMVwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTE6IHIwID0gMlwmIzM0OylcbiYjNDM7X194bGF0ZWQoXCYjMzQ7MTI6IGV4aXRcJiMzNDspXG4gX19zdWNjZXNzXG4gX19uYWtlZCB2b2lkIG1heV9nb3RvX2JhdGNoXzIodm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcbmluZGV4IDNkOTk5NGE1MjQ2NGUuLjYzOWI1MzM2M2M5YWMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jXG5AQCAtNzAsNiAmIzQzOzcwLDI1IEBAIF9fbmFrZWQgdm9pZCBub19wcml2YXRlX3N0YWNrX25lc3RlZCh2b2lkKVxuIFwmIzM0O1x0Ojo6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbiYjNDM7U0VDKFwmIzM0O2ZlbnRyeS9icGZfZmVudHJ5X3Rlc3Q5XCYjMzQ7KVxuJiM0MztfX2Rlc2NyaXB0aW9uKFwmIzM0O1ByaXZhdGUgc3RhY2ssIHRpbWVkIG1heV9nb3RvXCYjMzQ7KVxuJiM0MztfX3N1Y2Nlc3MgX19yZXR2YWwoMClcbiYjNDM7X19hcmNoX3g4Nl82NFxuJiM0MztfX2ppdGVkKFwmIzM0O1x0bW92YWJzcVx0JDB4e3suKn19LCAlcjlcJiMzNDspXG4mIzQzO19faml0ZWQoXCYjMzQ7Li4uXCYjMzQ7KVxuJiM0MztfX2ppdGVkKFwmIzM0O1x0bW92cVx0JXI5LCAlcjEwXCYjMzQ7KVxuJiM0MztfX2FyY2hfYXJtNjRcbiYjNDM7X19qaXRlZChcJiMzNDtcdG1vdlx0eDksIHgyNVwmIzM0OylcbiYjNDM7aW50IHByaXZhdGVfc3RhY2tfdGltZWRfbWF5X2dvdG8odm9pZClcbiYjNDM7e1xuJiM0MztcdHZvbGF0aWxlIF9fdTY0IHN0YWNrX3NwYWNlWzE2XSA9IHt9O1xuJiM0MztcbiYjNDM7XHR3aGlsZSAoY2FuX2xvb3ApXG4mIzQzO1x0XHQ7XG4mIzQzO1xuJiM0MztcdHJldHVybiBzdGFja19zcGFjZVswXTtcbiYjNDM7fVxuJiM0MztcbiBfX3VzZWRcbiBfX25ha2VkIHN0YXRpYyB2b2lkIGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZyh2b2lkKVxuIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2RvX21pc2NfZml4dXBzJiMzNDssCiAgICAmIzM0O2FyY2hfYnBmX3RpbWVkX21heV9nb3RvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBieXRlY29kZSBmaXh1cHMgZm9yIHRpbWVkIG1heV9nb3RvIGluc3RydWN0aW9ucyBpbiB0aGUgdmVyaWZpZXIgKGJwZl9kb19taXNjX2ZpeHVwcyBpbiBrZXJuZWwvYnBmL2ZpeHVwcy5jKSBhbmQgdGhlIHg4NiBKSVQgdHJhbXBvbGluZSAoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8gaW4gYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TKSB0byBjYWxjdWxhdGUgdGhlIGNvdW50L3RpbWVzdGFtcCBwb2ludGVyIGluIEJQRiByZWdpc3RlcnMgYmVmb3JlIGludm9raW5nIHRoZSB0cmFtcG9saW5lLiBUaGlzIHRvdWNoZXMgY29yZSBCUEYgdmVyaWZpY2F0aW9uIGFuZCBleGVjdXRpb24gbG9naWMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ4ODE5NTdhZTVlMTJhNjE2YzNmYzg4NThhZjYwNjU0MzRlZmYxZGMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDA2OjUxOjI3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwppbmRleCBhOWE4MDI3MTFhN2Y5Li41MzE0OGM5YTFjNTg0IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwpAQCAtMTQsMTYgJiM0MzsxNCwxMCBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bykKIAlzdHAJeDMsIHg0LCBbc3AsICM0OF0KIAogCS8qCi0JICogU3RhY2sgZGVwdGggd2FzIHBhc3NlZCBpbiBCUEZfUkVHX0FYICh4OSksIGFkZCBpdCB0byB0aGUgQlBGX0ZQCi0JICogKHgyNSkgdG8gZ2V0IHRoZSBwb2ludGVyIHRvIGNvdW50IGFuZCB0aW1lc3RhbXAgYW5kIHBhc3MgaXQgYXMgdGhlCi0JICogZmlyc3QgYXJndW1lbnQgaW4geDAuCi0JICoKLQkgKiBCZWZvcmUgZ2VuZXJhdGluZyB0aGUgY2FsbCB0byBhcmNoX2JwZl90aW1lZF9tYXlfZ290bywgdGhlIHZlcmlmaWVyCi0JICogZ2VuZXJhdGVzIGEgbG9hZCBpbnN0cnVjdGlvbiB1c2luZyBGUCwgaS5lLiBSRUdfQVggPSAqKHU2NCAqKShGUCAtCi0JICogc3RhY2tfb2ZmX2NudCksIHNvIEJQRl9SRUdfRlAgKHgyNSkgaXMgYWx3YXlzIHNldCB1cCBieSB0aGUgYXJtNjQKLQkgKiBqaXQgaW4gdGhpcyBjYXNlLgomIzQzOwkgKiBCUEZfUkVHX0FYICh4OSkgY29udGFpbnMgdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlcjsgcGFzcyBpdCBhcwomIzQzOwkgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4geDAuCiAJICovCi0JYWRkCXgwLCB4OSwgeDI1CiYjNDM7CW1vdgl4MCwgeDkKIAlibAlicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8KIAkvKiBCUEZfUkVHX0FYKHg5KSB3aWxsIGJlIHN0b3JlZCBpbnRvIGNvdW50LCBzbyBtb3ZlIHJldHVybiB2YWx1ZSB0byBpdC4gKi8KIAltb3YJeDksIHgwCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwppbmRleCA4NGVjZjZmYTdmNWRjLi5kODg4MjVkZDM0ZmVhIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKQEAgLTgsNyAmIzQzOzgsNyBAQAogICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSB0cmFtcG9saW5lIGZvciBwb3dlcnBjNjQKICAqCiAgKiBDdXN0b20gQlBGIGNvbnZlbnRpb24gKHZlcmlmaWVyL0pJVCk6Ci0gKgktIGlucHV0OiAgc3RhY2sgb2Zmc2V0IGluIEJQRl9SRUdfQVggKHIxMikKJiM0MzsgKgktIGlucHV0OiAgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyIGluIEJQRl9SRUdfQVggKHIxMikKICAqCS0gb3V0cHV0OiB1cGRhdGVkIGNvdW50IGluIEJQRl9SRUdfQVggKHIxMikKICAqCiAgKiBDYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggbm9ybWFsIHBvd2VycGM2NCBBQkk6CkBAIC0zMiwxMCAmIzQzOzMyLDEwIEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKQogCXN0ZCAgICAgcjgsIDcyKHIxKQogCiAJLyoKLQkgKiByMyA9IEJQRl9SRUdfRlAgJiM0MzsgQlBGX1JFR19BWAotCSAqIEJQRl9SRUdfRlAgaXMgcjMxOyBCUEZfUkVHX0FYIGlzIHIxMiAoc3RhY2sgb2Zmc2V0IGluIGJ5dGVzKS4KJiM0MzsJICogQlBGX1JFR19BWCAocjEyKSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzCiYjNDM7CSAqIHRoZSBmaXJzdCBhcmd1bWVudCBpbiByMy4KIAkgKi8KLQlhZGQgICAgIHIzLCByMzEsIHIxMgomIzQzOwltciAgICAgIHIzLCByMTIKIAlibCAgICAgIENGVU5DKGJwZl9jaGVja190aW1lZF9tYXlfZ290bykKIAogCS8qIFB1dCByZXR1cm4gdmFsdWUgYmFjayBpbnRvIEFYICovCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCmluZGV4IDAyYzYzN2Q4NzQyMDUuLjhjMDNlMjcyZTBiZjUgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCkBAIC02LDEyICYjNDM7NiwxMSBAQAogCiAvKgogICogVHJhbXBvbGluZSBmb3IgdGhlIEJQRiB0aW1lZCBtYXlfZ290byBsb29wIGJvdW5kLiBDdXN0b20gY2FsbGluZyBjb252ZW50aW9uOgotICoJLSBpbnB1dDogIHN0YWNrIG9mZnNldCBpbiBCUEZfUkVHX0FYICh0MCkKJiM0MzsgKgktIGlucHV0OiAgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyIGluIEJQRl9SRUdfQVggKHQwKQogICoJLSBvdXRwdXQ6IHVwZGF0ZWQgY291bnQgaW4gQlBGX1JFR19BWCAodDApCiAgKgotICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSSwgd2hlcmUKLSAqIHB0ciA9IEJQRl9SRUdfRlAgKHM1KSAmIzQzOyBCUEZfUkVHX0FYICh0MCkuIEJQRiBSMC1SNSAoYTUsIGEwLWE0KSBhcmUgc2F2ZWQKLSAqIGFjcm9zcyB0aGUgY2FsbDsgQlBGX1JFR19GUCAoczUpIGlzIGNhbGxlZS1zYXZlZCBhbmQgbmVlZHMgbm8gc2F2aW5nLgomIzQzOyAqIENhbGxzIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggdGhlIHN0YW5kYXJkIFJJU0MtViBBQkkuCiYjNDM7ICogQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZCBhY3Jvc3MgdGhlIGNhbGwuCiAgKi8KIAogU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pCkBAIC0yOCw3ICYjNDM7MjcsMTEgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pCiAJUkVHX1MJYTMsIDEqU1pSRUcoc3ApCiAJUkVHX1MJYTQsIDAqU1pSRUcoc3ApCiAKLQlhZGQJYTAsIHQwLCBzNQomIzQzOwkvKgomIzQzOwkgKiBCUEZfUkVHX0FYICh0MCkgY29udGFpbnMgdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlcjsgcGFzcyBpdCBhcwomIzQzOwkgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4gYTAuCiYjNDM7CSAqLwomIzQzOwltdglhMCwgdDAKIAljYWxsCWJwZl9jaGVja190aW1lZF9tYXlfZ290bwogCW12CXQwLCBhMAogCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYwppbmRleCBjNDY4NzJiMDcxY2U3Li40MDk4YzMzNzdjMjEzIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTE4NzIsOSAmIzQzOzE4NzIsOSBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGJwZl9qaXRfaW5zbihzdHJ1Y3QgYnBmX2ppdCAqaml0LCBzdHJ1Y3QgYnBmX3Byb2cgKmZwLAogCQlpZiAoKHZvaWQgKilmdW5jID09IGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKSB7CiAJCQkvKgogCQkJICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSBoYXMgYSBzcGVjaWFsIEFCSTogdGhlCi0JCQkgKiBwYXJhbWV0ZXJzIGFyZSBpbiBCUEZfUkVHX0FYIGFuZCBCUEZfUkVHXzEwOyB0aGUKLQkJCSAqIHJldHVybiB2YWx1ZSBpcyBpbiBCUEZfUkVHX0FYOyBhbmQgYWxsIEdQUnMgZXhjZXB0Ci0JCQkgKiBSRUdfVzAsIFJFR19XMSwgYW5kIEJQRl9SRUdfQVggYXJlIGNhbGxlZS1zYXZlZC4KJiM0MzsJCQkgKiBwYXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZSBhcmUgaW4gQlBGX1JFR19BWDsgYWxsCiYjNDM7CQkJICogR1BScyBleGNlcHQgUkVHX1cwLCBSRUdfVzEsIGFuZCBCUEZfUkVHX0FYIGFyZQomIzQzOwkJCSAqIGNhbGxlZS1zYXZlZC4KIAkJCSAqLwogCiAJCQkvKiBicmFzbCAlcjAsZnVuYyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKaW5kZXggMDZmNTY3YTQ2MGQ3Yi4uZTM0Yzk5OTgyYzRhMiAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCkBAIC0yMSw5ICYjNDM7MjEsOSBAQAogCiBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bykKIAkvKgotCSAqIFRoaXMgZnVuY3Rpb24gaGFzIGEgc3BlY2lhbCBBQkk6IHRoZSBwYXJhbWV0ZXJzIGFyZSBpbiAlcjEyIGFuZAotCSAqICVyMTM7IHRoZSByZXR1cm4gdmFsdWUgaXMgaW4gJXIxMjsgYWxsIEdQUnMgZXhjZXB0ICVyMCwgJXIxLCBhbmQKLQkgKiAlcjEyIGFyZSBjYWxsZWUtc2F2ZWQ7IGFuZCB0aGUgcmV0dXJuIGFkZHJlc3MgaXMgaW4gJXIwLgomIzQzOwkgKiBUaGlzIGZ1bmN0aW9uIGhhcyBhIHNwZWNpYWwgQUJJOiB0aGUgcGFyYW1ldGVyIGFuZCByZXR1cm4gdmFsdWUgYXJlCiYjNDM7CSAqIGluICVyMTI7IGFsbCBHUFJzIGV4Y2VwdCAlcjAsICVyMSwgYW5kICVyMTIgYXJlIGNhbGxlZS1zYXZlZDsgYW5kCiYjNDM7CSAqIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBpbiAlcjAuCiAJICovCiAJc3RtZyAlcjIsJXI1LEZSQU1FX09GRiYjNDM7UjJfT0ZGKCVyMTUpCiAJc3RnICVyMTQsRlJBTUVfT0ZGJiM0MztSMTRfT0ZGKCVyMTUpCkBAIC0zMyw3ICYjNDM7MzMsNyBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bykKIAlsYXkgJXIxNSwtRlJBTUVfU0laRSglcjE1KQogCXN0ZyAlcjEsX19TRl9CQUNLQ0hBSU4oJXIxNSkKIAotCWxheSAlcjIsMCglcjEyLCVyMTMpCiYjNDM7CWxnciAlcjIsJXIxMgogCWJyYXNsICVyMTQsYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvCiAJbGdyICVyMTIsJXIyCiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwppbmRleCA1NGM2OTBjYWUxOTA4Li42ZTlkOWU3YzJiMWQ2IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCkBAIC0xMSwxMiAmIzQzOzExLDYgQEAKIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKQogCUFOTk9UQVRFX05PRU5EQlIKIAotCS8qCi0JICogcjEwIHBhc3NlcyB1cyBzdGFjayBkZXB0aCwgbG9hZCB0aGUgcG9pbnRlciB0byBjb3VudCBhbmQgdGltZXN0YW1wCi0JICogaW50byByMTAgYnkgYWRkaW5nIGl0IHRvIEJQRiBmcmFtZSBwb2ludGVyLgotCSAqLwotCWxlYXEgKCVyYnAsICVyMTAsIDEpLCAlcjEwCi0KIAkvKiBTZXR1cCBmcmFtZS4gKi8KIAlwdXNocSAlcmJwCiAJbW92cSAlcnNwLCAlcmJwCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2ZpeHVwcy5jIGIva2VybmVsL2JwZi9maXh1cHMuYwppbmRleCA2NWI0NDFlNGEzNTE3Li5kYzU5NTAxYTMyYmJkIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL2ZpeHVwcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvZml4dXBzLmMKQEAgLTE3OTcsMjAgJiM0MzsxNzk3LDIwIEBAIGludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudikKIAkJCXN0YWNrX2RlcHRoX2V4dHJhID0gMTY7CiAJCQlpbnNuX2J1ZlswXSA9IEJQRl9MRFhfTUVNKEJQRl9EVywgQlBGX1JFR19BWCwgQlBGX1JFR18xMCwgc3RhY2tfb2ZmX2NudCk7CiAJCQlpZiAoaW5zbi0mZ3Q7b2ZmICZndDs9IDApCi0JCQkJaW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLSZndDtvZmYgJiM0MzsgNSk7CiYjNDM7CQkJCWluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi0mZ3Q7b2ZmICYjNDM7IDYpOwogCQkJZWxzZQogCQkJCWluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi0mZ3Q7b2ZmIC0gMSk7CiAJCQlpbnNuX2J1ZlsyXSA9IEJQRl9BTFU2NF9JTU0oQlBGX1NVQiwgQlBGX1JFR19BWCwgMSk7Ci0JCQlpbnNuX2J1ZlszXSA9IEJQRl9KTVBfSU1NKEJQRl9KTkUsIEJQRl9SRUdfQVgsIDAsIDIpOwomIzQzOwkJCWluc25fYnVmWzNdID0gQlBGX0pNUF9JTU0oQlBGX0pORSwgQlBGX1JFR19BWCwgMCwgMyk7CiAJCQkvKgotCQkJICogQVggaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBwYXNzIGluIHN0YWNrX29mZl9jbnQKLQkJCSAqICh0byBhZGQgdG8gcjEwL2ZwKSwgYW5kIGFsc28gYXMgdGhlIHJldHVybiB2YWx1ZSBvZgotCQkJICogdGhlIGNhbGwgdG8gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8uCiYjNDM7CQkJICogQVggaXMgdXNlZCB0byBwYXNzIEZQICYjNDM7IHN0YWNrX29mZl9jbnQgYXMgdGhlIGFyZ3VtZW50IHRvCiYjNDM7CQkJICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSwgYW5kIGFsc28gaG9sZHMgaXRzIHJldHVybiB2YWx1ZS4KIAkJCSAqLwotCQkJaW5zbl9idWZbNF0gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpOwotCQkJaW5zbl9idWZbNV0gPSBCUEZfRU1JVF9DQUxMKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKTsKLQkJCWluc25fYnVmWzZdID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTsKLQkJCWNudCA9IDc7CiYjNDM7CQkJaW5zbl9idWZbNF0gPSBCUEZfTU9WNjRfUkVHKEJQRl9SRUdfQVgsIEJQRl9SRUdfRlApOwomIzQzOwkJCWluc25fYnVmWzVdID0gQlBGX0FMVTY0X0lNTShCUEZfQURELCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTsKJiM0MzsJCQlpbnNuX2J1Zls2XSA9IEJQRl9FTUlUX0NBTEwoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pOwomIzQzOwkJCWluc25fYnVmWzddID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTsKJiM0MzsJCQljbnQgPSA4OwogCiAJCQluZXdfcHJvZyA9IGJwZl9wYXRjaF9pbnNuX2RhdGEoZW52LCBpICYjNDM7IGRlbHRhLCBpbnNuX2J1ZiwgY250KTsKIAkJCWlmICghbmV3X3Byb2cpCkBAIC0yNjYxLDQgJiM0MzsyNjYxLDMgQEAgaW50IGJwZl9yZW1vdmVfZmFzdGNhbGxfc3BpbGxzX2ZpbGxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpCiAKIAlyZXR1cm4gMDsKIH0KLQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jCmluZGV4IDMyOGNmNjMwMjEwYTIuLmM1OTk2ZDlkYzhjYzkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmMKQEAgLTYzNSwxNSAmIzQzOzYzNSwxNiBAQCBfX3hsYXRlZCgmIzM0OzQ6IHIwID0gJmFtcDsodm9pZCBfX3BlcmNwdSAqKShyMCkmIzM0OykKIF9feGxhdGVkKCYjMzQ7Li4uJiMzNDspCiAvKiBtYXlfZ290byBleHBhbnNpb24gc3RhcnRzICovCiBfX3hsYXRlZCgmIzM0OzY6IHIxMiA9ICoodTY0ICopKHIxMCAtMjQpJiMzNDspCi1fX3hsYXRlZCgmIzM0Ozc6IGlmIHIxMiA9PSAweDAgZ290byBwYyYjNDM7NiYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7NzogaWYgcjEyID09IDB4MCBnb3RvIHBjJiM0Mzs3JiMzNDspCiBfX3hsYXRlZCgmIzM0Ozg6IHIxMiAtPSAxJiMzNDspCi1fX3hsYXRlZCgmIzM0Ozk6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7MiYjMzQ7KQotX194bGF0ZWQoJiMzNDsxMDogcjEyID0gLTI0JiMzNDspCi1fX3hsYXRlZCgmIzM0OzExOiBjYWxsIHVua25vd24mIzM0OykKLV9feGxhdGVkKCYjMzQ7MTI6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs5OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMmIzQzOzMmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzEwOiByMTIgPSByMTAmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzExOiByMTIgJiM0Mzs9IC0yNCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTI6IGNhbGwgdW5rbm93biYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTM6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyJiMzNDspCiAvKiBtYXlfZ290byBleHBhbnNpb24gZW5kcyAqLwotX194bGF0ZWQoJiMzNDsxMzogKih1NjQgKikocjEwIC04KSA9IHIxJiMzNDspCi1fX3hsYXRlZCgmIzM0OzE0OiBleGl0JiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsxNDogKih1NjQgKikocjEwIC04KSA9IHIxJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsxNTogZXhpdCYjMzQ7KQogX19zdWNjZXNzCiBfX25ha2VkIHZvaWQgbWF5X2dvdG9faW50ZXJhY3Rpb25feDg2XzY0KHZvaWQpCiB7CkBAIC02NzYsMTUgJiM0Mzs2NzcsMTYgQEAgX194bGF0ZWQoJiMzNDsyOiByMSA9IDEmIzM0OykKIF9feGxhdGVkKCYjMzQ7MzogY2FsbCBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWQmIzM0OykKIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBzdGFydHMgKi8KIF9feGxhdGVkKCYjMzQ7NDogcjEyID0gKih1NjQgKikocjEwIC0yNCkmIzM0OykKLV9feGxhdGVkKCYjMzQ7NTogaWYgcjEyID09IDB4MCBnb3RvIHBjJiM0Mzs2JiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs1OiBpZiByMTIgPT0gMHgwIGdvdG8gcGMmIzQzOzcmIzM0OykKIF9feGxhdGVkKCYjMzQ7NjogcjEyIC09IDEmIzM0OykKLV9feGxhdGVkKCYjMzQ7NzogaWYgcjEyICE9IDB4MCBnb3RvIHBjJiM0MzsyJiMzNDspCi1fX3hsYXRlZCgmIzM0Ozg6IHIxMiA9IC0yNCYjMzQ7KQotX194bGF0ZWQoJiMzNDs5OiBjYWxsIHVua25vd24mIzM0OykKLV9feGxhdGVkKCYjMzQ7MTA6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs3OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMmIzQzOzMmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0Ozg6IHIxMiA9IHIxMCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7OTogcjEyICYjNDM7PSAtMjQmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzEwOiBjYWxsIHVua25vd24mIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzExOiAqKHU2NCAqKShyMTAgLTI0KSA9IHIxMiYjMzQ7KQogLyogbWF5X2dvdG8gZXhwYW5zaW9uIGVuZHMgKi8KLV9feGxhdGVkKCYjMzQ7MTE6ICoodTY0ICopKHIxMCAtOCkgPSByMSYjMzQ7KQotX194bGF0ZWQoJiMzNDsxMjogZXhpdCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTI6ICoodTY0ICopKHIxMCAtOCkgPSByMSYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTM6IGV4aXQmIzM0OykKIF9fc3VjY2VzcwogX19uYWtlZCB2b2lkIG1heV9nb3RvX2ludGVyYWN0aW9uKHZvaWQpCiB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuYwppbmRleCBkYjdlMzBkYTIzNGYxLi4xNzIxODk3MTYwZGM5IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmMKQEAgLTkwLDE1ICYjNDM7OTAsMTYgQEAgX19hcmNoX2xvb25nYXJjaAogX194bGF0ZWQoJiMzNDswOiAqKHU2NCAqKShyMTAgLTE2KSA9IDY1NTM1JiMzNDspCiBfX3hsYXRlZCgmIzM0OzE6ICoodTY0ICopKHIxMCAtOCkgPSAwJiMzNDspCiBfX3hsYXRlZCgmIzM0OzI6IHIxMiA9ICoodTY0ICopKHIxMCAtMTYpJiMzNDspCi1fX3hsYXRlZCgmIzM0OzM6IGlmIHIxMiA9PSAweDAgZ290byBwYyYjNDM7NiYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MzogaWYgcjEyID09IDB4MCBnb3RvIHBjJiM0Mzs3JiMzNDspCiBfX3hsYXRlZCgmIzM0OzQ6IHIxMiAtPSAxJiMzNDspCi1fX3hsYXRlZCgmIzM0OzU6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7MiYjMzQ7KQotX194bGF0ZWQoJiMzNDs2OiByMTIgPSAtMTYmIzM0OykKLV9feGxhdGVkKCYjMzQ7NzogY2FsbCB1bmtub3duJiMzNDspCi1fX3hsYXRlZCgmIzM0Ozg6ICoodTY0ICopKHIxMCAtMTYpID0gcjEyJiMzNDspCi1fX3hsYXRlZCgmIzM0Ozk6IHIwID0gMSYjMzQ7KQotX194bGF0ZWQoJiMzNDsxMDogcjAgPSAyJiMzNDspCi1fX3hsYXRlZCgmIzM0OzExOiBleGl0JiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs1OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMmIzQzOzMmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzY6IHIxMiA9IHIxMCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7NzogcjEyICYjNDM7PSAtMTYmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0Ozg6IGNhbGwgdW5rbm93biYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7OTogKih1NjQgKikocjEwIC0xNikgPSByMTImIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzEwOiByMCA9IDEmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzExOiByMCA9IDImIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzEyOiBleGl0JiMzNDspCiBfX3N1Y2Nlc3MKIF9fbmFrZWQgdm9pZCBtYXlfZ290b19iYXRjaF8yKHZvaWQpCiB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYwppbmRleCAzZDk5OTRhNTI0NjRlLi42MzliNTMzNjNjOWFjIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmMKQEAgLTcwLDYgJiM0Mzs3MCwyNSBAQCBfX25ha2VkIHZvaWQgbm9fcHJpdmF0ZV9zdGFja19uZXN0ZWQodm9pZCkKICYjMzQ7CTo6OiBfX2Nsb2JiZXJfYWxsKTsKIH0KIAomIzQzO1NFQygmIzM0O2ZlbnRyeS9icGZfZmVudHJ5X3Rlc3Q5JiMzNDspCiYjNDM7X19kZXNjcmlwdGlvbigmIzM0O1ByaXZhdGUgc3RhY2ssIHRpbWVkIG1heV9nb3RvJiMzNDspCiYjNDM7X19zdWNjZXNzIF9fcmV0dmFsKDApCiYjNDM7X19hcmNoX3g4Nl82NAomIzQzO19faml0ZWQoJiMzNDsJbW92YWJzcQkkMHh7ey4qfX0sICVyOSYjMzQ7KQomIzQzO19faml0ZWQoJiMzNDsuLi4mIzM0OykKJiM0MztfX2ppdGVkKCYjMzQ7CW1vdnEJJXI5LCAlcjEwJiMzNDspCiYjNDM7X19hcmNoX2FybTY0CiYjNDM7X19qaXRlZCgmIzM0Owltb3YJeDksIHgyNSYjMzQ7KQomIzQzO2ludCBwcml2YXRlX3N0YWNrX3RpbWVkX21heV9nb3RvKHZvaWQpCiYjNDM7ewomIzQzOwl2b2xhdGlsZSBfX3U2NCBzdGFja19zcGFjZVsxNl0gPSB7fTsKJiM0MzsKJiM0MzsJd2hpbGUgKGNhbl9sb29wKQomIzQzOwkJOwomIzQzOwomIzQzOwlyZXR1cm4gc3RhY2tfc3BhY2VbMF07CiYjNDM7fQomIzQzOwogX191c2VkCiBfX25ha2VkIHN0YXRpYyB2b2lkIGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZyh2b2lkKQogewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDEyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgcmV2aWV3IHJlcXVlc3QuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCBzbyBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIHRoZXJlLCB0aG91Z2ggSSYjMzk7bGwgYmUga2VlcGluZyBhbiBleWUgb24gdGhlIGJyb2FkZXIgaW1wbGljYXRpb25zIGFjcm9zcyBvdGhlciBhcmNoaXRlY3R1cmVzLgoKRmlyc3QsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNoYW5nZXMuIFRoZSBwYXRjaCB0b3VjaGVzIHNldmVyYWwgZmlsZXM6IGFzc2VtYmx5IGZpbGVzIGZvciB2YXJpb3VzIGFyY2hpdGVjdHVyZXMgKGBhcm02NGAsIGBwb3dlcnBjYCwgYHJpc2N2YCwgYHMzOTBgLCBhbmQgYHg4NmApLCBwbHVzIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCBhbmQgc29tZSBzZWxmdGVzdHMuCgpJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIGJ5dGVjb2RlIGV4cGFuc2lvbiBmb3IgYG1heV9nb3RvYCBvciB0aW1lZCBgbWF5X2dvdG9gLiBQcmV2aW91c2x5LCB0aGUgc3RhY2sgb2Zmc2V0IGNvdW50IHdhcyBwYXNzZWQgaW4gYSByZWdpc3RlciAoQVgpIHRvIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHJhbXBvbGluZSwgd2hpY2ggd291bGQgdGhlbiBjb21wdXRlIHRoZSBmcmFtZSBwb2ludGVyIHBsdXMgdGhlIG9mZnNldC4gTm93LCB0aGUgZml4dXAgaXRzZWxmIGVtaXRzIGluc3RydWN0aW9ucyB0byAqcHJlY29tcHV0ZSogYEFYID0gRlAgJiM0Mzsgc3RhY2tfb2ZmX2NudGAgYmVmb3JlIHRoZSB0cmFtcG9saW5lIGNhbGwuIFRoaXMgaXMgZ29pbmcgdG8gY2xlYW4gdXAgdGhlIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBhc3NlbWJseSBjb2RlLgoKQ29uc2VxdWVudGx5LCB0aGVyZSBhcmUgY2hhbmdlcyBpbiB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRyYW1wb2xpbmVzLCBzcGVjaWZpY2FsbHkgdGhlIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgIGZpbGUuIFRoZSBvcmlnaW5hbCBgbGVhcSAoJXJicCwgJXIxMCwgMSksICVyMTBgIGluc3RydWN0aW9uIGluIHRoZSB4ODYgdHJhbXBvbGluZSBpcyBnb25lLiBUaGF0IG1ha2VzIHNlbnNlIHNpbmNlIFIxMC9BWCBub3cgZGlyZWN0bHkgY29udGFpbnMgdGhlIHBvaW50ZXIuCgpUaGUgaW1wb3J0YW50IHRoaW5nIGlzLCB0aGlzICpkb2VzKiB0b3VjaCBleGVjdXRhYmxlIGNvZGUgb24gYW1kNjQ6IGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCBhbmQgYGFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU2AsIHNvIHRoaXMgZGVmaW5pdGVseSBhZmZlY3RzIEJQRiBwcm9ncmFtIHZlcmlmaWNhdGlvbiwgbG9hZGluZywgSklUIGNvbXBpbGF0aW9uLCBhbmQgZXhlY3V0aW9uIG9mIHByb2dyYW1zIHRoYXQgdXNlIGBtYXlfZ290b2Agb3IgdGhlIHRpbWVkIHZhcmlhbnQuIEkmIzM5O2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGVzZSBhcmVhcyBjbG9zZWx5LCBtYWtpbmcgc3VyZSB0aGF0IGl0JiMzOTtzIHNhZmUgYW5kIHBlcmZvcm1zIGNvcnJlY3RseS4KCk5leHQgc3RlcDogSSYjMzk7bSBnb2luZyB0byBydW4gYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGdldCB0aGUgcmVsZXZhbnQgY29udGV4dCBmcm9tIHRob3NlIGtleSBmaWxlcy4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlc2UgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthcmNoX2JwZl90aW1lZF9tYXlfZ290byYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMC1cbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxMTpTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMi1cdEFOTk9UQVRFX05PRU5EQlJcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDgtXHRSRVRcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzo0OTpTWU1fRlVOQ19FTkQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI3MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYGZpeHVwcy5jYCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbi4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBga2VybmVsL2JwZi9maXh1cHMuY2AgZmlsZS4gSSByZW1lbWJlciBzb21ldGhpbmcgcmVsYXRlZCB0byB3aGF0IEkmIzM5O20gd29ya2luZyBvbiBiZWluZyBoYW5kbGVkIGFyb3VuZCBsaW5lIDE3OTcuIExldCYjMzk7cyBzdGFydCB0aGVyZSBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEkgaGF2ZSBhIGh1bmNoIHRoaXMgaXMgdGhlIHJlbGV2YW50IHNlY3Rpb24uIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzdGFydCBkaXNzZWN0aW5nIHRoYXQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvZml4dXBzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzg1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3ODU6XHRcdFx0XHQgKiBkZXB0aC04IHN0b3JlcyB0aGUgc3RhcnQgdGltZXN0YW1wIG9mIHRoZSBsb29wLlxuMTc4NjpcdFx0XHRcdCAqXG4xNzg3Olx0XHRcdFx0ICogVGhlIHN0YXJ0aW5nIHZhbHVlIG9mIGNvdW50IGlzIEJQRl9NQVhfVElNRURfTE9PUFNcbjE3ODg6XHRcdFx0XHQgKiAoMHhmZmZmKS4gIEV2ZXJ5IGl0ZXJhdGlvbiBsb2FkcyBpdCBhbmQgc3VicyBpdCBieSAxLFxuMTc4OTpcdFx0XHRcdCAqIHVudGlsIHRoZSB2YWx1ZSBiZWNvbWVzIDAgaW4gQVggKHRodXMsIDEgaW4gc3RhY2spLFxuMTc5MDpcdFx0XHRcdCAqIGFmdGVyIHdoaWNoIHdlIGNhbGwgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8sIHdoaWNoXG4xNzkxOlx0XHRcdFx0ICogZWl0aGVyIHNldHMgQVggdG8gMHhmZmZmIHRvIGtlZXAgbG9vcGluZywgb3IgdG8gMFxuMTc5MjpcdFx0XHRcdCAqIHVwb24gdGltZW91dC4gQVggaXMgdGhlbiBzdG9yZWQgaW50byB0aGUgc3RhY2suIEluXG4xNzkzOlx0XHRcdFx0ICogdGhlIG5leHQgaXRlcmF0aW9uLCB3ZSBlaXRoZXIgc2VlIDAgYW5kIGJyZWFrIG91dCwgb3JcbjE3OTQ6XHRcdFx0XHQgKiBjb250aW51ZSBpdGVyYXRpbmcgdW50aWwgdGhlIG5leHQgdGltZSB2YWx1ZSBpcyAwXG4xNzk1Olx0XHRcdFx0ICogYWZ0ZXIgc3VidHJhY3Rpb24sIHJpbnNlIGFuZCByZXBlYXQuXG4xNzk2Olx0XHRcdFx0ICovXG4xNzk3Olx0XHRcdFx0c3RhY2tfZGVwdGhfZXh0cmEgPSAxNjtcbjE3OTg6XHRcdFx0XHRpbnNuX2J1ZlswXSA9IEJQRl9MRFhfTUVNKEJQRl9EVywgQlBGX1JFR19BWCwgQlBGX1JFR18xMCwgc3RhY2tfb2ZmX2NudCk7XG4xNzk5Olx0XHRcdFx0aWYgKGluc24tXHUwMDNlb2ZmIFx1MDAzZT0gMClcbjE4MDA6XHRcdFx0XHRcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cdTAwM2VvZmYgJiM0MzsgNik7XG4xODAxOlx0XHRcdFx0ZWxzZVxuMTgwMjpcdFx0XHRcdFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVx1MDAzZW9mZiAtIDEpO1xuMTgwMzpcdFx0XHRcdGluc25fYnVmWzJdID0gQlBGX0FMVTY0X0lNTShCUEZfU1VCLCBCUEZfUkVHX0FYLCAxKTtcbjE4MDQ6XHRcdFx0XHRpbnNuX2J1ZlszXSA9IEJQRl9KTVBfSU1NKEJQRl9KTkUsIEJQRl9SRUdfQVgsIDAsIDMpO1xuMTgwNTpcdFx0XHRcdC8qXG4xODA2Olx0XHRcdFx0ICogQVggaXMgdXNlZCB0byBwYXNzIEZQICYjNDM7IHN0YWNrX29mZl9jbnQgYXMgdGhlIGFyZ3VtZW50IHRvXG4xODA3Olx0XHRcdFx0ICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSwgYW5kIGFsc28gaG9sZHMgaXRzIHJldHVybiB2YWx1ZS5cbjE4MDg6XHRcdFx0XHQgKi9cbjE4MDk6XHRcdFx0XHRpbnNuX2J1Zls0XSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR19BWCwgQlBGX1JFR19GUCk7XG4xODEwOlx0XHRcdFx0aW5zbl9idWZbNV0gPSBCUEZfQUxVNjRfSU1NKEJQRl9BREQsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpO1xuMTgxMTpcdFx0XHRcdGluc25fYnVmWzZdID0gQlBGX0VNSVRfQ0FMTChhcmNoX2JwZl90aW1lZF9tYXlfZ290byk7XG4xODEyOlx0XHRcdFx0aW5zbl9idWZbN10gPSBCUEZfU1RYX01FTShCUEZfRFcsIEJQRl9SRUdfMTAsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpO1xuMTgxMzpcdFx0XHRcdGNudCA9IDg7XG4xODE0Olx0XG4xODE1Olx0XHRcdFx0bmV3X3Byb2cgPSBicGZfcGF0Y2hfaW5zbl9kYXRhKGVudiwgaSAmIzQzOyBkZWx0YSwgaW5zbl9idWYsIGNudCk7XG4xODE2Olx0XHRcdFx0aWYgKCFuZXdfcHJvZylcbjE4MTc6XHRcdFx0XHRcdHJldHVybiAtRU5PTUVNO1xuMTgxODpcdFxuMTgxOTpcdFx0XHRcdGRlbHRhICYjNDM7PSBjbnQgLSAxO1xuMTgyMDpcdFx0XHRcdGVudi1cdTAwM2Vwcm9nID0gcHJvZyA9IG5ld19wcm9nO1xuMTgyMTpcdFx0XHRcdGluc24gPSBuZXdfcHJvZy1cdTAwM2VpbnNuc2kgJiM0MzsgaSAmIzQzOyBkZWx0YTtcbjE4MjI6XHRcdFx0XHRnb3RvIG5leHRfaW5zbjtcbjE4MjM6XHRcdFx0fSBlbHNlIGlmIChicGZfaXNfbWF5X2dvdG9faW5zbihpbnNuKSkge1xuMTgyNDpcdFx0XHRcdGludCBzdGFja19vZmYgPSAtc3RhY2tfZGVwdGggLSA4O1xuMTgyNTpcdFxuMTgyNjpcdFx0XHRcdHN0YWNrX2RlcHRoX2V4dHJhID0gODtcbjE4Mjc6XHRcdFx0XHRpbnNuX2J1ZlswXSA9IEJQRl9MRFhfTUVNKEJQRl9EVywgQlBGX1JFR19BWCwgQlBGX1JFR18xMCwgc3RhY2tfb2ZmKTtcbjE4Mjg6XHRcdFx0XHRpZiAoaW5zbi1cdTAwM2VvZmYgXHUwMDNlPSAwKVxuMTgyOTpcdFx0XHRcdFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVx1MDAzZW9mZiAmIzQzOyAyKTtcbjE4MzA6XHRcdFx0XHRlbHNlXG4xODMxOlx0XHRcdFx0XHRpbnNuX2J1ZlsxXSA9IEJQRl9KTVBfSU1NKEJQRl9KRVEsIEJQRl9SRUdfQVgsIDAsIGluc24tXHUwMDNlb2ZmIC0gMSk7XG4xODMyOlx0XHRcdFx0aW5zbl9idWZbMl0gPSBCUEZfQUxVNjRfSU1NKEJQRl9TVUIsIEJQRl9SRUdfQVgsIDEpO1xuMTgzMzpcdFx0XHRcdGluc25fYnVmWzNdID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmYpO1xuMTgzNDpcdFx0XHRcdGNudCA9IDQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2NjgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIEltcGxlbWVudGF0aW9uIERldGFpbHMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIEJQRiBhbmQgcG90ZW50aWFsIHRpbWUtcmVsYXRlZCAmIzM0O2dvdG8mIzM0OyBiZWhhdmlvciBvbiB4ODYgYXJjaGl0ZWN0dXJlcyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBhc3NlbWJseS4gSXQmIzM5O3Mgb2Z0ZW4gdGhlIHF1aWNrZXN0IHdheSB0byB1bmRlcnN0YW5kIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyBvZiBob3cgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzICphY3R1YWxseSogaW1wbGVtZW50ZWQsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggcGVyZm9ybWFuY2UtY3JpdGljYWwgY29kZSBsaWtlIEJQRiBmaWx0ZXJzLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBgYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYCBzcGVjaWZpY2FsbHkuIFJlYWRpbmcgdGhlIGFzc2VtYmx5IGlzIGdvaW5nIHRvIGdpdmUgbWUgdGhlIGRlZmluaXRpdmUgdmlldyBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZywgYnlwYXNzaW5nIGFueSBjb21waWxlciBvcHRpbWl6YXRpb25zIHRoYXQgbWlnaHQgb2JzY3VyZSB0aGUgbG9naWMgaW4gQyBjb2RlLiBUaW1lIHRvIGRpZyBpbiBhbmQgZ2V0IGEgcHJlY2lzZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQvKiBDb3B5cmlnaHQgKGMpIDIwMjUgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuICovXG4gICAzOlx0XG4gICA0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2VcbiAgIDU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9saW5rYWdlLmhcdTAwM2VcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2Nhc20vbm9zcGVjLWJyYW5jaC5oXHUwMDNlXG4gICA3Olx0XG4gICA4Olx0XHQuY29kZTY0XG4gICA5Olx0XHQuc2VjdGlvbiAudGV4dCwgXCYjMzQ7YXhcJiMzNDtcbiAgMTA6XHRcbiAgMTE6XHRTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiAgMTI6XHRcdEFOTk9UQVRFX05PRU5EQlJcbiAgMTM6XHRcbiAgMTQ6XHRcdC8qIFNldHVwIGZyYW1lLiAqL1xuICAxNTpcdFx0cHVzaHEgJXJicFxuICAxNjpcdFx0bW92cSAlcnNwLCAlcmJwXG4gIDE3Olx0XG4gIDE4Olx0XHQvKiBTYXZlIHIwLXI1LiAqL1xuICAxOTpcdFx0cHVzaHEgJXJheFxuICAyMDpcdFx0cHVzaHEgJXJkaVxuICAyMTpcdFx0cHVzaHEgJXJzaVxuICAyMjpcdFx0cHVzaHEgJXJkeFxuICAyMzpcdFx0cHVzaHEgJXJjeFxuICAyNDpcdFx0cHVzaHEgJXI4XG4gIDI1Olx0XG4gIDI2Olx0XHQvKlxuICAyNzpcdFx0ICogcjEwIGhhcyB0aGUgcG9pbnRlciB0byBjb3VudCBhbmQgdGltZXN0YW1wLCBwYXNzIGl0IGFzIGZpcnN0XG4gIDI4Olx0XHQgKiBhcmd1bWVudC5cbiAgMjk6XHRcdCAqL1xuICAzMDpcdFx0bW92cSAlcjEwLCAlcmRpXG4gIDMxOlx0XG4gIDMyOlx0XHQvKiBFbWl0IGNhbGwgZGVwdGggYWNjb3VudGluZyBmb3IgY2FsbCBiZWxvdy4gKi9cbiAgMzM6XHRcdENBTExfREVQVEhfQUNDT1VOVFxuICAzNDpcdFx0Y2FsbCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbiAgMzU6XHRcbiAgMzY6XHRcdC8qIEJQRl9SRUdfQVg9cjEwIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgcmV0dXJuIHZhbHVlIHRvIGl0LiAqL1xuICAzNzpcdFx0bW92cSAlcmF4LCAlcjEwXG4gIDM4Olx0XG4gIDM5Olx0XHQvKiBSZXN0b3JlIHI1LXIwLiAqL1xuICA0MDpcdFx0cG9wcSAlcjhcbiAgNDE6XHRcdHBvcHEgJXJjeFxuICA0MjpcdFx0cG9wcSAlcmR4XG4gIDQzOlx0XHRwb3BxICVyc2lcbiAgNDQ6XHRcdHBvcHEgJXJkaVxuICA0NTpcdFx0cG9wcSAlcmF4XG4gIDQ2Olx0XG4gIDQ3Olx0XHRsZWF2ZVxuICA0ODpcdFx0UkVUXG4gIDQ5Olx0U1lNX0ZVTkNfRU5EKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTE3CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBCUEYgVGltZWQgR290byBSZXN0cmljdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0aW1lZCBgZ290b2AgZnVuY3Rpb25hbGl0eSBpbiBCUEYgaXMgYmVpbmcgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IGhvdyBpdHMgYXZhaWxhYmlsaXR5IGlzIGRldGVybWluZWQgYWNyb3NzIGFyY2hpdGVjdHVyZXMuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGxvY2F0aW9ucyB3aGVyZSBgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvYCBhbmQgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBhcmUgZGVmaW5lZCBhbmQgY29uZmlndXJlZC4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBrZXJuZWwgbWFrZXMgdGhvc2UgZGVjaXNpb25zLgoKVG8ga2ljayB0aGluZ3Mgb2ZmLCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGFuZCBkaXJ0eSBzZWFyY2guIEEgYGdyZXBgIG9uIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2Agc2hvdWxkIHF1aWNrbHkgcmV2ZWFsIHRoZSByZWxldmFudCBmaWxlcyBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhhdCBmdW5jdGlvbi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgYmFzZSB0byBnbyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXJjaF9icGZfdGltZWRfbWF5X2dvdG8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MTMwMj1zdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTE3MjQtXHRcdC8qXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzoxNzI1Olx0XHQgKiBDYWxsIHRvIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCkgaXMgZW1pdHRlZCBieSB0aGVcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTE3MjYtXHRcdCAqIHZlcmlmaWVyIGFuZCBjYWxsZWQgd2l0aCBjdXN0b20gY2FsbGluZyBjb252ZW50aW9uIHdpdGhcbi0tXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0xNzI4LVx0XHQgKi9cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjE3Mjk6XHRcdGlmIChmdW5jX2FkZHIgIT0gKHU2NClhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTE3MzAtXHRcdFx0ZW1pdChBNjRfTU9WKDEsIHIwLCBBNjRfUigwKSksIGN0eCk7XG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNS1cbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjY6U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy03LVx0LyogQWxsb2NhdGUgc3RhY2sgc3BhY2UgYW5kIGVtaXQgZnJhbWUgcmVjb3JkICovXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzMtXHRyZXRcbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM0OlNZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmM9OTY3PWludCBicGZfaml0X2J1aWxkX2JvZHkoc3RydWN0IGJwZl9wcm9nICpmcCwgdTMyICppbWFnZSwgdTMyICpmaW1hZ2UsIHN0cnVjdCBjb2RlZ2VuX2NvbnRleHQgKmN0eCxcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTc2OS1cdFx0XHQvKlxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jOjE3NzA6XHRcdFx0ICogQ2FsbCB0byBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIGlzIGVtaXR0ZWQgYnkgdGhlXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTc3MS1cdFx0XHQgKiB2ZXJpZmllciBhbmQgY2FsbGVkIHdpdGggY3VzdG9tIGNhbGxpbmcgY29udmVudGlvbiB3aXRoXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jLTE3ODItXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTc4MzpcdFx0XHRpZiAoZnVuY19hZGRyID09ICh1NjQpYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pIHtcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYy0xNzg0LVx0XHRcdFx0cmV0ID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTctLypcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6ODogKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIHRyYW1wb2xpbmUgZm9yIHBvd2VycGM2NFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy05LSAqXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xOS1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MjA6U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTIxLVx0LyogUHJvbG9ndWU6IHNhdmUgTFIsIGFsbG9jYXRlIGZyYW1lICovXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy01Ni1cdGJsclxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzo1NzpTWU1fRlVOQ19FTkQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYz0xMzYzPWludCBicGZfaml0X2VtaXRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBydl9qaXRfY29udGV4dCAqY3R4LFxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTg0Ny1cdFx0LypcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTg0ODpcdFx0ICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSBpcyBlbWl0dGVkIGJ5IHRoZSB2ZXJpZmllciBhbmRcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTg0OS1cdFx0ICogcmV0dXJucyBpdHMgcmVzdWx0IGluIEJQRl9SRUdfQVggaW5zdGVhZCBvZiBCUEZfUkVHXzAsIHNvXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYy0xODUxLVx0XHQgKi9cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTg1MjpcdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyAhPSBCUEZfUFNFVURPX0NBTEwgXHUwMDI2XHUwMDI2IGFkZHIgIT0gKHU2NClhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTg1My1cdFx0XHRlbWl0X212KGJwZl90b19ydl9yZWcoQlBGX1JFR18wLCBjdHgpLCBSVl9SRUdfQTAsIGN0eCk7XG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTUtXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxNjpTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTE3LVx0YWRkaVx0c3AsIHNwLCAtKDgqU1pSRUcpXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDktXHRyZXRcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjUwOlNZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jPTk1NT1zdGF0aWMgbm9pbmxpbmUgaW50IGJwZl9qaXRfaW5zbihzdHJ1Y3QgYnBmX2ppdCAqaml0LCBzdHJ1Y3QgYnBmX3Byb2cgKmZwLFxuLS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMTg3MS1cbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6MTg3MjpcdFx0aWYgKCh2b2lkICopZnVuYyA9PSBhcmNoX2JwZl90aW1lZF9tYXlfZ290bykge1xuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0xODczLVx0XHRcdC8qXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jOjE4NzQ6XHRcdFx0ICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSBoYXMgYSBzcGVjaWFsIEFCSTogdGhlXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTE4NzUtXHRcdFx0ICogcGFyYW1ldGVyIGFuZCByZXR1cm4gdmFsdWUgYXJlIGluIEJQRl9SRUdfQVg7IGFsbFxuLS1cbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMjEtXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjIyOlNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0yMy1cdC8qXG4tLVxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy00NC1cdEJSX0VYICVyMVxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzo0NTpTWU1fRlVOQ19FTkQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4tLVxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEwLVxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjExOlNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEyLVx0QU5OT1RBVEVfTk9FTkRCUlxuLS1cbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy00OC1cdFJFVFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjQ5OlNZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEyNTI9dm9pZCBhcmNoX2JwZl9zdGFja193YWxrKGJvb2wgKCpjb25zdW1lX2ZuKSh2b2lkICpjb29raWUsIHU2NCBpcCwgdTY0IHNwLCB1NjQgYnApLCB2b2lkICpjb29raWUpO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMjUzOnU2NCBhcmNoX2JwZl90aW1lZF9tYXlfZ290byh2b2lkKTtcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTI1NC11NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKik7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MzM4ND1ib29sIF9fd2VhayBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvKHZvaWQpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMzM4OC1cbmtlcm5lbC9icGYvY29yZS5jOjMzODk6dTY0IF9fd2VhayBhcmNoX2JwZl90aW1lZF9tYXlfZ290byh2b2lkKVxua2VybmVsL2JwZi9jb3JlLmMtMzM5MC17XG4tLVxua2VybmVsL2JwZi9maXh1cHMuYz0xNTA4PWludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE3ODktXHRcdFx0ICogdW50aWwgdGhlIHZhbHVlIGJlY29tZXMgMCBpbiBBWCAodGh1cywgMSBpbiBzdGFjayksXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjE3OTA6XHRcdFx0ICogYWZ0ZXIgd2hpY2ggd2UgY2FsbCBhcmNoX2JwZl90aW1lZF9tYXlfZ290bywgd2hpY2hcbmtlcm5lbC9icGYvZml4dXBzLmMtMTc5MS1cdFx0XHQgKiBlaXRoZXIgc2V0cyBBWCB0byAweGZmZmYgdG8ga2VlcCBsb29waW5nLCBvciB0byAwXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0xODA2LVx0XHRcdCAqIEFYIGlzIHVzZWQgdG8gcGFzcyBGUCAmIzQzOyBzdGFja19vZmZfY250IGFzIHRoZSBhcmd1bWVudCB0b1xua2VybmVsL2JwZi9maXh1cHMuYzoxODA3Olx0XHRcdCAqIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCksIGFuZCBhbHNvIGhvbGRzIGl0cyByZXR1cm4gdmFsdWUuXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE4MDgtXHRcdFx0ICovXG4tLVxua2VybmVsL2JwZi9maXh1cHMuYy0xODEwLVx0XHRcdGluc25fYnVmWzVdID0gQlBGX0FMVTY0X0lNTShCUEZfQURELCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcbmtlcm5lbC9icGYvZml4dXBzLmM6MTgxMTpcdFx0XHRpbnNuX2J1Zls2XSA9IEJQRl9FTUlUX0NBTEwoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pO1xua2VybmVsL2JwZi9maXh1cHMuYy0xODEyLVx0XHRcdGluc25fYnVmWzddID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzNzgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlOgoKKipJbnZlc3RpZ2F0aW5nIHg4NiBKSVQgQ29tcGlsYXRpb24gZm9yIEJQRiBDYWxscyoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiBob3cgdGhpcyBpcyBoYW5kbGVkIG9uIHg4Ni4gSSYjMzk7bSB0aGlua2luZyB0aGUgYmVzdCBwbGFjZSB0byBzdGFydCBpcyBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYC4gSXQmIzM5O3MgYWxtb3N0IGFsd2F5cyB0aGUgZ28tdG8gZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSB4ODYgYXJjaGl0ZWN0dXJlIGhhbmRsZXMgdGhlIEpJVCBjb21waWxhdGlvbiBvZiBCUEYgaW5zdHJ1Y3Rpb25zIGFuZCBlc3BlY2lhbGx5IGZ1bmN0aW9uIGNhbGxzLiBJJiMzOTttIGtlZW4gdG8gc2VlIGhvdyB0aGV5JiMzOTt2ZSBvcHRpbWl6ZWQgdGhlIGNhbGxpbmcgY29udmVudGlvbnMsIGFyZ3VtZW50IHBhc3NpbmcsIGFuZCBhbnkgcG90ZW50aWFsIGlubGluaW5nIHRyaWNrcyB0aGV5JiMzOTtyZSB1c2luZyB0byBnZXQgdGhlIGJlc3QgcGVyZm9ybWFuY2Ugb3V0IG9mIHRoZSBnZW5lcmF0ZWQgY29kZS4gS25vd2luZyBob3cgdGhleSYjMzk7dmUgdGFja2xlZCB0aGlzIG9uIHg4NiB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIGFuZCBjb21wYXJpbmcgZGlmZmVyZW50IGFwcHJvYWNoZXMuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSB3YWl0aW5nIHRvIGJlIHVuY292ZXJlZCBpbiB0aGF0IGZpbGUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FyY2hfYnBmX3RpbWVkX21heV9nb3RvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEwLVxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjExOlNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEyLVx0QU5OT1RBVEVfTk9FTkRCUlxuLS1cbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy00OC1cdFJFVFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjQ5OlNZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MDAKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIENoYW5nZSBmb3IgUHJpdmF0ZSBTdGFja3MqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGNoYW5nZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBtb2RpZmljYXRpb24uIFJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNgLiBUaGUgc3BlY2lmaWMgc2VjdGlvbiBvZiBpbnRlcmVzdCBpcyBgU0VDKCYjMzQ7ZmVudHJ5L2JwZl9mZW50cnlfdGVzdDkmIzM0OylgLCB3aGljaCBpcyBkZXNjcmliZWQgYXMgcmVsYXRpbmcgdG8gdGhlICYjMzQ7UHJpdmF0ZSBzdGFjaywgdGltZWQgbWF5X2dvdG8mIzM0OyBmdW5jdGlvbmFsaXR5LgoKUHJldmlvdXNseSwgdGhlIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgZnVuY3Rpb24gaGFkIGFuIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB3YXkgb2YgZGV0ZXJtaW5pbmcgYW4gZWZmZWN0aXZlIHN0YWNrIHBvaW50ZXIuIE9uIHg4NiwgaXQgd2FzIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBsZWFxICglcmJwLCAlcjEwLCAxKSwgJXIxMGAsIGFuZCBvbiBhcm02NCwgYW4gYGFkZCB4MCwgeDksIHgyNWAuIFRoaXMgd2FzIHJlbHlpbmcgb24gdGhlIGhhcmR3YXJlIGZyYW1lIHBvaW50ZXIgcmVnaXN0ZXIgKHJicCBvbiB4ODYsIHgyNSBvbiBhcm02NCkgdG8gY2FsY3VsYXRlIHRoZSBvZmZzZXQuCgpOb3csIHdpdGggdGhlIHByaXZhdGUgc3RhY2sgZmVhdHVyZSBlbmFibGVkLCB0aGluZ3MgZ2V0IG1vcmUgaW50ZXJlc3RpbmcuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB3aGVuIHRoZSBCUEYgcHJpdmF0ZSBzdGFjayBpcyBhY3RpdmUsIEJQRl9SRUdfRlAgKFIxMCkgaXNuJiMzOTt0IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZSBoYXJkd2FyZSBzdGFjayBmcmFtZSBwb2ludGVyICglcmJwKS4gRXNzZW50aWFsbHksIFIxMCBpcyBtYW5hZ2VkIHdpdGhpbiB0aGUgcHJpdmF0ZSBzdGFjayBidWZmZXIsIHNvIHdlIGNhbiYjMzk7dCBhc3N1bWUgYSBkaXJlY3QgY29ycmVzcG9uZGVuY2UgdG8gYCVyYnBgLiBUaGUga2V5IGhlcmUgaXMgdG8gc2VlIGhvdyB0aGUgYnBmIGNvZGUgY29tcHV0ZXMgdGhlIGZyYW1lIHBvaW50ZXIsIGFsbG93aW5nIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgdG8gc2ltcGx5IHVzZSB0aGUgcHJlY29tcHV0ZWQgdmFsdWUuIEkgbmVlZCB0byByZS1leGFtaW5lIHRoZSBgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvYCBhbmQgdGhlIHZlcmlmaWVyIGNvZGUgc3Vycm91bmRpbmcgdGhlIGB0aW1lZF9tYXlfZ290b2AgZnVuY3Rpb24gdG8gZ2V0IGEgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfdGltZWRfbWF5X2dvdG8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9Nj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0yMC1cdG1vdlx0eDAsIHg5XG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoyMTpcdGJsXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTIyLVx0LyogQlBGX1JFR19BWCh4OSkgd2lsbCBiZSBzdG9yZWQgaW50byBjb3VudCwgc28gbW92ZSByZXR1cm4gdmFsdWUgdG8gaXQuICovXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMy0gKlxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxNDogKiBDYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggbm9ybWFsIHBvd2VycGM2NCBBQkk6XG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTE1LSAqIFx0LSByMyA9IHB0ciwgcmV0dXJuIGluIHIzXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0yMD1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM4LVx0bXIgICAgICByMywgcjEyXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM5Olx0YmwgICAgICBDRlVOQyhicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8pXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTQwLVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTExLSAqXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxMjogKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLlxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTMtICogQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZCBhY3Jvc3MgdGhlIGNhbGwuXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9MTY9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzQtXHRtdlx0YTAsIHQwXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzozNTpcdGNhbGxcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzYtXHRtdlx0dDAsIGEwXG4tLVxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0yMj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM2LVx0bGdyICVyMiwlcjEyXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM3Olx0YnJhc2wgJXIxNCxicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzgtXHRsZ3IgJXIxMiwlcjJcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9MTE9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4tLVxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTMzLVx0Q0FMTF9ERVBUSF9BQ0NPVU5UXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MzQ6XHRjYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM1LVxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTI1Mz11NjQgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8odm9pZCk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEyNTQ6dTY0IGJwZl9jaGVja190aW1lZF9tYXlfZ290byhzdHJ1Y3QgYnBmX3RpbWVkX21heV9nb3RvICopO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMjU1LWJvb2wgYnBmX2hlbHBlcl9jaGFuZ2VzX3BrdF9kYXRhKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCk7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MzM5ND1zdGF0aWMgbm9pbmxpbmUgdm9pZCBicGZfcHJvZ19yZXBvcnRfbWF5X2dvdG9fdmlvbGF0aW9uKHZvaWQpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMzQwOS1cbmtlcm5lbC9icGYvY29yZS5jOjM0MTA6dTY0IGJwZl9jaGVja190aW1lZF9tYXlfZ290byhzdHJ1Y3QgYnBmX3RpbWVkX21heV9nb3RvICpwKVxua2VybmVsL2JwZi9jb3JlLmMtMzQxMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NjUxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyB0aGUgQlBGIEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGludG8gdGhlIG51dHMgYW5kIGJvbHRzIG9mIHRoZSBCUEYgaW1wbGVtZW50YXRpb24uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBob3cgaXQmIzM5O3MgYnVpbHQgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBlbnZpcm9ubWVudC4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgcGF0aCBmcm9tIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gZG93biB0byB0aGUgYWN0dWFsIGNvZGUuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGVzOyBJJiMzOTttIGJldHRpbmcgdGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVsZXZhbnQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLCBlc3BlY2lhbGx5IGFueXRoaW5nIHJlbGF0ZWQgdG8gQlBGIGl0c2VsZiBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGFkYXB0YXRpb25zIGxpa2UgdGhlIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgIGZpbGUuIFRoZW4sIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgaG93IHRoZXNlIGNvbXBvbmVudHMgYXJlIGxpbmtlZCB0b2dldGhlciwgSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBNYWtlZmlsZSBsb2NhdGVkIHdpdGhpbiBgYXJjaC94ODYvbmV0L2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGhvdyBldmVyeXRoaW5nIGZpdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90aW1lZF9tYXlfZ290byYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9uZXQvTWFrZWZpbGU9OD1lbHNlXG5hcmNoL3g4Ni9uZXQvTWFrZWZpbGU6OTogICAgICAgIG9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdF9jb21wLm8gYnBmX3RpbWVkX21heV9nb3RvLm9cbmFyY2gveDg2L25ldC9NYWtlZmlsZS0xMC1lbmRpZlxuLS1cbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMC1cbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxMTpTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMi1cdEFOTk9UQVRFX05PRU5EQlJcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDgtXHRSRVRcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzo0OTpTWU1fRlVOQ19FTkQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MTg1CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCByZWxhdGVzIHRvIHRoZSBrZXJuZWwgYW5kIGVCUEY6CgoqKkludmVzdGlnYXRpbmcgYGZpeHVwcy5jYCBpbiB0aGUgZUJQRiBDb250ZXh0KioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgZml4dXBzLmNgIHNvdXJjZSBmaWxlIGlzIGJ1aWx0IHdpdGhpbiB0aGUgZUJQRiBzdWJzeXN0ZW0uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGBNYWtlZmlsZWAgaW4gdGhlIHJlbGV2YW50IGBrZXJuZWwvYnBmL2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIGJ1aWxkIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMuIFRoZSBgTWFrZWZpbGVgIHdpbGwgYmUgdGhlIGRlZmluaXRpdmUgc291cmNlIG9mIHRydXRoIGZvciBob3cgdGhpcyBzcGVjaWZpYyBmaWxlIGlzIGNvbXBpbGVkIGFuZCBsaW5rZWQuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBpdCBpcyBsaW5rZWQgc29tZXdoZXJlIGluIHRoZSBga2VybmVsL2JwZi9gIGRpcmVjdG9yeSwgaG93ZXZlciwgaXQmIzM5O3MgYWxzbyBwb3NzaWJsZSB0aGF0IHRoaXMgZmlsZSBpcyBpbmNsdWRlZCB2aWEgYW4gaW5jbHVkZSBzdGF0ZW1lbnQgaW4gYW5vdGhlciBmaWxlIGFuZCB0aGF0IHRoZSBgTWFrZWZpbGVgIHRoYXQgYnVpbGRzIGBmaXh1cHMuY2AgbWF5IGJlIGluIGFub3RoZXIgZm9sZGVyLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBmb2xkZXIgYW5kIGxvb2sgZm9yIGFuIGluY2x1ZGUgc3RhdGVtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmaXh1cHMubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT0xMz1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfbG9jYWxfc3RvcmFnZS5vIGJwZl90YXNrX3N0b3JhZ2Uub1xua2VybmVsL2JwZi9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBmaXh1cHMubyBjZmcubyBzdGF0ZXMubyBiYWNrdHJhY2subyBjaGVja19idGYub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xNS1vYmotJHtDT05GSUdfQlBGX0xTTX1cdCAgJiM0Mzs9IGJwZl9pbm9kZV9zdG9yYWdlLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1NTcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMjE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIEJQRiBgbWF5X2dvdG9gIGFuZCBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGBXb3J0aEZ1enppbmdgIGlzIGluZGVlZCB0cnVlLiBXZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgQlBGIHZlcmlmaWVyIGZpeHVwcyBhbmQgdGhlIHg4NiBCUEYgSklUIHRyYW1wb2xpbmUuIFNwZWNpZmljYWxseSwgYGJwZl9kb19taXNjX2ZpeHVwc2AgaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgIGFuZCBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIGluIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgIGFyZSBvZiBpbnRlcmVzdC4gIFRoZSBmYWN0IHRoYXQgcHJvZ3JhbXMgdXNpbmcgYG1heV9nb3RvYCBvciB0aW1lZCBgbWF5X2dvdG9gIGNhbiBiZSBsb2FkZWQgdmlhIGBzeXNfYnBmKEJQRl9QUk9HX0xPQUQpYCBieSBwb3RlbnRpYWxseSB1bnByaXZpbGVnZWQgdXNlcnNwYWNlLCBldmVuIHRocm91Z2ggdG9vbHMgbGlrZSBzeXprYWxsZXIsIGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgYSBjYW5kaWRhdGUuCgpUaGUgY3JpdGljYWwgcGF0aCBpcyBjbGVhcjogYGJwZl9kb19taXNjX2ZpeHVwc2AgcmV3cml0ZXMgaW5zdHJ1Y3Rpb25zIGZvciBgbWF5X2dvdG9gLCBhbmQgd2hlbiB0aGUgSklUZWQgcHJvZ3JhbSBydW5zIG9uIHg4NiwgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBpcyBjYWxsZWQuIFRoaXMgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCAqbW9kaWZpYWJsZSogZXhlY3V0YWJsZSBrZXJuZWwgY29kZSwgd2hpY2gsIGFzIHdlIGtub3csIGlzIGFuIGV4Y2VsbGVudCBwbGFjZSB0byBsb29rIGZvciBzdWJ0bGUgYnVncy4gSSYjMzk7bSB0aGlua2luZyBpbnN0cnVjdGlvbiByZXdyaXRpbmcsIGJyYW5jaCBvZmZzZXRzLCBhbmQgcmVnaXN0ZXIgYWxsb2NhdGlvbiB3aXRoaW4gYGJwZl9kb19taXNjX2ZpeHVwc2Ag4oCTIHNwZWNpZmljYWxseSB0aGluZ3MgbGlrZSBgaW5zbi0mZ3Q7b2ZmICYjNDM7IDZgLCBgZGVsdGEgJiM0Mzs9IGNudCAtIDFgLCBBWCByZWdpc3RlciBoYW5kbGluZywgYW5kIHN0YWNrIG9mZnNldHMsIHRoZXkgYXJlIGFsbCByaXBlIGZvciBmdXp6aW5nLiBBbHNvLCB0aGUgZXhlY3V0aW9uIG9mIHRoZSByZXN1bHRpbmcgQlBGIHByb2dyYW1zIGlzIHdvcnRoIGZ1enppbmcsIHRvby4KClNvLCBgV29ydGhGdXp6aW5nYCA9IFRydWUuCgpOb3csIGxldCYjMzk7cyByZWZpbmUgdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QuICBXZSBrbm93IHRoYXQ6CgoqICAgYGJwZl9kb19taXNjX2ZpeHVwc2AgKGluIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCkgaXMgZGVmaW5pdGVseSBvbiB0aGUgbGlzdC4KKiAgIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgKGluIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgKSBpcywgb2YgY291cnNlLCBhIHByaW1hcnkgZm9jdXMuCiogICBBbmQgd2hpbGUgaXQmIzM5O3Mgbm90IG1vZGlmaWVkIGRpcmVjdGx5LCBgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvYCAoaW4gYGtlcm5lbC9icGYvY29yZS5jYCkgaXMgdGhlIHRhcmdldCBjYWxsZWQgYnkgdGhlIHRyYW1wb2xpbmUuCgpOb3csIGxldCYjMzk7cyB2ZXJpZnkgaWYgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBpcywgaW4gZmFjdCwgYSBzeW1ib2wuIENvbmZpcm1lZC4gV2UgaGF2ZSB0aGUgZGVmaW5pdGlvbnMgaW4gYGluY2x1ZGUvbGludXgvZmlsdGVyLmhgLCBgYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYCwgYW5kIGBrZXJuZWwvYnBmL2NvcmUuY2AuIFdlIGhhdmUgYGJwZl9kb19taXNjX2ZpeHVwc2AgaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgLCB0b28uCgpJJiMzOTt2ZSBjaGVja2VkLCBhbmQgdGhlICpvbmx5KiBtb2RpZmljYXRpb24gaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgIGlzIGluZGVlZCB3aXRoaW4gYGJwZl9kb19taXNjX2ZpeHVwc2AuIEFuZCBubyBvdGhlciBmdW5jdGlvbnMsIGJlc2lkZXMgdGhhdCBhbmQgYSB0cmFpbGluZyBuZXdsaW5lLCB3ZXJlIHRvdWNoZWQuCgpMb29raW5nIGF0IGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgLCB0aGUgY2hhbmdlIHRvIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2Agc2VlbXMgdG8gYmUgdGhlIHJlbW92YWwgb2YgYGxlYXEgKCVyYnAsICVyMTAsIDEpLCAlcjEwYC4KCkRpdmluZyBkZWVwZXIsIEkgY2hlY2tlZCBvdGhlciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZmlsZXMgYW5kIHJlYWxpemVkIHRoZSBpbXBhY3QgaXMgbm90IGNvbmZpbmVkIHRvIHg4Ni4gVGhlIHJlbGV2YW50IHBhcnRzIGFyZToKIC0gYGFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYAogLSBgYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU2AKIC0gYGFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYAogLSBgYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY2AsIGBhcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYAogLSBgYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYAoKU28gb24gYW1kNjQ6Ci0gYGtlcm5lbC9icGYvZml4dXBzLmNgOiBgYnBmX2RvX21pc2NfZml4dXBzYAotIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgOiBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gCgpBcyBmb3IgdGhlIGNvbmZpZ3MsIHdlIG5lZWQgYEJQRl9TWVNDQUxMYCBmb3IgYGZpeHVwcy5jYCAodmVyaWZpZXIsIGBzeXNfYnBmYCkgYW5kIGBCUEZfSklUYCBmb3IgYGJwZl90aW1lZF9tYXlfZ290by5TYCAoQlBGIEpJVCkuIEkmIzM5O2xsIGRvdWJsZS1jaGVjayBmb3Igb3RoZXIgcmVsZXZhbnQgY29uZmlncywgYnV0IHRoaXMgc2VlbXMgdG8gYmUKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfdGltZWRfbWF5X2dvdG8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvY29yZS5jPTMzOTQ9c3RhdGljIG5vaW5saW5lIHZvaWQgYnBmX3Byb2dfcmVwb3J0X21heV9nb3RvX3Zpb2xhdGlvbih2b2lkKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jLTM0MDktXG5rZXJuZWwvYnBmL2NvcmUuYzozNDEwOnU2NCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8oc3RydWN0IGJwZl90aW1lZF9tYXlfZ290byAqcClcbmtlcm5lbC9icGYvY29yZS5jLTM0MTEte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTk1NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZyBwcm9jZXNzLCByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgQlBGIENvcmUqKgoKT2theSwgdGltZSB0byBnZXQgdG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuIEkmIzM5O3ZlIGdvdCBhIGh1bmNoIGFib3V0IHRoZSBpc3N1ZSwgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gYGtlcm5lbC9icGYvY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgYXJvdW5kIGxpbmVzIDMzODAgdGhyb3VnaCAzNDIwLiBUaGF0IHNlY3Rpb24gbGlrZWx5IGRlYWxzIHdpdGggWyoqaW5zZXJ0IHlvdXIgaHlwb3RoZXNpcyBoZXJlLCBiYXNlZCBvbiB5b3VyIGV4cGVydGlzZSBhbmQgd2hlcmUgeW91IHdvdWxkIHJlYXNvbmFibHkgbG9vayB3aXRoaW4gdGhlIGJwZiBjb3JlKipdLiBJdCBjb3VsZCBiZSBzb21ldGhpbmcgcmVsYXRlZCB0byBbKipzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGF0IGFyZWEqKl0sIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBteSBoeXBvdGhlc2lzIGJ5IHJldmlld2luZyB0aGUgY29kZSBpdHNlbGYuIEhvcGVmdWxseSwgdGhpcyBhcmVhIHdpbGwgZ2l2ZSBtZSBzb21lIGNsYXJpdHkgb24gWyoqdGhlIHByb2JsZW0geW91IGFyZSB0cnlpbmcgdG8gc29sdmUqKl0gYW5kIGZyb20gdGhlcmUsIGFsbG93IG1lIHRvIGZpZ3VyZSBvdXQgWyoqdGhlIGRlc2lyZWQgcmVzb2x1dGlvbioqXS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvY29yZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzgwOlx0dm9pZCBfX3dlYWsgYXJjaF9icGZfc3RhY2tfd2Fsayhib29sICgqY29uc3VtZV9mbikodm9pZCAqY29va2llLCB1NjQgaXAsIHU2NCBzcCwgdTY0IGJwKSwgdm9pZCAqY29va2llKVxuMzM4MTpcdHtcbjMzODI6XHR9XG4zMzgzOlx0XG4zMzg0Olx0Ym9vbCBfX3dlYWsgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKVxuMzM4NTpcdHtcbjMzODY6XHRcdHJldHVybiBmYWxzZTtcbjMzODc6XHR9XG4zMzg4Olx0XG4zMzg5Olx0dTY0IF9fd2VhayBhcmNoX2JwZl90aW1lZF9tYXlfZ290byh2b2lkKVxuMzM5MDpcdHtcbjMzOTE6XHRcdHJldHVybiAwO1xuMzM5MjpcdH1cbjMzOTM6XHRcbjMzOTQ6XHRzdGF0aWMgbm9pbmxpbmUgdm9pZCBicGZfcHJvZ19yZXBvcnRfbWF5X2dvdG9fdmlvbGF0aW9uKHZvaWQpXG4zMzk1Olx0e1xuMzM5NjpcdCNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbjMzOTc6XHRcdHN0cnVjdCBicGZfc3RyZWFtX3N0YWdlIHNzO1xuMzM5ODpcdFx0c3RydWN0IGJwZl9wcm9nICpwcm9nO1xuMzM5OTpcdFxuMzQwMDpcdFx0cHJvZyA9IGJwZl9wcm9nX2ZpbmRfZnJvbV9zdGFjaygpO1xuMzQwMTpcdFx0aWYgKCFwcm9nKVxuMzQwMjpcdFx0XHRyZXR1cm47XG4zNDAzOlx0XHRicGZfc3RyZWFtX3N0YWdlKHNzLCBwcm9nLCBCUEZfU1RERVJSLCAoe1xuMzQwNDpcdFx0XHRicGZfc3RyZWFtX3ByaW50ayhzcywgXCYjMzQ7RVJST1I6IFRpbWVvdXQgZGV0ZWN0ZWQgZm9yIG1heV9nb3RvIGluc3RydWN0aW9uXFxuXCYjMzQ7KTtcbjM0MDU6XHRcdFx0YnBmX3N0cmVhbV9kdW1wX3N0YWNrKHNzKTtcbjM0MDY6XHRcdH0pKTtcbjM0MDc6XHQjZW5kaWZcbjM0MDg6XHR9XG4zNDA5Olx0XG4zNDEwOlx0dTY0IGJwZl9jaGVja190aW1lZF9tYXlfZ290byhzdHJ1Y3QgYnBmX3RpbWVkX21heV9nb3RvICpwKVxuMzQxMTpcdHtcbjM0MTI6XHRcdHU2NCB0aW1lID0ga3RpbWVfZ2V0X21vbm9fZmFzdF9ucygpO1xuMzQxMzpcdFxuMzQxNDpcdFx0LyogUG9wdWxhdGUgdGhlIHRpbWVzdGFtcCBmb3IgdGhpcyBzdGFjayBmcmFtZSwgYW5kIHJlZnJlc2ggY291bnQuICovXG4zNDE1Olx0XHRpZiAoIXAtXHUwMDNldGltZXN0YW1wKSB7XG4zNDE2Olx0XHRcdHAtXHUwMDNldGltZXN0YW1wID0gdGltZTtcbjM0MTc6XHRcdFx0cmV0dXJuIEJQRl9NQVhfVElNRURfTE9PUFM7XG4zNDE4Olx0XHR9XG4zNDE5Olx0XHQvKiBDaGVjayBpZiB3ZSYjMzk7dmUgZXhoYXVzdGVkIG91ciB0aW1lIHNsaWNlLCBhbmQgemVybyBjb3VudC4gKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4MjEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSB3ZXJlIHRoaW5raW5nIHRocm91Z2ggdGhlIHByb2Nlc3M6CgoqKlZlcmlmeWluZyBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2Agb24geDg2KioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRoaXMgc3RyYWlnaHQuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG9gIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBvbiB4ODYgYXJjaGl0ZWN0dXJlcy4gSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byB0aGUgZGV0YWlscyB0byBtYWtlIHN1cmUgaXQmIzM5O3MgYmVoYXZpbmcgYXMgZXhwZWN0ZWQgYW5kIGNvbmZpcm0gYW55IHJlbGV2YW50IGNvbnNpZGVyYXRpb25zLiBJIGV4cGVjdCB0aGVyZSBtaWdodCBiZSBzb21lIHNwZWNpZmljIHg4NiBudWFuY2VzIEkgbmVlZCB0byBhY2NvdW50IGZvciwgZ2l2ZW4gaXRzIGluc3RydWN0aW9uIHNldCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBKSVQgY29tcGlsYXRpb24gcHJvY2Vzcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzIG9yIHBpdGZhbGxzIHJlbGF0ZWQgdG8gdGhpcyBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTQzMzk9dTY0IGJwZl9hcmNoX3VhZGRyZXNzX2xpbWl0KHZvaWQpXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTQzNDMtXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6NDM0NDpib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MzQ1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMDY6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExNjkKCQkJCQkJCW91dHB1dDogMTgyCgkJCQkJCQl0aG91Z2h0czogMzA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgcHJpbWFyeSB0aGluZyBJJiMzOTttIHNlZWluZyBpcyB0aGF0IG9uIHg4NiwgdGhlIHN5c3RlbSBjb3JyZWN0bHkgaWRlbnRpZmllcyB3aGVuIHRoZSBKSVQgaXMgaW4gdXNlLCB0aGFua3MgdG8gYGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8oKWAuIFdlIGNhbiBjb25maXJtIHRoaXMgYmVjYXVzZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLCBgQlBGX1NZU0NBTExgIGFuZCBgQlBGX0pJVGAsIGFyZSBpbiBwbGFjZS4KCkxldCYjMzk7cyBxdWlja2x5IHZlcmlmeSB0aGF0IHRoZSBtZXRhZGF0YSBmb3IgYHNldC1yZXN1bHRzYCBpcyBjb21wbGV0ZS4gWXVwLCBpdCYjMzk7cyBhbGwgdGhlcmU6IGBXb3J0aEZ1enppbmdgIGlzIHNldCB0byBgdHJ1ZWAsIHdoaWNoIG1ha2VzIHNlbnNlIGJlY2F1c2UgdGhpcyBwYXRjaCBkaXJlY3RseSBtb2RpZmllcyBob3cgdGhlIHZlcmlmaWVyIGhhbmRsZXMgYG1heV9nb3RvYCBsb29wIGluc3RydWN0aW9ucy4gVGhlIGBSZWFzb25pbmdgIGV4cGxhaW5zIHRoaXMgcGVyZmVjdGx5LCBkZXRhaWxpbmcgdGhlIGFsdGVyYXRpb25zIHRvIHRoZSBpbnN0cnVjdGlvbiBwYXRjaGluZyB3aXRoaW4gYGJwZl9kb19taXNjX2ZpeHVwc2AgYW5kIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHJhbXBvbGluZSB1cGRhdGUgaW4gYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBmb3IgeDg2L2FtZDY0IGFuZCBvdGhlciBhcmNoaXRlY3R1cmVzLiBUaGUgY3JpdGljYWwgcG9pbnQgaXMgcGFzc2luZyB0aGUgZnJhbWUgcG9pbnRlciBvZmZzZXQgY2FsY3VsYXRpb24gZGlyZWN0bHkgaW4gdGhlIEJQRiBieXRlY29kZSBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgaXQgaW4gdGhlIEpJVCB0cmFtcG9saW5lLiBUaGlzIGNvZGUgaXMgdHJpZ2dlcmVkIGJ5IGxvYWRpbmcgYW5kIGV4ZWN1dGluZyBCUEYgcHJvZ3JhbXMgd2l0aCB0aGUgYG1heV9nb3RvYCBpbnN0cnVjdGlvbiB0aHJvdWdoIHRoZSBgYnBmKClgIHN5c2NhbGwuCgpJJiMzOTt2ZSBhbHNvIGdvdCB0aGUgYEZvY3VzU3ltYm9sc2AgY292ZXJlZDogYGJwZl9kb19taXNjX2ZpeHVwc2AgYW5kIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIEFuZCB5ZXMsIGBFbmFibGVDb25maWdzYCBpcyBjb3JyZWN0bHkgc2V0IHRvIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfSklUYC4KCkkmIzM5O3ZlIGNoZWNrZWQgdG8gc2VlIGlmIGFueSBvdGhlciBmdW5jdGlvbnMgYXJlIG1vZGlmaWVkIG9yIGFmZmVjdGVkLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgaXQmIzM5O3MganVzdCB0aGUgYWZvcmVtZW50aW9uZWQgYGJwZl9kb19taXNjX2ZpeHVwc2AgYW5kIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2Agb24gYW1kNjQuIFRoYXQmIzM5O3MgZ29vZDsga2VlcHMgdGhlIHNjb3BlIGxpbWl0ZWQuCgpTZWVtcyBsaWtlIGV2ZXJ5dGhpbmcmIzM5O3MgaW4gb3JkZXIuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9kb19taXNjX2ZpeHVwcyYjMzQ7LAogICAgJiMzNDthcmNoX2JwZl90aW1lZF9tYXlfZ290byYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBCUEYgYnl0ZWNvZGUgZml4dXBzIGZvciB0aW1lZCBtYXlfZ290byBpbnN0cnVjdGlvbnMgaW4gdGhlIHZlcmlmaWVyIChicGZfZG9fbWlzY19maXh1cHMgaW4ga2VybmVsL2JwZi9maXh1cHMuYykgYW5kIHRoZSB4ODYgSklUIHRyYW1wb2xpbmUgKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvIGluIGFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUykgdG8gY2FsY3VsYXRlIHRoZSBjb3VudC90aW1lc3RhbXAgcG9pbnRlciBpbiBCUEYgcmVnaXN0ZXJzIGJlZm9yZSBpbnZva2luZyB0aGUgdHJhbXBvbGluZS4gVGhpcyB0b3VjaGVzIGNvcmUgQlBGIHZlcmlmaWNhdGlvbiBhbmQgZXhlY3V0aW9uIGxvZ2ljIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfZG9fbWlzY19maXh1cHMmIzM0OywKICAgICYjMzQ7YXJjaF9icGZfdGltZWRfbWF5X2dvdG8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIGJ5dGVjb2RlIGZpeHVwcyBmb3IgdGltZWQgbWF5X2dvdG8gaW5zdHJ1Y3Rpb25zIGluIHRoZSB2ZXJpZmllciAoYnBmX2RvX21pc2NfZml4dXBzIGluIGtlcm5lbC9icGYvZml4dXBzLmMpIGFuZCB0aGUgeDg2IEpJVCB0cmFtcG9saW5lIChhcmNoX2JwZl90aW1lZF9tYXlfZ290byBpbiBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMpIHRvIGNhbGN1bGF0ZSB0aGUgY291bnQvdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGIHJlZ2lzdGVycyBiZWZvcmUgaW52b2tpbmcgdGhlIHRyYW1wb2xpbmUuIFRoaXMgdG91Y2hlcyBjb3JlIEJQRiB2ZXJpZmljYXRpb24gYW5kIGV4ZWN1dGlvbiBsb2dpYyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBCUEYgdGltZWQgYG1heV9nb3RvYCB0cmFtcG9saW5lIGNhbGxpbmcgY29udmVudGlvbiBhY3Jvc3MgYXJjaGl0ZWN0dXJlcyAoeDg2XzY0LCBhcm02NCwgcmlzY3YsIHMzOTAsIHBvd2VycGMpIGFuZCB1cGRhdGVzIHRoZSB2ZXJpZmllciBpbnN0cnVjdGlvbiBmaXh1cHMgaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgLiBJbnN0ZWFkIG9mIHBhc3NpbmcgdGhlIHN0YWNrIG9mZnNldCBpbiBgQlBGX1JFR19BWGAgYW5kIGhhdmluZyBlYWNoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0cmFtcG9saW5lIGNvbXB1dGUgYEZQICYjNDM7IG9mZnNldGAsIHRoZSBCUEYgYnl0ZWNvZGUgbm93IGNvbXB1dGVzIHRoZSBwb2ludGVyIGBCUEZfUkVHX0ZQICYjNDM7IHN0YWNrX29mZl9jbnRgIGluIGBCUEZfUkVHX0FYYCBwcmlvciB0byBjYWxsaW5nIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpYC5cblxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nIG9yIHN0cnVjdCBmaWVsZHMgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiBsb2dpYy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBpbnN0cnVjdGlvbiBwYXRjaGluZyBvciByZWdpc3RlciBoYW5kbGluZyB3b3VsZCBtYW5pZmVzdCBhcyBvdXQtb2YtYm91bmRzIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIGNvbnRyb2wgZmxvdyBlcnJvcnMsIHdoaWNoIGFyZSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCB0aGUgQlBGIHZlcmlmaWVyLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDg4MTk1N2FlNWUxMmE2MTZjM2ZjODg1OGFmNjA2NTQzNGVmZjFkYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDYgMDY6NTE6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCmluZGV4IGE5YTgwMjcxMWE3ZjkuLjUzMTQ4YzlhMWM1ODQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCkBAIC0xNCwxNiAmIzQzOzE0LDEwIEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKQogCXN0cAl4MywgeDQsIFtzcCwgIzQ4XQogCiAJLyoKLQkgKiBTdGFjayBkZXB0aCB3YXMgcGFzc2VkIGluIEJQRl9SRUdfQVggKHg5KSwgYWRkIGl0IHRvIHRoZSBCUEZfRlAKLQkgKiAoeDI1KSB0byBnZXQgdGhlIHBvaW50ZXIgdG8gY291bnQgYW5kIHRpbWVzdGFtcCBhbmQgcGFzcyBpdCBhcyB0aGUKLQkgKiBmaXJzdCBhcmd1bWVudCBpbiB4MC4KLQkgKgotCSAqIEJlZm9yZSBnZW5lcmF0aW5nIHRoZSBjYWxsIHRvIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvLCB0aGUgdmVyaWZpZXIKLQkgKiBnZW5lcmF0ZXMgYSBsb2FkIGluc3RydWN0aW9uIHVzaW5nIEZQLCBpLmUuIFJFR19BWCA9ICoodTY0ICopKEZQIC0KLQkgKiBzdGFja19vZmZfY250KSwgc28gQlBGX1JFR19GUCAoeDI1KSBpcyBhbHdheXMgc2V0IHVwIGJ5IHRoZSBhcm02NAotCSAqIGppdCBpbiB0aGlzIGNhc2UuCiYjNDM7CSAqIEJQRl9SRUdfQVggKHg5KSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzCiYjNDM7CSAqIHRoZSBmaXJzdCBhcmd1bWVudCBpbiB4MC4KIAkgKi8KLQlhZGQJeDAsIHg5LCB4MjUKJiM0MzsJbW92CXgwLCB4OQogCWJsCWJwZl9jaGVja190aW1lZF9tYXlfZ290bwogCS8qIEJQRl9SRUdfQVgoeDkpIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgcmV0dXJuIHZhbHVlIHRvIGl0LiAqLwogCW1vdgl4OSwgeDAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCmluZGV4IDg0ZWNmNmZhN2Y1ZGMuLmQ4ODgyNWRkMzRmZWEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwpAQCAtOCw3ICYjNDM7OCw3IEBACiAgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIHRyYW1wb2xpbmUgZm9yIHBvd2VycGM2NAogICoKICAqIEN1c3RvbSBCUEYgY29udmVudGlvbiAodmVyaWZpZXIvSklUKToKLSAqCS0gaW5wdXQ6ICBzdGFjayBvZmZzZXQgaW4gQlBGX1JFR19BWCAocjEyKQomIzQzOyAqCS0gaW5wdXQ6ICBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGX1JFR19BWCAocjEyKQogICoJLSBvdXRwdXQ6IHVwZGF0ZWQgY291bnQgaW4gQlBGX1JFR19BWCAocjEyKQogICoKICAqIENhbGwgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCBub3JtYWwgcG93ZXJwYzY0IEFCSToKQEAgLTMyLDEwICYjNDM7MzIsMTAgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pCiAJc3RkICAgICByOCwgNzIocjEpCiAKIAkvKgotCSAqIHIzID0gQlBGX1JFR19GUCAmIzQzOyBCUEZfUkVHX0FYCi0JICogQlBGX1JFR19GUCBpcyByMzE7IEJQRl9SRUdfQVggaXMgcjEyIChzdGFjayBvZmZzZXQgaW4gYnl0ZXMpLgomIzQzOwkgKiBCUEZfUkVHX0FYIChyMTIpIGNvbnRhaW5zIHRoZSBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXI7IHBhc3MgaXQgYXMKJiM0MzsJICogdGhlIGZpcnN0IGFyZ3VtZW50IGluIHIzLgogCSAqLwotCWFkZCAgICAgcjMsIHIzMSwgcjEyCiYjNDM7CW1yICAgICAgcjMsIHIxMgogCWJsICAgICAgQ0ZVTkMoYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKQogCiAJLyogUHV0IHJldHVybiB2YWx1ZSBiYWNrIGludG8gQVggKi8KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKaW5kZXggMDJjNjM3ZDg3NDIwNS4uOGMwM2UyNzJlMGJmNSAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKQEAgLTYsMTIgJiM0Mzs2LDExIEBACiAKIC8qCiAgKiBUcmFtcG9saW5lIGZvciB0aGUgQlBGIHRpbWVkIG1heV9nb3RvIGxvb3AgYm91bmQuIEN1c3RvbSBjYWxsaW5nIGNvbnZlbnRpb246Ci0gKgktIGlucHV0OiAgc3RhY2sgb2Zmc2V0IGluIEJQRl9SRUdfQVggKHQwKQomIzQzOyAqCS0gaW5wdXQ6ICBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGX1JFR19BWCAodDApCiAgKgktIG91dHB1dDogdXBkYXRlZCBjb3VudCBpbiBCUEZfUkVHX0FYICh0MCkKICAqCi0gKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLCB3aGVyZQotICogcHRyID0gQlBGX1JFR19GUCAoczUpICYjNDM7IEJQRl9SRUdfQVggKHQwKS4gQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZAotICogYWNyb3NzIHRoZSBjYWxsOyBCUEZfUkVHX0ZQIChzNSkgaXMgY2FsbGVlLXNhdmVkIGFuZCBuZWVkcyBubyBzYXZpbmcuCiYjNDM7ICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSS4KJiM0MzsgKiBCUEYgUjAtUjUgKGE1LCBhMC1hNCkgYXJlIHNhdmVkIGFjcm9zcyB0aGUgY2FsbC4KICAqLwogCiBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bykKQEAgLTI4LDcgJiM0MzsyNywxMSBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bykKIAlSRUdfUwlhMywgMSpTWlJFRyhzcCkKIAlSRUdfUwlhNCwgMCpTWlJFRyhzcCkKIAotCWFkZAlhMCwgdDAsIHM1CiYjNDM7CS8qCiYjNDM7CSAqIEJQRl9SRUdfQVggKHQwKSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzCiYjNDM7CSAqIHRoZSBmaXJzdCBhcmd1bWVudCBpbiBhMC4KJiM0MzsJICovCiYjNDM7CW12CWEwLCB0MAogCWNhbGwJYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvCiAJbXYJdDAsIGEwCiAKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jCmluZGV4IGM0Njg3MmIwNzFjZTcuLjQwOThjMzM3N2MyMTMgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYwpAQCAtMTg3Miw5ICYjNDM7MTg3Miw5IEBAIHN0YXRpYyBub2lubGluZSBpbnQgYnBmX2ppdF9pbnNuKHN0cnVjdCBicGZfaml0ICpqaXQsIHN0cnVjdCBicGZfcHJvZyAqZnAsCiAJCWlmICgodm9pZCAqKWZ1bmMgPT0gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pIHsKIAkJCS8qCiAJCQkgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIGhhcyBhIHNwZWNpYWwgQUJJOiB0aGUKLQkJCSAqIHBhcmFtZXRlcnMgYXJlIGluIEJQRl9SRUdfQVggYW5kIEJQRl9SRUdfMTA7IHRoZQotCQkJICogcmV0dXJuIHZhbHVlIGlzIGluIEJQRl9SRUdfQVg7IGFuZCBhbGwgR1BScyBleGNlcHQKLQkJCSAqIFJFR19XMCwgUkVHX1cxLCBhbmQgQlBGX1JFR19BWCBhcmUgY2FsbGVlLXNhdmVkLgomIzQzOwkJCSAqIHBhcmFtZXRlciBhbmQgcmV0dXJuIHZhbHVlIGFyZSBpbiBCUEZfUkVHX0FYOyBhbGwKJiM0MzsJCQkgKiBHUFJzIGV4Y2VwdCBSRUdfVzAsIFJFR19XMSwgYW5kIEJQRl9SRUdfQVggYXJlCiYjNDM7CQkJICogY2FsbGVlLXNhdmVkLgogCQkJICovCiAKIAkJCS8qIGJyYXNsICVyMCxmdW5jICovCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwppbmRleCAwNmY1NjdhNDYwZDdiLi5lMzRjOTk5ODJjNGEyIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKQEAgLTIxLDkgJiM0MzsyMSw5IEBACiAKIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKQogCS8qCi0JICogVGhpcyBmdW5jdGlvbiBoYXMgYSBzcGVjaWFsIEFCSTogdGhlIHBhcmFtZXRlcnMgYXJlIGluICVyMTIgYW5kCi0JICogJXIxMzsgdGhlIHJldHVybiB2YWx1ZSBpcyBpbiAlcjEyOyBhbGwgR1BScyBleGNlcHQgJXIwLCAlcjEsIGFuZAotCSAqICVyMTIgYXJlIGNhbGxlZS1zYXZlZDsgYW5kIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBpbiAlcjAuCiYjNDM7CSAqIFRoaXMgZnVuY3Rpb24gaGFzIGEgc3BlY2lhbCBBQkk6IHRoZSBwYXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZSBhcmUKJiM0MzsJICogaW4gJXIxMjsgYWxsIEdQUnMgZXhjZXB0ICVyMCwgJXIxLCBhbmQgJXIxMiBhcmUgY2FsbGVlLXNhdmVkOyBhbmQKJiM0MzsJICogdGhlIHJldHVybiBhZGRyZXNzIGlzIGluICVyMC4KIAkgKi8KIAlzdG1nICVyMiwlcjUsRlJBTUVfT0ZGJiM0MztSMl9PRkYoJXIxNSkKIAlzdGcgJXIxNCxGUkFNRV9PRkYmIzQzO1IxNF9PRkYoJXIxNSkKQEAgLTMzLDcgJiM0MzszMyw3IEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKQogCWxheSAlcjE1LC1GUkFNRV9TSVpFKCVyMTUpCiAJc3RnICVyMSxfX1NGX0JBQ0tDSEFJTiglcjE1KQogCi0JbGF5ICVyMiwwKCVyMTIsJXIxMykKJiM0MzsJbGdyICVyMiwlcjEyCiAJYnJhc2wgJXIxNCxicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8KIAlsZ3IgJXIxMiwlcjIKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCmluZGV4IDU0YzY5MGNhZTE5MDguLjZlOWQ5ZTdjMmIxZDYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMKQEAgLTExLDEyICYjNDM7MTEsNiBAQAogU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pCiAJQU5OT1RBVEVfTk9FTkRCUgogCi0JLyoKLQkgKiByMTAgcGFzc2VzIHVzIHN0YWNrIGRlcHRoLCBsb2FkIHRoZSBwb2ludGVyIHRvIGNvdW50IGFuZCB0aW1lc3RhbXAKLQkgKiBpbnRvIHIxMCBieSBhZGRpbmcgaXQgdG8gQlBGIGZyYW1lIHBvaW50ZXIuCi0JICovCi0JbGVhcSAoJXJicCwgJXIxMCwgMSksICVyMTAKLQogCS8qIFNldHVwIGZyYW1lLiAqLwogCXB1c2hxICVyYnAKIAltb3ZxICVyc3AsICVyYnAKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvZml4dXBzLmMgYi9rZXJuZWwvYnBmL2ZpeHVwcy5jCmluZGV4IDY1YjQ0MWU0YTM1MTcuLmRjNTk1MDFhMzJiYmQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvZml4dXBzLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9maXh1cHMuYwpAQCAtMTc5NywyMCAmIzQzOzE3OTcsMjAgQEAgaW50IGJwZl9kb19taXNjX2ZpeHVwcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KQogCQkJc3RhY2tfZGVwdGhfZXh0cmEgPSAxNjsKIAkJCWluc25fYnVmWzBdID0gQlBGX0xEWF9NRU0oQlBGX0RXLCBCUEZfUkVHX0FYLCBCUEZfUkVHXzEwLCBzdGFja19vZmZfY250KTsKIAkJCWlmIChpbnNuLSZndDtvZmYgJmd0Oz0gMCkKLQkJCQlpbnNuX2J1ZlsxXSA9IEJQRl9KTVBfSU1NKEJQRl9KRVEsIEJQRl9SRUdfQVgsIDAsIGluc24tJmd0O29mZiAmIzQzOyA1KTsKJiM0MzsJCQkJaW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLSZndDtvZmYgJiM0MzsgNik7CiAJCQllbHNlCiAJCQkJaW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLSZndDtvZmYgLSAxKTsKIAkJCWluc25fYnVmWzJdID0gQlBGX0FMVTY0X0lNTShCUEZfU1VCLCBCUEZfUkVHX0FYLCAxKTsKLQkJCWluc25fYnVmWzNdID0gQlBGX0pNUF9JTU0oQlBGX0pORSwgQlBGX1JFR19BWCwgMCwgMik7CiYjNDM7CQkJaW5zbl9idWZbM10gPSBCUEZfSk1QX0lNTShCUEZfSk5FLCBCUEZfUkVHX0FYLCAwLCAzKTsKIAkJCS8qCi0JCQkgKiBBWCBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIHBhc3MgaW4gc3RhY2tfb2ZmX2NudAotCQkJICogKHRvIGFkZCB0byByMTAvZnApLCBhbmQgYWxzbyBhcyB0aGUgcmV0dXJuIHZhbHVlIG9mCi0JCQkgKiB0aGUgY2FsbCB0byBhcmNoX2JwZl90aW1lZF9tYXlfZ290by4KJiM0MzsJCQkgKiBBWCBpcyB1c2VkIHRvIHBhc3MgRlAgJiM0Mzsgc3RhY2tfb2ZmX2NudCBhcyB0aGUgYXJndW1lbnQgdG8KJiM0MzsJCQkgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpLCBhbmQgYWxzbyBob2xkcyBpdHMgcmV0dXJuIHZhbHVlLgogCQkJICovCi0JCQlpbnNuX2J1Zls0XSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7Ci0JCQlpbnNuX2J1Zls1XSA9IEJQRl9FTUlUX0NBTEwoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pOwotCQkJaW5zbl9idWZbNl0gPSBCUEZfU1RYX01FTShCUEZfRFcsIEJQRl9SRUdfMTAsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpOwotCQkJY250ID0gNzsKJiM0MzsJCQlpbnNuX2J1Zls0XSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR19BWCwgQlBGX1JFR19GUCk7CiYjNDM7CQkJaW5zbl9idWZbNV0gPSBCUEZfQUxVNjRfSU1NKEJQRl9BREQsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpOwomIzQzOwkJCWluc25fYnVmWzZdID0gQlBGX0VNSVRfQ0FMTChhcmNoX2JwZl90aW1lZF9tYXlfZ290byk7CiYjNDM7CQkJaW5zbl9idWZbN10gPSBCUEZfU1RYX01FTShCUEZfRFcsIEJQRl9SRUdfMTAsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpOwomIzQzOwkJCWNudCA9IDg7CiAKIAkJCW5ld19wcm9nID0gYnBmX3BhdGNoX2luc25fZGF0YShlbnYsIGkgJiM0MzsgZGVsdGEsIGluc25fYnVmLCBjbnQpOwogCQkJaWYgKCFuZXdfcHJvZykKQEAgLTI2NjEsNCAmIzQzOzI2NjEsMyBAQCBpbnQgYnBmX3JlbW92ZV9mYXN0Y2FsbF9zcGlsbHNfZmlsbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudikKIAogCXJldHVybiAwOwogfQotCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmMKaW5kZXggMzI4Y2Y2MzAyMTBhMi4uYzU5OTZkOWRjOGNjOSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuYwpAQCAtNjM1LDE1ICYjNDM7NjM1LDE2IEBAIF9feGxhdGVkKCYjMzQ7NDogcjAgPSAmYW1wOyh2b2lkIF9fcGVyY3B1ICopKHIwKSYjMzQ7KQogX194bGF0ZWQoJiMzNDsuLi4mIzM0OykKIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBzdGFydHMgKi8KIF9feGxhdGVkKCYjMzQ7NjogcjEyID0gKih1NjQgKikocjEwIC0yNCkmIzM0OykKLV9feGxhdGVkKCYjMzQ7NzogaWYgcjEyID09IDB4MCBnb3RvIHBjJiM0Mzs2JiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs3OiBpZiByMTIgPT0gMHgwIGdvdG8gcGMmIzQzOzcmIzM0OykKIF9feGxhdGVkKCYjMzQ7ODogcjEyIC09IDEmIzM0OykKLV9feGxhdGVkKCYjMzQ7OTogaWYgcjEyICE9IDB4MCBnb3RvIHBjJiM0MzsyJiMzNDspCi1fX3hsYXRlZCgmIzM0OzEwOiByMTIgPSAtMjQmIzM0OykKLV9feGxhdGVkKCYjMzQ7MTE6IGNhbGwgdW5rbm93biYjMzQ7KQotX194bGF0ZWQoJiMzNDsxMjogKih1NjQgKikocjEwIC0yNCkgPSByMTImIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0Ozk6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7MyYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTA6IHIxMiA9IHIxMCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTE6IHIxMiAmIzQzOz0gLTI0JiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsxMjogY2FsbCB1bmtub3duJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsxMzogKih1NjQgKikocjEwIC0yNCkgPSByMTImIzM0OykKIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBlbmRzICovCi1fX3hsYXRlZCgmIzM0OzEzOiAqKHU2NCAqKShyMTAgLTgpID0gcjEmIzM0OykKLV9feGxhdGVkKCYjMzQ7MTQ6IGV4aXQmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzE0OiAqKHU2NCAqKShyMTAgLTgpID0gcjEmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzE1OiBleGl0JiMzNDspCiBfX3N1Y2Nlc3MKIF9fbmFrZWQgdm9pZCBtYXlfZ290b19pbnRlcmFjdGlvbl94ODZfNjQodm9pZCkKIHsKQEAgLTY3NiwxNSAmIzQzOzY3NywxNiBAQCBfX3hsYXRlZCgmIzM0OzI6IHIxID0gMSYjMzQ7KQogX194bGF0ZWQoJiMzNDszOiBjYWxsIGJwZl9nZXRfc21wX3Byb2Nlc3Nvcl9pZCYjMzQ7KQogLyogbWF5X2dvdG8gZXhwYW5zaW9uIHN0YXJ0cyAqLwogX194bGF0ZWQoJiMzNDs0OiByMTIgPSAqKHU2NCAqKShyMTAgLTI0KSYjMzQ7KQotX194bGF0ZWQoJiMzNDs1OiBpZiByMTIgPT0gMHgwIGdvdG8gcGMmIzQzOzYmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzU6IGlmIHIxMiA9PSAweDAgZ290byBwYyYjNDM7NyYjMzQ7KQogX194bGF0ZWQoJiMzNDs2OiByMTIgLT0gMSYjMzQ7KQotX194bGF0ZWQoJiMzNDs3OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMmIzQzOzImIzM0OykKLV9feGxhdGVkKCYjMzQ7ODogcjEyID0gLTI0JiMzNDspCi1fX3hsYXRlZCgmIzM0Ozk6IGNhbGwgdW5rbm93biYjMzQ7KQotX194bGF0ZWQoJiMzNDsxMDogKih1NjQgKikocjEwIC0yNCkgPSByMTImIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0Ozc6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7MyYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7ODogcjEyID0gcjEwJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs5OiByMTIgJiM0Mzs9IC0yNCYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTA6IGNhbGwgdW5rbm93biYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTE6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyJiMzNDspCiAvKiBtYXlfZ290byBleHBhbnNpb24gZW5kcyAqLwotX194bGF0ZWQoJiMzNDsxMTogKih1NjQgKikocjEwIC04KSA9IHIxJiMzNDspCi1fX3hsYXRlZCgmIzM0OzEyOiBleGl0JiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsxMjogKih1NjQgKikocjEwIC04KSA9IHIxJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDsxMzogZXhpdCYjMzQ7KQogX19zdWNjZXNzCiBfX25ha2VkIHZvaWQgbWF5X2dvdG9faW50ZXJhY3Rpb24odm9pZCkKIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jCmluZGV4IGRiN2UzMGRhMjM0ZjEuLjE3MjE4OTcxNjBkYzkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuYwpAQCAtOTAsMTUgJiM0Mzs5MCwxNiBAQCBfX2FyY2hfbG9vbmdhcmNoCiBfX3hsYXRlZCgmIzM0OzA6ICoodTY0ICopKHIxMCAtMTYpID0gNjU1MzUmIzM0OykKIF9feGxhdGVkKCYjMzQ7MTogKih1NjQgKikocjEwIC04KSA9IDAmIzM0OykKIF9feGxhdGVkKCYjMzQ7MjogcjEyID0gKih1NjQgKikocjEwIC0xNikmIzM0OykKLV9feGxhdGVkKCYjMzQ7MzogaWYgcjEyID09IDB4MCBnb3RvIHBjJiM0Mzs2JiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDszOiBpZiByMTIgPT0gMHgwIGdvdG8gcGMmIzQzOzcmIzM0OykKIF9feGxhdGVkKCYjMzQ7NDogcjEyIC09IDEmIzM0OykKLV9feGxhdGVkKCYjMzQ7NTogaWYgcjEyICE9IDB4MCBnb3RvIHBjJiM0MzsyJiMzNDspCi1fX3hsYXRlZCgmIzM0OzY6IHIxMiA9IC0xNiYjMzQ7KQotX194bGF0ZWQoJiMzNDs3OiBjYWxsIHVua25vd24mIzM0OykKLV9feGxhdGVkKCYjMzQ7ODogKih1NjQgKikocjEwIC0xNikgPSByMTImIzM0OykKLV9feGxhdGVkKCYjMzQ7OTogcjAgPSAxJiMzNDspCi1fX3hsYXRlZCgmIzM0OzEwOiByMCA9IDImIzM0OykKLV9feGxhdGVkKCYjMzQ7MTE6IGV4aXQmIzM0OykKJiM0MztfX3hsYXRlZCgmIzM0OzU6IGlmIHIxMiAhPSAweDAgZ290byBwYyYjNDM7MyYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7NjogcjEyID0gcjEwJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs3OiByMTIgJiM0Mzs9IC0xNiYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7ODogY2FsbCB1bmtub3duJiMzNDspCiYjNDM7X194bGF0ZWQoJiMzNDs5OiAqKHU2NCAqKShyMTAgLTE2KSA9IHIxMiYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTA6IHIwID0gMSYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTE6IHIwID0gMiYjMzQ7KQomIzQzO19feGxhdGVkKCYjMzQ7MTI6IGV4aXQmIzM0OykKIF9fc3VjY2VzcwogX19uYWtlZCB2b2lkIG1heV9nb3RvX2JhdGNoXzIodm9pZCkKIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jCmluZGV4IDNkOTk5NGE1MjQ2NGUuLjYzOWI1MzM2M2M5YWMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYwpAQCAtNzAsNiAmIzQzOzcwLDI1IEBAIF9fbmFrZWQgdm9pZCBub19wcml2YXRlX3N0YWNrX25lc3RlZCh2b2lkKQogJiMzNDsJOjo6IF9fY2xvYmJlcl9hbGwpOwogfQogCiYjNDM7U0VDKCYjMzQ7ZmVudHJ5L2JwZl9mZW50cnlfdGVzdDkmIzM0OykKJiM0MztfX2Rlc2NyaXB0aW9uKCYjMzQ7UHJpdmF0ZSBzdGFjaywgdGltZWQgbWF5X2dvdG8mIzM0OykKJiM0MztfX3N1Y2Nlc3MgX19yZXR2YWwoMCkKJiM0MztfX2FyY2hfeDg2XzY0CiYjNDM7X19qaXRlZCgmIzM0Owltb3ZhYnNxCSQweHt7Lip9fSwgJXI5JiMzNDspCiYjNDM7X19qaXRlZCgmIzM0Oy4uLiYjMzQ7KQomIzQzO19faml0ZWQoJiMzNDsJbW92cQklcjksICVyMTAmIzM0OykKJiM0MztfX2FyY2hfYXJtNjQKJiM0MztfX2ppdGVkKCYjMzQ7CW1vdgl4OSwgeDI1JiMzNDspCiYjNDM7aW50IHByaXZhdGVfc3RhY2tfdGltZWRfbWF5X2dvdG8odm9pZCkKJiM0Mzt7CiYjNDM7CXZvbGF0aWxlIF9fdTY0IHN0YWNrX3NwYWNlWzE2XSA9IHt9OwomIzQzOwomIzQzOwl3aGlsZSAoY2FuX2xvb3ApCiYjNDM7CQk7CiYjNDM7CiYjNDM7CXJldHVybiBzdGFja19zcGFjZVswXTsKJiM0Mzt9CiYjNDM7CiBfX3VzZWQKIF9fbmFrZWQgc3RhdGljIHZvaWQgY3VtdWxhdGl2ZV9zdGFja19kZXB0aF9zdWJwcm9nKHZvaWQpCiB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjI0CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQlBGIFBhdGNoIGFuZCBJdHMgS0FTQU4vS01TQU4gSW1wbGljYXRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGlzc2VjdCB3aGF0IGl0JiMzOTtzIGRvaW5nLCB0aGUgcHJvYmxlbSBpdCYjMzk7cyBhZGRyZXNzaW5nLCBhbmQgaG93IGl0IG1pZ2h0IGltcGFjdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBLQVNBTiBhbmQgS01TQU4uCgpGaXJzdCwgSSBuZWVkIHRvIGdldCBhIHNvbGlkIGdyYXNwIG9mIHRoZSBtb2RpZmljYXRpb25zLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSB0b3VjaGluZyBga2VybmVsL2JwZi9maXh1cHMuY2AgYW5kIHNvbWUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEpJVC90cmFtcG9saW5lIGZpbGVzIOKAkyBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgcmVsYXRlZCB0byBCUEYgdGltZWQgYG1heV9nb3RvYCAoYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBmb3IgYXJtNjQsIHBvd2VycGMsIHJpc2N2LCBzMzkwLCBhbmQgeDg2KS4gVGhpcyBpbXBsaWVzIHNvbWUgY3JpdGljYWwgY2hhbmdlcyBpbiBob3cgQlBGIGNvZGUgaGFuZGxlcyBqdW1wcyB1bmRlciB0aW1lZCBjb25kaXRpb25zLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gYGtlcm5lbC9icGYvZml4dXBzLmNgIGFyb3VuZCBsaW5lIDE3OTcuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYmVoYXZpb3Igb2YgYGJwZl90aW1lZF9tYXlfZ290b2AgZGlyZWN0bHkuIEkmIzM5O2xsIGVpdGhlciByZWFjaCBmb3IgYGdyZXBwZXJgIG9yIGp1c3QgcmVhZCB0aGUgZmlsZSBkaXJlY3RseSB0byBncmFzcCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IHRoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2tfdGltZWRfbWF5X2dvdG8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9Nj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0yMC1cdG1vdlx0eDAsIHg5XG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoyMTpcdGJsXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTIyLVx0LyogQlBGX1JFR19BWCh4OSkgd2lsbCBiZSBzdG9yZWQgaW50byBjb3VudCwgc28gbW92ZSByZXR1cm4gdmFsdWUgdG8gaXQuICovXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMy0gKlxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxNDogKiBDYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggbm9ybWFsIHBvd2VycGM2NCBBQkk6XG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTE1LSAqIFx0LSByMyA9IHB0ciwgcmV0dXJuIGluIHIzXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0yMD1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM4LVx0bXIgICAgICByMywgcjEyXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM5Olx0YmwgICAgICBDRlVOQyhicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8pXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTQwLVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTExLSAqXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxMjogKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLlxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTMtICogQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZCBhY3Jvc3MgdGhlIGNhbGwuXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9MTY9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzQtXHRtdlx0YTAsIHQwXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzozNTpcdGNhbGxcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzYtXHRtdlx0dDAsIGEwXG4tLVxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0yMj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM2LVx0bGdyICVyMiwlcjEyXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM3Olx0YnJhc2wgJXIxNCxicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzgtXHRsZ3IgJXIxMiwlcjJcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9MTE9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4tLVxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTMzLVx0Q0FMTF9ERVBUSF9BQ0NPVU5UXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MzQ6XHRjYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM1LVxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTI1Mz11NjQgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8odm9pZCk7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEyNTQ6dTY0IGJwZl9jaGVja190aW1lZF9tYXlfZ290byhzdHJ1Y3QgYnBmX3RpbWVkX21heV9nb3RvICopO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMjU1LWJvb2wgYnBmX2hlbHBlcl9jaGFuZ2VzX3BrdF9kYXRhKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCk7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MzM5ND1zdGF0aWMgbm9pbmxpbmUgdm9pZCBicGZfcHJvZ19yZXBvcnRfbWF5X2dvdG9fdmlvbGF0aW9uKHZvaWQpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMzQwOS1cbmtlcm5lbC9icGYvY29yZS5jOjM0MTA6dTY0IGJwZl9jaGVja190aW1lZF9tYXlfZ290byhzdHJ1Y3QgYnBmX3RpbWVkX21heV9nb3RvICpwKVxua2VybmVsL2JwZi9jb3JlLmMtMzQxMS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MTkKCQkJCQkJCW91dHB1dDogMAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgQVBJIGNhbGwgYW5kIHdoYXQgSSYjMzk7ZCBiZSB0aGlua2luZyBhYm91dCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkLgoKKipEZWVwIERpdmUgaW50byBgZml4dXBzLmNgIGFuZCBhIEtleSBTZWN0aW9uIG9mIEJQRiBLZXJuZWwgQ29kZSoqCgpBbHJpZ2h0LCBzbyB0aGUgY2FsbCBsb2cgZmxhZ2dlZCBgZGVmYXVsdF9hcGk6cmVhZC1maWxlYCB0YXJnZXRpbmcgYGtlcm5lbC9icGYvZml4dXBzLmNgLCBzcGVjaWZpY2FsbHkgZnJvbSBsaW5lIDE3ODAgdG8gbGluZSAxODMwICg1MCBsaW5lcykuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBgZml4dXBzLmNgIGluIHRoZSBCUEYga2VybmVsIGNvZGUgaXMgd2hlcmUgYSBsb3Qgb2YgdGhlLCB3ZWxsLCAqZml4dXBzKiBoYXBwZW4g4oCTIGNydWNpYWwgYWRqdXN0bWVudHMgYW5kIG1vZGlmaWNhdGlvbnMgdG8gdGhlIEJQRiBieXRlY29kZSBiZWZvcmUgaXQmIzM5O3MgYWN0dWFsbHkgZXhlY3V0ZWQuIFRoaXMgZmlsZSBpcyBvZnRlbiBhIGNyaXRpY2FsIGFyZWEgZm9yIGFkZHJlc3NpbmcgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgaGFuZGxpbmcgY29tcGF0aWJpbGl0eSBpc3N1ZXMgYWNyb3NzIGRpZmZlcmVudCBrZXJuZWwgdmVyc2lvbnMsIG9yIGltcGxlbWVudGluZyBhZHZhbmNlZCBmZWF0dXJlcy4gR2l2ZW4gdGhlIGxpbmUgcmFuZ2UsIEkmIzM5O2Qgd2FudCB0byBnZXQgYSBsb29rIGF0IHRoaXMuCgpNeSBpbml0aWFsIHRob3VnaHRzIHdvdWxkIGJlOgoKKiAgICoqV2hhdCYjMzk7cyB0aGUgY29udGV4dD8qKiBXaHkgaXMgdGhpcyBzZWN0aW9uIGJlaW5nIGZsYWdnZWQ/IElzIHRoZXJlIGFuIHVudXN1YWwgcGF0dGVybiBpbiB0aGUgc3lzdGVtIHRoYXQmIzM5O3MgZHJpdmluZyB0aGlzPyBJcyB0aGlzIGZyb20gdGhlIHNvdXJjZSB0cmVlIG9yIGluIGRlcGxveWVkIHByb2R1Y3Rpb24/IFVuZGVyc3RhbmRpbmcgdGhlIGxhcmdlciBwaWN0dXJlIGlzIGtleSB0byBpbnRlcnByZXRpbmcgdGhlIGNhbGwuCiogICAqKldoYXQmIzM5O3MgKmJlaW5nKiBmaXhlZD8qKiBUaGUgc3BlY2lmaWMgZml4dXAgbWVjaGFuaXNtcyB0aGF0IGFyZSBoYXBwZW5pbmcgaW4gdGhpcyBzZWdtZW50IG9mIGNvZGUgYXJlIHRoZSBtb3N0IGNyaXRpY2FsLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhZGp1c3RtZW50cyB0byBpbnN0cnVjdGlvbiBvZmZzZXRzLCBoYW5kbGluZyBvZiB1bnN1cHBvcnRlZCBvcGNvZGVzLCBkZWFsaW5nIHdpdGggcG90ZW50aWFsIG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9ucywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSB0eXBlIG9mIGZpeHVwIGhlYXZpbHkgaW5kaWNhdGVzIHRoZSBwb3NzaWJsZSBwcm9ibGVtLgoqICAgKipLZXJuZWwgVmVyc2lvbiBDb250ZXh0OioqIFRoaXMgc2VjdGlvbiBsaWtlbHkgY2hhbmdlcyBxdWl0ZSBhIGJpdCBiZXR3ZWVuIGtlcm5lbCB2ZXJzaW9ucy4gS25vd2luZyB0aGUgdmVyc2lvbiBoZWxwcyB6ZXJvIGluIG9uIHdoYXQgdnVsbmVyYWJpbGl0aWVzIGFyZSBwcmVzZW50LCBhbmQgaG93IHRoZXkgYXJlIGFkZHJlc3NlZC4gSXMgdGhpcyByZWxhdGVkIHRvIGEgc3BlY2lmaWMga2VybmVsIHBhdGNoPwoqICAgKipTZWN1cml0eSBJbXBsaWNhdGlvbnM6KiogSWYgdGhpcyBpbnZvbHZlcyBtZW1vcnkgbWFuaXB1bGF0aW9uLCBvciBwb3RlbnRpYWxseSBvdmVyd3JpdGluZyBCUEYgYnl0ZWNvZGUsIHRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgY29uY2VybmluZyBmcm9tIGEgc2VjdXJpdHkgc3RhbmRwb2ludC4gQ291bGQgdGhpcyBiZSByZWxhdGVkIHRvIGEga25vd24gdnVsbmVyYWJpbGl0eSwgYSBtaXRpZ2F0aW9uIHN0cmF0ZWd5LCBvciBhIG5vdmVsIGF0dGFjayB2ZWN0b3I/IEkmIzM5O2QgYmUgbG9va2luZyBmb3IgdGhlIHRlbGwtdGFsZSBzaWducy4KKiAgICoqUGVyZm9ybWFuY2UgSW1wYWN0OioqIEZpeHVwcyBjYW4gaW50cm9kdWNlIG92ZXJoZWFkLCBzbyBpdCYjMzk7cyBnb29kIHRvIGJlIGF3YXJlIG9mIHRoZSBydW50aW1lIGNvc3RzLiBIb3cgY3JpdGljYWwgaXMgdGhpcyBwZXJmb3JtYW5jZSBoaXQgZm9yIHRoZSBvdmVyYWxsIG9wZXJhdGlvbiBvZiB0aGUgc3lzdGVtPwoKU28sIEkmIzM5O2QgYmUgbWVudGFsbHkgcHJlcGFyaW5nIHRvIGRpZyBpbnRvIHRoYXQgc3BlY2lmaWMgc2VjdGlvbiBvZiBgZml4dXBzLmNgLCBsb29raW5nIGZvciB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gQmFzZWQgb24gZXhwZXJpZW5jZSwgSSB3b3VsZCBoYXZlIHN1c3BpY2lvbnMgdG8gZXhwbG9yZSAtIGJ1dCBJJiMzOTtkIG5lZWQgdG8gZXhhbWluZSB0aGUgc291cmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAwNjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzM1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBQYXRjaDogQSBEZWVwIERpdmUqKgoKT2theSwgbGV0JiMzOTtzIGRpc3NlY3QgdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCBmb2N1cyBpcyB0byB1bmRlcnN0YW5kIHByZWNpc2VseSB3aGF0JiMzOTtzIGNoYW5naW5nIGFuZCB3aHksIGVzcGVjaWFsbHkgZ2l2ZW4gaXRzIHByb3hpbWl0eSB0byB0aGUgQlBGIGluZnJhc3RydWN0dXJlLCBhbiBhcmVhIEkmIzM5O20gaW50aW1hdGVseSBmYW1pbGlhciB3aXRoLgoKRmlyc3QgZ2xhbmNlIHRlbGxzIG1lIHRoaXMgcmV2b2x2ZXMgYXJvdW5kIGhvdyB3ZSBoYW5kbGUgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBhbmQgdGhlIHJlbGF0ZWQgc3RhY2sgb2Zmc2V0IGNhbGN1bGF0aW9ucyB3aXRoaW4gdGhlIEJQRiBieXRlY29kZS4gVGhlIGNvcmUgYWx0ZXJhdGlvbiBhcHBlYXJzIHRvIGJlIGluIGBicGZfZG9fbWlzY19maXh1cHNgIHdpdGhpbiBga2VybmVsL2JwZi9maXh1cHMuY2AuCgpQcmV2aW91c2x5LCB0aGUgY29kZSBkaXJlY3RseSBsb2FkZWQgYHN0YWNrX29mZl9jbnRgIGludG8gYEJQRl9SRUdfQVhgLCB3aGljaCBJIHJlY2FsbCB3YXMgdGhlbiB1c2VkIGFzIGFuIGFyZ3VtZW50IHBhc3NlZCB0byBhIHRyYW1wb2xpbmUsIHdoZXJlIHRoZSBhY3R1YWwgc3RhY2sgcG9pbnRlciBjYWxjdWxhdGlvbiBoYXBwZW5lZC4gVGhlIHBhdGNoIGluZGljYXRlcyBhIHNoaWZ0IGluIHRoaXMgYXBwcm9hY2guCgpUaGUgY29kZSBub3cgY2FsY3VsYXRlcyB0aGUgZWZmZWN0aXZlIHN0YWNrIHBvaW50ZXIsIGBGUCAmIzQzOyBzdGFja19vZmZfY250YCwgd2l0aGluIHRoZSAqQlBGIGJ5dGVjb2RlIGl0c2VsZiogYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nIHBvaW50ZXIgaW50byBgQlBGX1JFR19BWGAgYmVmb3JlIHRoZSBjYWxsLiBUaGlzIGlzIHRoZSBjcml0aWNhbCBjaGFuZ2UuIFNwZWNpZmljYWxseSwgaXQgaW52b2x2ZXMgdGhlIGZvbGxvd2luZyBhZGp1c3RtZW50czogdGhlIGp1bXAgb2Zmc2V0IGlzIGNoYW5nZWQgZnJvbSBgaW5zbi0mZ3Q7b2ZmICYjNDM7IDVgIHRvIGBpbnNuLSZndDtvZmYgJiM0MzsgNmAsIGFuZCBgaW5zbl9idWZbNF1gIG5vdyBjb3BpZXMgdGhlIEZyYW1lIFBvaW50ZXIgdG8gYEFYYC4gYGluc25fYnVmWzVdYCB0aGVuIGFkZHMgYHN0YWNrX29mZl9jbnRgIHRvIHRoZSBGcmFtZSBQb2ludGVyIGluIGBBWGAuIEZ1cnRoZXIsIHRoZSBKdW1wIGluc3RydWN0aW9uIG9mZnNldCBpcyBjaGFuZ2VkIGZyb20gMiB0byAzLCBhbmQgdGhlIGNvdW50IGlzIHVwZGF0ZWQgdG8gOC4KClRoZSBjb21tZW50IG1lbnRpb25zIHRoaXMgaXMgY2xlYW5lciB3aGVuIGRlYWxpbmcgd2l0aCBwcml2YXRlIHN0YWNrcywgYW5kIEkgaW1tZWRpYXRlbHkgc2VlIHRoZSBiZW5lZml0LiBCeSBjYWxjdWxhdGluZyB0aGUgc3RhY2sgcG9pbnRlciB3aXRoaW4gdGhlIEJQRiBwcm9ncmFtLCB3ZSBjZW50cmFsaXplIHRoaXMgbG9naWMsIGRlY291cGxpbmcgdGhlIHRyYW1wb2xpbmUgZnJvbSB0aGUgc3BlY2lmaWNzIG9mIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSYjMzk7cyBmcmFtZSBwb2ludGVyIGxheW91dCAoZS5nLiwgaW4gYSBwcml2YXRlIHN0YWNrIGNvbnRleHQsIHRoZSBmcmFtZSBwb2ludGVyIG1pZ2h0IHBvaW50IHRvIHRoZSBwcml2YXRlIHN0YWNrLCBub3QgdGhlIG5hdGl2ZSBgJXJicGApLgoKTm93LCBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBieSB0YWtpbmcgYSBwZWVrIGF0IHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHJhbXBvbGluZSBpbXBsZW1lbnRhdGlvbnMgKGFybTY0LCBwb3dlcnBjLCByaXNjdiwgczM5MCwgeDg2KS4gSXQgc2VlbXMgdGhleSBwcmV2aW91c2x5IHJlY2VpdmVkIHRoZSBvZmZzZXQsIGFkZGVkIGl0IHRvIHRoZSBmcmFtZSBwb2ludGVyLCBhbmQgbm93IHJlY2VpdmUgdGhlIGNhbGN1bGF0ZWQgcG9pbnRlciBkaXJlY3RseSB2aWEgQVguCgpUaGUgcGF0Y2gmIzM5O3MgbG9naWMgaXMgc291bmQuIFdlIGNhbGN1bGF0ZSB0aGUgcG9pbnRlciBpbiBieXRlY29kZSB1c2luZyB0aGUgZnJhbWUgcG9pbnRlciwgYW5kIHRoZW4gYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCwgd2hpY2ggcHJlc3VtYWJseSB0aGVuIHBhc3NlcyB0aGF0IGRpcmVjdGx5IHRvIGBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9gLgoKVG8gZW5zdXJlIHRoZXJlIGFyZSBubyBzdWJ0bGUgcmVncmVzc2lvbnMsIEkgc2hvdWxkIHRha2UgYSBjbG9zZSBsb29rIGF0IGBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9gIGFuZCB0aGUgc3Vycm91bmRpbmcgY29kZSBwYXRocy4gSSYjMzk7bGwgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGNoYW5nZSBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHVuZXhwZWN0ZWQgYmVoYXZpb3Igb3IgcGVyZm9ybWFuY2UgaW1wYWN0cywgZXNwZWNpYWxseSBpbiBlZGdlIGNhc2VzIG9yIHdpdGggY29tcGxleCBCUEYgcHJvZ3JhbXMuIFRoaXMgY2hhbmdlIGlzIHN1YnRsZSwgYnV0IHBvdGVudGlhbGx5IGZhci1yZWFjaGluZywgYW5kIHRoZSBkZXZpbCBpcyBhbHdheXMgaW4gdGhlIGRldGFpbHMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM0MDA6XHRcdHByb2cgPSBicGZfcHJvZ19maW5kX2Zyb21fc3RhY2soKTtcbjM0MDE6XHRcdGlmICghcHJvZylcbjM0MDI6XHRcdFx0cmV0dXJuO1xuMzQwMzpcdFx0YnBmX3N0cmVhbV9zdGFnZShzcywgcHJvZywgQlBGX1NUREVSUiwgKHtcbjM0MDQ6XHRcdFx0YnBmX3N0cmVhbV9wcmludGsoc3MsIFwmIzM0O0VSUk9SOiBUaW1lb3V0IGRldGVjdGVkIGZvciBtYXlfZ290byBpbnN0cnVjdGlvblxcblwmIzM0Oyk7XG4zNDA1Olx0XHRcdGJwZl9zdHJlYW1fZHVtcF9zdGFjayhzcyk7XG4zNDA2Olx0XHR9KSk7XG4zNDA3Olx0I2VuZGlmXG4zNDA4Olx0fVxuMzQwOTpcdFxuMzQxMDpcdHU2NCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8oc3RydWN0IGJwZl90aW1lZF9tYXlfZ290byAqcClcbjM0MTE6XHR7XG4zNDEyOlx0XHR1NjQgdGltZSA9IGt0aW1lX2dldF9tb25vX2Zhc3RfbnMoKTtcbjM0MTM6XHRcbjM0MTQ6XHRcdC8qIFBvcHVsYXRlIHRoZSB0aW1lc3RhbXAgZm9yIHRoaXMgc3RhY2sgZnJhbWUsIGFuZCByZWZyZXNoIGNvdW50LiAqL1xuMzQxNTpcdFx0aWYgKCFwLVx1MDAzZXRpbWVzdGFtcCkge1xuMzQxNjpcdFx0XHRwLVx1MDAzZXRpbWVzdGFtcCA9IHRpbWU7XG4zNDE3Olx0XHRcdHJldHVybiBCUEZfTUFYX1RJTUVEX0xPT1BTO1xuMzQxODpcdFx0fVxuMzQxOTpcdFx0LyogQ2hlY2sgaWYgd2UmIzM5O3ZlIGV4aGF1c3RlZCBvdXIgdGltZSBzbGljZSwgYW5kIHplcm8gY291bnQuICovXG4zNDIwOlx0XHRpZiAodW5saWtlbHkodGltZSAtIHAtXHUwMDNldGltZXN0YW1wIFx1MDAzZT0gKE5TRUNfUEVSX1NFQyAvIDQpKSkge1xuMzQyMTpcdFx0XHRicGZfcHJvZ19yZXBvcnRfbWF5X2dvdG9fdmlvbGF0aW9uKCk7XG4zNDIyOlx0XHRcdHJldHVybiAwO1xuMzQyMzpcdFx0fVxuMzQyNDpcdFx0LyogUmVmcmVzaCB0aGUgY291bnQgZm9yIHRoZSBzdGFjayBmcmFtZS4gKi9cbjM0MjU6XHRcdHJldHVybiBCUEZfTUFYX1RJTUVEX0xPT1BTO1xuMzQyNjpcdH1cbjM0Mjc6XHRcbjM0Mjg6XHQvKiBmb3IgY29uZmlncyB3aXRob3V0IE1NVSBvciAzMi1iaXQgKi9cbjM0Mjk6XHRfX3dlYWsgY29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGFyZW5hX21hcF9vcHM7XG4zNDMwOlx0X193ZWFrIHU2NCBicGZfYXJlbmFfZ2V0X3VzZXJfdm1fc3RhcnQoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEpXG4zNDMxOlx0e1xuMzQzMjpcdFx0cmV0dXJuIDA7XG4zNDMzOlx0fVxuMzQzNDpcdF9fd2VhayB1NjQgYnBmX2FyZW5hX2dldF9rZXJuX3ZtX3N0YXJ0KHN0cnVjdCBicGZfYXJlbmEgKmFyZW5hKVxuMzQzNTpcdHtcbjM0MzY6XHRcdHJldHVybiAwO1xuMzQzNzpcdH1cbjM0Mzg6XHRcbjM0Mzk6XHQjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjEyCgkJCQkJCQlvdXRwdXQ6IDI0NwoJCQkJCQkJdGhvdWdodHM6IDMyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBDaGVjazogUmVmYWN0b3JpbmcgQlBGIFRyYW1wb2xpbmUgQ2FsbGluZyBDb252ZW50aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgc2NhbiBmb3IgS01TQU4gaXNzdWVzIGludm9sdmVzIGNoZWNraW5nIGZvciBhIGZldyBrZXkgdGhpbmdzOiB1bmluaXRpYWxpemVkIGRhdGEgbWFraW5nIGl0cyB3YXkgaW50byB1c2VyIHNwYWNlLCBjb25kaXRpb25hbCBsb2dpYyByZWx5aW5nIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcyBpbiBkYXRhIHN0cnVjdHVyZXMsIGFuZCBhbnkgdnVsbmVyYWJpbGl0aWVzIGluIGJvdW5kcyBjaGVja3MgdGhhdCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBCYXNlZCBvbiB0aGlzIHBhdGNoJiMzOTtzIGNoYW5nZXMsIG5vbmUgb2YgdGhvc2UgYXBwZWFyIHRvIGJlIHByZXNlbnQuCgpTcGVjaWZpY2FsbHksIHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIGNhbGxpbmcgY29udmVudGlvbiBmb3IgdGhlIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgdHJhbXBvbGluZS4gSXQmIzM5O3MgYWJvdXQgaG93IHRoZSBwb2ludGVyLCBjYWxjdWxhdGVkIGZyb20gdGhlIGZyYW1lIHBvaW50ZXIgYW5kIHN0YWNrIG9mZnNldCwgaXMgcGFzc2VkIGFjcm9zcyBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcyAoeDg2LCBhcm02NCwgcmlzY3YsIHMzOTAsIGFuZCBwb3dlcnBjKS4gSW5zdGVhZCBvZiB0aGUgdHJhbXBvbGluZSBjYWxjdWxhdGluZyBpdCBpbnRlcm5hbGx5LCB0aGUgY29tcHV0YXRpb24gaXMgZG9uZSBiZWZvcmVoYW5kIGFuZCB0aGUgcmVzdWx0LCBgQlBGX1JFR19BWGAsIGlzIGRpcmVjdGx5IHBhc3NlZC4gVGhpcyBlbmFibGVzIGNvbXBhdGliaWxpdHkgd2l0aCBmZWF0dXJlcyBsaWtlIEJQRiBwcml2YXRlIHN0YWNrcy4KClRoZSBwb3RlbnRpYWwgcmlza3MgaGVyZSBhcmUgcHJpbWFyaWx5IGluY29ycmVjdCByZWdpc3RlciB2YWx1ZXMsIGJhZCBicmFuY2ggb2Zmc2V0cyBpbiB0aGUgQlBGIEpJVCBvciB2ZXJpZmllciBmaXh1cHMsIG9yIG1lbW9yeSBjb3JydXB0aW9uL291dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGVzZSBhcmUgd2VsbC11bmRlcnN0b29kIGlzc3VlcywgZmFsbGluZyB1bmRlciB0eXBpY2FsIEtBU0FOIGFuZCB2ZXJpZmllciBjb3JyZWN0bmVzcyB0ZXN0aW5nLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZS4KClRoZXJlZm9yZSwgYE5lZWRzS01TQU5gIGlzIGRlZmluaXRlbHkgYGZhbHNlYC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDA2OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgQlBGIHRpbWVkIGBtYXlfZ290b2AgdHJhbXBvbGluZSBjYWxsaW5nIGNvbnZlbnRpb24gYWNyb3NzIGFyY2hpdGVjdHVyZXMgKHg4Nl82NCwgYXJtNjQsIHJpc2N2LCBzMzkwLCBwb3dlcnBjKSBhbmQgdXBkYXRlcyB0aGUgdmVyaWZpZXIgaW5zdHJ1Y3Rpb24gZml4dXBzIGluIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYC4gSW5zdGVhZCBvZiBwYXNzaW5nIHRoZSBzdGFjayBvZmZzZXQgaW4gYEJQRl9SRUdfQVhgIGFuZCBoYXZpbmcgZWFjaCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHJhbXBvbGluZSBjb21wdXRlIGBGUCAmIzQzOyBvZmZzZXRgLCB0aGUgQlBGIGJ5dGVjb2RlIG5vdyBjb21wdXRlcyB0aGUgcG9pbnRlciBgQlBGX1JFR19GUCAmIzQzOyBzdGFja19vZmZfY250YCBpbiBgQlBGX1JFR19BWGAgcHJpb3IgdG8gY2FsbGluZyBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKWAuXG5cblRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBuZXcgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZyBvciBzdHJ1Y3QgZmllbGRzIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24gbG9naWMuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggaW5zdHJ1Y3Rpb24gcGF0Y2hpbmcgb3IgcmVnaXN0ZXIgaGFuZGxpbmcgd291bGQgbWFuaWZlc3QgYXMgb3V0LW9mLWJvdW5kcyBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBjb250cm9sIGZsb3cgZXJyb3JzLCB3aGljaCBhcmUgY292ZXJlZCBieSBLQVNBTiBhbmQgdGhlIEJQRiB2ZXJpZmllci4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlZmFjdG9ycyB0aGUgQlBGIHRpbWVkIGBtYXlfZ290b2AgdHJhbXBvbGluZSBjYWxsaW5nIGNvbnZlbnRpb24gYWNyb3NzIGFyY2hpdGVjdHVyZXMgKHg4Nl82NCwgYXJtNjQsIHJpc2N2LCBzMzkwLCBwb3dlcnBjKSBhbmQgdXBkYXRlcyB0aGUgdmVyaWZpZXIgaW5zdHJ1Y3Rpb24gZml4dXBzIGluIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYC4gSW5zdGVhZCBvZiBwYXNzaW5nIHRoZSBzdGFjayBvZmZzZXQgaW4gYEJQRl9SRUdfQVhgIGFuZCBoYXZpbmcgZWFjaCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHJhbXBvbGluZSBjb21wdXRlIGBGUCAmIzQzOyBvZmZzZXRgLCB0aGUgQlBGIGJ5dGVjb2RlIG5vdyBjb21wdXRlcyB0aGUgcG9pbnRlciBgQlBGX1JFR19GUCAmIzQzOyBzdGFja19vZmZfY250YCBpbiBgQlBGX1JFR19BWGAgcHJpb3IgdG8gY2FsbGluZyBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKWAuXG5cblRoaXMgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBuZXcgaGVhcC9zdGFjayBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgcGFkZGluZyBvciBzdHJ1Y3QgZmllbGRzIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBtZW1vcnkgaW5pdGlhbGl6YXRpb24gbG9naWMuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggaW5zdHJ1Y3Rpb24gcGF0Y2hpbmcgb3IgcmVnaXN0ZXIgaGFuZGxpbmcgd291bGQgbWFuaWZlc3QgYXMgb3V0LW9mLWJvdW5kcyBwb2ludGVyIGRlcmVmZXJlbmNlcyBvciBjb250cm9sIGZsb3cgZXJyb3JzLCB3aGljaCBhcmUgY292ZXJlZCBieSBLQVNBTiBhbmQgdGhlIEJQRiB2ZXJpZmllci4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTE6MjguNjIzNzA2NDY1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzNTE4MjQ5NTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2RvX21pc2NfZml4dXBzXCIsXG4gICAgXCJhcmNoX2JwZl90aW1lZF9tYXlfZ290b1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBCUEYgdGltZWQgYG1heV9nb3RvYCB0cmFtcG9saW5lIGNhbGxpbmcgY29udmVudGlvbiBhY3Jvc3MgYXJjaGl0ZWN0dXJlcyAoeDg2XzY0LCBhcm02NCwgcmlzY3YsIHMzOTAsIHBvd2VycGMpIGFuZCB1cGRhdGVzIHRoZSB2ZXJpZmllciBpbnN0cnVjdGlvbiBmaXh1cHMgaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgLiBJbnN0ZWFkIG9mIHBhc3NpbmcgdGhlIHN0YWNrIG9mZnNldCBpbiBgQlBGX1JFR19BWGAgYW5kIGhhdmluZyBlYWNoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0cmFtcG9saW5lIGNvbXB1dGUgYEZQICsgb2Zmc2V0YCwgdGhlIEJQRiBieXRlY29kZSBub3cgY29tcHV0ZXMgdGhlIHBvaW50ZXIgYEJQRl9SRUdfRlAgKyBzdGFja19vZmZfY250YCBpbiBgQlBGX1JFR19BWGAgcHJpb3IgdG8gY2FsbGluZyBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKWAuXFxuXFxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nIG9yIHN0cnVjdCBmaWVsZHMgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiBsb2dpYy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBpbnN0cnVjdGlvbiBwYXRjaGluZyBvciByZWdpc3RlciBoYW5kbGluZyB3b3VsZCBtYW5pZmVzdCBhcyBvdXQtb2YtYm91bmRzIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIGNvbnRyb2wgZmxvdyBlcnJvcnMsIHdoaWNoIGFyZSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCB0aGUgQlBGIHZlcmlmaWVyLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBieXRlY29kZSBmaXh1cHMgZm9yIHRpbWVkIG1heV9nb3RvIGluc3RydWN0aW9ucyBpbiB0aGUgdmVyaWZpZXIgKGJwZl9kb19taXNjX2ZpeHVwcyBpbiBrZXJuZWwvYnBmL2ZpeHVwcy5jKSBhbmQgdGhlIHg4NiBKSVQgdHJhbXBvbGluZSAoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8gaW4gYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TKSB0byBjYWxjdWxhdGUgdGhlIGNvdW50L3RpbWVzdGFtcCBwb2ludGVyIGluIEJQRiByZWdpc3RlcnMgYmVmb3JlIGludm9raW5nIHRoZSB0cmFtcG9saW5lLiBUaGlzIHRvdWNoZXMgY29yZSBCUEYgdmVyaWZpY2F0aW9uIGFuZCBleGVjdXRpb24gbG9naWMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTE6MjguNjIzNzExNjA1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQxMTM3NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0ODgxOTU3YWU1ZTEyYTYxNmMzZmM4ODU4YWY2MDY1NDM0ZWZmMWRjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gU2VwIDYgMDY6NTE6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xcbmluZGV4IGE5YTgwMjcxMWE3ZjkuLjUzMTQ4YzlhMWM1ODQgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcXG4rKysgYi9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xcbkBAIC0xNCwxNiArMTQsMTAgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuIFxcdHN0cFxcdHgzLCB4NCwgW3NwLCAjNDhdXFxuIFxcbiBcXHQvKlxcbi1cXHQgKiBTdGFjayBkZXB0aCB3YXMgcGFzc2VkIGluIEJQRl9SRUdfQVggKHg5KSwgYWRkIGl0IHRvIHRoZSBCUEZfRlBcXG4tXFx0ICogKHgyNSkgdG8gZ2V0IHRoZSBwb2ludGVyIHRvIGNvdW50IGFuZCB0aW1lc3RhbXAgYW5kIHBhc3MgaXQgYXMgdGhlXFxuLVxcdCAqIGZpcnN0IGFyZ3VtZW50IGluIHgwLlxcbi1cXHQgKlxcbi1cXHQgKiBCZWZvcmUgZ2VuZXJhdGluZyB0aGUgY2FsbCB0byBhcmNoX2JwZl90aW1lZF9tYXlfZ290bywgdGhlIHZlcmlmaWVyXFxuLVxcdCAqIGdlbmVyYXRlcyBhIGxvYWQgaW5zdHJ1Y3Rpb24gdXNpbmcgRlAsIGkuZS4gUkVHX0FYID0gKih1NjQgKikoRlAgLVxcbi1cXHQgKiBzdGFja19vZmZfY250KSwgc28gQlBGX1JFR19GUCAoeDI1KSBpcyBhbHdheXMgc2V0IHVwIGJ5IHRoZSBhcm02NFxcbi1cXHQgKiBqaXQgaW4gdGhpcyBjYXNlLlxcbitcXHQgKiBCUEZfUkVHX0FYICh4OSkgY29udGFpbnMgdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlcjsgcGFzcyBpdCBhc1xcbitcXHQgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4geDAuXFxuIFxcdCAqL1xcbi1cXHRhZGRcXHR4MCwgeDksIHgyNVxcbitcXHRtb3ZcXHR4MCwgeDlcXG4gXFx0YmxcXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cXG4gXFx0LyogQlBGX1JFR19BWCh4OSkgd2lsbCBiZSBzdG9yZWQgaW50byBjb3VudCwgc28gbW92ZSByZXR1cm4gdmFsdWUgdG8gaXQuICovXFxuIFxcdG1vdlxcdHg5LCB4MFxcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xcbmluZGV4IDg0ZWNmNmZhN2Y1ZGMuLmQ4ODgyNWRkMzRmZWEgMTAwNjQ0XFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xcbisrKyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcXG5AQCAtOCw3ICs4LDcgQEBcXG4gICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSB0cmFtcG9saW5lIGZvciBwb3dlcnBjNjRcXG4gICpcXG4gICogQ3VzdG9tIEJQRiBjb252ZW50aW9uICh2ZXJpZmllci9KSVQpOlxcbi0gKlxcdC0gaW5wdXQ6ICBzdGFjayBvZmZzZXQgaW4gQlBGX1JFR19BWCAocjEyKVxcbisgKlxcdC0gaW5wdXQ6ICBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGX1JFR19BWCAocjEyKVxcbiAgKlxcdC0gb3V0cHV0OiB1cGRhdGVkIGNvdW50IGluIEJQRl9SRUdfQVggKHIxMilcXG4gICpcXG4gICogQ2FsbCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIG5vcm1hbCBwb3dlcnBjNjQgQUJJOlxcbkBAIC0zMiwxMCArMzIsMTAgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuIFxcdHN0ZCAgICAgcjgsIDcyKHIxKVxcbiBcXG4gXFx0LypcXG4tXFx0ICogcjMgPSBCUEZfUkVHX0ZQICsgQlBGX1JFR19BWFxcbi1cXHQgKiBCUEZfUkVHX0ZQIGlzIHIzMTsgQlBGX1JFR19BWCBpcyByMTIgKHN0YWNrIG9mZnNldCBpbiBieXRlcykuXFxuK1xcdCAqIEJQRl9SRUdfQVggKHIxMikgY29udGFpbnMgdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlcjsgcGFzcyBpdCBhc1xcbitcXHQgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4gcjMuXFxuIFxcdCAqL1xcbi1cXHRhZGQgICAgIHIzLCByMzEsIHIxMlxcbitcXHRtciAgICAgIHIzLCByMTJcXG4gXFx0YmwgICAgICBDRlVOQyhicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8pXFxuIFxcbiBcXHQvKiBQdXQgcmV0dXJuIHZhbHVlIGJhY2sgaW50byBBWCAqL1xcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXFxuaW5kZXggMDJjNjM3ZDg3NDIwNS4uOGMwM2UyNzJlMGJmNSAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXFxuQEAgLTYsMTIgKzYsMTEgQEBcXG4gXFxuIC8qXFxuICAqIFRyYW1wb2xpbmUgZm9yIHRoZSBCUEYgdGltZWQgbWF5X2dvdG8gbG9vcCBib3VuZC4gQ3VzdG9tIGNhbGxpbmcgY29udmVudGlvbjpcXG4tICpcXHQtIGlucHV0OiAgc3RhY2sgb2Zmc2V0IGluIEJQRl9SRUdfQVggKHQwKVxcbisgKlxcdC0gaW5wdXQ6ICBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGX1JFR19BWCAodDApXFxuICAqXFx0LSBvdXRwdXQ6IHVwZGF0ZWQgY291bnQgaW4gQlBGX1JFR19BWCAodDApXFxuICAqXFxuLSAqIENhbGxzIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggdGhlIHN0YW5kYXJkIFJJU0MtViBBQkksIHdoZXJlXFxuLSAqIHB0ciA9IEJQRl9SRUdfRlAgKHM1KSArIEJQRl9SRUdfQVggKHQwKS4gQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZFxcbi0gKiBhY3Jvc3MgdGhlIGNhbGw7IEJQRl9SRUdfRlAgKHM1KSBpcyBjYWxsZWUtc2F2ZWQgYW5kIG5lZWRzIG5vIHNhdmluZy5cXG4rICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSS5cXG4rICogQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZCBhY3Jvc3MgdGhlIGNhbGwuXFxuICAqL1xcbiBcXG4gU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuQEAgLTI4LDcgKzI3LDExIEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbiBcXHRSRUdfU1xcdGEzLCAxKlNaUkVHKHNwKVxcbiBcXHRSRUdfU1xcdGE0LCAwKlNaUkVHKHNwKVxcbiBcXG4tXFx0YWRkXFx0YTAsIHQwLCBzNVxcbitcXHQvKlxcbitcXHQgKiBCUEZfUkVHX0FYICh0MCkgY29udGFpbnMgdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlcjsgcGFzcyBpdCBhc1xcbitcXHQgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4gYTAuXFxuK1xcdCAqL1xcbitcXHRtdlxcdGEwLCB0MFxcbiBcXHRjYWxsXFx0YnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuIFxcdG12XFx0dDAsIGEwXFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xcbmluZGV4IGM0Njg3MmIwNzFjZTcuLjQwOThjMzM3N2MyMTMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xcbisrKyBiL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcXG5AQCAtMTg3Miw5ICsxODcyLDkgQEAgc3RhdGljIG5vaW5saW5lIGludCBicGZfaml0X2luc24oc3RydWN0IGJwZl9qaXQgKmppdCwgc3RydWN0IGJwZl9wcm9nICpmcCxcXG4gXFx0XFx0aWYgKCh2b2lkICopZnVuYyA9PSBhcmNoX2JwZl90aW1lZF9tYXlfZ290bykge1xcbiBcXHRcXHRcXHQvKlxcbiBcXHRcXHRcXHQgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIGhhcyBhIHNwZWNpYWwgQUJJOiB0aGVcXG4tXFx0XFx0XFx0ICogcGFyYW1ldGVycyBhcmUgaW4gQlBGX1JFR19BWCBhbmQgQlBGX1JFR18xMDsgdGhlXFxuLVxcdFxcdFxcdCAqIHJldHVybiB2YWx1ZSBpcyBpbiBCUEZfUkVHX0FYOyBhbmQgYWxsIEdQUnMgZXhjZXB0XFxuLVxcdFxcdFxcdCAqIFJFR19XMCwgUkVHX1cxLCBhbmQgQlBGX1JFR19BWCBhcmUgY2FsbGVlLXNhdmVkLlxcbitcXHRcXHRcXHQgKiBwYXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZSBhcmUgaW4gQlBGX1JFR19BWDsgYWxsXFxuK1xcdFxcdFxcdCAqIEdQUnMgZXhjZXB0IFJFR19XMCwgUkVHX1cxLCBhbmQgQlBGX1JFR19BWCBhcmVcXG4rXFx0XFx0XFx0ICogY2FsbGVlLXNhdmVkLlxcbiBcXHRcXHRcXHQgKi9cXG4gXFxuIFxcdFxcdFxcdC8qIGJyYXNsICVyMCxmdW5jICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXFxuaW5kZXggMDZmNTY3YTQ2MGQ3Yi4uZTM0Yzk5OTgyYzRhMiAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXFxuKysrIGIvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xcbkBAIC0yMSw5ICsyMSw5IEBAXFxuIFxcbiBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4gXFx0LypcXG4tXFx0ICogVGhpcyBmdW5jdGlvbiBoYXMgYSBzcGVjaWFsIEFCSTogdGhlIHBhcmFtZXRlcnMgYXJlIGluICVyMTIgYW5kXFxuLVxcdCAqICVyMTM7IHRoZSByZXR1cm4gdmFsdWUgaXMgaW4gJXIxMjsgYWxsIEdQUnMgZXhjZXB0ICVyMCwgJXIxLCBhbmRcXG4tXFx0ICogJXIxMiBhcmUgY2FsbGVlLXNhdmVkOyBhbmQgdGhlIHJldHVybiBhZGRyZXNzIGlzIGluICVyMC5cXG4rXFx0ICogVGhpcyBmdW5jdGlvbiBoYXMgYSBzcGVjaWFsIEFCSTogdGhlIHBhcmFtZXRlciBhbmQgcmV0dXJuIHZhbHVlIGFyZVxcbitcXHQgKiBpbiAlcjEyOyBhbGwgR1BScyBleGNlcHQgJXIwLCAlcjEsIGFuZCAlcjEyIGFyZSBjYWxsZWUtc2F2ZWQ7IGFuZFxcbitcXHQgKiB0aGUgcmV0dXJuIGFkZHJlc3MgaXMgaW4gJXIwLlxcbiBcXHQgKi9cXG4gXFx0c3RtZyAlcjIsJXI1LEZSQU1FX09GRitSMl9PRkYoJXIxNSlcXG4gXFx0c3RnICVyMTQsRlJBTUVfT0ZGK1IxNF9PRkYoJXIxNSlcXG5AQCAtMzMsNyArMzMsNyBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4gXFx0bGF5ICVyMTUsLUZSQU1FX1NJWkUoJXIxNSlcXG4gXFx0c3RnICVyMSxfX1NGX0JBQ0tDSEFJTiglcjE1KVxcbiBcXG4tXFx0bGF5ICVyMiwwKCVyMTIsJXIxMylcXG4rXFx0bGdyICVyMiwlcjEyXFxuIFxcdGJyYXNsICVyMTQsYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuIFxcdGxnciAlcjEyLCVyMlxcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXFxuaW5kZXggNTRjNjkwY2FlMTkwOC4uNmU5ZDllN2MyYjFkNiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcXG4rKysgYi9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcXG5AQCAtMTEsMTIgKzExLDYgQEBcXG4gU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuIFxcdEFOTk9UQVRFX05PRU5EQlJcXG4gXFxuLVxcdC8qXFxuLVxcdCAqIHIxMCBwYXNzZXMgdXMgc3RhY2sgZGVwdGgsIGxvYWQgdGhlIHBvaW50ZXIgdG8gY291bnQgYW5kIHRpbWVzdGFtcFxcbi1cXHQgKiBpbnRvIHIxMCBieSBhZGRpbmcgaXQgdG8gQlBGIGZyYW1lIHBvaW50ZXIuXFxuLVxcdCAqL1xcbi1cXHRsZWFxICglcmJwLCAlcjEwLCAxKSwgJXIxMFxcbi1cXG4gXFx0LyogU2V0dXAgZnJhbWUuICovXFxuIFxcdHB1c2hxICVyYnBcXG4gXFx0bW92cSAlcnNwLCAlcmJwXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvZml4dXBzLmMgYi9rZXJuZWwvYnBmL2ZpeHVwcy5jXFxuaW5kZXggNjViNDQxZTRhMzUxNy4uZGM1OTUwMWEzMmJiZCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL2ZpeHVwcy5jXFxuKysrIGIva2VybmVsL2JwZi9maXh1cHMuY1xcbkBAIC0xNzk3LDIwICsxNzk3LDIwIEBAIGludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4gXFx0XFx0XFx0c3RhY2tfZGVwdGhfZXh0cmEgPSAxNjtcXG4gXFx0XFx0XFx0aW5zbl9idWZbMF0gPSBCUEZfTERYX01FTShCUEZfRFcsIEJQRl9SRUdfQVgsIEJQRl9SRUdfMTAsIHN0YWNrX29mZl9jbnQpO1xcbiBcXHRcXHRcXHRpZiAoaW5zbi1cXHUwMDNlb2ZmIFxcdTAwM2U9IDApXFxuLVxcdFxcdFxcdFxcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cXHUwMDNlb2ZmICsgNSk7XFxuK1xcdFxcdFxcdFxcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cXHUwMDNlb2ZmICsgNik7XFxuIFxcdFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0XFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVxcdTAwM2VvZmYgLSAxKTtcXG4gXFx0XFx0XFx0aW5zbl9idWZbMl0gPSBCUEZfQUxVNjRfSU1NKEJQRl9TVUIsIEJQRl9SRUdfQVgsIDEpO1xcbi1cXHRcXHRcXHRpbnNuX2J1ZlszXSA9IEJQRl9KTVBfSU1NKEJQRl9KTkUsIEJQRl9SRUdfQVgsIDAsIDIpO1xcbitcXHRcXHRcXHRpbnNuX2J1ZlszXSA9IEJQRl9KTVBfSU1NKEJQRl9KTkUsIEJQRl9SRUdfQVgsIDAsIDMpO1xcbiBcXHRcXHRcXHQvKlxcbi1cXHRcXHRcXHQgKiBBWCBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIHBhc3MgaW4gc3RhY2tfb2ZmX2NudFxcbi1cXHRcXHRcXHQgKiAodG8gYWRkIHRvIHIxMC9mcCksIGFuZCBhbHNvIGFzIHRoZSByZXR1cm4gdmFsdWUgb2ZcXG4tXFx0XFx0XFx0ICogdGhlIGNhbGwgdG8gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8uXFxuK1xcdFxcdFxcdCAqIEFYIGlzIHVzZWQgdG8gcGFzcyBGUCArIHN0YWNrX29mZl9jbnQgYXMgdGhlIGFyZ3VtZW50IHRvXFxuK1xcdFxcdFxcdCAqIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCksIGFuZCBhbHNvIGhvbGRzIGl0cyByZXR1cm4gdmFsdWUuXFxuIFxcdFxcdFxcdCAqL1xcbi1cXHRcXHRcXHRpbnNuX2J1Zls0XSA9IEJQRl9NT1Y2NF9JTU0oQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XFxuLVxcdFxcdFxcdGluc25fYnVmWzVdID0gQlBGX0VNSVRfQ0FMTChhcmNoX2JwZl90aW1lZF9tYXlfZ290byk7XFxuLVxcdFxcdFxcdGluc25fYnVmWzZdID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcXG4tXFx0XFx0XFx0Y250ID0gNztcXG4rXFx0XFx0XFx0aW5zbl9idWZbNF0gPSBCUEZfTU9WNjRfUkVHKEJQRl9SRUdfQVgsIEJQRl9SRUdfRlApO1xcbitcXHRcXHRcXHRpbnNuX2J1Zls1XSA9IEJQRl9BTFU2NF9JTU0oQlBGX0FERCwgQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XFxuK1xcdFxcdFxcdGluc25fYnVmWzZdID0gQlBGX0VNSVRfQ0FMTChhcmNoX2JwZl90aW1lZF9tYXlfZ290byk7XFxuK1xcdFxcdFxcdGluc25fYnVmWzddID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcXG4rXFx0XFx0XFx0Y250ID0gODtcXG4gXFxuIFxcdFxcdFxcdG5ld19wcm9nID0gYnBmX3BhdGNoX2luc25fZGF0YShlbnYsIGkgKyBkZWx0YSwgaW5zbl9idWYsIGNudCk7XFxuIFxcdFxcdFxcdGlmICghbmV3X3Byb2cpXFxuQEAgLTI2NjEsNCArMjY2MSwzIEBAIGludCBicGZfcmVtb3ZlX2Zhc3RjYWxsX3NwaWxsc19maWxscyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4tXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuY1xcbmluZGV4IDMyOGNmNjMwMjEwYTIuLmM1OTk2ZDlkYzhjYzkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXFxuQEAgLTYzNSwxNSArNjM1LDE2IEBAIF9feGxhdGVkKFxcXCI0OiByMCA9IFxcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcXFwiKVxcbiBfX3hsYXRlZChcXFwiLi4uXFxcIilcXG4gLyogbWF5X2dvdG8gZXhwYW5zaW9uIHN0YXJ0cyAqL1xcbiBfX3hsYXRlZChcXFwiNjogcjEyID0gKih1NjQgKikocjEwIC0yNClcXFwiKVxcbi1fX3hsYXRlZChcXFwiNzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzZcXFwiKVxcbitfX3hsYXRlZChcXFwiNzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzdcXFwiKVxcbiBfX3hsYXRlZChcXFwiODogcjEyIC09IDFcXFwiKVxcbi1fX3hsYXRlZChcXFwiOTogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzJcXFwiKVxcbi1fX3hsYXRlZChcXFwiMTA6IHIxMiA9IC0yNFxcXCIpXFxuLV9feGxhdGVkKFxcXCIxMTogY2FsbCB1bmtub3duXFxcIilcXG4tX194bGF0ZWQoXFxcIjEyOiAqKHU2NCAqKShyMTAgLTI0KSA9IHIxMlxcXCIpXFxuK19feGxhdGVkKFxcXCI5OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMrM1xcXCIpXFxuK19feGxhdGVkKFxcXCIxMDogcjEyID0gcjEwXFxcIilcXG4rX194bGF0ZWQoXFxcIjExOiByMTIgKz0gLTI0XFxcIilcXG4rX194bGF0ZWQoXFxcIjEyOiBjYWxsIHVua25vd25cXFwiKVxcbitfX3hsYXRlZChcXFwiMTM6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXFxcIilcXG4gLyogbWF5X2dvdG8gZXhwYW5zaW9uIGVuZHMgKi9cXG4tX194bGF0ZWQoXFxcIjEzOiAqKHU2NCAqKShyMTAgLTgpID0gcjFcXFwiKVxcbi1fX3hsYXRlZChcXFwiMTQ6IGV4aXRcXFwiKVxcbitfX3hsYXRlZChcXFwiMTQ6ICoodTY0ICopKHIxMCAtOCkgPSByMVxcXCIpXFxuK19feGxhdGVkKFxcXCIxNTogZXhpdFxcXCIpXFxuIF9fc3VjY2Vzc1xcbiBfX25ha2VkIHZvaWQgbWF5X2dvdG9faW50ZXJhY3Rpb25feDg2XzY0KHZvaWQpXFxuIHtcXG5AQCAtNjc2LDE1ICs2NzcsMTYgQEAgX194bGF0ZWQoXFxcIjI6IHIxID0gMVxcXCIpXFxuIF9feGxhdGVkKFxcXCIzOiBjYWxsIGJwZl9nZXRfc21wX3Byb2Nlc3Nvcl9pZFxcXCIpXFxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBzdGFydHMgKi9cXG4gX194bGF0ZWQoXFxcIjQ6IHIxMiA9ICoodTY0ICopKHIxMCAtMjQpXFxcIilcXG4tX194bGF0ZWQoXFxcIjU6IGlmIHIxMiA9PSAweDAgZ290byBwYys2XFxcIilcXG4rX194bGF0ZWQoXFxcIjU6IGlmIHIxMiA9PSAweDAgZ290byBwYys3XFxcIilcXG4gX194bGF0ZWQoXFxcIjY6IHIxMiAtPSAxXFxcIilcXG4tX194bGF0ZWQoXFxcIjc6IGlmIHIxMiAhPSAweDAgZ290byBwYysyXFxcIilcXG4tX194bGF0ZWQoXFxcIjg6IHIxMiA9IC0yNFxcXCIpXFxuLV9feGxhdGVkKFxcXCI5OiBjYWxsIHVua25vd25cXFwiKVxcbi1fX3hsYXRlZChcXFwiMTA6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXFxcIilcXG4rX194bGF0ZWQoXFxcIjc6IGlmIHIxMiAhPSAweDAgZ290byBwYyszXFxcIilcXG4rX194bGF0ZWQoXFxcIjg6IHIxMiA9IHIxMFxcXCIpXFxuK19feGxhdGVkKFxcXCI5OiByMTIgKz0gLTI0XFxcIilcXG4rX194bGF0ZWQoXFxcIjEwOiBjYWxsIHVua25vd25cXFwiKVxcbitfX3hsYXRlZChcXFwiMTE6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXFxcIilcXG4gLyogbWF5X2dvdG8gZXhwYW5zaW9uIGVuZHMgKi9cXG4tX194bGF0ZWQoXFxcIjExOiAqKHU2NCAqKShyMTAgLTgpID0gcjFcXFwiKVxcbi1fX3hsYXRlZChcXFwiMTI6IGV4aXRcXFwiKVxcbitfX3hsYXRlZChcXFwiMTI6ICoodTY0ICopKHIxMCAtOCkgPSByMVxcXCIpXFxuK19feGxhdGVkKFxcXCIxMzogZXhpdFxcXCIpXFxuIF9fc3VjY2Vzc1xcbiBfX25ha2VkIHZvaWQgbWF5X2dvdG9faW50ZXJhY3Rpb24odm9pZClcXG4ge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuY1xcbmluZGV4IGRiN2UzMGRhMjM0ZjEuLjE3MjE4OTcxNjBkYzkgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmNcXG5AQCAtOTAsMTUgKzkwLDE2IEBAIF9fYXJjaF9sb29uZ2FyY2hcXG4gX194bGF0ZWQoXFxcIjA6ICoodTY0ICopKHIxMCAtMTYpID0gNjU1MzVcXFwiKVxcbiBfX3hsYXRlZChcXFwiMTogKih1NjQgKikocjEwIC04KSA9IDBcXFwiKVxcbiBfX3hsYXRlZChcXFwiMjogcjEyID0gKih1NjQgKikocjEwIC0xNilcXFwiKVxcbi1fX3hsYXRlZChcXFwiMzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzZcXFwiKVxcbitfX3hsYXRlZChcXFwiMzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzdcXFwiKVxcbiBfX3hsYXRlZChcXFwiNDogcjEyIC09IDFcXFwiKVxcbi1fX3hsYXRlZChcXFwiNTogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzJcXFwiKVxcbi1fX3hsYXRlZChcXFwiNjogcjEyID0gLTE2XFxcIilcXG4tX194bGF0ZWQoXFxcIjc6IGNhbGwgdW5rbm93blxcXCIpXFxuLV9feGxhdGVkKFxcXCI4OiAqKHU2NCAqKShyMTAgLTE2KSA9IHIxMlxcXCIpXFxuLV9feGxhdGVkKFxcXCI5OiByMCA9IDFcXFwiKVxcbi1fX3hsYXRlZChcXFwiMTA6IHIwID0gMlxcXCIpXFxuLV9feGxhdGVkKFxcXCIxMTogZXhpdFxcXCIpXFxuK19feGxhdGVkKFxcXCI1OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMrM1xcXCIpXFxuK19feGxhdGVkKFxcXCI2OiByMTIgPSByMTBcXFwiKVxcbitfX3hsYXRlZChcXFwiNzogcjEyICs9IC0xNlxcXCIpXFxuK19feGxhdGVkKFxcXCI4OiBjYWxsIHVua25vd25cXFwiKVxcbitfX3hsYXRlZChcXFwiOTogKih1NjQgKikocjEwIC0xNikgPSByMTJcXFwiKVxcbitfX3hsYXRlZChcXFwiMTA6IHIwID0gMVxcXCIpXFxuK19feGxhdGVkKFxcXCIxMTogcjAgPSAyXFxcIilcXG4rX194bGF0ZWQoXFxcIjEyOiBleGl0XFxcIilcXG4gX19zdWNjZXNzXFxuIF9fbmFrZWQgdm9pZCBtYXlfZ290b19iYXRjaF8yKHZvaWQpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcXG5pbmRleCAzZDk5OTRhNTI0NjRlLi42MzliNTMzNjNjOWFjIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jXFxuQEAgLTcwLDYgKzcwLDI1IEBAIF9fbmFrZWQgdm9pZCBub19wcml2YXRlX3N0YWNrX25lc3RlZCh2b2lkKVxcbiBcXFwiXFx0Ojo6IF9fY2xvYmJlcl9hbGwpO1xcbiB9XFxuIFxcbitTRUMoXFxcImZlbnRyeS9icGZfZmVudHJ5X3Rlc3Q5XFxcIilcXG4rX19kZXNjcmlwdGlvbihcXFwiUHJpdmF0ZSBzdGFjaywgdGltZWQgbWF5X2dvdG9cXFwiKVxcbitfX3N1Y2Nlc3MgX19yZXR2YWwoMClcXG4rX19hcmNoX3g4Nl82NFxcbitfX2ppdGVkKFxcXCJcXHRtb3ZhYnNxXFx0JDB4e3suKn19LCAlcjlcXFwiKVxcbitfX2ppdGVkKFxcXCIuLi5cXFwiKVxcbitfX2ppdGVkKFxcXCJcXHRtb3ZxXFx0JXI5LCAlcjEwXFxcIilcXG4rX19hcmNoX2FybTY0XFxuK19faml0ZWQoXFxcIlxcdG1vdlxcdHg5LCB4MjVcXFwiKVxcbitpbnQgcHJpdmF0ZV9zdGFja190aW1lZF9tYXlfZ290byh2b2lkKVxcbit7XFxuK1xcdHZvbGF0aWxlIF9fdTY0IHN0YWNrX3NwYWNlWzE2XSA9IHt9O1xcbitcXG4rXFx0d2hpbGUgKGNhbl9sb29wKVxcbitcXHRcXHQ7XFxuK1xcbitcXHRyZXR1cm4gc3RhY2tfc3BhY2VbMF07XFxuK31cXG4rXFxuIF9fdXNlZFxcbiBfX25ha2VkIHN0YXRpYyB2b2lkIGN1bXVsYXRpdmVfc3RhY2tfZGVwdGhfc3VicHJvZyh2b2lkKVxcbiB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUxOjI5LjA0ODQ4MDU5N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTAyNzU3MTI2MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2RvX21pc2NfZml4dXBzXCIsXG4gICAgXCJhcmNoX2JwZl90aW1lZF9tYXlfZ290b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBieXRlY29kZSBmaXh1cHMgZm9yIHRpbWVkIG1heV9nb3RvIGluc3RydWN0aW9ucyBpbiB0aGUgdmVyaWZpZXIgKGJwZl9kb19taXNjX2ZpeHVwcyBpbiBrZXJuZWwvYnBmL2ZpeHVwcy5jKSBhbmQgdGhlIHg4NiBKSVQgdHJhbXBvbGluZSAoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8gaW4gYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TKSB0byBjYWxjdWxhdGUgdGhlIGNvdW50L3RpbWVzdGFtcCBwb2ludGVyIGluIEJQRiByZWdpc3RlcnMgYmVmb3JlIGludm9raW5nIHRoZSB0cmFtcG9saW5lLiBUaGlzIHRvdWNoZXMgY29yZSBCUEYgdmVyaWZpY2F0aW9uIGFuZCBleGVjdXRpb24gbG9naWMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0ODgxOTU3YWU1ZTEyYTYxNmMzZmM4ODU4YWY2MDY1NDM0ZWZmMWRjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAwNjo1MToyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbmluZGV4IGE5YTgwMjcxMWE3ZjkuLjUzMTQ4YzlhMWM1ODQgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuKysrIGIvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC0xNCwxNiArMTQsMTAgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHRzdHBcdHgzLCB4NCwgW3NwLCAjNDhdXG4gXG4gXHQvKlxuLVx0ICogU3RhY2sgZGVwdGggd2FzIHBhc3NlZCBpbiBCUEZfUkVHX0FYICh4OSksIGFkZCBpdCB0byB0aGUgQlBGX0ZQXG4tXHQgKiAoeDI1KSB0byBnZXQgdGhlIHBvaW50ZXIgdG8gY291bnQgYW5kIHRpbWVzdGFtcCBhbmQgcGFzcyBpdCBhcyB0aGVcbi1cdCAqIGZpcnN0IGFyZ3VtZW50IGluIHgwLlxuLVx0ICpcbi1cdCAqIEJlZm9yZSBnZW5lcmF0aW5nIHRoZSBjYWxsIHRvIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvLCB0aGUgdmVyaWZpZXJcbi1cdCAqIGdlbmVyYXRlcyBhIGxvYWQgaW5zdHJ1Y3Rpb24gdXNpbmcgRlAsIGkuZS4gUkVHX0FYID0gKih1NjQgKikoRlAgLVxuLVx0ICogc3RhY2tfb2ZmX2NudCksIHNvIEJQRl9SRUdfRlAgKHgyNSkgaXMgYWx3YXlzIHNldCB1cCBieSB0aGUgYXJtNjRcbi1cdCAqIGppdCBpbiB0aGlzIGNhc2UuXG4rXHQgKiBCUEZfUkVHX0FYICh4OSkgY29udGFpbnMgdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlcjsgcGFzcyBpdCBhc1xuK1x0ICogdGhlIGZpcnN0IGFyZ3VtZW50IGluIHgwLlxuIFx0ICovXG4tXHRhZGRcdHgwLCB4OSwgeDI1XG4rXHRtb3ZcdHgwLCB4OVxuIFx0YmxcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuIFx0LyogQlBGX1JFR19BWCh4OSkgd2lsbCBiZSBzdG9yZWQgaW50byBjb3VudCwgc28gbW92ZSByZXR1cm4gdmFsdWUgdG8gaXQuICovXG4gXHRtb3ZcdHg5LCB4MFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5pbmRleCA4NGVjZjZmYTdmNWRjLi5kODg4MjVkZDM0ZmVhIDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuKysrIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuQEAgLTgsNyArOCw3IEBAXG4gICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSB0cmFtcG9saW5lIGZvciBwb3dlcnBjNjRcbiAgKlxuICAqIEN1c3RvbSBCUEYgY29udmVudGlvbiAodmVyaWZpZXIvSklUKTpcbi0gKlx0LSBpbnB1dDogIHN0YWNrIG9mZnNldCBpbiBCUEZfUkVHX0FYIChyMTIpXG4rICpcdC0gaW5wdXQ6ICBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGX1JFR19BWCAocjEyKVxuICAqXHQtIG91dHB1dDogdXBkYXRlZCBjb3VudCBpbiBCUEZfUkVHX0FYIChyMTIpXG4gICpcbiAgKiBDYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggbm9ybWFsIHBvd2VycGM2NCBBQkk6XG5AQCAtMzIsMTAgKzMyLDEwIEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIFx0c3RkICAgICByOCwgNzIocjEpXG4gXG4gXHQvKlxuLVx0ICogcjMgPSBCUEZfUkVHX0ZQICsgQlBGX1JFR19BWFxuLVx0ICogQlBGX1JFR19GUCBpcyByMzE7IEJQRl9SRUdfQVggaXMgcjEyIChzdGFjayBvZmZzZXQgaW4gYnl0ZXMpLlxuK1x0ICogQlBGX1JFR19BWCAocjEyKSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzXG4rXHQgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4gcjMuXG4gXHQgKi9cbi1cdGFkZCAgICAgcjMsIHIzMSwgcjEyXG4rXHRtciAgICAgIHIzLCByMTJcbiBcdGJsICAgICAgQ0ZVTkMoYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKVxuIFxuIFx0LyogUHV0IHJldHVybiB2YWx1ZSBiYWNrIGludG8gQVggKi9cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5pbmRleCAwMmM2MzdkODc0MjA1Li44YzAzZTI3MmUwYmY1IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5AQCAtNiwxMiArNiwxMSBAQFxuIFxuIC8qXG4gICogVHJhbXBvbGluZSBmb3IgdGhlIEJQRiB0aW1lZCBtYXlfZ290byBsb29wIGJvdW5kLiBDdXN0b20gY2FsbGluZyBjb252ZW50aW9uOlxuLSAqXHQtIGlucHV0OiAgc3RhY2sgb2Zmc2V0IGluIEJQRl9SRUdfQVggKHQwKVxuKyAqXHQtIGlucHV0OiAgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyIGluIEJQRl9SRUdfQVggKHQwKVxuICAqXHQtIG91dHB1dDogdXBkYXRlZCBjb3VudCBpbiBCUEZfUkVHX0FYICh0MClcbiAgKlxuLSAqIENhbGxzIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggdGhlIHN0YW5kYXJkIFJJU0MtViBBQkksIHdoZXJlXG4tICogcHRyID0gQlBGX1JFR19GUCAoczUpICsgQlBGX1JFR19BWCAodDApLiBCUEYgUjAtUjUgKGE1LCBhMC1hNCkgYXJlIHNhdmVkXG4tICogYWNyb3NzIHRoZSBjYWxsOyBCUEZfUkVHX0ZQIChzNSkgaXMgY2FsbGVlLXNhdmVkIGFuZCBuZWVkcyBubyBzYXZpbmcuXG4rICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSS5cbisgKiBCUEYgUjAtUjUgKGE1LCBhMC1hNCkgYXJlIHNhdmVkIGFjcm9zcyB0aGUgY2FsbC5cbiAgKi9cbiBcbiBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbkBAIC0yOCw3ICsyNywxMSBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdFJFR19TXHRhMywgMSpTWlJFRyhzcClcbiBcdFJFR19TXHRhNCwgMCpTWlJFRyhzcClcbiBcbi1cdGFkZFx0YTAsIHQwLCBzNVxuK1x0LypcbitcdCAqIEJQRl9SRUdfQVggKHQwKSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzXG4rXHQgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4gYTAuXG4rXHQgKi9cbitcdG12XHRhMCwgdDBcbiBcdGNhbGxcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuIFx0bXZcdHQwLCBhMFxuIFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jXG5pbmRleCBjNDY4NzJiMDcxY2U3Li40MDk4YzMzNzdjMjEzIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xuKysrIGIvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTE4NzIsOSArMTg3Miw5IEBAIHN0YXRpYyBub2lubGluZSBpbnQgYnBmX2ppdF9pbnNuKHN0cnVjdCBicGZfaml0ICpqaXQsIHN0cnVjdCBicGZfcHJvZyAqZnAsXG4gXHRcdGlmICgodm9pZCAqKWZ1bmMgPT0gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pIHtcbiBcdFx0XHQvKlxuIFx0XHRcdCAqIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCkgaGFzIGEgc3BlY2lhbCBBQkk6IHRoZVxuLVx0XHRcdCAqIHBhcmFtZXRlcnMgYXJlIGluIEJQRl9SRUdfQVggYW5kIEJQRl9SRUdfMTA7IHRoZVxuLVx0XHRcdCAqIHJldHVybiB2YWx1ZSBpcyBpbiBCUEZfUkVHX0FYOyBhbmQgYWxsIEdQUnMgZXhjZXB0XG4tXHRcdFx0ICogUkVHX1cwLCBSRUdfVzEsIGFuZCBCUEZfUkVHX0FYIGFyZSBjYWxsZWUtc2F2ZWQuXG4rXHRcdFx0ICogcGFyYW1ldGVyIGFuZCByZXR1cm4gdmFsdWUgYXJlIGluIEJQRl9SRUdfQVg7IGFsbFxuK1x0XHRcdCAqIEdQUnMgZXhjZXB0IFJFR19XMCwgUkVHX1cxLCBhbmQgQlBGX1JFR19BWCBhcmVcbitcdFx0XHQgKiBjYWxsZWUtc2F2ZWQuXG4gXHRcdFx0ICovXG4gXG4gXHRcdFx0LyogYnJhc2wgJXIwLGZ1bmMgKi9cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuaW5kZXggMDZmNTY3YTQ2MGQ3Yi4uZTM0Yzk5OTgyYzRhMiAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbisrKyBiL2FyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC0yMSw5ICsyMSw5IEBAXG4gXG4gU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHQvKlxuLVx0ICogVGhpcyBmdW5jdGlvbiBoYXMgYSBzcGVjaWFsIEFCSTogdGhlIHBhcmFtZXRlcnMgYXJlIGluICVyMTIgYW5kXG4tXHQgKiAlcjEzOyB0aGUgcmV0dXJuIHZhbHVlIGlzIGluICVyMTI7IGFsbCBHUFJzIGV4Y2VwdCAlcjAsICVyMSwgYW5kXG4tXHQgKiAlcjEyIGFyZSBjYWxsZWUtc2F2ZWQ7IGFuZCB0aGUgcmV0dXJuIGFkZHJlc3MgaXMgaW4gJXIwLlxuK1x0ICogVGhpcyBmdW5jdGlvbiBoYXMgYSBzcGVjaWFsIEFCSTogdGhlIHBhcmFtZXRlciBhbmQgcmV0dXJuIHZhbHVlIGFyZVxuK1x0ICogaW4gJXIxMjsgYWxsIEdQUnMgZXhjZXB0ICVyMCwgJXIxLCBhbmQgJXIxMiBhcmUgY2FsbGVlLXNhdmVkOyBhbmRcbitcdCAqIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBpbiAlcjAuXG4gXHQgKi9cbiBcdHN0bWcgJXIyLCVyNSxGUkFNRV9PRkYrUjJfT0ZGKCVyMTUpXG4gXHRzdGcgJXIxNCxGUkFNRV9PRkYrUjE0X09GRiglcjE1KVxuQEAgLTMzLDcgKzMzLDcgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHRsYXkgJXIxNSwtRlJBTUVfU0laRSglcjE1KVxuIFx0c3RnICVyMSxfX1NGX0JBQ0tDSEFJTiglcjE1KVxuIFxuLVx0bGF5ICVyMiwwKCVyMTIsJXIxMylcbitcdGxnciAlcjIsJXIxMlxuIFx0YnJhc2wgJXIxNCxicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbiBcdGxnciAlcjEyLCVyMlxuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuaW5kZXggNTRjNjkwY2FlMTkwOC4uNmU5ZDllN2MyYjFkNiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuKysrIGIvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5AQCAtMTEsMTIgKzExLDYgQEBcbiBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdEFOTk9UQVRFX05PRU5EQlJcbiBcbi1cdC8qXG4tXHQgKiByMTAgcGFzc2VzIHVzIHN0YWNrIGRlcHRoLCBsb2FkIHRoZSBwb2ludGVyIHRvIGNvdW50IGFuZCB0aW1lc3RhbXBcbi1cdCAqIGludG8gcjEwIGJ5IGFkZGluZyBpdCB0byBCUEYgZnJhbWUgcG9pbnRlci5cbi1cdCAqL1xuLVx0bGVhcSAoJXJicCwgJXIxMCwgMSksICVyMTBcbi1cbiBcdC8qIFNldHVwIGZyYW1lLiAqL1xuIFx0cHVzaHEgJXJicFxuIFx0bW92cSAlcnNwLCAlcmJwXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9maXh1cHMuYyBiL2tlcm5lbC9icGYvZml4dXBzLmNcbmluZGV4IDY1YjQ0MWU0YTM1MTcuLmRjNTk1MDFhMzJiYmQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2ZpeHVwcy5jXG4rKysgYi9rZXJuZWwvYnBmL2ZpeHVwcy5jXG5AQCAtMTc5NywyMCArMTc5NywyMCBAQCBpbnQgYnBmX2RvX21pc2NfZml4dXBzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gXHRcdFx0c3RhY2tfZGVwdGhfZXh0cmEgPSAxNjtcbiBcdFx0XHRpbnNuX2J1ZlswXSA9IEJQRl9MRFhfTUVNKEJQRl9EVywgQlBGX1JFR19BWCwgQlBGX1JFR18xMCwgc3RhY2tfb2ZmX2NudCk7XG4gXHRcdFx0aWYgKGluc24tXHUwMDNlb2ZmIFx1MDAzZT0gMClcbi1cdFx0XHRcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cdTAwM2VvZmYgKyA1KTtcbitcdFx0XHRcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cdTAwM2VvZmYgKyA2KTtcbiBcdFx0XHRlbHNlXG4gXHRcdFx0XHRpbnNuX2J1ZlsxXSA9IEJQRl9KTVBfSU1NKEJQRl9KRVEsIEJQRl9SRUdfQVgsIDAsIGluc24tXHUwMDNlb2ZmIC0gMSk7XG4gXHRcdFx0aW5zbl9idWZbMl0gPSBCUEZfQUxVNjRfSU1NKEJQRl9TVUIsIEJQRl9SRUdfQVgsIDEpO1xuLVx0XHRcdGluc25fYnVmWzNdID0gQlBGX0pNUF9JTU0oQlBGX0pORSwgQlBGX1JFR19BWCwgMCwgMik7XG4rXHRcdFx0aW5zbl9idWZbM10gPSBCUEZfSk1QX0lNTShCUEZfSk5FLCBCUEZfUkVHX0FYLCAwLCAzKTtcbiBcdFx0XHQvKlxuLVx0XHRcdCAqIEFYIGlzIHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gcGFzcyBpbiBzdGFja19vZmZfY250XG4tXHRcdFx0ICogKHRvIGFkZCB0byByMTAvZnApLCBhbmQgYWxzbyBhcyB0aGUgcmV0dXJuIHZhbHVlIG9mXG4tXHRcdFx0ICogdGhlIGNhbGwgdG8gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8uXG4rXHRcdFx0ICogQVggaXMgdXNlZCB0byBwYXNzIEZQICsgc3RhY2tfb2ZmX2NudCBhcyB0aGUgYXJndW1lbnQgdG9cbitcdFx0XHQgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpLCBhbmQgYWxzbyBob2xkcyBpdHMgcmV0dXJuIHZhbHVlLlxuIFx0XHRcdCAqL1xuLVx0XHRcdGluc25fYnVmWzRdID0gQlBGX01PVjY0X0lNTShCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcbi1cdFx0XHRpbnNuX2J1Zls1XSA9IEJQRl9FTUlUX0NBTEwoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pO1xuLVx0XHRcdGluc25fYnVmWzZdID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcbi1cdFx0XHRjbnQgPSA3O1xuK1x0XHRcdGluc25fYnVmWzRdID0gQlBGX01PVjY0X1JFRyhCUEZfUkVHX0FYLCBCUEZfUkVHX0ZQKTtcbitcdFx0XHRpbnNuX2J1Zls1XSA9IEJQRl9BTFU2NF9JTU0oQlBGX0FERCwgQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XG4rXHRcdFx0aW5zbl9idWZbNl0gPSBCUEZfRU1JVF9DQUxMKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKTtcbitcdFx0XHRpbnNuX2J1Zls3XSA9IEJQRl9TVFhfTUVNKEJQRl9EVywgQlBGX1JFR18xMCwgQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XG4rXHRcdFx0Y250ID0gODtcbiBcbiBcdFx0XHRuZXdfcHJvZyA9IGJwZl9wYXRjaF9pbnNuX2RhdGEoZW52LCBpICsgZGVsdGEsIGluc25fYnVmLCBjbnQpO1xuIFx0XHRcdGlmICghbmV3X3Byb2cpXG5AQCAtMjY2MSw0ICsyNjYxLDMgQEAgaW50IGJwZl9yZW1vdmVfZmFzdGNhbGxfc3BpbGxzX2ZpbGxzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4gXG4gXHRyZXR1cm4gMDtcbiB9XG4tXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXG5pbmRleCAzMjhjZjYzMDIxMGEyLi5jNTk5NmQ5ZGM4Y2M5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2JwZl9mYXN0Y2FsbC5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbkBAIC02MzUsMTUgKzYzNSwxNiBAQCBfX3hsYXRlZChcIjQ6IHIwID0gXHUwMDI2KHZvaWQgX19wZXJjcHUgKikocjApXCIpXG4gX194bGF0ZWQoXCIuLi5cIilcbiAvKiBtYXlfZ290byBleHBhbnNpb24gc3RhcnRzICovXG4gX194bGF0ZWQoXCI2OiByMTIgPSAqKHU2NCAqKShyMTAgLTI0KVwiKVxuLV9feGxhdGVkKFwiNzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzZcIilcbitfX3hsYXRlZChcIjc6IGlmIHIxMiA9PSAweDAgZ290byBwYys3XCIpXG4gX194bGF0ZWQoXCI4OiByMTIgLT0gMVwiKVxuLV9feGxhdGVkKFwiOTogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzJcIilcbi1fX3hsYXRlZChcIjEwOiByMTIgPSAtMjRcIilcbi1fX3hsYXRlZChcIjExOiBjYWxsIHVua25vd25cIilcbi1fX3hsYXRlZChcIjEyOiAqKHU2NCAqKShyMTAgLTI0KSA9IHIxMlwiKVxuK19feGxhdGVkKFwiOTogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzNcIilcbitfX3hsYXRlZChcIjEwOiByMTIgPSByMTBcIilcbitfX3hsYXRlZChcIjExOiByMTIgKz0gLTI0XCIpXG4rX194bGF0ZWQoXCIxMjogY2FsbCB1bmtub3duXCIpXG4rX194bGF0ZWQoXCIxMzogKih1NjQgKikocjEwIC0yNCkgPSByMTJcIilcbiAvKiBtYXlfZ290byBleHBhbnNpb24gZW5kcyAqL1xuLV9feGxhdGVkKFwiMTM6ICoodTY0ICopKHIxMCAtOCkgPSByMVwiKVxuLV9feGxhdGVkKFwiMTQ6IGV4aXRcIilcbitfX3hsYXRlZChcIjE0OiAqKHU2NCAqKShyMTAgLTgpID0gcjFcIilcbitfX3hsYXRlZChcIjE1OiBleGl0XCIpXG4gX19zdWNjZXNzXG4gX19uYWtlZCB2b2lkIG1heV9nb3RvX2ludGVyYWN0aW9uX3g4Nl82NCh2b2lkKVxuIHtcbkBAIC02NzYsMTUgKzY3NywxNiBAQCBfX3hsYXRlZChcIjI6IHIxID0gMVwiKVxuIF9feGxhdGVkKFwiMzogY2FsbCBicGZfZ2V0X3NtcF9wcm9jZXNzb3JfaWRcIilcbiAvKiBtYXlfZ290byBleHBhbnNpb24gc3RhcnRzICovXG4gX194bGF0ZWQoXCI0OiByMTIgPSAqKHU2NCAqKShyMTAgLTI0KVwiKVxuLV9feGxhdGVkKFwiNTogaWYgcjEyID09IDB4MCBnb3RvIHBjKzZcIilcbitfX3hsYXRlZChcIjU6IGlmIHIxMiA9PSAweDAgZ290byBwYys3XCIpXG4gX194bGF0ZWQoXCI2OiByMTIgLT0gMVwiKVxuLV9feGxhdGVkKFwiNzogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzJcIilcbi1fX3hsYXRlZChcIjg6IHIxMiA9IC0yNFwiKVxuLV9feGxhdGVkKFwiOTogY2FsbCB1bmtub3duXCIpXG4tX194bGF0ZWQoXCIxMDogKih1NjQgKikocjEwIC0yNCkgPSByMTJcIilcbitfX3hsYXRlZChcIjc6IGlmIHIxMiAhPSAweDAgZ290byBwYyszXCIpXG4rX194bGF0ZWQoXCI4OiByMTIgPSByMTBcIilcbitfX3hsYXRlZChcIjk6IHIxMiArPSAtMjRcIilcbitfX3hsYXRlZChcIjEwOiBjYWxsIHVua25vd25cIilcbitfX3hsYXRlZChcIjExOiAqKHU2NCAqKShyMTAgLTI0KSA9IHIxMlwiKVxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBlbmRzICovXG4tX194bGF0ZWQoXCIxMTogKih1NjQgKikocjEwIC04KSA9IHIxXCIpXG4tX194bGF0ZWQoXCIxMjogZXhpdFwiKVxuK19feGxhdGVkKFwiMTI6ICoodTY0ICopKHIxMCAtOCkgPSByMVwiKVxuK19feGxhdGVkKFwiMTM6IGV4aXRcIilcbiBfX3N1Y2Nlc3NcbiBfX25ha2VkIHZvaWQgbWF5X2dvdG9faW50ZXJhY3Rpb24odm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmNcbmluZGV4IGRiN2UzMGRhMjM0ZjEuLjE3MjE4OTcxNjBkYzkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jXG5AQCAtOTAsMTUgKzkwLDE2IEBAIF9fYXJjaF9sb29uZ2FyY2hcbiBfX3hsYXRlZChcIjA6ICoodTY0ICopKHIxMCAtMTYpID0gNjU1MzVcIilcbiBfX3hsYXRlZChcIjE6ICoodTY0ICopKHIxMCAtOCkgPSAwXCIpXG4gX194bGF0ZWQoXCIyOiByMTIgPSAqKHU2NCAqKShyMTAgLTE2KVwiKVxuLV9feGxhdGVkKFwiMzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzZcIilcbitfX3hsYXRlZChcIjM6IGlmIHIxMiA9PSAweDAgZ290byBwYys3XCIpXG4gX194bGF0ZWQoXCI0OiByMTIgLT0gMVwiKVxuLV9feGxhdGVkKFwiNTogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzJcIilcbi1fX3hsYXRlZChcIjY6IHIxMiA9IC0xNlwiKVxuLV9feGxhdGVkKFwiNzogY2FsbCB1bmtub3duXCIpXG4tX194bGF0ZWQoXCI4OiAqKHU2NCAqKShyMTAgLTE2KSA9IHIxMlwiKVxuLV9feGxhdGVkKFwiOTogcjAgPSAxXCIpXG4tX194bGF0ZWQoXCIxMDogcjAgPSAyXCIpXG4tX194bGF0ZWQoXCIxMTogZXhpdFwiKVxuK19feGxhdGVkKFwiNTogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzNcIilcbitfX3hsYXRlZChcIjY6IHIxMiA9IHIxMFwiKVxuK19feGxhdGVkKFwiNzogcjEyICs9IC0xNlwiKVxuK19feGxhdGVkKFwiODogY2FsbCB1bmtub3duXCIpXG4rX194bGF0ZWQoXCI5OiAqKHU2NCAqKShyMTAgLTE2KSA9IHIxMlwiKVxuK19feGxhdGVkKFwiMTA6IHIwID0gMVwiKVxuK19feGxhdGVkKFwiMTE6IHIwID0gMlwiKVxuK19feGxhdGVkKFwiMTI6IGV4aXRcIilcbiBfX3N1Y2Nlc3NcbiBfX25ha2VkIHZvaWQgbWF5X2dvdG9fYmF0Y2hfMih2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suY1xuaW5kZXggM2Q5OTk0YTUyNDY0ZS4uNjM5YjUzMzYzYzlhYyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmNcbkBAIC03MCw2ICs3MCwyNSBAQCBfX25ha2VkIHZvaWQgbm9fcHJpdmF0ZV9zdGFja19uZXN0ZWQodm9pZClcbiBcIlx0Ojo6IF9fY2xvYmJlcl9hbGwpO1xuIH1cbiBcbitTRUMoXCJmZW50cnkvYnBmX2ZlbnRyeV90ZXN0OVwiKVxuK19fZGVzY3JpcHRpb24oXCJQcml2YXRlIHN0YWNrLCB0aW1lZCBtYXlfZ290b1wiKVxuK19fc3VjY2VzcyBfX3JldHZhbCgwKVxuK19fYXJjaF94ODZfNjRcbitfX2ppdGVkKFwiXHRtb3ZhYnNxXHQkMHh7ey4qfX0sICVyOVwiKVxuK19faml0ZWQoXCIuLi5cIilcbitfX2ppdGVkKFwiXHRtb3ZxXHQlcjksICVyMTBcIilcbitfX2FyY2hfYXJtNjRcbitfX2ppdGVkKFwiXHRtb3ZcdHg5LCB4MjVcIilcbitpbnQgcHJpdmF0ZV9zdGFja190aW1lZF9tYXlfZ290byh2b2lkKVxuK3tcbitcdHZvbGF0aWxlIF9fdTY0IHN0YWNrX3NwYWNlWzE2XSA9IHt9O1xuK1xuK1x0d2hpbGUgKGNhbl9sb29wKVxuK1x0XHQ7XG4rXG4rXHRyZXR1cm4gc3RhY2tfc3BhY2VbMF07XG4rfVxuK1xuIF9fdXNlZFxuIF9fbmFrZWQgc3RhdGljIHZvaWQgY3VtdWxhdGl2ZV9zdGFja19kZXB0aF9zdWJwcm9nKHZvaWQpXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTE6MjkuMDQ4NDgyMjk3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjQ4NDUxMTc0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgcmV2aWV3IHJlcXVlc3QuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCBzbyBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIHRoZXJlLCB0aG91Z2ggSSdsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvbiB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgYWNyb3NzIG90aGVyIGFyY2hpdGVjdHVyZXMuXG5cbkZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjaGFuZ2VzLiBUaGUgcGF0Y2ggdG91Y2hlcyBzZXZlcmFsIGZpbGVzOiBhc3NlbWJseSBmaWxlcyBmb3IgdmFyaW91cyBhcmNoaXRlY3R1cmVzIChgYXJtNjRgLCBgcG93ZXJwY2AsIGByaXNjdmAsIGBzMzkwYCwgYW5kIGB4ODZgKSwgcGx1cyBga2VybmVsL2JwZi9maXh1cHMuY2AgYW5kIHNvbWUgc2VsZnRlc3RzLlxuXG5JdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIGJ5dGVjb2RlIGV4cGFuc2lvbiBmb3IgYG1heV9nb3RvYCBvciB0aW1lZCBgbWF5X2dvdG9gLiBQcmV2aW91c2x5LCB0aGUgc3RhY2sgb2Zmc2V0IGNvdW50IHdhcyBwYXNzZWQgaW4gYSByZWdpc3RlciAoQVgpIHRvIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHJhbXBvbGluZSwgd2hpY2ggd291bGQgdGhlbiBjb21wdXRlIHRoZSBmcmFtZSBwb2ludGVyIHBsdXMgdGhlIG9mZnNldC4gTm93LCB0aGUgZml4dXAgaXRzZWxmIGVtaXRzIGluc3RydWN0aW9ucyB0byAqcHJlY29tcHV0ZSogYEFYID0gRlAgKyBzdGFja19vZmZfY250YCBiZWZvcmUgdGhlIHRyYW1wb2xpbmUgY2FsbC4gVGhpcyBpcyBnb2luZyB0byBjbGVhbiB1cCB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGFzc2VtYmx5IGNvZGUuXG5cbkNvbnNlcXVlbnRseSwgdGhlcmUgYXJlIGNoYW5nZXMgaW4gdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0cmFtcG9saW5lcywgc3BlY2lmaWNhbGx5IHRoZSBgYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYCBmaWxlLiBUaGUgb3JpZ2luYWwgYGxlYXEgKCVyYnAsICVyMTAsIDEpLCAlcjEwYCBpbnN0cnVjdGlvbiBpbiB0aGUgeDg2IHRyYW1wb2xpbmUgaXMgZ29uZS4gVGhhdCBtYWtlcyBzZW5zZSBzaW5jZSBSMTAvQVggbm93IGRpcmVjdGx5IGNvbnRhaW5zIHRoZSBwb2ludGVyLlxuXG5UaGUgaW1wb3J0YW50IHRoaW5nIGlzLCB0aGlzICpkb2VzKiB0b3VjaCBleGVjdXRhYmxlIGNvZGUgb24gYW1kNjQ6IGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCBhbmQgYGFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU2AsIHNvIHRoaXMgZGVmaW5pdGVseSBhZmZlY3RzIEJQRiBwcm9ncmFtIHZlcmlmaWNhdGlvbiwgbG9hZGluZywgSklUIGNvbXBpbGF0aW9uLCBhbmQgZXhlY3V0aW9uIG9mIHByb2dyYW1zIHRoYXQgdXNlIGBtYXlfZ290b2Agb3IgdGhlIHRpbWVkIHZhcmlhbnQuIEknbGwgbmVlZCB0byBzY3J1dGluaXplIHRoZXNlIGFyZWFzIGNsb3NlbHksIG1ha2luZyBzdXJlIHRoYXQgaXQncyBzYWZlIGFuZCBwZXJmb3JtcyBjb3JyZWN0bHkuXG5cbk5leHQgc3RlcDogSSdtIGdvaW5nIHRvIHJ1biBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZ2V0IHRoZSByZWxldmFudCBjb250ZXh0IGZyb20gdGhvc2Uga2V5IGZpbGVzLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDEyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTc5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTI6MzMuODkzNjAxODc4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1OTY5NTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFyY2hfYnBmX3RpbWVkX21heV9nb3RvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMC1cXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MTE6U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEyLVxcdEFOTk9UQVRFX05PRU5EQlJcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy00OC1cXHRSRVRcXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6NDk6U1lNX0ZVTkNfRU5EKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MjozMy45NTk1Nzk5NzRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjA2NzY0NTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBmaXh1cHMuY2AqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbi4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBga2VybmVsL2JwZi9maXh1cHMuY2AgZmlsZS4gSSByZW1lbWJlciBzb21ldGhpbmcgcmVsYXRlZCB0byB3aGF0IEknbSB3b3JraW5nIG9uIGJlaW5nIGhhbmRsZWQgYXJvdW5kIGxpbmUgMTc5Ny4gTGV0J3Mgc3RhcnQgdGhlcmUgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBJIGhhdmUgYSBodW5jaCB0aGlzIGlzIHRoZSByZWxldmFudCBzZWN0aW9uLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc3RhcnQgZGlzc2VjdGluZyB0aGF0IGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNzAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MjozNS41NjYzNDY4NDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDExMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwia2VybmVsL2JwZi9maXh1cHMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzg1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNzg1OlxcdFxcdFxcdFxcdCAqIGRlcHRoLTggc3RvcmVzIHRoZSBzdGFydCB0aW1lc3RhbXAgb2YgdGhlIGxvb3AuXFxuMTc4NjpcXHRcXHRcXHRcXHQgKlxcbjE3ODc6XFx0XFx0XFx0XFx0ICogVGhlIHN0YXJ0aW5nIHZhbHVlIG9mIGNvdW50IGlzIEJQRl9NQVhfVElNRURfTE9PUFNcXG4xNzg4OlxcdFxcdFxcdFxcdCAqICgweGZmZmYpLiAgRXZlcnkgaXRlcmF0aW9uIGxvYWRzIGl0IGFuZCBzdWJzIGl0IGJ5IDEsXFxuMTc4OTpcXHRcXHRcXHRcXHQgKiB1bnRpbCB0aGUgdmFsdWUgYmVjb21lcyAwIGluIEFYICh0aHVzLCAxIGluIHN0YWNrKSxcXG4xNzkwOlxcdFxcdFxcdFxcdCAqIGFmdGVyIHdoaWNoIHdlIGNhbGwgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8sIHdoaWNoXFxuMTc5MTpcXHRcXHRcXHRcXHQgKiBlaXRoZXIgc2V0cyBBWCB0byAweGZmZmYgdG8ga2VlcCBsb29waW5nLCBvciB0byAwXFxuMTc5MjpcXHRcXHRcXHRcXHQgKiB1cG9uIHRpbWVvdXQuIEFYIGlzIHRoZW4gc3RvcmVkIGludG8gdGhlIHN0YWNrLiBJblxcbjE3OTM6XFx0XFx0XFx0XFx0ICogdGhlIG5leHQgaXRlcmF0aW9uLCB3ZSBlaXRoZXIgc2VlIDAgYW5kIGJyZWFrIG91dCwgb3JcXG4xNzk0OlxcdFxcdFxcdFxcdCAqIGNvbnRpbnVlIGl0ZXJhdGluZyB1bnRpbCB0aGUgbmV4dCB0aW1lIHZhbHVlIGlzIDBcXG4xNzk1OlxcdFxcdFxcdFxcdCAqIGFmdGVyIHN1YnRyYWN0aW9uLCByaW5zZSBhbmQgcmVwZWF0LlxcbjE3OTY6XFx0XFx0XFx0XFx0ICovXFxuMTc5NzpcXHRcXHRcXHRcXHRzdGFja19kZXB0aF9leHRyYSA9IDE2O1xcbjE3OTg6XFx0XFx0XFx0XFx0aW5zbl9idWZbMF0gPSBCUEZfTERYX01FTShCUEZfRFcsIEJQRl9SRUdfQVgsIEJQRl9SRUdfMTAsIHN0YWNrX29mZl9jbnQpO1xcbjE3OTk6XFx0XFx0XFx0XFx0aWYgKGluc24tXFx1MDAzZW9mZiBcXHUwMDNlPSAwKVxcbjE4MDA6XFx0XFx0XFx0XFx0XFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVxcdTAwM2VvZmYgKyA2KTtcXG4xODAxOlxcdFxcdFxcdFxcdGVsc2VcXG4xODAyOlxcdFxcdFxcdFxcdFxcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cXHUwMDNlb2ZmIC0gMSk7XFxuMTgwMzpcXHRcXHRcXHRcXHRpbnNuX2J1ZlsyXSA9IEJQRl9BTFU2NF9JTU0oQlBGX1NVQiwgQlBGX1JFR19BWCwgMSk7XFxuMTgwNDpcXHRcXHRcXHRcXHRpbnNuX2J1ZlszXSA9IEJQRl9KTVBfSU1NKEJQRl9KTkUsIEJQRl9SRUdfQVgsIDAsIDMpO1xcbjE4MDU6XFx0XFx0XFx0XFx0LypcXG4xODA2OlxcdFxcdFxcdFxcdCAqIEFYIGlzIHVzZWQgdG8gcGFzcyBGUCArIHN0YWNrX29mZl9jbnQgYXMgdGhlIGFyZ3VtZW50IHRvXFxuMTgwNzpcXHRcXHRcXHRcXHQgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpLCBhbmQgYWxzbyBob2xkcyBpdHMgcmV0dXJuIHZhbHVlLlxcbjE4MDg6XFx0XFx0XFx0XFx0ICovXFxuMTgwOTpcXHRcXHRcXHRcXHRpbnNuX2J1Zls0XSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR19BWCwgQlBGX1JFR19GUCk7XFxuMTgxMDpcXHRcXHRcXHRcXHRpbnNuX2J1Zls1XSA9IEJQRl9BTFU2NF9JTU0oQlBGX0FERCwgQlBGX1JFR19BWCwgc3RhY2tfb2ZmX2NudCk7XFxuMTgxMTpcXHRcXHRcXHRcXHRpbnNuX2J1Zls2XSA9IEJQRl9FTUlUX0NBTEwoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pO1xcbjE4MTI6XFx0XFx0XFx0XFx0aW5zbl9idWZbN10gPSBCUEZfU1RYX01FTShCUEZfRFcsIEJQRl9SRUdfMTAsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpO1xcbjE4MTM6XFx0XFx0XFx0XFx0Y250ID0gODtcXG4xODE0OlxcdFxcbjE4MTU6XFx0XFx0XFx0XFx0bmV3X3Byb2cgPSBicGZfcGF0Y2hfaW5zbl9kYXRhKGVudiwgaSArIGRlbHRhLCBpbnNuX2J1ZiwgY250KTtcXG4xODE2OlxcdFxcdFxcdFxcdGlmICghbmV3X3Byb2cpXFxuMTgxNzpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4xODE4OlxcdFxcbjE4MTk6XFx0XFx0XFx0XFx0ZGVsdGEgKz0gY250IC0gMTtcXG4xODIwOlxcdFxcdFxcdFxcdGVudi1cXHUwMDNlcHJvZyA9IHByb2cgPSBuZXdfcHJvZztcXG4xODIxOlxcdFxcdFxcdFxcdGluc24gPSBuZXdfcHJvZy1cXHUwMDNlaW5zbnNpICsgaSArIGRlbHRhO1xcbjE4MjI6XFx0XFx0XFx0XFx0Z290byBuZXh0X2luc247XFxuMTgyMzpcXHRcXHRcXHR9IGVsc2UgaWYgKGJwZl9pc19tYXlfZ290b19pbnNuKGluc24pKSB7XFxuMTgyNDpcXHRcXHRcXHRcXHRpbnQgc3RhY2tfb2ZmID0gLXN0YWNrX2RlcHRoIC0gODtcXG4xODI1OlxcdFxcbjE4MjY6XFx0XFx0XFx0XFx0c3RhY2tfZGVwdGhfZXh0cmEgPSA4O1xcbjE4Mjc6XFx0XFx0XFx0XFx0aW5zbl9idWZbMF0gPSBCUEZfTERYX01FTShCUEZfRFcsIEJQRl9SRUdfQVgsIEJQRl9SRUdfMTAsIHN0YWNrX29mZik7XFxuMTgyODpcXHRcXHRcXHRcXHRpZiAoaW5zbi1cXHUwMDNlb2ZmIFxcdTAwM2U9IDApXFxuMTgyOTpcXHRcXHRcXHRcXHRcXHRpbnNuX2J1ZlsxXSA9IEJQRl9KTVBfSU1NKEJQRl9KRVEsIEJQRl9SRUdfQVgsIDAsIGluc24tXFx1MDAzZW9mZiArIDIpO1xcbjE4MzA6XFx0XFx0XFx0XFx0ZWxzZVxcbjE4MzE6XFx0XFx0XFx0XFx0XFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVxcdTAwM2VvZmYgLSAxKTtcXG4xODMyOlxcdFxcdFxcdFxcdGluc25fYnVmWzJdID0gQlBGX0FMVTY0X0lNTShCUEZfU1VCLCBCUEZfUkVHX0FYLCAxKTtcXG4xODMzOlxcdFxcdFxcdFxcdGluc25fYnVmWzNdID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmYpO1xcbjE4MzQ6XFx0XFx0XFx0XFx0Y250ID0gNDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTI6MzUuNTY2NDkxNzE4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjY1NDcxNTQzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBJbXBsZW1lbnRhdGlvbiBEZXRhaWxzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gQlBGIGFuZCBwb3RlbnRpYWwgdGltZS1yZWxhdGVkIFwiZ290b1wiIGJlaGF2aW9yIG9uIHg4NiBhcmNoaXRlY3R1cmVzIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdGFjay4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGFzc2VtYmx5LiBJdCdzIG9mdGVuIHRoZSBxdWlja2VzdCB3YXkgdG8gdW5kZXJzdGFuZCB0aGUgbG93LWxldmVsIGRldGFpbHMgb2YgaG93IGEgcGFydGljdWxhciBmdW5jdGlvbiBpcyAqYWN0dWFsbHkqIGltcGxlbWVudGVkLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHBlcmZvcm1hbmNlLWNyaXRpY2FsIGNvZGUgbGlrZSBCUEYgZmlsdGVycy4gV2UncmUgdGFsa2luZyBhYm91dCBgYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYCBzcGVjaWZpY2FsbHkuIFJlYWRpbmcgdGhlIGFzc2VtYmx5IGlzIGdvaW5nIHRvIGdpdmUgbWUgdGhlIGRlZmluaXRpdmUgdmlldyBvZiB3aGF0J3MgaGFwcGVuaW5nLCBieXBhc3NpbmcgYW55IGNvbXBpbGVyIG9wdGltaXphdGlvbnMgdGhhdCBtaWdodCBvYnNjdXJlIHRoZSBsb2dpYyBpbiBDIGNvZGUuIFRpbWUgdG8gZGlnIGluIGFuZCBnZXQgYSBwcmVjaXNlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjY4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MjozOC4yMjEyMDkyNTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0LyogQ29weXJpZ2h0IChjKSAyMDI1IE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLiAqL1xcbiAgIDM6XFx0XFxuICAgNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZXhwb3J0LmhcXHUwMDNlXFxuICAgNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbGlua2FnZS5oXFx1MDAzZVxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2FzbS9ub3NwZWMtYnJhbmNoLmhcXHUwMDNlXFxuICAgNzpcXHRcXG4gICA4OlxcdFxcdC5jb2RlNjRcXG4gICA5OlxcdFxcdC5zZWN0aW9uIC50ZXh0LCBcXFwiYXhcXFwiXFxuICAxMDpcXHRcXG4gIDExOlxcdFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbiAgMTI6XFx0XFx0QU5OT1RBVEVfTk9FTkRCUlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHQvKiBTZXR1cCBmcmFtZS4gKi9cXG4gIDE1OlxcdFxcdHB1c2hxICVyYnBcXG4gIDE2OlxcdFxcdG1vdnEgJXJzcCwgJXJicFxcbiAgMTc6XFx0XFxuICAxODpcXHRcXHQvKiBTYXZlIHIwLXI1LiAqL1xcbiAgMTk6XFx0XFx0cHVzaHEgJXJheFxcbiAgMjA6XFx0XFx0cHVzaHEgJXJkaVxcbiAgMjE6XFx0XFx0cHVzaHEgJXJzaVxcbiAgMjI6XFx0XFx0cHVzaHEgJXJkeFxcbiAgMjM6XFx0XFx0cHVzaHEgJXJjeFxcbiAgMjQ6XFx0XFx0cHVzaHEgJXI4XFxuICAyNTpcXHRcXG4gIDI2OlxcdFxcdC8qXFxuICAyNzpcXHRcXHQgKiByMTAgaGFzIHRoZSBwb2ludGVyIHRvIGNvdW50IGFuZCB0aW1lc3RhbXAsIHBhc3MgaXQgYXMgZmlyc3RcXG4gIDI4OlxcdFxcdCAqIGFyZ3VtZW50LlxcbiAgMjk6XFx0XFx0ICovXFxuICAzMDpcXHRcXHRtb3ZxICVyMTAsICVyZGlcXG4gIDMxOlxcdFxcbiAgMzI6XFx0XFx0LyogRW1pdCBjYWxsIGRlcHRoIGFjY291bnRpbmcgZm9yIGNhbGwgYmVsb3cuICovXFxuICAzMzpcXHRcXHRDQUxMX0RFUFRIX0FDQ09VTlRcXG4gIDM0OlxcdFxcdGNhbGwgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuICAzNTpcXHRcXG4gIDM2OlxcdFxcdC8qIEJQRl9SRUdfQVg9cjEwIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgcmV0dXJuIHZhbHVlIHRvIGl0LiAqL1xcbiAgMzc6XFx0XFx0bW92cSAlcmF4LCAlcjEwXFxuICAzODpcXHRcXG4gIDM5OlxcdFxcdC8qIFJlc3RvcmUgcjUtcjAuICovXFxuICA0MDpcXHRcXHRwb3BxICVyOFxcbiAgNDE6XFx0XFx0cG9wcSAlcmN4XFxuICA0MjpcXHRcXHRwb3BxICVyZHhcXG4gIDQzOlxcdFxcdHBvcHEgJXJzaVxcbiAgNDQ6XFx0XFx0cG9wcSAlcmRpXFxuICA0NTpcXHRcXHRwb3BxICVyYXhcXG4gIDQ2OlxcdFxcbiAgNDc6XFx0XFx0bGVhdmVcXG4gIDQ4OlxcdFxcdFJFVFxcbiAgNDk6XFx0U1lNX0ZVTkNfRU5EKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MjozOC4yMjEyODYwNjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjEyMzEyMDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgQlBGIFRpbWVkIEdvdG8gUmVzdHJpY3Rpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSB0aW1lZCBgZ290b2AgZnVuY3Rpb25hbGl0eSBpbiBCUEYgaXMgYmVpbmcgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IGhvdyBpdHMgYXZhaWxhYmlsaXR5IGlzIGRldGVybWluZWQgYWNyb3NzIGFyY2hpdGVjdHVyZXMuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGxvY2F0aW9ucyB3aGVyZSBgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvYCBhbmQgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBhcmUgZGVmaW5lZCBhbmQgY29uZmlndXJlZC4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGtlcm5lbCBtYWtlcyB0aG9zZSBkZWNpc2lvbnMuXG5cblRvIGtpY2sgdGhpbmdzIG9mZiwgbGV0J3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGFuZCBkaXJ0eSBzZWFyY2guIEEgYGdyZXBgIG9uIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2Agc2hvdWxkIHF1aWNrbHkgcmV2ZWFsIHRoZSByZWxldmFudCBmaWxlcyBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhhdCBmdW5jdGlvbi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgYmFzZSB0byBnbyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1MTcsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUyOjQwLjQzMzYwMjEzN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1NzUwNjIzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhcmNoX2JwZl90aW1lZF9tYXlfZ290b1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0xMzAyPXN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0xNzI0LVxcdFxcdC8qXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MTcyNTpcXHRcXHQgKiBDYWxsIHRvIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCkgaXMgZW1pdHRlZCBieSB0aGVcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0xNzI2LVxcdFxcdCAqIHZlcmlmaWVyIGFuZCBjYWxsZWQgd2l0aCBjdXN0b20gY2FsbGluZyBjb252ZW50aW9uIHdpdGhcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTE3MjgtXFx0XFx0ICovXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MTcyOTpcXHRcXHRpZiAoZnVuY19hZGRyICE9ICh1NjQpYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMTczMC1cXHRcXHRcXHRlbWl0KEE2NF9NT1YoMSwgcjAsIEE2NF9SKDApKSwgY3R4KTtcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTUtXFxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6NjpTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy03LVxcdC8qIEFsbG9jYXRlIHN0YWNrIHNwYWNlIGFuZCBlbWl0IGZyYW1lIHJlY29yZCAqL1xcbi0tXFxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzMtXFx0cmV0XFxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MzQ6U1lNX0ZVTkNfRU5EKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXA2NC5jPTk2Nz1pbnQgYnBmX2ppdF9idWlsZF9ib2R5KHN0cnVjdCBicGZfcHJvZyAqZnAsIHUzMiAqaW1hZ2UsIHUzMiAqZmltYWdlLCBzdHJ1Y3QgY29kZWdlbl9jb250ZXh0ICpjdHgsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTc2OS1cXHRcXHRcXHQvKlxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYzoxNzcwOlxcdFxcdFxcdCAqIENhbGwgdG8gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSBpcyBlbWl0dGVkIGJ5IHRoZVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYy0xNzcxLVxcdFxcdFxcdCAqIHZlcmlmaWVyIGFuZCBjYWxsZWQgd2l0aCBjdXN0b20gY2FsbGluZyBjb252ZW50aW9uIHdpdGhcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYy0xNzgyLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYzoxNzgzOlxcdFxcdFxcdGlmIChmdW5jX2FkZHIgPT0gKHU2NClhcmNoX2JwZl90aW1lZF9tYXlfZ290bykge1xcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wNjQuYy0xNzg0LVxcdFxcdFxcdFxcdHJldCA9IDA7XFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTctLypcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjg6ICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSB0cmFtcG9saW5lIGZvciBwb3dlcnBjNjRcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTktICpcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTktXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoyMDpTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTIxLVxcdC8qIFByb2xvZ3VlOiBzYXZlIExSLCBhbGxvY2F0ZSBmcmFtZSAqL1xcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy01Ni1cXHRibHJcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjU3OlNZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9MTM2Mz1pbnQgYnBmX2ppdF9lbWl0X2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3QgcnZfaml0X2NvbnRleHQgKmN0eCxcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTg0Ny1cXHRcXHQvKlxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MTg0ODpcXHRcXHQgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIGlzIGVtaXR0ZWQgYnkgdGhlIHZlcmlmaWVyIGFuZFxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTg0OS1cXHRcXHQgKiByZXR1cm5zIGl0cyByZXN1bHQgaW4gQlBGX1JFR19BWCBpbnN0ZWFkIG9mIEJQRl9SRUdfMCwgc29cXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMTg1MS1cXHRcXHQgKi9cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jOjE4NTI6XFx0XFx0aWYgKGluc24tXFx1MDAzZXNyY19yZWcgIT0gQlBGX1BTRVVET19DQUxMIFxcdTAwMjZcXHUwMDI2IGFkZHIgIT0gKHU2NClhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTE4NTMtXFx0XFx0XFx0ZW1pdF9tdihicGZfdG9fcnZfcmVnKEJQRl9SRUdfMCwgY3R4KSwgUlZfUkVHX0EwLCBjdHgpO1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTUtXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MTY6U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTctXFx0YWRkaVxcdHNwLCBzcCwgLSg4KlNaUkVHKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDktXFx0cmV0XFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6NTA6U1lNX0ZVTkNfRU5EKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYz05NTU9c3RhdGljIG5vaW5saW5lIGludCBicGZfaml0X2luc24oc3RydWN0IGJwZl9qaXQgKmppdCwgc3RydWN0IGJwZl9wcm9nICpmcCxcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMTg3MS1cXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jOjE4NzI6XFx0XFx0aWYgKCh2b2lkICopZnVuYyA9PSBhcmNoX2JwZl90aW1lZF9tYXlfZ290bykge1xcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMTg3My1cXHRcXHRcXHQvKlxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6MTg3NDpcXHRcXHRcXHQgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIGhhcyBhIHNwZWNpYWwgQUJJOiB0aGVcXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTE4NzUtXFx0XFx0XFx0ICogcGFyYW1ldGVyIGFuZCByZXR1cm4gdmFsdWUgYXJlIGluIEJQRl9SRUdfQVg7IGFsbFxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0yMS1cXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjIyOlNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMjMtXFx0LypcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDQtXFx0QlJfRVggJXIxXFxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzo0NTpTWU1fRlVOQ19FTkQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTAtXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjExOlNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMi1cXHRBTk5PVEFURV9OT0VOREJSXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDgtXFx0UkVUXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjQ5OlNZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTI1Mj12b2lkIGFyY2hfYnBmX3N0YWNrX3dhbGsoYm9vbCAoKmNvbnN1bWVfZm4pKHZvaWQgKmNvb2tpZSwgdTY0IGlwLCB1NjQgc3AsIHU2NCBicCksIHZvaWQgKmNvb2tpZSk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMjUzOnU2NCBhcmNoX2JwZl90aW1lZF9tYXlfZ290byh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTEyNTQtdTY0IGJwZl9jaGVja190aW1lZF9tYXlfZ290byhzdHJ1Y3QgYnBmX3RpbWVkX21heV9nb3RvICopO1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MzM4ND1ib29sIF9fd2VhayBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvKHZvaWQpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0zMzg4LVxcbmtlcm5lbC9icGYvY29yZS5jOjMzODk6dTY0IF9fd2VhayBhcmNoX2JwZl90aW1lZF9tYXlfZ290byh2b2lkKVxcbmtlcm5lbC9icGYvY29yZS5jLTMzOTAte1xcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYz0xNTA4PWludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvZml4dXBzLmMtMTc4OS1cXHRcXHRcXHQgKiB1bnRpbCB0aGUgdmFsdWUgYmVjb21lcyAwIGluIEFYICh0aHVzLCAxIGluIHN0YWNrKSxcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjE3OTA6XFx0XFx0XFx0ICogYWZ0ZXIgd2hpY2ggd2UgY2FsbCBhcmNoX2JwZl90aW1lZF9tYXlfZ290bywgd2hpY2hcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE3OTEtXFx0XFx0XFx0ICogZWl0aGVyIHNldHMgQVggdG8gMHhmZmZmIHRvIGtlZXAgbG9vcGluZywgb3IgdG8gMFxcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0xODA2LVxcdFxcdFxcdCAqIEFYIGlzIHVzZWQgdG8gcGFzcyBGUCArIHN0YWNrX29mZl9jbnQgYXMgdGhlIGFyZ3VtZW50IHRvXFxua2VybmVsL2JwZi9maXh1cHMuYzoxODA3OlxcdFxcdFxcdCAqIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCksIGFuZCBhbHNvIGhvbGRzIGl0cyByZXR1cm4gdmFsdWUuXFxua2VybmVsL2JwZi9maXh1cHMuYy0xODA4LVxcdFxcdFxcdCAqL1xcbi0tXFxua2VybmVsL2JwZi9maXh1cHMuYy0xODEwLVxcdFxcdFxcdGluc25fYnVmWzVdID0gQlBGX0FMVTY0X0lNTShCUEZfQURELCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jOjE4MTE6XFx0XFx0XFx0aW5zbl9idWZbNl0gPSBCUEZfRU1JVF9DQUxMKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKTtcXG5rZXJuZWwvYnBmL2ZpeHVwcy5jLTE4MTItXFx0XFx0XFx0aW5zbl9idWZbN10gPSBCUEZfU1RYX01FTShCUEZfRFcsIEJQRl9SRUdfMTAsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1Mjo0Mi4xOTExMTcwNjFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE1ODEwNzc1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2U6XG5cbioqSW52ZXN0aWdhdGluZyB4ODYgSklUIENvbXBpbGF0aW9uIGZvciBCUEYgQ2FsbHMqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBndXRzIG9mIGhvdyB0aGlzIGlzIGhhbmRsZWQgb24geDg2LiBJJ20gdGhpbmtpbmcgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgYGFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY2AuIEl0J3MgYWxtb3N0IGFsd2F5cyB0aGUgZ28tdG8gZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSB4ODYgYXJjaGl0ZWN0dXJlIGhhbmRsZXMgdGhlIEpJVCBjb21waWxhdGlvbiBvZiBCUEYgaW5zdHJ1Y3Rpb25zIGFuZCBlc3BlY2lhbGx5IGZ1bmN0aW9uIGNhbGxzLiBJJ20ga2VlbiB0byBzZWUgaG93IHRoZXkndmUgb3B0aW1pemVkIHRoZSBjYWxsaW5nIGNvbnZlbnRpb25zLCBhcmd1bWVudCBwYXNzaW5nLCBhbmQgYW55IHBvdGVudGlhbCBpbmxpbmluZyB0cmlja3MgdGhleSdyZSB1c2luZyB0byBnZXQgdGhlIGJlc3QgcGVyZm9ybWFuY2Ugb3V0IG9mIHRoZSBnZW5lcmF0ZWQgY29kZS4gS25vd2luZyBob3cgdGhleSd2ZSB0YWNrbGVkIHRoaXMgb24geDg2IHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIGV2YWx1YXRpbmcgYW5kIGNvbXBhcmluZyBkaWZmZXJlbnQgYXBwcm9hY2hlcy4gTGV0J3Mgc2VlIHdoYXQgZ2VtcyBhcmUgd2FpdGluZyB0byBiZSB1bmNvdmVyZWQgaW4gdGhhdCBmaWxlIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDM3OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUyOjQ0LjM0OTIyODA5OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMwMzI5NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXJjaF9icGZfdGltZWRfbWF5X2dvdG9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEwLVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxMTpTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTItXFx0QU5OT1RBVEVfTk9FTkRCUlxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTQ4LVxcdFJFVFxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzo0OTpTWU1fRlVOQ19FTkQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUyOjQ0LjQxMjI2OTE0NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDcxNjU3OTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBDaGFuZ2UgZm9yIFByaXZhdGUgU3RhY2tzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgY2hhbmdlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIG1vZGlmaWNhdGlvbi4gUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jYC4gVGhlIHNwZWNpZmljIHNlY3Rpb24gb2YgaW50ZXJlc3QgaXMgYFNFQyhcImZlbnRyeS9icGZfZmVudHJ5X3Rlc3Q5XCIpYCwgd2hpY2ggaXMgZGVzY3JpYmVkIGFzIHJlbGF0aW5nIHRvIHRoZSBcIlByaXZhdGUgc3RhY2ssIHRpbWVkIG1heV9nb3RvXCIgZnVuY3Rpb25hbGl0eS5cblxuUHJldmlvdXNseSwgdGhlIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgZnVuY3Rpb24gaGFkIGFuIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB3YXkgb2YgZGV0ZXJtaW5pbmcgYW4gZWZmZWN0aXZlIHN0YWNrIHBvaW50ZXIuIE9uIHg4NiwgaXQgd2FzIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBsZWFxICglcmJwLCAlcjEwLCAxKSwgJXIxMGAsIGFuZCBvbiBhcm02NCwgYW4gYGFkZCB4MCwgeDksIHgyNWAuIFRoaXMgd2FzIHJlbHlpbmcgb24gdGhlIGhhcmR3YXJlIGZyYW1lIHBvaW50ZXIgcmVnaXN0ZXIgKHJicCBvbiB4ODYsIHgyNSBvbiBhcm02NCkgdG8gY2FsY3VsYXRlIHRoZSBvZmZzZXQuXG5cbk5vdywgd2l0aCB0aGUgcHJpdmF0ZSBzdGFjayBmZWF0dXJlIGVuYWJsZWQsIHRoaW5ncyBnZXQgbW9yZSBpbnRlcmVzdGluZy4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHdoZW4gdGhlIEJQRiBwcml2YXRlIHN0YWNrIGlzIGFjdGl2ZSwgQlBGX1JFR19GUCAoUjEwKSBpc24ndCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyB0aGUgaGFyZHdhcmUgc3RhY2sgZnJhbWUgcG9pbnRlciAoJXJicCkuIEVzc2VudGlhbGx5LCBSMTAgaXMgbWFuYWdlZCB3aXRoaW4gdGhlIHByaXZhdGUgc3RhY2sgYnVmZmVyLCBzbyB3ZSBjYW4ndCBhc3N1bWUgYSBkaXJlY3QgY29ycmVzcG9uZGVuY2UgdG8gYCVyYnBgLiBUaGUga2V5IGhlcmUgaXMgdG8gc2VlIGhvdyB0aGUgYnBmIGNvZGUgY29tcHV0ZXMgdGhlIGZyYW1lIHBvaW50ZXIsIGFsbG93aW5nIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgdG8gc2ltcGx5IHVzZSB0aGUgcHJlY29tcHV0ZWQgdmFsdWUuIEkgbmVlZCB0byByZS1leGFtaW5lIHRoZSBgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvYCBhbmQgdGhlIHZlcmlmaWVyIGNvZGUgc3Vycm91bmRpbmcgdGhlIGB0aW1lZF9tYXlfZ290b2AgZnVuY3Rpb24gdG8gZ2V0IGEgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDgwMCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1Mjo0Ny44ODM5Mjk1ODVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NTY1MzA2OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTY9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuLS1cXG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0yMC1cXHRtb3ZcXHR4MCwgeDlcXG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoyMTpcXHRibFxcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xcbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTIyLVxcdC8qIEJQRl9SRUdfQVgoeDkpIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgcmV0dXJuIHZhbHVlIHRvIGl0LiAqL1xcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMy0gKlxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MTQ6ICogQ2FsbCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIG5vcm1hbCBwb3dlcnBjNjQgQUJJOlxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTUtICogXFx0LSByMyA9IHB0ciwgcmV0dXJuIGluIHIzXFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTIwPVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zOC1cXHRtciAgICAgIHIzLCByMTJcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM5OlxcdGJsICAgICAgQ0ZVTkMoYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDAtXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMS0gKlxcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjEyOiAqIENhbGxzIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggdGhlIHN0YW5kYXJkIFJJU0MtViBBQkkuXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTMtICogQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZCBhY3Jvc3MgdGhlIGNhbGwuXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0xNj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM0LVxcdG12XFx0YTAsIHQwXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MzU6XFx0Y2FsbFxcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM2LVxcdG12XFx0dDAsIGEwXFxuLS1cXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTIyPVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zNi1cXHRsZ3IgJXIyLCVyMTJcXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM3OlxcdGJyYXNsICVyMTQsYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zOC1cXHRsZ3IgJXIxMiwlcjJcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0xMT1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zMy1cXHRDQUxMX0RFUFRIX0FDQ09VTlRcXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MzQ6XFx0Y2FsbCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzUtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEyNTM9dTY0IGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKHZvaWQpO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTI1NDp1NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKik7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMjU1LWJvb2wgYnBmX2hlbHBlcl9jaGFuZ2VzX3BrdF9kYXRhKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCk7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0zMzk0PXN0YXRpYyBub2lubGluZSB2b2lkIGJwZl9wcm9nX3JlcG9ydF9tYXlfZ290b192aW9sYXRpb24odm9pZClcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTM0MDktXFxua2VybmVsL2JwZi9jb3JlLmM6MzQxMDp1NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKnApXFxua2VybmVsL2JwZi9jb3JlLmMtMzQxMS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUyOjQ5Ljc0MDQ2NTkyM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjM5MjQ3NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBCUEYgSW1wbGVtZW50YXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBudXRzIGFuZCBib2x0cyBvZiB0aGUgQlBGIGltcGxlbWVudGF0aW9uLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IGl0J3MgYnVpbHQgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoaXMgcGFydGljdWxhciBlbnZpcm9ubWVudC4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBwYXRoIGZyb20gdGhlIGJhc2UgY29uZmlndXJhdGlvbiBkb3duIHRvIHRoZSBhY3R1YWwgY29kZS4gTXkgZmlyc3Qgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXM7IEknbSBiZXR0aW5nIHRoYXQncyB3aGVyZSB0aGUgcmVsZXZhbnQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkLCBlc3BlY2lhbGx5IGFueXRoaW5nIHJlbGF0ZWQgdG8gQlBGIGl0c2VsZiBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGFkYXB0YXRpb25zIGxpa2UgdGhlIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgIGZpbGUuIFRoZW4sIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgaG93IHRoZXNlIGNvbXBvbmVudHMgYXJlIGxpbmtlZCB0b2dldGhlciwgSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIE1ha2VmaWxlIGxvY2F0ZWQgd2l0aGluIGBhcmNoL3g4Ni9uZXQvYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IGV2ZXJ5dGhpbmcgZml0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2NTEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1Mjo1Mi4zNzk3MTU4OTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0OTAwODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90aW1lZF9tYXlfZ290b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9uZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYvbmV0L01ha2VmaWxlPTg9ZWxzZVxcbmFyY2gveDg2L25ldC9NYWtlZmlsZTo5OiAgICAgICAgb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXRfY29tcC5vIGJwZl90aW1lZF9tYXlfZ290by5vXFxuYXJjaC94ODYvbmV0L01ha2VmaWxlLTEwLWVuZGlmXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTAtXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjExOlNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMi1cXHRBTk5PVEFURV9OT0VOREJSXFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDgtXFx0UkVUXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjQ5OlNZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTI6NTIuNDI0NjIwOTg2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NDU1MjkxMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHJlbGF0ZXMgdG8gdGhlIGtlcm5lbCBhbmQgZUJQRjpcblxuKipJbnZlc3RpZ2F0aW5nIGBmaXh1cHMuY2AgaW4gdGhlIGVCUEYgQ29udGV4dCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgZml4dXBzLmNgIHNvdXJjZSBmaWxlIGlzIGJ1aWx0IHdpdGhpbiB0aGUgZUJQRiBzdWJzeXN0ZW0uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGBNYWtlZmlsZWAgaW4gdGhlIHJlbGV2YW50IGBrZXJuZWwvYnBmL2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgYnVpbGQgcnVsZXMgYW5kIGRlcGVuZGVuY2llcy4gVGhlIGBNYWtlZmlsZWAgd2lsbCBiZSB0aGUgZGVmaW5pdGl2ZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGhvdyB0aGlzIHNwZWNpZmljIGZpbGUgaXMgY29tcGlsZWQgYW5kIGxpbmtlZC4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgbGlua2VkIHNvbWV3aGVyZSBpbiB0aGUgYGtlcm5lbC9icGYvYCBkaXJlY3RvcnksIGhvd2V2ZXIsIGl0J3MgYWxzbyBwb3NzaWJsZSB0aGF0IHRoaXMgZmlsZSBpcyBpbmNsdWRlZCB2aWEgYW4gaW5jbHVkZSBzdGF0ZW1lbnQgaW4gYW5vdGhlciBmaWxlIGFuZCB0aGF0IHRoZSBgTWFrZWZpbGVgIHRoYXQgYnVpbGRzIGBmaXh1cHMuY2AgbWF5IGJlIGluIGFub3RoZXIgZm9sZGVyLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGZvbGRlciBhbmQgbG9vayBmb3IgYW4gaW5jbHVkZSBzdGF0ZW1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MTg1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTI6NTQuMDcwMTUyOTI3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODk3MTE5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaXh1cHMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfbG9jYWxfc3RvcmFnZS5vIGJwZl90YXNrX3N0b3JhZ2Uub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBmaXh1cHMubyBjZmcubyBzdGF0ZXMubyBiYWNrdHJhY2subyBjaGVja19idGYub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTUtb2JqLSR7Q09ORklHX0JQRl9MU019XFx0ICArPSBicGZfaW5vZGVfc3RvcmFnZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUyOjU0LjExOTEzMTg3NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4OTk4NjE1MDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIEJQRiBgbWF5X2dvdG9gIGFuZCBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgV29ydGhGdXp6aW5nYCBpcyBpbmRlZWQgdHJ1ZS4gV2UncmUgbG9va2luZyBhdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgQlBGIHZlcmlmaWVyIGZpeHVwcyBhbmQgdGhlIHg4NiBCUEYgSklUIHRyYW1wb2xpbmUuIFNwZWNpZmljYWxseSwgYGJwZl9kb19taXNjX2ZpeHVwc2AgaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgIGFuZCBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIGluIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgIGFyZSBvZiBpbnRlcmVzdC4gIFRoZSBmYWN0IHRoYXQgcHJvZ3JhbXMgdXNpbmcgYG1heV9nb3RvYCBvciB0aW1lZCBgbWF5X2dvdG9gIGNhbiBiZSBsb2FkZWQgdmlhIGBzeXNfYnBmKEJQRl9QUk9HX0xPQUQpYCBieSBwb3RlbnRpYWxseSB1bnByaXZpbGVnZWQgdXNlcnNwYWNlLCBldmVuIHRocm91Z2ggdG9vbHMgbGlrZSBzeXprYWxsZXIsIGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgYSBjYW5kaWRhdGUuXG5cblRoZSBjcml0aWNhbCBwYXRoIGlzIGNsZWFyOiBgYnBmX2RvX21pc2NfZml4dXBzYCByZXdyaXRlcyBpbnN0cnVjdGlvbnMgZm9yIGBtYXlfZ290b2AsIGFuZCB3aGVuIHRoZSBKSVRlZCBwcm9ncmFtIHJ1bnMgb24geDg2LCBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIGlzIGNhbGxlZC4gVGhpcyBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggKm1vZGlmaWFibGUqIGV4ZWN1dGFibGUga2VybmVsIGNvZGUsIHdoaWNoLCBhcyB3ZSBrbm93LCBpcyBhbiBleGNlbGxlbnQgcGxhY2UgdG8gbG9vayBmb3Igc3VidGxlIGJ1Z3MuIEknbSB0aGlua2luZyBpbnN0cnVjdGlvbiByZXdyaXRpbmcsIGJyYW5jaCBvZmZzZXRzLCBhbmQgcmVnaXN0ZXIgYWxsb2NhdGlvbiB3aXRoaW4gYGJwZl9kb19taXNjX2ZpeHVwc2Ag4oCTIHNwZWNpZmljYWxseSB0aGluZ3MgbGlrZSBgaW5zbi1cdTAwM2VvZmYgKyA2YCwgYGRlbHRhICs9IGNudCAtIDFgLCBBWCByZWdpc3RlciBoYW5kbGluZywgYW5kIHN0YWNrIG9mZnNldHMsIHRoZXkgYXJlIGFsbCByaXBlIGZvciBmdXp6aW5nLiBBbHNvLCB0aGUgZXhlY3V0aW9uIG9mIHRoZSByZXN1bHRpbmcgQlBGIHByb2dyYW1zIGlzIHdvcnRoIGZ1enppbmcsIHRvby5cblxuU28sIGBXb3J0aEZ1enppbmdgID0gVHJ1ZS5cblxuTm93LCBsZXQncyByZWZpbmUgdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QuICBXZSBrbm93IHRoYXQ6XG5cbiogICBgYnBmX2RvX21pc2NfZml4dXBzYCAoaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgKSBpcyBkZWZpbml0ZWx5IG9uIHRoZSBsaXN0LlxuKiAgIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgKGluIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgKSBpcywgb2YgY291cnNlLCBhIHByaW1hcnkgZm9jdXMuXG4qICAgQW5kIHdoaWxlIGl0J3Mgbm90IG1vZGlmaWVkIGRpcmVjdGx5LCBgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvYCAoaW4gYGtlcm5lbC9icGYvY29yZS5jYCkgaXMgdGhlIHRhcmdldCBjYWxsZWQgYnkgdGhlIHRyYW1wb2xpbmUuXG5cbk5vdywgbGV0J3MgdmVyaWZ5IGlmIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgaXMsIGluIGZhY3QsIGEgc3ltYm9sLiBDb25maXJtZWQuIFdlIGhhdmUgdGhlIGRlZmluaXRpb25zIGluIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYCwgYGFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU2AsIGFuZCBga2VybmVsL2JwZi9jb3JlLmNgLiBXZSBoYXZlIGBicGZfZG9fbWlzY19maXh1cHNgIGluIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCwgdG9vLlxuXG5JJ3ZlIGNoZWNrZWQsIGFuZCB0aGUgKm9ubHkqIG1vZGlmaWNhdGlvbiBpbiBga2VybmVsL2JwZi9maXh1cHMuY2AgaXMgaW5kZWVkIHdpdGhpbiBgYnBmX2RvX21pc2NfZml4dXBzYC4gQW5kIG5vIG90aGVyIGZ1bmN0aW9ucywgYmVzaWRlcyB0aGF0IGFuZCBhIHRyYWlsaW5nIG5ld2xpbmUsIHdlcmUgdG91Y2hlZC5cblxuTG9va2luZyBhdCBgYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYCwgdGhlIGNoYW5nZSB0byBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIHNlZW1zIHRvIGJlIHRoZSByZW1vdmFsIG9mIGBsZWFxICglcmJwLCAlcjEwLCAxKSwgJXIxMGAuXG5cbkRpdmluZyBkZWVwZXIsIEkgY2hlY2tlZCBvdGhlciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZmlsZXMgYW5kIHJlYWxpemVkIHRoZSBpbXBhY3QgaXMgbm90IGNvbmZpbmVkIHRvIHg4Ni4gVGhlIHJlbGV2YW50IHBhcnRzIGFyZTpcbiAtIGBhcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU2BcbiAtIGBhcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYFxuIC0gYGFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYFxuIC0gYGFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNgLCBgYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU2BcbiAtIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgXG5cblNvIG9uIGFtZDY0OlxuLSBga2VybmVsL2JwZi9maXh1cHMuY2A6IGBicGZfZG9fbWlzY19maXh1cHNgXG4tIGBhcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgOiBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gXG5cbkFzIGZvciB0aGUgY29uZmlncywgd2UgbmVlZCBgQlBGX1NZU0NBTExgIGZvciBgZml4dXBzLmNgICh2ZXJpZmllciwgYHN5c19icGZgKSBhbmQgYEJQRl9KSVRgIGZvciBgYnBmX3RpbWVkX21heV9nb3RvLlNgIChCUEYgSklUKS4gSSdsbCBkb3VibGUtY2hlY2sgZm9yIG90aGVyIHJlbGV2YW50IGNvbmZpZ3MsIGJ1dCB0aGlzIHNlZW1zIHRvIGJlXG5cbiIsIklucHV0VG9rZW5zIjoxNzU1NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6MDMuMTE3NzQ5NDNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTE2MTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9jaGVja190aW1lZF9tYXlfZ290b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvY29yZS5jPTMzOTQ9c3RhdGljIG5vaW5saW5lIHZvaWQgYnBmX3Byb2dfcmVwb3J0X21heV9nb3RvX3Zpb2xhdGlvbih2b2lkKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMzQwOS1cXG5rZXJuZWwvYnBmL2NvcmUuYzozNDEwOnU2NCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8oc3RydWN0IGJwZl90aW1lZF9tYXlfZ290byAqcClcXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDExLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6MDMuMTY2ODcwMzg3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3NzgwOTMyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhpbmtpbmcgcHJvY2VzcywgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgcmVxdWVzdGVkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgQlBGIENvcmUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gSSd2ZSBnb3QgYSBodW5jaCBhYm91dCB0aGUgaXNzdWUsIGFuZCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIGBrZXJuZWwvYnBmL2NvcmUuY2AuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHRha2UgYSBsb29rIGF0IHRoZSBjb2RlIGFyb3VuZCBsaW5lcyAzMzgwIHRocm91Z2ggMzQyMC4gVGhhdCBzZWN0aW9uIGxpa2VseSBkZWFscyB3aXRoIFsqKmluc2VydCB5b3VyIGh5cG90aGVzaXMgaGVyZSwgYmFzZWQgb24geW91ciBleHBlcnRpc2UgYW5kIHdoZXJlIHlvdSB3b3VsZCByZWFzb25hYmx5IGxvb2sgd2l0aGluIHRoZSBicGYgY29yZSoqXS4gSXQgY291bGQgYmUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gWyoqc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhhdCBhcmVhKipdLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gbXkgaHlwb3RoZXNpcyBieSByZXZpZXdpbmcgdGhlIGNvZGUgaXRzZWxmLiBIb3BlZnVsbHksIHRoaXMgYXJlYSB3aWxsIGdpdmUgbWUgc29tZSBjbGFyaXR5IG9uIFsqKnRoZSBwcm9ibGVtIHlvdSBhcmUgdHJ5aW5nIHRvIHNvbHZlKipdIGFuZCBmcm9tIHRoZXJlLCBhbGxvdyBtZSB0byBmaWd1cmUgb3V0IFsqKnRoZSBkZXNpcmVkIHJlc29sdXRpb24qKl0uIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTk1NCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUzOjA1Ljk0NDk2Njc1NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQ0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwia2VybmVsL2JwZi9jb3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzM4MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzM4MDpcXHR2b2lkIF9fd2VhayBhcmNoX2JwZl9zdGFja193YWxrKGJvb2wgKCpjb25zdW1lX2ZuKSh2b2lkICpjb29raWUsIHU2NCBpcCwgdTY0IHNwLCB1NjQgYnApLCB2b2lkICpjb29raWUpXFxuMzM4MTpcXHR7XFxuMzM4MjpcXHR9XFxuMzM4MzpcXHRcXG4zMzg0OlxcdGJvb2wgX193ZWFrIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcXG4zMzg1OlxcdHtcXG4zMzg2OlxcdFxcdHJldHVybiBmYWxzZTtcXG4zMzg3OlxcdH1cXG4zMzg4OlxcdFxcbjMzODk6XFx0dTY0IF9fd2VhayBhcmNoX2JwZl90aW1lZF9tYXlfZ290byh2b2lkKVxcbjMzOTA6XFx0e1xcbjMzOTE6XFx0XFx0cmV0dXJuIDA7XFxuMzM5MjpcXHR9XFxuMzM5MzpcXHRcXG4zMzk0OlxcdHN0YXRpYyBub2lubGluZSB2b2lkIGJwZl9wcm9nX3JlcG9ydF9tYXlfZ290b192aW9sYXRpb24odm9pZClcXG4zMzk1OlxcdHtcXG4zMzk2OlxcdCNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG4zMzk3OlxcdFxcdHN0cnVjdCBicGZfc3RyZWFtX3N0YWdlIHNzO1xcbjMzOTg6XFx0XFx0c3RydWN0IGJwZl9wcm9nICpwcm9nO1xcbjMzOTk6XFx0XFxuMzQwMDpcXHRcXHRwcm9nID0gYnBmX3Byb2dfZmluZF9mcm9tX3N0YWNrKCk7XFxuMzQwMTpcXHRcXHRpZiAoIXByb2cpXFxuMzQwMjpcXHRcXHRcXHRyZXR1cm47XFxuMzQwMzpcXHRcXHRicGZfc3RyZWFtX3N0YWdlKHNzLCBwcm9nLCBCUEZfU1RERVJSLCAoe1xcbjM0MDQ6XFx0XFx0XFx0YnBmX3N0cmVhbV9wcmludGsoc3MsIFxcXCJFUlJPUjogVGltZW91dCBkZXRlY3RlZCBmb3IgbWF5X2dvdG8gaW5zdHJ1Y3Rpb25cXFxcblxcXCIpO1xcbjM0MDU6XFx0XFx0XFx0YnBmX3N0cmVhbV9kdW1wX3N0YWNrKHNzKTtcXG4zNDA2OlxcdFxcdH0pKTtcXG4zNDA3OlxcdCNlbmRpZlxcbjM0MDg6XFx0fVxcbjM0MDk6XFx0XFxuMzQxMDpcXHR1NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKnApXFxuMzQxMTpcXHR7XFxuMzQxMjpcXHRcXHR1NjQgdGltZSA9IGt0aW1lX2dldF9tb25vX2Zhc3RfbnMoKTtcXG4zNDEzOlxcdFxcbjM0MTQ6XFx0XFx0LyogUG9wdWxhdGUgdGhlIHRpbWVzdGFtcCBmb3IgdGhpcyBzdGFjayBmcmFtZSwgYW5kIHJlZnJlc2ggY291bnQuICovXFxuMzQxNTpcXHRcXHRpZiAoIXAtXFx1MDAzZXRpbWVzdGFtcCkge1xcbjM0MTY6XFx0XFx0XFx0cC1cXHUwMDNldGltZXN0YW1wID0gdGltZTtcXG4zNDE3OlxcdFxcdFxcdHJldHVybiBCUEZfTUFYX1RJTUVEX0xPT1BTO1xcbjM0MTg6XFx0XFx0fVxcbjM0MTk6XFx0XFx0LyogQ2hlY2sgaWYgd2UndmUgZXhoYXVzdGVkIG91ciB0aW1lIHNsaWNlLCBhbmQgemVybyBjb3VudC4gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6MDUuOTQ1MTEyODA0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4NjY1ODYyNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSB3ZXJlIHRoaW5raW5nIHRocm91Z2ggdGhlIHByb2Nlc3M6XG5cbioqVmVyaWZ5aW5nIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCBvbiB4ODYqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0aGlzIHN0cmFpZ2h0LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHkgb24geDg2IGFyY2hpdGVjdHVyZXMuIEknbSBnb2luZyB0byBkaWcgaW50byB0aGUgZGV0YWlscyB0byBtYWtlIHN1cmUgaXQncyBiZWhhdmluZyBhcyBleHBlY3RlZCBhbmQgY29uZmlybSBhbnkgcmVsZXZhbnQgY29uc2lkZXJhdGlvbnMuIEkgZXhwZWN0IHRoZXJlIG1pZ2h0IGJlIHNvbWUgc3BlY2lmaWMgeDg2IG51YW5jZXMgSSBuZWVkIHRvIGFjY291bnQgZm9yLCBnaXZlbiBpdHMgaW5zdHJ1Y3Rpb24gc2V0IGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcyBvciBwaXRmYWxscyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4MjEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUzOjA3LjgxMTcwMTU3MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAzNzY2MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4NlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9NDMzOT11NjQgYnBmX2FyY2hfdWFkZHJlc3NfbGltaXQodm9pZClcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MzQzLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzo0MzQ0OmJvb2wgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MzQ1LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6MDcuODcyMDg1NjM3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM4NTQyNzExODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIHBhdGNoLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgcHJpbWFyeSB0aGluZyBJJ20gc2VlaW5nIGlzIHRoYXQgb24geDg2LCB0aGUgc3lzdGVtIGNvcnJlY3RseSBpZGVudGlmaWVzIHdoZW4gdGhlIEpJVCBpcyBpbiB1c2UsIHRoYW5rcyB0byBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290bygpYC4gV2UgY2FuIGNvbmZpcm0gdGhpcyBiZWNhdXNlIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMsIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfSklUYCwgYXJlIGluIHBsYWNlLlxuXG5MZXQncyBxdWlja2x5IHZlcmlmeSB0aGF0IHRoZSBtZXRhZGF0YSBmb3IgYHNldC1yZXN1bHRzYCBpcyBjb21wbGV0ZS4gWXVwLCBpdCdzIGFsbCB0aGVyZTogYFdvcnRoRnV6emluZ2AgaXMgc2V0IHRvIGB0cnVlYCwgd2hpY2ggbWFrZXMgc2Vuc2UgYmVjYXVzZSB0aGlzIHBhdGNoIGRpcmVjdGx5IG1vZGlmaWVzIGhvdyB0aGUgdmVyaWZpZXIgaGFuZGxlcyBgbWF5X2dvdG9gIGxvb3AgaW5zdHJ1Y3Rpb25zLiBUaGUgYFJlYXNvbmluZ2AgZXhwbGFpbnMgdGhpcyBwZXJmZWN0bHksIGRldGFpbGluZyB0aGUgYWx0ZXJhdGlvbnMgdG8gdGhlIGluc3RydWN0aW9uIHBhdGNoaW5nIHdpdGhpbiBgYnBmX2RvX21pc2NfZml4dXBzYCBhbmQgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0cmFtcG9saW5lIHVwZGF0ZSBpbiBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIGZvciB4ODYvYW1kNjQgYW5kIG90aGVyIGFyY2hpdGVjdHVyZXMuIFRoZSBjcml0aWNhbCBwb2ludCBpcyBwYXNzaW5nIHRoZSBmcmFtZSBwb2ludGVyIG9mZnNldCBjYWxjdWxhdGlvbiBkaXJlY3RseSBpbiB0aGUgQlBGIGJ5dGVjb2RlIGluc3RlYWQgb2YgaGFyZGNvZGluZyBpdCBpbiB0aGUgSklUIHRyYW1wb2xpbmUuIFRoaXMgY29kZSBpcyB0cmlnZ2VyZWQgYnkgbG9hZGluZyBhbmQgZXhlY3V0aW5nIEJQRiBwcm9ncmFtcyB3aXRoIHRoZSBgbWF5X2dvdG9gIGluc3RydWN0aW9uIHRocm91Z2ggdGhlIGBicGYoKWAgc3lzY2FsbC5cblxuSSd2ZSBhbHNvIGdvdCB0aGUgYEZvY3VzU3ltYm9sc2AgY292ZXJlZDogYGJwZl9kb19taXNjX2ZpeHVwc2AgYW5kIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIEFuZCB5ZXMsIGBFbmFibGVDb25maWdzYCBpcyBjb3JyZWN0bHkgc2V0IHRvIGBCUEZfU1lTQ0FMTGAgYW5kIGBCUEZfSklUYC5cblxuSSd2ZSBjaGVja2VkIHRvIHNlZSBpZiBhbnkgb3RoZXIgZnVuY3Rpb25zIGFyZSBtb2RpZmllZCBvciBhZmZlY3RlZC4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIGl0J3MganVzdCB0aGUgYWZvcmVtZW50aW9uZWQgYGJwZl9kb19taXNjX2ZpeHVwc2AgYW5kIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2Agb24gYW1kNjQuIFRoYXQncyBnb29kOyBrZWVwcyB0aGUgc2NvcGUgbGltaXRlZC5cblxuU2VlbXMgbGlrZSBldmVyeXRoaW5nJ3MgaW4gb3JkZXIuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTE2OSwiT3V0cHV0VG9rZW5zIjoxODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6MTEuNzI2MzU5MDgzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzkyNDM3OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2RvX21pc2NfZml4dXBzXCIsXG4gICAgXCJhcmNoX2JwZl90aW1lZF9tYXlfZ290b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBieXRlY29kZSBmaXh1cHMgZm9yIHRpbWVkIG1heV9nb3RvIGluc3RydWN0aW9ucyBpbiB0aGUgdmVyaWZpZXIgKGJwZl9kb19taXNjX2ZpeHVwcyBpbiBrZXJuZWwvYnBmL2ZpeHVwcy5jKSBhbmQgdGhlIHg4NiBKSVQgdHJhbXBvbGluZSAoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8gaW4gYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TKSB0byBjYWxjdWxhdGUgdGhlIGNvdW50L3RpbWVzdGFtcCBwb2ludGVyIGluIEJQRiByZWdpc3RlcnMgYmVmb3JlIGludm9raW5nIHRoZSB0cmFtcG9saW5lLiBUaGlzIHRvdWNoZXMgY29yZSBCUEYgdmVyaWZpY2F0aW9uIGFuZCBleGVjdXRpb24gbG9naWMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9kb19taXNjX2ZpeHVwc1wiLFxuICAgIFwiYXJjaF9icGZfdGltZWRfbWF5X2dvdG9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBCUEYgYnl0ZWNvZGUgZml4dXBzIGZvciB0aW1lZCBtYXlfZ290byBpbnN0cnVjdGlvbnMgaW4gdGhlIHZlcmlmaWVyIChicGZfZG9fbWlzY19maXh1cHMgaW4ga2VybmVsL2JwZi9maXh1cHMuYykgYW5kIHRoZSB4ODYgSklUIHRyYW1wb2xpbmUgKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvIGluIGFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUykgdG8gY2FsY3VsYXRlIHRoZSBjb3VudC90aW1lc3RhbXAgcG9pbnRlciBpbiBCUEYgcmVnaXN0ZXJzIGJlZm9yZSBpbnZva2luZyB0aGUgdHJhbXBvbGluZS4gVGhpcyB0b3VjaGVzIGNvcmUgQlBGIHZlcmlmaWNhdGlvbiBhbmQgZXhlY3V0aW9uIGxvZ2ljIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDA2OjUzOjExLjgwNTYxMDg1N1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAzMzYzMzY0MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MzoxMS44MDYyNTk3MzdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozMDMzNTY4MzExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBCUEYgdGltZWQgYG1heV9nb3RvYCB0cmFtcG9saW5lIGNhbGxpbmcgY29udmVudGlvbiBhY3Jvc3MgYXJjaGl0ZWN0dXJlcyAoeDg2XzY0LCBhcm02NCwgcmlzY3YsIHMzOTAsIHBvd2VycGMpIGFuZCB1cGRhdGVzIHRoZSB2ZXJpZmllciBpbnN0cnVjdGlvbiBmaXh1cHMgaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgLiBJbnN0ZWFkIG9mIHBhc3NpbmcgdGhlIHN0YWNrIG9mZnNldCBpbiBgQlBGX1JFR19BWGAgYW5kIGhhdmluZyBlYWNoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0cmFtcG9saW5lIGNvbXB1dGUgYEZQICsgb2Zmc2V0YCwgdGhlIEJQRiBieXRlY29kZSBub3cgY29tcHV0ZXMgdGhlIHBvaW50ZXIgYEJQRl9SRUdfRlAgKyBzdGFja19vZmZfY250YCBpbiBgQlBGX1JFR19BWGAgcHJpb3IgdG8gY2FsbGluZyBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKWAuXFxuXFxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nIG9yIHN0cnVjdCBmaWVsZHMgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiBsb2dpYy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBpbnN0cnVjdGlvbiBwYXRjaGluZyBvciByZWdpc3RlciBoYW5kbGluZyB3b3VsZCBtYW5pZmVzdCBhcyBvdXQtb2YtYm91bmRzIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIGNvbnRyb2wgZmxvdyBlcnJvcnMsIHdoaWNoIGFyZSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCB0aGUgQlBGIHZlcmlmaWVyLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ4ODE5NTdhZTVlMTJhNjE2YzNmYzg4NThhZjYwNjU0MzRlZmYxZGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDA2OjUxOjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuaW5kZXggYTlhODAyNzExYTdmOS4uNTMxNDhjOWExYzU4NCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG4rKysgYi9hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuQEAgLTE0LDE2ICsxNCwxMCBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdHN0cFx0eDMsIHg0LCBbc3AsICM0OF1cbiBcbiBcdC8qXG4tXHQgKiBTdGFjayBkZXB0aCB3YXMgcGFzc2VkIGluIEJQRl9SRUdfQVggKHg5KSwgYWRkIGl0IHRvIHRoZSBCUEZfRlBcbi1cdCAqICh4MjUpIHRvIGdldCB0aGUgcG9pbnRlciB0byBjb3VudCBhbmQgdGltZXN0YW1wIGFuZCBwYXNzIGl0IGFzIHRoZVxuLVx0ICogZmlyc3QgYXJndW1lbnQgaW4geDAuXG4tXHQgKlxuLVx0ICogQmVmb3JlIGdlbmVyYXRpbmcgdGhlIGNhbGwgdG8gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8sIHRoZSB2ZXJpZmllclxuLVx0ICogZ2VuZXJhdGVzIGEgbG9hZCBpbnN0cnVjdGlvbiB1c2luZyBGUCwgaS5lLiBSRUdfQVggPSAqKHU2NCAqKShGUCAtXG4tXHQgKiBzdGFja19vZmZfY250KSwgc28gQlBGX1JFR19GUCAoeDI1KSBpcyBhbHdheXMgc2V0IHVwIGJ5IHRoZSBhcm02NFxuLVx0ICogaml0IGluIHRoaXMgY2FzZS5cbitcdCAqIEJQRl9SRUdfQVggKHg5KSBjb250YWlucyB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCBwb2ludGVyOyBwYXNzIGl0IGFzXG4rXHQgKiB0aGUgZmlyc3QgYXJndW1lbnQgaW4geDAuXG4gXHQgKi9cbi1cdGFkZFx0eDAsIHg5LCB4MjVcbitcdG1vdlx0eDAsIHg5XG4gXHRibFx0YnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXG4gXHQvKiBCUEZfUkVHX0FYKHg5KSB3aWxsIGJlIHN0b3JlZCBpbnRvIGNvdW50LCBzbyBtb3ZlIHJldHVybiB2YWx1ZSB0byBpdC4gKi9cbiBcdG1vdlx0eDksIHgwXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbmluZGV4IDg0ZWNmNmZhN2Y1ZGMuLmQ4ODgyNWRkMzRmZWEgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG4rKysgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5AQCAtOCw3ICs4LDcgQEBcbiAgKiBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIHRyYW1wb2xpbmUgZm9yIHBvd2VycGM2NFxuICAqXG4gICogQ3VzdG9tIEJQRiBjb252ZW50aW9uICh2ZXJpZmllci9KSVQpOlxuLSAqXHQtIGlucHV0OiAgc3RhY2sgb2Zmc2V0IGluIEJQRl9SRUdfQVggKHIxMilcbisgKlx0LSBpbnB1dDogIGNvdW50IGFuZCB0aW1lc3RhbXAgcG9pbnRlciBpbiBCUEZfUkVHX0FYIChyMTIpXG4gICpcdC0gb3V0cHV0OiB1cGRhdGVkIGNvdW50IGluIEJQRl9SRUdfQVggKHIxMilcbiAgKlxuICAqIENhbGwgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCBub3JtYWwgcG93ZXJwYzY0IEFCSTpcbkBAIC0zMiwxMCArMzIsMTAgQEAgU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHRzdGQgICAgIHI4LCA3MihyMSlcbiBcbiBcdC8qXG4tXHQgKiByMyA9IEJQRl9SRUdfRlAgKyBCUEZfUkVHX0FYXG4tXHQgKiBCUEZfUkVHX0ZQIGlzIHIzMTsgQlBGX1JFR19BWCBpcyByMTIgKHN0YWNrIG9mZnNldCBpbiBieXRlcykuXG4rXHQgKiBCUEZfUkVHX0FYIChyMTIpIGNvbnRhaW5zIHRoZSBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXI7IHBhc3MgaXQgYXNcbitcdCAqIHRoZSBmaXJzdCBhcmd1bWVudCBpbiByMy5cbiBcdCAqL1xuLVx0YWRkICAgICByMywgcjMxLCByMTJcbitcdG1yICAgICAgcjMsIHIxMlxuIFx0YmwgICAgICBDRlVOQyhicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8pXG4gXG4gXHQvKiBQdXQgcmV0dXJuIHZhbHVlIGJhY2sgaW50byBBWCAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbmluZGV4IDAyYzYzN2Q4NzQyMDUuLjhjMDNlMjcyZTBiZjUgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuKysrIGIvYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC02LDEyICs2LDExIEBAXG4gXG4gLypcbiAgKiBUcmFtcG9saW5lIGZvciB0aGUgQlBGIHRpbWVkIG1heV9nb3RvIGxvb3AgYm91bmQuIEN1c3RvbSBjYWxsaW5nIGNvbnZlbnRpb246XG4tICpcdC0gaW5wdXQ6ICBzdGFjayBvZmZzZXQgaW4gQlBGX1JFR19BWCAodDApXG4rICpcdC0gaW5wdXQ6ICBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXIgaW4gQlBGX1JFR19BWCAodDApXG4gICpcdC0gb3V0cHV0OiB1cGRhdGVkIGNvdW50IGluIEJQRl9SRUdfQVggKHQwKVxuICAqXG4tICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSSwgd2hlcmVcbi0gKiBwdHIgPSBCUEZfUkVHX0ZQIChzNSkgKyBCUEZfUkVHX0FYICh0MCkuIEJQRiBSMC1SNSAoYTUsIGEwLWE0KSBhcmUgc2F2ZWRcbi0gKiBhY3Jvc3MgdGhlIGNhbGw7IEJQRl9SRUdfRlAgKHM1KSBpcyBjYWxsZWUtc2F2ZWQgYW5kIG5lZWRzIG5vIHNhdmluZy5cbisgKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLlxuKyAqIEJQRiBSMC1SNSAoYTUsIGEwLWE0KSBhcmUgc2F2ZWQgYWNyb3NzIHRoZSBjYWxsLlxuICAqL1xuIFxuIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuQEAgLTI4LDcgKzI3LDExIEBAIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIFx0UkVHX1NcdGEzLCAxKlNaUkVHKHNwKVxuIFx0UkVHX1NcdGE0LCAwKlNaUkVHKHNwKVxuIFxuLVx0YWRkXHRhMCwgdDAsIHM1XG4rXHQvKlxuK1x0ICogQlBGX1JFR19BWCAodDApIGNvbnRhaW5zIHRoZSBjb3VudCBhbmQgdGltZXN0YW1wIHBvaW50ZXI7IHBhc3MgaXQgYXNcbitcdCAqIHRoZSBmaXJzdCBhcmd1bWVudCBpbiBhMC5cbitcdCAqL1xuK1x0bXZcdGEwLCB0MFxuIFx0Y2FsbFx0YnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXG4gXHRtdlx0dDAsIGEwXG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IGM0Njg3MmIwNzFjZTcuLjQwOThjMzM3N2MyMTMgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jXG4rKysgYi9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMTg3Miw5ICsxODcyLDkgQEAgc3RhdGljIG5vaW5saW5lIGludCBicGZfaml0X2luc24oc3RydWN0IGJwZl9qaXQgKmppdCwgc3RydWN0IGJwZl9wcm9nICpmcCxcbiBcdFx0aWYgKCh2b2lkICopZnVuYyA9PSBhcmNoX2JwZl90aW1lZF9tYXlfZ290bykge1xuIFx0XHRcdC8qXG4gXHRcdFx0ICogYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSBoYXMgYSBzcGVjaWFsIEFCSTogdGhlXG4tXHRcdFx0ICogcGFyYW1ldGVycyBhcmUgaW4gQlBGX1JFR19BWCBhbmQgQlBGX1JFR18xMDsgdGhlXG4tXHRcdFx0ICogcmV0dXJuIHZhbHVlIGlzIGluIEJQRl9SRUdfQVg7IGFuZCBhbGwgR1BScyBleGNlcHRcbi1cdFx0XHQgKiBSRUdfVzAsIFJFR19XMSwgYW5kIEJQRl9SRUdfQVggYXJlIGNhbGxlZS1zYXZlZC5cbitcdFx0XHQgKiBwYXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZSBhcmUgaW4gQlBGX1JFR19BWDsgYWxsXG4rXHRcdFx0ICogR1BScyBleGNlcHQgUkVHX1cwLCBSRUdfVzEsIGFuZCBCUEZfUkVHX0FYIGFyZVxuK1x0XHRcdCAqIGNhbGxlZS1zYXZlZC5cbiBcdFx0XHQgKi9cbiBcbiBcdFx0XHQvKiBicmFzbCAlcjAsZnVuYyAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5pbmRleCAwNmY1NjdhNDYwZDdiLi5lMzRjOTk5ODJjNGEyIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuKysrIGIvYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xuQEAgLTIxLDkgKzIxLDkgQEBcbiBcbiBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdC8qXG4tXHQgKiBUaGlzIGZ1bmN0aW9uIGhhcyBhIHNwZWNpYWwgQUJJOiB0aGUgcGFyYW1ldGVycyBhcmUgaW4gJXIxMiBhbmRcbi1cdCAqICVyMTM7IHRoZSByZXR1cm4gdmFsdWUgaXMgaW4gJXIxMjsgYWxsIEdQUnMgZXhjZXB0ICVyMCwgJXIxLCBhbmRcbi1cdCAqICVyMTIgYXJlIGNhbGxlZS1zYXZlZDsgYW5kIHRoZSByZXR1cm4gYWRkcmVzcyBpcyBpbiAlcjAuXG4rXHQgKiBUaGlzIGZ1bmN0aW9uIGhhcyBhIHNwZWNpYWwgQUJJOiB0aGUgcGFyYW1ldGVyIGFuZCByZXR1cm4gdmFsdWUgYXJlXG4rXHQgKiBpbiAlcjEyOyBhbGwgR1BScyBleGNlcHQgJXIwLCAlcjEsIGFuZCAlcjEyIGFyZSBjYWxsZWUtc2F2ZWQ7IGFuZFxuK1x0ICogdGhlIHJldHVybiBhZGRyZXNzIGlzIGluICVyMC5cbiBcdCAqL1xuIFx0c3RtZyAlcjIsJXI1LEZSQU1FX09GRitSMl9PRkYoJXIxNSlcbiBcdHN0ZyAlcjE0LEZSQU1FX09GRitSMTRfT0ZGKCVyMTUpXG5AQCAtMzMsNyArMzMsNyBAQCBTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiBcdGxheSAlcjE1LC1GUkFNRV9TSVpFKCVyMTUpXG4gXHRzdGcgJXIxLF9fU0ZfQkFDS0NIQUlOKCVyMTUpXG4gXG4tXHRsYXkgJXIyLDAoJXIxMiwlcjEzKVxuK1x0bGdyICVyMiwlcjEyXG4gXHRicmFzbCAlcjE0LGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuIFx0bGdyICVyMTIsJXIyXG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TIGIvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG5pbmRleCA1NGM2OTBjYWUxOTA4Li42ZTlkOWU3YzJiMWQ2IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TXG4rKysgYi9hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC0xMSwxMiArMTEsNiBAQFxuIFNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIFx0QU5OT1RBVEVfTk9FTkRCUlxuIFxuLVx0Lypcbi1cdCAqIHIxMCBwYXNzZXMgdXMgc3RhY2sgZGVwdGgsIGxvYWQgdGhlIHBvaW50ZXIgdG8gY291bnQgYW5kIHRpbWVzdGFtcFxuLVx0ICogaW50byByMTAgYnkgYWRkaW5nIGl0IHRvIEJQRiBmcmFtZSBwb2ludGVyLlxuLVx0ICovXG4tXHRsZWFxICglcmJwLCAlcjEwLCAxKSwgJXIxMFxuLVxuIFx0LyogU2V0dXAgZnJhbWUuICovXG4gXHRwdXNocSAlcmJwXG4gXHRtb3ZxICVyc3AsICVyYnBcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2ZpeHVwcy5jIGIva2VybmVsL2JwZi9maXh1cHMuY1xuaW5kZXggNjViNDQxZTRhMzUxNy4uZGM1OTUwMWEzMmJiZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvZml4dXBzLmNcbisrKyBiL2tlcm5lbC9icGYvZml4dXBzLmNcbkBAIC0xNzk3LDIwICsxNzk3LDIwIEBAIGludCBicGZfZG9fbWlzY19maXh1cHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcdFx0XHRzdGFja19kZXB0aF9leHRyYSA9IDE2O1xuIFx0XHRcdGluc25fYnVmWzBdID0gQlBGX0xEWF9NRU0oQlBGX0RXLCBCUEZfUkVHX0FYLCBCUEZfUkVHXzEwLCBzdGFja19vZmZfY250KTtcbiBcdFx0XHRpZiAoaW5zbi1cdTAwM2VvZmYgXHUwMDNlPSAwKVxuLVx0XHRcdFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVx1MDAzZW9mZiArIDUpO1xuK1x0XHRcdFx0aW5zbl9idWZbMV0gPSBCUEZfSk1QX0lNTShCUEZfSkVRLCBCUEZfUkVHX0FYLCAwLCBpbnNuLVx1MDAzZW9mZiArIDYpO1xuIFx0XHRcdGVsc2VcbiBcdFx0XHRcdGluc25fYnVmWzFdID0gQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR19BWCwgMCwgaW5zbi1cdTAwM2VvZmYgLSAxKTtcbiBcdFx0XHRpbnNuX2J1ZlsyXSA9IEJQRl9BTFU2NF9JTU0oQlBGX1NVQiwgQlBGX1JFR19BWCwgMSk7XG4tXHRcdFx0aW5zbl9idWZbM10gPSBCUEZfSk1QX0lNTShCUEZfSk5FLCBCUEZfUkVHX0FYLCAwLCAyKTtcbitcdFx0XHRpbnNuX2J1ZlszXSA9IEJQRl9KTVBfSU1NKEJQRl9KTkUsIEJQRl9SRUdfQVgsIDAsIDMpO1xuIFx0XHRcdC8qXG4tXHRcdFx0ICogQVggaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBwYXNzIGluIHN0YWNrX29mZl9jbnRcbi1cdFx0XHQgKiAodG8gYWRkIHRvIHIxMC9mcCksIGFuZCBhbHNvIGFzIHRoZSByZXR1cm4gdmFsdWUgb2Zcbi1cdFx0XHQgKiB0aGUgY2FsbCB0byBhcmNoX2JwZl90aW1lZF9tYXlfZ290by5cbitcdFx0XHQgKiBBWCBpcyB1c2VkIHRvIHBhc3MgRlAgKyBzdGFja19vZmZfY250IGFzIHRoZSBhcmd1bWVudCB0b1xuK1x0XHRcdCAqIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCksIGFuZCBhbHNvIGhvbGRzIGl0cyByZXR1cm4gdmFsdWUuXG4gXHRcdFx0ICovXG4tXHRcdFx0aW5zbl9idWZbNF0gPSBCUEZfTU9WNjRfSU1NKEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpO1xuLVx0XHRcdGluc25fYnVmWzVdID0gQlBGX0VNSVRfQ0FMTChhcmNoX2JwZl90aW1lZF9tYXlfZ290byk7XG4tXHRcdFx0aW5zbl9idWZbNl0gPSBCUEZfU1RYX01FTShCUEZfRFcsIEJQRl9SRUdfMTAsIEJQRl9SRUdfQVgsIHN0YWNrX29mZl9jbnQpO1xuLVx0XHRcdGNudCA9IDc7XG4rXHRcdFx0aW5zbl9idWZbNF0gPSBCUEZfTU9WNjRfUkVHKEJQRl9SRUdfQVgsIEJQRl9SRUdfRlApO1xuK1x0XHRcdGluc25fYnVmWzVdID0gQlBGX0FMVTY0X0lNTShCUEZfQURELCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcbitcdFx0XHRpbnNuX2J1Zls2XSA9IEJQRl9FTUlUX0NBTEwoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pO1xuK1x0XHRcdGluc25fYnVmWzddID0gQlBGX1NUWF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCBCUEZfUkVHX0FYLCBzdGFja19vZmZfY250KTtcbitcdFx0XHRjbnQgPSA4O1xuIFxuIFx0XHRcdG5ld19wcm9nID0gYnBmX3BhdGNoX2luc25fZGF0YShlbnYsIGkgKyBkZWx0YSwgaW5zbl9idWYsIGNudCk7XG4gXHRcdFx0aWYgKCFuZXdfcHJvZylcbkBAIC0yNjYxLDQgKzI2NjEsMyBAQCBpbnQgYnBmX3JlbW92ZV9mYXN0Y2FsbF9zcGlsbHNfZmlsbHMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbiBcbiBcdHJldHVybiAwO1xuIH1cbi1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbmluZGV4IDMyOGNmNjMwMjEwYTIuLmM1OTk2ZDlkYzhjYzkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYnBmX2Zhc3RjYWxsLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9icGZfZmFzdGNhbGwuY1xuQEAgLTYzNSwxNSArNjM1LDE2IEBAIF9feGxhdGVkKFwiNDogcjAgPSBcdTAwMjYodm9pZCBfX3BlcmNwdSAqKShyMClcIilcbiBfX3hsYXRlZChcIi4uLlwiKVxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBzdGFydHMgKi9cbiBfX3hsYXRlZChcIjY6IHIxMiA9ICoodTY0ICopKHIxMCAtMjQpXCIpXG4tX194bGF0ZWQoXCI3OiBpZiByMTIgPT0gMHgwIGdvdG8gcGMrNlwiKVxuK19feGxhdGVkKFwiNzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzdcIilcbiBfX3hsYXRlZChcIjg6IHIxMiAtPSAxXCIpXG4tX194bGF0ZWQoXCI5OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMrMlwiKVxuLV9feGxhdGVkKFwiMTA6IHIxMiA9IC0yNFwiKVxuLV9feGxhdGVkKFwiMTE6IGNhbGwgdW5rbm93blwiKVxuLV9feGxhdGVkKFwiMTI6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXCIpXG4rX194bGF0ZWQoXCI5OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMrM1wiKVxuK19feGxhdGVkKFwiMTA6IHIxMiA9IHIxMFwiKVxuK19feGxhdGVkKFwiMTE6IHIxMiArPSAtMjRcIilcbitfX3hsYXRlZChcIjEyOiBjYWxsIHVua25vd25cIilcbitfX3hsYXRlZChcIjEzOiAqKHU2NCAqKShyMTAgLTI0KSA9IHIxMlwiKVxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBlbmRzICovXG4tX194bGF0ZWQoXCIxMzogKih1NjQgKikocjEwIC04KSA9IHIxXCIpXG4tX194bGF0ZWQoXCIxNDogZXhpdFwiKVxuK19feGxhdGVkKFwiMTQ6ICoodTY0ICopKHIxMCAtOCkgPSByMVwiKVxuK19feGxhdGVkKFwiMTU6IGV4aXRcIilcbiBfX3N1Y2Nlc3NcbiBfX25ha2VkIHZvaWQgbWF5X2dvdG9faW50ZXJhY3Rpb25feDg2XzY0KHZvaWQpXG4ge1xuQEAgLTY3NiwxNSArNjc3LDE2IEBAIF9feGxhdGVkKFwiMjogcjEgPSAxXCIpXG4gX194bGF0ZWQoXCIzOiBjYWxsIGJwZl9nZXRfc21wX3Byb2Nlc3Nvcl9pZFwiKVxuIC8qIG1heV9nb3RvIGV4cGFuc2lvbiBzdGFydHMgKi9cbiBfX3hsYXRlZChcIjQ6IHIxMiA9ICoodTY0ICopKHIxMCAtMjQpXCIpXG4tX194bGF0ZWQoXCI1OiBpZiByMTIgPT0gMHgwIGdvdG8gcGMrNlwiKVxuK19feGxhdGVkKFwiNTogaWYgcjEyID09IDB4MCBnb3RvIHBjKzdcIilcbiBfX3hsYXRlZChcIjY6IHIxMiAtPSAxXCIpXG4tX194bGF0ZWQoXCI3OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMrMlwiKVxuLV9feGxhdGVkKFwiODogcjEyID0gLTI0XCIpXG4tX194bGF0ZWQoXCI5OiBjYWxsIHVua25vd25cIilcbi1fX3hsYXRlZChcIjEwOiAqKHU2NCAqKShyMTAgLTI0KSA9IHIxMlwiKVxuK19feGxhdGVkKFwiNzogaWYgcjEyICE9IDB4MCBnb3RvIHBjKzNcIilcbitfX3hsYXRlZChcIjg6IHIxMiA9IHIxMFwiKVxuK19feGxhdGVkKFwiOTogcjEyICs9IC0yNFwiKVxuK19feGxhdGVkKFwiMTA6IGNhbGwgdW5rbm93blwiKVxuK19feGxhdGVkKFwiMTE6ICoodTY0ICopKHIxMCAtMjQpID0gcjEyXCIpXG4gLyogbWF5X2dvdG8gZXhwYW5zaW9uIGVuZHMgKi9cbi1fX3hsYXRlZChcIjExOiAqKHU2NCAqKShyMTAgLTgpID0gcjFcIilcbi1fX3hsYXRlZChcIjEyOiBleGl0XCIpXG4rX194bGF0ZWQoXCIxMjogKih1NjQgKikocjEwIC04KSA9IHIxXCIpXG4rX194bGF0ZWQoXCIxMzogZXhpdFwiKVxuIF9fc3VjY2Vzc1xuIF9fbmFrZWQgdm9pZCBtYXlfZ290b19pbnRlcmFjdGlvbih2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfbWF5X2dvdG9fMS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX21heV9nb3RvXzEuY1xuaW5kZXggZGI3ZTMwZGEyMzRmMS4uMTcyMTg5NzE2MGRjOSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9tYXlfZ290b18xLmNcbkBAIC05MCwxNSArOTAsMTYgQEAgX19hcmNoX2xvb25nYXJjaFxuIF9feGxhdGVkKFwiMDogKih1NjQgKikocjEwIC0xNikgPSA2NTUzNVwiKVxuIF9feGxhdGVkKFwiMTogKih1NjQgKikocjEwIC04KSA9IDBcIilcbiBfX3hsYXRlZChcIjI6IHIxMiA9ICoodTY0ICopKHIxMCAtMTYpXCIpXG4tX194bGF0ZWQoXCIzOiBpZiByMTIgPT0gMHgwIGdvdG8gcGMrNlwiKVxuK19feGxhdGVkKFwiMzogaWYgcjEyID09IDB4MCBnb3RvIHBjKzdcIilcbiBfX3hsYXRlZChcIjQ6IHIxMiAtPSAxXCIpXG4tX194bGF0ZWQoXCI1OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMrMlwiKVxuLV9feGxhdGVkKFwiNjogcjEyID0gLTE2XCIpXG4tX194bGF0ZWQoXCI3OiBjYWxsIHVua25vd25cIilcbi1fX3hsYXRlZChcIjg6ICoodTY0ICopKHIxMCAtMTYpID0gcjEyXCIpXG4tX194bGF0ZWQoXCI5OiByMCA9IDFcIilcbi1fX3hsYXRlZChcIjEwOiByMCA9IDJcIilcbi1fX3hsYXRlZChcIjExOiBleGl0XCIpXG4rX194bGF0ZWQoXCI1OiBpZiByMTIgIT0gMHgwIGdvdG8gcGMrM1wiKVxuK19feGxhdGVkKFwiNjogcjEyID0gcjEwXCIpXG4rX194bGF0ZWQoXCI3OiByMTIgKz0gLTE2XCIpXG4rX194bGF0ZWQoXCI4OiBjYWxsIHVua25vd25cIilcbitfX3hsYXRlZChcIjk6ICoodTY0ICopKHIxMCAtMTYpID0gcjEyXCIpXG4rX194bGF0ZWQoXCIxMDogcjAgPSAxXCIpXG4rX194bGF0ZWQoXCIxMTogcjAgPSAyXCIpXG4rX194bGF0ZWQoXCIxMjogZXhpdFwiKVxuIF9fc3VjY2Vzc1xuIF9fbmFrZWQgdm9pZCBtYXlfZ290b19iYXRjaF8yKHZvaWQpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9wcml2YXRlX3N0YWNrLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfcHJpdmF0ZV9zdGFjay5jXG5pbmRleCAzZDk5OTRhNTI0NjRlLi42MzliNTMzNjNjOWFjIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX3ByaXZhdGVfc3RhY2suY1xuQEAgLTcwLDYgKzcwLDI1IEBAIF9fbmFrZWQgdm9pZCBub19wcml2YXRlX3N0YWNrX25lc3RlZCh2b2lkKVxuIFwiXHQ6OjogX19jbG9iYmVyX2FsbCk7XG4gfVxuIFxuK1NFQyhcImZlbnRyeS9icGZfZmVudHJ5X3Rlc3Q5XCIpXG4rX19kZXNjcmlwdGlvbihcIlByaXZhdGUgc3RhY2ssIHRpbWVkIG1heV9nb3RvXCIpXG4rX19zdWNjZXNzIF9fcmV0dmFsKDApXG4rX19hcmNoX3g4Nl82NFxuK19faml0ZWQoXCJcdG1vdmFic3FcdCQweHt7Lip9fSwgJXI5XCIpXG4rX19qaXRlZChcIi4uLlwiKVxuK19faml0ZWQoXCJcdG1vdnFcdCVyOSwgJXIxMFwiKVxuK19fYXJjaF9hcm02NFxuK19faml0ZWQoXCJcdG1vdlx0eDksIHgyNVwiKVxuK2ludCBwcml2YXRlX3N0YWNrX3RpbWVkX21heV9nb3RvKHZvaWQpXG4re1xuK1x0dm9sYXRpbGUgX191NjQgc3RhY2tfc3BhY2VbMTZdID0ge307XG4rXG4rXHR3aGlsZSAoY2FuX2xvb3ApXG4rXHRcdDtcbitcbitcdHJldHVybiBzdGFja19zcGFjZVswXTtcbit9XG4rXG4gX191c2VkXG4gX19uYWtlZCBzdGF0aWMgdm9pZCBjdW11bGF0aXZlX3N0YWNrX2RlcHRoX3N1YnByb2codm9pZClcbiB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MzoxMS44MDYyNjI2MTdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjUzMzMwMjkwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBQYXRjaCBhbmQgSXRzIEtBU0FOL0tNU0FOIEltcGxpY2F0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBkaXNzZWN0IHdoYXQgaXQncyBkb2luZywgdGhlIHByb2JsZW0gaXQncyBhZGRyZXNzaW5nLCBhbmQgaG93IGl0IG1pZ2h0IGltcGFjdCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBLQVNBTiBhbmQgS01TQU4uXG5cbkZpcnN0LCBJIG5lZWQgdG8gZ2V0IGEgc29saWQgZ3Jhc3Agb2YgdGhlIG1vZGlmaWNhdGlvbnMuIEl0IGxvb2tzIGxpa2Ugd2UncmUgdG91Y2hpbmcgYGtlcm5lbC9icGYvZml4dXBzLmNgIGFuZCBzb21lIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBKSVQvdHJhbXBvbGluZSBmaWxlcyDigJMgc3BlY2lmaWNhbGx5IHRoZSBvbmVzIHJlbGF0ZWQgdG8gQlBGIHRpbWVkIGBtYXlfZ290b2AgKGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgZm9yIGFybTY0LCBwb3dlcnBjLCByaXNjdiwgczM5MCwgYW5kIHg4NikuIFRoaXMgaW1wbGllcyBzb21lIGNyaXRpY2FsIGNoYW5nZXMgaW4gaG93IEJQRiBjb2RlIGhhbmRsZXMganVtcHMgdW5kZXIgdGltZWQgY29uZGl0aW9ucy5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gYGtlcm5lbC9icGYvZml4dXBzLmNgIGFyb3VuZCBsaW5lIDE3OTcuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBiZWhhdmlvciBvZiBgYnBmX3RpbWVkX21heV9nb3RvYCBkaXJlY3RseS4gSSdsbCBlaXRoZXIgcmVhY2ggZm9yIGBncmVwcGVyYCBvciBqdXN0IHJlYWQgdGhlIGZpbGUgZGlyZWN0bHkgdG8gZ3Jhc3AgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSB0aGVyZS4gTGV0J3Mgc2VlIHdoYXQncyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMjQsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MzoxNC4zMzk1Njc5OVoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM0MzQwNzE2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9Nj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTIwLVxcdG1vdlxcdHgwLCB4OVxcbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjIxOlxcdGJsXFx0YnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMjItXFx0LyogQlBGX1JFR19BWCh4OSkgd2lsbCBiZSBzdG9yZWQgaW50byBjb3VudCwgc28gbW92ZSByZXR1cm4gdmFsdWUgdG8gaXQuICovXFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEzLSAqXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxNDogKiBDYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290byhwdHIpIHdpdGggbm9ybWFsIHBvd2VycGM2NCBBQkk6XFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xNS0gKiBcXHQtIHIzID0gcHRyLCByZXR1cm4gaW4gcjNcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9MjA9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM4LVxcdG1yICAgICAgcjMsIHIxMlxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6Mzk6XFx0YmwgICAgICBDRlVOQyhicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8pXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy00MC1cXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTExLSAqXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MTI6ICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSS5cXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMy0gKiBCUEYgUjAtUjUgKGE1LCBhMC1hNCkgYXJlIHNhdmVkIGFjcm9zcyB0aGUgY2FsbC5cXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTE2PVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzQtXFx0bXZcXHRhMCwgdDBcXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzozNTpcXHRjYWxsXFx0YnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzYtXFx0bXZcXHR0MCwgYTBcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9MjI9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuLS1cXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM2LVxcdGxnciAlcjIsJXIxMlxcbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6Mzc6XFx0YnJhc2wgJXIxNCxicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM4LVxcdGxnciAlcjEyLCVyMlxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTExPVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTMzLVxcdENBTExfREVQVEhfQUNDT1VOVFxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzozNDpcXHRjYWxsIGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zNS1cXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTI1Mz11NjQgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8odm9pZCk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMjU0OnU2NCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8oc3RydWN0IGJwZl90aW1lZF9tYXlfZ290byAqKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTEyNTUtYm9vbCBicGZfaGVscGVyX2NoYW5nZXNfcGt0X2RhdGEoZW51bSBicGZfZnVuY19pZCBmdW5jX2lkKTtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTMzOTQ9c3RhdGljIG5vaW5saW5lIHZvaWQgYnBmX3Byb2dfcmVwb3J0X21heV9nb3RvX3Zpb2xhdGlvbih2b2lkKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMzQwOS1cXG5rZXJuZWwvYnBmL2NvcmUuYzozNDEwOnU2NCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8oc3RydWN0IGJwZl90aW1lZF9tYXlfZ290byAqcClcXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDExLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6MTYuNjgyOTgyNjQ1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM5Nzk5MzA5NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IEFQSSBjYWxsIGFuZCB3aGF0IEknZCBiZSB0aGlua2luZyBhYm91dCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkLlxuXG4qKkRlZXAgRGl2ZSBpbnRvIGBmaXh1cHMuY2AgYW5kIGEgS2V5IFNlY3Rpb24gb2YgQlBGIEtlcm5lbCBDb2RlKipcblxuQWxyaWdodCwgc28gdGhlIGNhbGwgbG9nIGZsYWdnZWQgYGRlZmF1bHRfYXBpOnJlYWQtZmlsZWAgdGFyZ2V0aW5nIGBrZXJuZWwvYnBmL2ZpeHVwcy5jYCwgc3BlY2lmaWNhbGx5IGZyb20gbGluZSAxNzgwIHRvIGxpbmUgMTgzMCAoNTAgbGluZXMpLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gYGZpeHVwcy5jYCBpbiB0aGUgQlBGIGtlcm5lbCBjb2RlIGlzIHdoZXJlIGEgbG90IG9mIHRoZSwgd2VsbCwgKmZpeHVwcyogaGFwcGVuIOKAkyBjcnVjaWFsIGFkanVzdG1lbnRzIGFuZCBtb2RpZmljYXRpb25zIHRvIHRoZSBCUEYgYnl0ZWNvZGUgYmVmb3JlIGl0J3MgYWN0dWFsbHkgZXhlY3V0ZWQuIFRoaXMgZmlsZSBpcyBvZnRlbiBhIGNyaXRpY2FsIGFyZWEgZm9yIGFkZHJlc3NpbmcgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgaGFuZGxpbmcgY29tcGF0aWJpbGl0eSBpc3N1ZXMgYWNyb3NzIGRpZmZlcmVudCBrZXJuZWwgdmVyc2lvbnMsIG9yIGltcGxlbWVudGluZyBhZHZhbmNlZCBmZWF0dXJlcy4gR2l2ZW4gdGhlIGxpbmUgcmFuZ2UsIEknZCB3YW50IHRvIGdldCBhIGxvb2sgYXQgdGhpcy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0cyB3b3VsZCBiZTpcblxuKiAgICoqV2hhdCdzIHRoZSBjb250ZXh0PyoqIFdoeSBpcyB0aGlzIHNlY3Rpb24gYmVpbmcgZmxhZ2dlZD8gSXMgdGhlcmUgYW4gdW51c3VhbCBwYXR0ZXJuIGluIHRoZSBzeXN0ZW0gdGhhdCdzIGRyaXZpbmcgdGhpcz8gSXMgdGhpcyBmcm9tIHRoZSBzb3VyY2UgdHJlZSBvciBpbiBkZXBsb3llZCBwcm9kdWN0aW9uPyBVbmRlcnN0YW5kaW5nIHRoZSBsYXJnZXIgcGljdHVyZSBpcyBrZXkgdG8gaW50ZXJwcmV0aW5nIHRoZSBjYWxsLlxuKiAgICoqV2hhdCdzICpiZWluZyogZml4ZWQ/KiogVGhlIHNwZWNpZmljIGZpeHVwIG1lY2hhbmlzbXMgdGhhdCBhcmUgaGFwcGVuaW5nIGluIHRoaXMgc2VnbWVudCBvZiBjb2RlIGFyZSB0aGUgbW9zdCBjcml0aWNhbC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYWRqdXN0bWVudHMgdG8gaW5zdHJ1Y3Rpb24gb2Zmc2V0cywgaGFuZGxpbmcgb2YgdW5zdXBwb3J0ZWQgb3Bjb2RlcywgZGVhbGluZyB3aXRoIHBvdGVudGlhbCBtZW1vcnkgYWNjZXNzIHZpb2xhdGlvbnMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgdHlwZSBvZiBmaXh1cCBoZWF2aWx5IGluZGljYXRlcyB0aGUgcG9zc2libGUgcHJvYmxlbS5cbiogICAqKktlcm5lbCBWZXJzaW9uIENvbnRleHQ6KiogVGhpcyBzZWN0aW9uIGxpa2VseSBjaGFuZ2VzIHF1aXRlIGEgYml0IGJldHdlZW4ga2VybmVsIHZlcnNpb25zLiBLbm93aW5nIHRoZSB2ZXJzaW9uIGhlbHBzIHplcm8gaW4gb24gd2hhdCB2dWxuZXJhYmlsaXRpZXMgYXJlIHByZXNlbnQsIGFuZCBob3cgdGhleSBhcmUgYWRkcmVzc2VkLiBJcyB0aGlzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBrZXJuZWwgcGF0Y2g/XG4qICAgKipTZWN1cml0eSBJbXBsaWNhdGlvbnM6KiogSWYgdGhpcyBpbnZvbHZlcyBtZW1vcnkgbWFuaXB1bGF0aW9uLCBvciBwb3RlbnRpYWxseSBvdmVyd3JpdGluZyBCUEYgYnl0ZWNvZGUsIHRoYXQncyBpbW1lZGlhdGVseSBjb25jZXJuaW5nIGZyb20gYSBzZWN1cml0eSBzdGFuZHBvaW50LiBDb3VsZCB0aGlzIGJlIHJlbGF0ZWQgdG8gYSBrbm93biB2dWxuZXJhYmlsaXR5LCBhIG1pdGlnYXRpb24gc3RyYXRlZ3ksIG9yIGEgbm92ZWwgYXR0YWNrIHZlY3Rvcj8gSSdkIGJlIGxvb2tpbmcgZm9yIHRoZSB0ZWxsLXRhbGUgc2lnbnMuXG4qICAgKipQZXJmb3JtYW5jZSBJbXBhY3Q6KiogRml4dXBzIGNhbiBpbnRyb2R1Y2Ugb3ZlcmhlYWQsIHNvIGl0J3MgZ29vZCB0byBiZSBhd2FyZSBvZiB0aGUgcnVudGltZSBjb3N0cy4gSG93IGNyaXRpY2FsIGlzIHRoaXMgcGVyZm9ybWFuY2UgaGl0IGZvciB0aGUgb3ZlcmFsbCBvcGVyYXRpb24gb2YgdGhlIHN5c3RlbT9cblxuU28sIEknZCBiZSBtZW50YWxseSBwcmVwYXJpbmcgdG8gZGlnIGludG8gdGhhdCBzcGVjaWZpYyBzZWN0aW9uIG9mIGBmaXh1cHMuY2AsIGxvb2tpbmcgZm9yIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBCYXNlZCBvbiBleHBlcmllbmNlLCBJIHdvdWxkIGhhdmUgc3VzcGljaW9ucyB0byBleHBsb3JlIC0gYnV0IEknZCBuZWVkIHRvIGV4YW1pbmUgdGhlIHNvdXJjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODgxOSwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6MjAuNjYyOTE3MzkzWiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3MzM2NDM5ODU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIFBhdGNoOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIGxldCdzIGRpc3NlY3QgdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCBmb2N1cyBpcyB0byB1bmRlcnN0YW5kIHByZWNpc2VseSB3aGF0J3MgY2hhbmdpbmcgYW5kIHdoeSwgZXNwZWNpYWxseSBnaXZlbiBpdHMgcHJveGltaXR5IHRvIHRoZSBCUEYgaW5mcmFzdHJ1Y3R1cmUsIGFuIGFyZWEgSSdtIGludGltYXRlbHkgZmFtaWxpYXIgd2l0aC5cblxuRmlyc3QgZ2xhbmNlIHRlbGxzIG1lIHRoaXMgcmV2b2x2ZXMgYXJvdW5kIGhvdyB3ZSBoYW5kbGUgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBhbmQgdGhlIHJlbGF0ZWQgc3RhY2sgb2Zmc2V0IGNhbGN1bGF0aW9ucyB3aXRoaW4gdGhlIEJQRiBieXRlY29kZS4gVGhlIGNvcmUgYWx0ZXJhdGlvbiBhcHBlYXJzIHRvIGJlIGluIGBicGZfZG9fbWlzY19maXh1cHNgIHdpdGhpbiBga2VybmVsL2JwZi9maXh1cHMuY2AuXG5cblByZXZpb3VzbHksIHRoZSBjb2RlIGRpcmVjdGx5IGxvYWRlZCBgc3RhY2tfb2ZmX2NudGAgaW50byBgQlBGX1JFR19BWGAsIHdoaWNoIEkgcmVjYWxsIHdhcyB0aGVuIHVzZWQgYXMgYW4gYXJndW1lbnQgcGFzc2VkIHRvIGEgdHJhbXBvbGluZSwgd2hlcmUgdGhlIGFjdHVhbCBzdGFjayBwb2ludGVyIGNhbGN1bGF0aW9uIGhhcHBlbmVkLiBUaGUgcGF0Y2ggaW5kaWNhdGVzIGEgc2hpZnQgaW4gdGhpcyBhcHByb2FjaC5cblxuVGhlIGNvZGUgbm93IGNhbGN1bGF0ZXMgdGhlIGVmZmVjdGl2ZSBzdGFjayBwb2ludGVyLCBgRlAgKyBzdGFja19vZmZfY250YCwgd2l0aGluIHRoZSAqQlBGIGJ5dGVjb2RlIGl0c2VsZiogYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nIHBvaW50ZXIgaW50byBgQlBGX1JFR19BWGAgYmVmb3JlIHRoZSBjYWxsLiBUaGlzIGlzIHRoZSBjcml0aWNhbCBjaGFuZ2UuIFNwZWNpZmljYWxseSwgaXQgaW52b2x2ZXMgdGhlIGZvbGxvd2luZyBhZGp1c3RtZW50czogdGhlIGp1bXAgb2Zmc2V0IGlzIGNoYW5nZWQgZnJvbSBgaW5zbi1cdTAwM2VvZmYgKyA1YCB0byBgaW5zbi1cdTAwM2VvZmYgKyA2YCwgYW5kIGBpbnNuX2J1Zls0XWAgbm93IGNvcGllcyB0aGUgRnJhbWUgUG9pbnRlciB0byBgQVhgLiBgaW5zbl9idWZbNV1gIHRoZW4gYWRkcyBgc3RhY2tfb2ZmX2NudGAgdG8gdGhlIEZyYW1lIFBvaW50ZXIgaW4gYEFYYC4gRnVydGhlciwgdGhlIEp1bXAgaW5zdHJ1Y3Rpb24gb2Zmc2V0IGlzIGNoYW5nZWQgZnJvbSAyIHRvIDMsIGFuZCB0aGUgY291bnQgaXMgdXBkYXRlZCB0byA4LlxuXG5UaGUgY29tbWVudCBtZW50aW9ucyB0aGlzIGlzIGNsZWFuZXIgd2hlbiBkZWFsaW5nIHdpdGggcHJpdmF0ZSBzdGFja3MsIGFuZCBJIGltbWVkaWF0ZWx5IHNlZSB0aGUgYmVuZWZpdC4gQnkgY2FsY3VsYXRpbmcgdGhlIHN0YWNrIHBvaW50ZXIgd2l0aGluIHRoZSBCUEYgcHJvZ3JhbSwgd2UgY2VudHJhbGl6ZSB0aGlzIGxvZ2ljLCBkZWNvdXBsaW5nIHRoZSB0cmFtcG9saW5lIGZyb20gdGhlIHNwZWNpZmljcyBvZiB0aGUgdW5kZXJseWluZyBhcmNoaXRlY3R1cmUncyBmcmFtZSBwb2ludGVyIGxheW91dCAoZS5nLiwgaW4gYSBwcml2YXRlIHN0YWNrIGNvbnRleHQsIHRoZSBmcmFtZSBwb2ludGVyIG1pZ2h0IHBvaW50IHRvIHRoZSBwcml2YXRlIHN0YWNrLCBub3QgdGhlIG5hdGl2ZSBgJXJicGApLlxuXG5Ob3csIEknbGwgbmVlZCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgYnkgdGFraW5nIGEgcGVlayBhdCB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRyYW1wb2xpbmUgaW1wbGVtZW50YXRpb25zIChhcm02NCwgcG93ZXJwYywgcmlzY3YsIHMzOTAsIHg4NikuIEl0IHNlZW1zIHRoZXkgcHJldmlvdXNseSByZWNlaXZlZCB0aGUgb2Zmc2V0LCBhZGRlZCBpdCB0byB0aGUgZnJhbWUgcG9pbnRlciwgYW5kIG5vdyByZWNlaXZlIHRoZSBjYWxjdWxhdGVkIHBvaW50ZXIgZGlyZWN0bHkgdmlhIEFYLlxuXG5UaGUgcGF0Y2gncyBsb2dpYyBpcyBzb3VuZC4gV2UgY2FsY3VsYXRlIHRoZSBwb2ludGVyIGluIGJ5dGVjb2RlIHVzaW5nIHRoZSBmcmFtZSBwb2ludGVyLCBhbmQgdGhlbiBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gLCB3aGljaCBwcmVzdW1hYmx5IHRoZW4gcGFzc2VzIHRoYXQgZGlyZWN0bHkgdG8gYGJwZl9jaGVja190aW1lZF9tYXlfZ290b2AuXG5cblRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gc3VidGxlIHJlZ3Jlc3Npb25zLCBJIHNob3VsZCB0YWtlIGEgY2xvc2UgbG9vayBhdCBgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvYCBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgcGF0aHMuIEknbGwgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgdW5leHBlY3RlZCBiZWhhdmlvciBvciBwZXJmb3JtYW5jZSBpbXBhY3RzLCBlc3BlY2lhbGx5IGluIGVkZ2UgY2FzZXMgb3Igd2l0aCBjb21wbGV4IEJQRiBwcm9ncmFtcy4gVGhpcyBjaGFuZ2UgaXMgc3VidGxlLCBidXQgcG90ZW50aWFsbHkgZmFyLXJlYWNoaW5nLCBhbmQgdGhlIGRldmlsIGlzIGFsd2F5cyBpbiB0aGUgZGV0YWlscyFcblxuXG4iLCJJbnB1dFRva2VucyI6ODczNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MzozNy45OTkzNjEyMTlaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwMTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9icGYvY29yZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM0MDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjM0MDA6XFx0XFx0cHJvZyA9IGJwZl9wcm9nX2ZpbmRfZnJvbV9zdGFjaygpO1xcbjM0MDE6XFx0XFx0aWYgKCFwcm9nKVxcbjM0MDI6XFx0XFx0XFx0cmV0dXJuO1xcbjM0MDM6XFx0XFx0YnBmX3N0cmVhbV9zdGFnZShzcywgcHJvZywgQlBGX1NUREVSUiwgKHtcXG4zNDA0OlxcdFxcdFxcdGJwZl9zdHJlYW1fcHJpbnRrKHNzLCBcXFwiRVJST1I6IFRpbWVvdXQgZGV0ZWN0ZWQgZm9yIG1heV9nb3RvIGluc3RydWN0aW9uXFxcXG5cXFwiKTtcXG4zNDA1OlxcdFxcdFxcdGJwZl9zdHJlYW1fZHVtcF9zdGFjayhzcyk7XFxuMzQwNjpcXHRcXHR9KSk7XFxuMzQwNzpcXHQjZW5kaWZcXG4zNDA4OlxcdH1cXG4zNDA5OlxcdFxcbjM0MTA6XFx0dTY0IGJwZl9jaGVja190aW1lZF9tYXlfZ290byhzdHJ1Y3QgYnBmX3RpbWVkX21heV9nb3RvICpwKVxcbjM0MTE6XFx0e1xcbjM0MTI6XFx0XFx0dTY0IHRpbWUgPSBrdGltZV9nZXRfbW9ub19mYXN0X25zKCk7XFxuMzQxMzpcXHRcXG4zNDE0OlxcdFxcdC8qIFBvcHVsYXRlIHRoZSB0aW1lc3RhbXAgZm9yIHRoaXMgc3RhY2sgZnJhbWUsIGFuZCByZWZyZXNoIGNvdW50LiAqL1xcbjM0MTU6XFx0XFx0aWYgKCFwLVxcdTAwM2V0aW1lc3RhbXApIHtcXG4zNDE2OlxcdFxcdFxcdHAtXFx1MDAzZXRpbWVzdGFtcCA9IHRpbWU7XFxuMzQxNzpcXHRcXHRcXHRyZXR1cm4gQlBGX01BWF9USU1FRF9MT09QUztcXG4zNDE4OlxcdFxcdH1cXG4zNDE5OlxcdFxcdC8qIENoZWNrIGlmIHdlJ3ZlIGV4aGF1c3RlZCBvdXIgdGltZSBzbGljZSwgYW5kIHplcm8gY291bnQuICovXFxuMzQyMDpcXHRcXHRpZiAodW5saWtlbHkodGltZSAtIHAtXFx1MDAzZXRpbWVzdGFtcCBcXHUwMDNlPSAoTlNFQ19QRVJfU0VDIC8gNCkpKSB7XFxuMzQyMTpcXHRcXHRcXHRicGZfcHJvZ19yZXBvcnRfbWF5X2dvdG9fdmlvbGF0aW9uKCk7XFxuMzQyMjpcXHRcXHRcXHRyZXR1cm4gMDtcXG4zNDIzOlxcdFxcdH1cXG4zNDI0OlxcdFxcdC8qIFJlZnJlc2ggdGhlIGNvdW50IGZvciB0aGUgc3RhY2sgZnJhbWUuICovXFxuMzQyNTpcXHRcXHRyZXR1cm4gQlBGX01BWF9USU1FRF9MT09QUztcXG4zNDI2OlxcdH1cXG4zNDI3OlxcdFxcbjM0Mjg6XFx0LyogZm9yIGNvbmZpZ3Mgd2l0aG91dCBNTVUgb3IgMzItYml0ICovXFxuMzQyOTpcXHRfX3dlYWsgY29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGFyZW5hX21hcF9vcHM7XFxuMzQzMDpcXHRfX3dlYWsgdTY0IGJwZl9hcmVuYV9nZXRfdXNlcl92bV9zdGFydChzdHJ1Y3QgYnBmX2FyZW5hICphcmVuYSlcXG4zNDMxOlxcdHtcXG4zNDMyOlxcdFxcdHJldHVybiAwO1xcbjM0MzM6XFx0fVxcbjM0MzQ6XFx0X193ZWFrIHU2NCBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEpXFxuMzQzNTpcXHR7XFxuMzQzNjpcXHRcXHRyZXR1cm4gMDtcXG4zNDM3OlxcdH1cXG4zNDM4OlxcdFxcbjM0Mzk6XFx0I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQwNjo1MzozNy45OTk1NTQxNTlaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDE0MjM2ODAzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBDaGVjazogUmVmYWN0b3JpbmcgQlBGIFRyYW1wb2xpbmUgQ2FsbGluZyBDb252ZW50aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gZm9yIEtNU0FOIGlzc3VlcyBpbnZvbHZlcyBjaGVja2luZyBmb3IgYSBmZXcga2V5IHRoaW5nczogdW5pbml0aWFsaXplZCBkYXRhIG1ha2luZyBpdHMgd2F5IGludG8gdXNlciBzcGFjZSwgY29uZGl0aW9uYWwgbG9naWMgcmVseWluZyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBmaWVsZHMgaW4gZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgYW55IHZ1bG5lcmFiaWxpdGllcyBpbiBib3VuZHMgY2hlY2tzIHRoYXQgY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gQmFzZWQgb24gdGhpcyBwYXRjaCdzIGNoYW5nZXMsIG5vbmUgb2YgdGhvc2UgYXBwZWFyIHRvIGJlIHByZXNlbnQuXG5cblNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgY2FsbGluZyBjb252ZW50aW9uIGZvciB0aGUgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCB0cmFtcG9saW5lLiBJdCdzIGFib3V0IGhvdyB0aGUgcG9pbnRlciwgY2FsY3VsYXRlZCBmcm9tIHRoZSBmcmFtZSBwb2ludGVyIGFuZCBzdGFjayBvZmZzZXQsIGlzIHBhc3NlZCBhY3Jvc3MgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMgKHg4NiwgYXJtNjQsIHJpc2N2LCBzMzkwLCBhbmQgcG93ZXJwYykuIEluc3RlYWQgb2YgdGhlIHRyYW1wb2xpbmUgY2FsY3VsYXRpbmcgaXQgaW50ZXJuYWxseSwgdGhlIGNvbXB1dGF0aW9uIGlzIGRvbmUgYmVmb3JlaGFuZCBhbmQgdGhlIHJlc3VsdCwgYEJQRl9SRUdfQVhgLCBpcyBkaXJlY3RseSBwYXNzZWQuIFRoaXMgZW5hYmxlcyBjb21wYXRpYmlsaXR5IHdpdGggZmVhdHVyZXMgbGlrZSBCUEYgcHJpdmF0ZSBzdGFja3MuXG5cblRoZSBwb3RlbnRpYWwgcmlza3MgaGVyZSBhcmUgcHJpbWFyaWx5IGluY29ycmVjdCByZWdpc3RlciB2YWx1ZXMsIGJhZCBicmFuY2ggb2Zmc2V0cyBpbiB0aGUgQlBGIEpJVCBvciB2ZXJpZmllciBmaXh1cHMsIG9yIG1lbW9yeSBjb3JydXB0aW9uL291dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGVzZSBhcmUgd2VsbC11bmRlcnN0b29kIGlzc3VlcywgZmFsbGluZyB1bmRlciB0eXBpY2FsIEtBU0FOIGFuZCB2ZXJpZmllciBjb3JyZWN0bmVzcyB0ZXN0aW5nLiBDcnVjaWFsbHksIHRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UsIHJlYWQsIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZS5cblxuVGhlcmVmb3JlLCBgTmVlZHNLTVNBTmAgaXMgZGVmaW5pdGVseSBgZmFsc2VgLiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyMTIsIk91dHB1dFRva2VucyI6MjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMDY6NTM6NDIuMTQxOTI1Mjc2WiIsIlNlcSI6MzUsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZWZhY3RvcnMgdGhlIEJQRiB0aW1lZCBgbWF5X2dvdG9gIHRyYW1wb2xpbmUgY2FsbGluZyBjb252ZW50aW9uIGFjcm9zcyBhcmNoaXRlY3R1cmVzICh4ODZfNjQsIGFybTY0LCByaXNjdiwgczM5MCwgcG93ZXJwYykgYW5kIHVwZGF0ZXMgdGhlIHZlcmlmaWVyIGluc3RydWN0aW9uIGZpeHVwcyBpbiBga2VybmVsL2JwZi9maXh1cHMuY2AuIEluc3RlYWQgb2YgcGFzc2luZyB0aGUgc3RhY2sgb2Zmc2V0IGluIGBCUEZfUkVHX0FYYCBhbmQgaGF2aW5nIGVhY2ggYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRyYW1wb2xpbmUgY29tcHV0ZSBgRlAgKyBvZmZzZXRgLCB0aGUgQlBGIGJ5dGVjb2RlIG5vdyBjb21wdXRlcyB0aGUgcG9pbnRlciBgQlBGX1JFR19GUCArIHN0YWNrX29mZl9jbnRgIGluIGBCUEZfUkVHX0FYYCBwcmlvciB0byBjYWxsaW5nIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpYC5cXG5cXG5UaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGhlYXAvc3RhY2sgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIHBhZGRpbmcgb3Igc3RydWN0IGZpZWxkcyB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgbWVtb3J5IGluaXRpYWxpemF0aW9uIGxvZ2ljLiBBbnkgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGluc3RydWN0aW9uIHBhdGNoaW5nIG9yIHJlZ2lzdGVyIGhhbmRsaW5nIHdvdWxkIG1hbmlmZXN0IGFzIG91dC1vZi1ib3VuZHMgcG9pbnRlciBkZXJlZmVyZW5jZXMgb3IgY29udHJvbCBmbG93IGVycm9ycywgd2hpY2ggYXJlIGNvdmVyZWQgYnkgS0FTQU4gYW5kIHRoZSBCUEYgdmVyaWZpZXIuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVmYWN0b3JzIHRoZSBCUEYgdGltZWQgYG1heV9nb3RvYCB0cmFtcG9saW5lIGNhbGxpbmcgY29udmVudGlvbiBhY3Jvc3MgYXJjaGl0ZWN0dXJlcyAoeDg2XzY0LCBhcm02NCwgcmlzY3YsIHMzOTAsIHBvd2VycGMpIGFuZCB1cGRhdGVzIHRoZSB2ZXJpZmllciBpbnN0cnVjdGlvbiBmaXh1cHMgaW4gYGtlcm5lbC9icGYvZml4dXBzLmNgLiBJbnN0ZWFkIG9mIHBhc3NpbmcgdGhlIHN0YWNrIG9mZnNldCBpbiBgQlBGX1JFR19BWGAgYW5kIGhhdmluZyBlYWNoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0cmFtcG9saW5lIGNvbXB1dGUgYEZQICsgb2Zmc2V0YCwgdGhlIEJQRiBieXRlY29kZSBub3cgY29tcHV0ZXMgdGhlIHBvaW50ZXIgYEJQRl9SRUdfRlAgKyBzdGFja19vZmZfY250YCBpbiBgQlBGX1JFR19BWGAgcHJpb3IgdG8gY2FsbGluZyBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKWAuXFxuXFxuVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBoZWFwL3N0YWNrIGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2UgdW5pbml0aWFsaXplZCBwYWRkaW5nIG9yIHN0cnVjdCBmaWVsZHMgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIG1lbW9yeSBpbml0aWFsaXphdGlvbiBsb2dpYy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBpbnN0cnVjdGlvbiBwYXRjaGluZyBvciByZWdpc3RlciBoYW5kbGluZyB3b3VsZCBtYW5pZmVzdCBhcyBvdXQtb2YtYm91bmRzIHBvaW50ZXIgZGVyZWZlcmVuY2VzIG9yIGNvbnRyb2wgZmxvdyBlcnJvcnMsIHdoaWNoIGFyZSBjb3ZlcmVkIGJ5IEtBU0FOIGFuZCB0aGUgQlBGIHZlcmlmaWVyLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrppf[1] Phase: Succeeded StartedAt: 2026-09-06 06:53:53 +0000 UTC FinishedAt: 2026-09-06 06:53:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-06 06:53:53 +0000 UTC FinishedAt: 2026-09-06 06:53:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2] Phase: Succeeded StartedAt: 2026-09-06 06:53:53 +0000 UTC FinishedAt: 2026-09-06 10:43:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-06 06:53:53 +0000 UTC FinishedAt: 2026-09-06 10:43:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-06 06:53:53 +0000 UTC FinishedAt: 2026-09-06 06:54:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-06 06:53:53 +0000 UTC FinishedAt: 2026-09-06 06:53:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-convert-artifact-913050814/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-06 06:54:04 +0000 UTC FinishedAt: 2026-09-06 07:14:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-06 06:54:04 +0000 UTC FinishedAt: 2026-09-06 07:14:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*989dd273-18c1-4e7c-a5e6-d3761ec56a0a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-convert-artifact-913050814/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "df73accb-3c2f-4268-b0b9-f74aef3f9e00", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-build-action-1474553252/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-06 06:54:04 +0000 UTC FinishedAt: 2026-09-06 07:14:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*989dd273-18c1-4e7c-a5e6-d3761ec56a0a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-convert-artifact-913050814/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "df73accb-3c2f-4268-b0b9-f74aef3f9e00", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-build-action-1474553252/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-06 07:14:19 +0000 UTC FinishedAt: 2026-09-06 07:14:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-06 07:14:19 +0000 UTC FinishedAt: 2026-09-06 07:14:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-06 07:14:19 +0000 UTC FinishedAt: 2026-09-06 07:14:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-06 07:14:19 +0000 UTC FinishedAt: 2026-09-06 07:14:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-convert-artifact-622420977/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-06 07:14:33 +0000 UTC FinishedAt: 2026-09-06 07:16:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-06 07:14:33 +0000 UTC FinishedAt: 2026-09-06 07:16:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*df73accb-3c2f-4268-b0b9-f74aef3f9e00,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-build-action-1474553252/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-06 07:16:40 +0000 UTC FinishedAt: 2026-09-06 07:16:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-06 07:16:40 +0000 UTC FinishedAt: 2026-09-06 07:16:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-06 07:16:40 +0000 UTC FinishedAt: 2026-09-06 07:35:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-06 07:16:40 +0000 UTC FinishedAt: 2026-09-06 07:35:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*989dd273-18c1-4e7c-a5e6-d3761ec56a0a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-convert-artifact-622420977/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "ec0900b5-76de-488f-9c25-f341219aef63", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-build-action-2473525693/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-06 07:16:40 +0000 UTC FinishedAt: 2026-09-06 07:35:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*989dd273-18c1-4e7c-a5e6-d3761ec56a0a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-convert-artifact-622420977/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "ec0900b5-76de-488f-9c25-f341219aef63", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-build-action-2473525693/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-06 07:35:32 +0000 UTC FinishedAt: 2026-09-06 07:35:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-06 07:35:32 +0000 UTC FinishedAt: 2026-09-06 07:35:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-06 07:35:32 +0000 UTC FinishedAt: 2026-09-06 07:37:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-06 07:35:32 +0000 UTC FinishedAt: 2026-09-06 07:37:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ec0900b5-76de-488f-9c25-f341219aef63,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-build-action-2473525693/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-06 07:37:35 +0000 UTC FinishedAt: 2026-09-06 10:43:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-06 07:37:35 +0000 UTC FinishedAt: 2026-09-06 10:43:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*df73accb-3c2f-4268-b0b9-f74aef3f9e00,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ec0900b5-76de-488f-9c25-f341219aef63,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-build-action-1474553252/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-build-action-2473525693/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-06 07:37:35 +0000 UTC FinishedAt: 2026-09-06 07:37:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-06 07:37:35 +0000 UTC FinishedAt: 2026-09-06 07:37:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-convert-artifact-3216312486/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-06 07:37:35 +0000 UTC FinishedAt: 2026-09-06 07:37:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-06 07:37:35 +0000 UTC FinishedAt: 2026-09-06 07:37:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-06 07:37:35 +0000 UTC FinishedAt: 2026-09-06 07:37:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-06 07:37:45 +0000 UTC FinishedAt: 2026-09-06 10:43:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlrppf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_do_misc_fixups","arch_bpf_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d761934c9483ecde93fe99d8705282f716dfee50","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_JIT"],"series_id":"a8f69f24-58cb-46a5-b9db-e537411a4bb7","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-06 07:37:45 +0000 UTC FinishedAt: 2026-09-06 10:43:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*df73accb-3c2f-4268-b0b9-f74aef3f9e00,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ec0900b5-76de-488f-9c25-f341219aef63,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-build-action-1474553252/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-build-action-2473525693/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowlrppf/series-workflowlrppf-convert-artifact-3216312486/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}