Name: series-workflowx6h2l Phase: Succeeded StartedAt: 2026-08-18 07:31:52 +0000 UTC FinishedAt: 2026-08-18 11:28:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[0] Phase: Succeeded StartedAt: 2026-08-18 07:31:52 +0000 UTC FinishedAt: 2026-08-18 07:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[0].run-triage Phase: Succeeded StartedAt: 2026-08-18 07:31:52 +0000 UTC FinishedAt: 2026-08-18 07:49:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d09c98a6da215bce2173a292e4b95c8de6ea5d51", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCH_TAPRIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d09c98a6da215bce2173a292e4b95c8de6ea5d51", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCH_TAPRIO" ], "series_id": "2b5d2635-579e-4c7f-bf05-64bb8d35aa41" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "taprio_change", "taprio_enqueue", "taprio_dequeue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-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+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hfVEFQUklPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGFwcmlvX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZW5xdWV1ZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZGVxdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIENQVSBzdG9ybSBpc3N1ZSBpbiB0aGUgdGFwcmlvIHNjaGVkdWxlciBieSBlbmZvcmNpbmcgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2luZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBocnRpbWVycy4gSXQgb25seSBtb2RpZmllcyB0aW1lIGNhbGN1bGF0aW9ucywgbGlzdCB0cmF2ZXJzYWxzLCBhbmQgc2NoZWR1bGluZyBsb2dpYy4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaW50cm9kdWNlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgdGFwcmlvIHFkaXNjLCBzcGVjaWZpY2FsbHkgZW5mb3JjaW5nIGEgbWluaW11bSBpbnRlcnZhbCBmb3Igc29mdHdhcmUgc2NoZWR1bGVzIGFuZCBhZGRpbmcgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgdGltZXJzLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKHRjIHFkaXNjKSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJjNjY2NDgzMmNiNWE0MDlhMGU3NDQxNzE2NTVjODcxZmM5ZDkyOTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAwNzo0Nzo1MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuaW5kZXggMjk5MjM0YTVmMGZlNi4uNzUxOWJjNWMxYWZmMyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcbkBAIC0yNTksNiAmIzQzOzI1OSwyNiBAQCBzdGF0aWMgaW50IGxlbmd0aF90b19kdXJhdGlvbihzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBpbnQgbGVuKVxuIFx0cmV0dXJuIGRpdl91NjQobGVuICogYXRvbWljNjRfcmVhZChcdTAwMjZxLVx1MDAzZXBpY29zX3Blcl9ieXRlKSwgUFNFQ19QRVJfTlNFQyk7XG4gfVxuIFxuJiM0MzsvKiBTb2Z0d2FyZSBzY2hlZHVsZXMgc2VydmljZSBvbmUgaHJ0aW1lciBleHBpcnkgcGVyIGVudHJ5OyBpbnRlcnZhbHNcbiYjNDM7ICogc2hvcnRlciB0aGFuIHRoZSBleHBpcnkgc2VydmljZSBjb3N0IHJlYXJtIHRoZSB0aW1lciB3aXRoIGFuIGV4cGlyeVxuJiM0MzsgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZVxuJiM0MzsgKiBtZWFzdXJlZCBjb3N0IG9uIGRlYnVnIGNvbmZpZ3VyYXRpb25zLlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TXHQoMTAwICogTlNFQ19QRVJfVVNFQylcbiYjNDM7XG4mIzQzO3N0YXRpYyBzNjQgdGFwcmlvX21pbl9pbnRlcnZhbChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKVxuJiM0Mzt7XG4mIzQzO1x0czY0IG1pbl9pbnRlcnZhbCA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7XG4mIzQzO1xuJiM0MztcdC8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi9cbiYjNDM7XHRpZiAoIUZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKHEtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhVFhUSU1FX0FTU0lTVF9JU19FTkFCTEVEKHEtXHUwMDNlZmxhZ3MpKVxuJiM0MztcdFx0bWluX2ludGVydmFsID0gbWF4X3QoczY0LCBtaW5faW50ZXJ2YWwsXG4mIzQzO1x0XHRcdFx0ICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG1pbl9pbnRlcnZhbDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pXG4ge1xuIFx0cmV0dXJuIGRpdl91NjQoZHVyYXRpb24gKiBQU0VDX1BFUl9OU0VDLCBhdG9taWM2NF9yZWFkKFx1MDAyNnEtXHUwMDNlcGljb3NfcGVyX2J5dGUpKTtcbkBAIC05MTUsNiAmIzQzOzkzNSw1MSBAQCBzdGF0aWMgYm9vbCBzaG91bGRfY2hhbmdlX3NjaGVkdWxlcyhjb25zdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1pbixcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4mIzQzOy8qIFRoZSBvcGVyYXRpb25hbCBzY2hlZHVsZSBmZWxsIGJlaGluZCwgZS5nLiBiZWNhdXNlIHRoZSB0aW1lciB3YXMgZGVsYXllZFxuJiM0MzsgKiBvciB0aGUgcmVmZXJlbmNlIGNsb2NrIHN0ZXBwZWQgZm9yd2FyZC4gQWR2YW5jaW5nIG9uZSBlbnRyeSBwZXIgdGltZXJcbiYjNDM7ICogZXhwaXJ5IHdvdWxkIHJlcGxheSB0aGUgd2hvbGUgYmFja2xvZyBmcm9tIGhydGltZXIgY29udGV4dCwgc28gc2tpcFxuJiM0MzsgKiBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgYW5kIHdhbGsgdGhlIHJlbWFpbmluZyBlbnRyaWVzIHRvIGxhbmQgb25cbiYjNDM7ICogdGhlIGVudHJ5IGNvdmVyaW5nIHRoZSBjdXJyZW50IHRpbWUuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlcixcbiYjNDM7XHRcdFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqKm5leHQsIGt0aW1lX3QgKm5leHRfc3RhcnQsXG4mIzQzO1x0XHRcdCAgICBrdGltZV90ICplbmRfdGltZSwga3RpbWVfdCBub3cpXG4mIzQzO3tcbiYjNDM7XHRpbnQgYnVkZ2V0ID0gMiAqIG9wZXItXHUwMDNlbnVtX2VudHJpZXMgJiM0MzsgMTtcbiYjNDM7XHRzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gKm5leHQ7XG4mIzQzO1x0a3RpbWVfdCBzdGFydCA9ICpuZXh0X3N0YXJ0O1xuJiM0MztcdGt0aW1lX3QgZW5kID0gKmVuZF90aW1lO1xuJiM0MztcdHM2NCBiZWhpbmQgPSBrdGltZV9zdWIobm93LCBlbmQpO1xuJiM0MztcbiYjNDM7XHRpZiAob3Blci1cdTAwM2VjeWNsZV90aW1lIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBiZWhpbmQgXHUwMDNlPSBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpIHtcbiYjNDM7XHRcdHM2NCBqdW1wID0gZGl2NjRfczY0KGJlaGluZCwgb3Blci1cdTAwM2VjeWNsZV90aW1lKSAqIG9wZXItXHUwMDNlY3ljbGVfdGltZTtcbiYjNDM7XG4mIzQzO1x0XHRzdGFydCA9IGt0aW1lX2FkZF9ucyhzdGFydCwganVtcCk7XG4mIzQzO1x0XHRlbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBqdW1wKTtcbiYjNDM7XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSwganVtcCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHR3aGlsZSAoa3RpbWVfYmVmb3JlKGVuZCwgbm93KSBcdTAwMjZcdTAwMjYgLS1idWRnZXQpIHtcbiYjNDM7XHRcdGlmIChsaXN0X2lzX2xhc3QoXHUwMDI2ZW50cnktXHUwMDNlbGlzdCwgXHUwMDI2b3Blci1cdTAwM2VlbnRyaWVzKSB8fFxuJiM0MztcdFx0ICAgIGt0aW1lX2NvbXBhcmUoZW5kLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKSA9PSAwKSB7XG4mIzQzO1x0XHRcdGVudHJ5ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMsXG4mIzQzO1x0XHRcdFx0XHRcdCBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpO1xuJiM0MztcdFx0XHRvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIG9wZXItXHUwMDNlY3ljbGVfdGltZSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRlbnRyeSA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0c3RhcnQgPSBlbmQ7XG4mIzQzO1x0XHRlbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBlbnRyeS1cdTAwM2VpbnRlcnZhbCk7XG4mIzQzO1x0XHRlbmQgPSBtaW5fdChrdGltZV90LCBlbmQsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0Km5leHQgPSBlbnRyeTtcbiYjNDM7XHQqbmV4dF9zdGFydCA9IHN0YXJ0O1xuJiM0MztcdCplbmRfdGltZSA9IGVuZDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4ge1xuIFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCxcbkBAIC05MjQsNyAmIzQzOzk4OSw3IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbiBcdGludCBudW1fdGMgPSBuZXRkZXZfZ2V0X251bV90YyhkZXYpO1xuIFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7XG4gXHRzdHJ1Y3QgUWRpc2MgKnNjaCA9IHEtXHUwMDNlcm9vdDtcbi1cdGt0aW1lX3QgZW5kX3RpbWU7XG4mIzQzO1x0a3RpbWVfdCBlbmRfdGltZSwgbmV4dF9zdGFydCwgbm93O1xuIFx0aW50IHRjO1xuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNnEtXHUwMDNlY3VycmVudF9lbnRyeV9sb2NrKTtcbkBAIC05NjAsMTQgJiM0MzsxMDI1LDE5IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbiBcdFx0bmV4dCA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4gXHR9XG4gXG4tXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSwgbmV4dC1cdTAwM2VpbnRlcnZhbCk7XG4mIzQzO1x0bmV4dF9zdGFydCA9IGVudHJ5LVx1MDAzZWVuZF90aW1lO1xuJiM0MztcdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKG5leHRfc3RhcnQsIG5leHQtXHUwMDNlaW50ZXJ2YWwpO1xuIFx0ZW5kX3RpbWUgPSBtaW5fdChrdGltZV90LCBlbmRfdGltZSwgb3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSk7XG4gXG4mIzQzO1x0bm93ID0gdGFwcmlvX2dldF90aW1lKHEpO1xuJiM0MztcdGlmICh1bmxpa2VseShrdGltZV9iZWZvcmUoZW5kX3RpbWUsIG5vdykpKVxuJiM0MztcdFx0dGFwcmlvX2NhdGNoX3VwKG9wZXIsIFx1MDAyNm5leHQsIFx1MDAyNm5leHRfc3RhcnQsIFx1MDAyNmVuZF90aW1lLCBub3cpO1xuJiM0MztcbiBcdGZvciAodGMgPSAwOyB0YyBcdTAwM2MgbnVtX3RjOyB0YyYjNDM7JiM0MzspIHtcbiBcdFx0aWYgKG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci1cdTAwM2VjeWNsZV90aW1lKVxuIFx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDtcbiBcdFx0ZWxzZVxuLVx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSxcbiYjNDM7XHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKG5leHRfc3RhcnQsXG4gXHRcdFx0XHRcdFx0XHRcdCBuZXh0LVx1MDAzZWdhdGVfZHVyYXRpb25bdGNdKTtcbiBcdH1cbiBcbkBAIC0xMDM4LDcgJiM0MzsxMTA4LDcgQEAgc3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcbiBcdFx0XHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcbiBcdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdGludCBtaW5fZHVyYXRpb24gPSBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pO1xuJiM0MztcdHM2NCBtaW5fZHVyYXRpb24gPSB0YXByaW9fbWluX2ludGVydmFsKHEpO1xuIFx0dTMyIGludGVydmFsID0gMDtcbiBcbiBcdGlmICh0YltUQ0FfVEFQUklPX1NDSEVEX0VOVFJZX0NNRF0pXG5AQCAtMTE2Niw3ICYjNDM7MTIzNiw3IEBAIHN0YXRpYyBpbnQgcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcbiBcdFx0bmV3LVx1MDAzZWN5Y2xlX3RpbWUgPSBjeWNsZTtcbiBcdH1cbiBcbi1cdGlmIChuZXctXHUwMDNlY3ljbGVfdGltZSBcdTAwM2MgbmV3LVx1MDAzZW51bV9lbnRyaWVzICogbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKSkge1xuJiM0MztcdGlmIChuZXctXHUwMDNlY3ljbGVfdGltZSBcdTAwM2MgKHM2NCluZXctXHUwMDNlbnVtX2VudHJpZXMgKiB0YXByaW9fbWluX2ludGVydmFsKHEpKSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7JiMzOTtjeWNsZV90aW1lJiMzOTsgaXMgdG9vIHNtYWxsXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuaW5kZXggY2QxOWQwNTkyNWU0MC4uM2ZlNjY4MzlmOGFlZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuQEAgLTE1NCw2ICYjNDM7MTU0LDI4IEBAXG4gICAgICAgICAgICAgXCYjMzQ7ZWNobyBcXFwmIzM0OzFcXFwmIzM0OyBcdTAwM2UgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2VcJiMzNDtcbiAgICAgICAgIF1cbiAgICAgfSxcbiYjNDM7ICAgIHtcbiYjNDM7ICAgICAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7ZjRiMlwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtBZGQgdGFwcmlvIFFkaXNjIHdpdGggc29mdHdhcmUgaW50ZXJ2YWwgYmVsb3cgdGhlIG1pbmltdW1cJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7cWRpc2NcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3RhcHJpb1wmIzM0O1xuJiM0MzsgICAgICAgIF0sXG4mIzQzOyAgICAgICAgXCYjMzQ7cGx1Z2luc1wmIzM0Ozoge1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtyZXF1aXJlc1wmIzM0OzogXCYjMzQ7bnNQbHVnaW5cJiMzNDtcbiYjNDM7ICAgICAgICB9LFxuJiM0MzsgICAgICAgIFwmIzM0O3NldHVwXCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2VjaG8gXFxcJiMzNDsxIDEgOFxcXCYjMzQ7IFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vbmV3X2RldmljZVwmIzM0O1xuJiM0MzsgICAgICAgIF0sXG4mIzQzOyAgICAgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgcWRpc2MgYWRkIGRldiAkRVRIIHJvb3QgaGFuZGxlIDE6IHRhcHJpbyBudW1fdGMgMiBxdWV1ZXMgMUAwIDFAMSBzY2hlZC1lbnRyeSBTIDAxIDUwMDAwIHNjaGVkLWVudHJ5IFMgMDIgNTAwMDAgY2xvY2tpZCBDTE9DS19UQUlcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzJcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgcWRpc2Mgc2hvdyBkZXYgJEVUSFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O3FkaXNjIHRhcHJpbyAxOiByb290IHJlZmNudFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDttYXRjaENvdW50XCYjMzQ7OiBcJiMzNDswXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2VjaG8gXFxcJiMzNDsxXFxcJiMzNDsgXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlXCYjMzQ7XG4mIzQzOyAgICAgICAgXVxuJiM0MzsgICAgfSxcbiAgICAge1xuICAgICAgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0OzgzMWZcJiMzNDssXG4gICAgICAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtBZGQgdGFwcmlvIFFkaXNjIHdpdGggdG9vIHNob3J0IGN5Y2xlLXRpbWVcJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hfVEFQUklPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGFwcmlvX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZW5xdWV1ZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZGVxdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgdGFwcmlvIHFkaXNjLCBzcGVjaWZpY2FsbHkgZW5mb3JjaW5nIGEgbWluaW11bSBpbnRlcnZhbCBmb3Igc29mdHdhcmUgc2NoZWR1bGVzIGFuZCBhZGRpbmcgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgdGltZXJzLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKHRjIHFkaXNjKSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJjNjY2NDgzMmNiNWE0MDlhMGU3NDQxNzE2NTVjODcxZmM5ZDkyOTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAwNzo0Nzo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jCmluZGV4IDI5OTIzNGE1ZjBmZTYuLjc1MTliYzVjMWFmZjMgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF90YXByaW8uYwpAQCAtMjU5LDYgJiM0MzsyNTksMjYgQEAgc3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbikKIAlyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpLCBQU0VDX1BFUl9OU0VDKTsKIH0KIAomIzQzOy8qIFNvZnR3YXJlIHNjaGVkdWxlcyBzZXJ2aWNlIG9uZSBocnRpbWVyIGV4cGlyeSBwZXIgZW50cnk7IGludGVydmFscwomIzQzOyAqIHNob3J0ZXIgdGhhbiB0aGUgZXhwaXJ5IHNlcnZpY2UgY29zdCByZWFybSB0aGUgdGltZXIgd2l0aCBhbiBleHBpcnkKJiM0MzsgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZQomIzQzOyAqIG1lYXN1cmVkIGNvc3Qgb24gZGVidWcgY29uZmlndXJhdGlvbnMuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TCSgxMDAgKiBOU0VDX1BFUl9VU0VDKQomIzQzOwomIzQzO3N0YXRpYyBzNjQgdGFwcmlvX21pbl9pbnRlcnZhbChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKQomIzQzO3sKJiM0MzsJczY0IG1pbl9pbnRlcnZhbCA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7CiYjNDM7CiYjNDM7CS8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi8KJiM0MzsJaWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLSZndDtmbGFncykgJmFtcDsmYW1wOwomIzQzOwkgICAgIVRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRChxLSZndDtmbGFncykpCiYjNDM7CQltaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCwKJiM0MzsJCQkJICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTsKJiM0MzsKJiM0MzsJcmV0dXJuIG1pbl9pbnRlcnZhbDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pCiB7CiAJcmV0dXJuIGRpdl91NjQoZHVyYXRpb24gKiBQU0VDX1BFUl9OU0VDLCBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpKTsKQEAgLTkxNSw2ICYjNDM7OTM1LDUxIEBAIHN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLAogCXJldHVybiBmYWxzZTsKIH0KIAomIzQzOy8qIFRoZSBvcGVyYXRpb25hbCBzY2hlZHVsZSBmZWxsIGJlaGluZCwgZS5nLiBiZWNhdXNlIHRoZSB0aW1lciB3YXMgZGVsYXllZAomIzQzOyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lcgomIzQzOyAqIGV4cGlyeSB3b3VsZCByZXBsYXkgdGhlIHdob2xlIGJhY2tsb2cgZnJvbSBocnRpbWVyIGNvbnRleHQsIHNvIHNraXAKJiM0MzsgKiBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgYW5kIHdhbGsgdGhlIHJlbWFpbmluZyBlbnRyaWVzIHRvIGxhbmQgb24KJiM0MzsgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlciwKJiM0MzsJCQkgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCwKJiM0MzsJCQkgICAga3RpbWVfdCAqZW5kX3RpbWUsIGt0aW1lX3Qgbm93KQomIzQzO3sKJiM0MzsJaW50IGJ1ZGdldCA9IDIgKiBvcGVyLSZndDtudW1fZW50cmllcyAmIzQzOyAxOwomIzQzOwlzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gKm5leHQ7CiYjNDM7CWt0aW1lX3Qgc3RhcnQgPSAqbmV4dF9zdGFydDsKJiM0MzsJa3RpbWVfdCBlbmQgPSAqZW5kX3RpbWU7CiYjNDM7CXM2NCBiZWhpbmQgPSBrdGltZV9zdWIobm93LCBlbmQpOwomIzQzOwomIzQzOwlpZiAob3Blci0mZ3Q7Y3ljbGVfdGltZSAmZ3Q7IDAgJmFtcDsmYW1wOyBiZWhpbmQgJmd0Oz0gb3Blci0mZ3Q7Y3ljbGVfdGltZSkgewomIzQzOwkJczY0IGp1bXAgPSBkaXY2NF9zNjQoYmVoaW5kLCBvcGVyLSZndDtjeWNsZV90aW1lKSAqIG9wZXItJmd0O2N5Y2xlX3RpbWU7CiYjNDM7CiYjNDM7CQlzdGFydCA9IGt0aW1lX2FkZF9ucyhzdGFydCwganVtcCk7CiYjNDM7CQllbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBqdW1wKTsKJiM0MzsJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLCBqdW1wKTsKJiM0MzsJfQomIzQzOwomIzQzOwl3aGlsZSAoa3RpbWVfYmVmb3JlKGVuZCwgbm93KSAmYW1wOyZhbXA7IC0tYnVkZ2V0KSB7CiYjNDM7CQlpZiAobGlzdF9pc19sYXN0KCZhbXA7ZW50cnktJmd0O2xpc3QsICZhbXA7b3Blci0mZ3Q7ZW50cmllcykgfHwKJiM0MzsJCSAgICBrdGltZV9jb21wYXJlKGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpID09IDApIHsKJiM0MzsJCQllbnRyeSA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtvcGVyLSZndDtlbnRyaWVzLAomIzQzOwkJCQkJCSBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpOwomIzQzOwkJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLAomIzQzOwkJCQkJCQkgICAgb3Blci0mZ3Q7Y3ljbGVfdGltZSk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXN0YXJ0ID0gZW5kOwomIzQzOwkJZW5kID0ga3RpbWVfYWRkX25zKGVuZCwgZW50cnktJmd0O2ludGVydmFsKTsKJiM0MzsJCWVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpOwomIzQzOwl9CiYjNDM7CiYjNDM7CSpuZXh0ID0gZW50cnk7CiYjNDM7CSpuZXh0X3N0YXJ0ID0gc3RhcnQ7CiYjNDM7CSplbmRfdGltZSA9IGVuZDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCiB7CiAJc3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCwKQEAgLTkyNCw3ICYjNDM7OTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCWludCBudW1fdGMgPSBuZXRkZXZfZ2V0X251bV90YyhkZXYpOwogCXN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksICpuZXh0OwogCXN0cnVjdCBRZGlzYyAqc2NoID0gcS0mZ3Q7cm9vdDsKLQlrdGltZV90IGVuZF90aW1lOwomIzQzOwlrdGltZV90IGVuZF90aW1lLCBuZXh0X3N0YXJ0LCBub3c7CiAJaW50IHRjOwogCiAJc3Bpbl9sb2NrKCZhbXA7cS0mZ3Q7Y3VycmVudF9lbnRyeV9sb2NrKTsKQEAgLTk2MCwxNCAmIzQzOzEwMjUsMTkgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCQluZXh0ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKIAl9CiAKLQllbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS0mZ3Q7ZW5kX3RpbWUsIG5leHQtJmd0O2ludGVydmFsKTsKJiM0MzsJbmV4dF9zdGFydCA9IGVudHJ5LSZndDtlbmRfdGltZTsKJiM0MzsJZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC0mZ3Q7aW50ZXJ2YWwpOwogCWVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lKTsKIAomIzQzOwlub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7CiYjNDM7CWlmICh1bmxpa2VseShrdGltZV9iZWZvcmUoZW5kX3RpbWUsIG5vdykpKQomIzQzOwkJdGFwcmlvX2NhdGNoX3VwKG9wZXIsICZhbXA7bmV4dCwgJmFtcDtuZXh0X3N0YXJ0LCAmYW1wO2VuZF90aW1lLCBub3cpOwomIzQzOwogCWZvciAodGMgPSAwOyB0YyAmbHQ7IG51bV90YzsgdGMmIzQzOyYjNDM7KSB7CiAJCWlmIChuZXh0LSZndDtnYXRlX2R1cmF0aW9uW3RjXSA9PSBvcGVyLSZndDtjeWNsZV90aW1lKQogCQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDsKIAkJZWxzZQotCQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS0mZ3Q7ZW5kX3RpbWUsCiYjNDM7CQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhuZXh0X3N0YXJ0LAogCQkJCQkJCQkgbmV4dC0mZ3Q7Z2F0ZV9kdXJhdGlvblt0Y10pOwogCX0KIApAQCAtMTAzOCw3ICYjNDM7MTEwOCw3IEBAIHN0YXRpYyBpbnQgZmlsbF9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsCiAJCQkgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwKIAkJCSAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7Ci0JaW50IG1pbl9kdXJhdGlvbiA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7CiYjNDM7CXM2NCBtaW5fZHVyYXRpb24gPSB0YXByaW9fbWluX2ludGVydmFsKHEpOwogCXUzMiBpbnRlcnZhbCA9IDA7CiAKIAlpZiAodGJbVENBX1RBUFJJT19TQ0hFRF9FTlRSWV9DTURdKQpAQCAtMTE2Niw3ICYjNDM7MTIzNiw3IEBAIHN0YXRpYyBpbnQgcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YiwKIAkJbmV3LSZndDtjeWNsZV90aW1lID0gY3ljbGU7CiAJfQogCi0JaWYgKG5ldy0mZ3Q7Y3ljbGVfdGltZSAmbHQ7IG5ldy0mZ3Q7bnVtX2VudHJpZXMgKiBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pKSB7CiYjNDM7CWlmIChuZXctJmd0O2N5Y2xlX3RpbWUgJmx0OyAoczY0KW5ldy0mZ3Q7bnVtX2VudHJpZXMgKiB0YXByaW9fbWluX2ludGVydmFsKHEpKSB7CiAJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDsmIzM5O2N5Y2xlX3RpbWUmIzM5OyBpcyB0b28gc21hbGwmIzM0Oyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24KaW5kZXggY2QxOWQwNTkyNWU0MC4uM2ZlNjY4MzlmOGFlZCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24KJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24KQEAgLTE1NCw2ICYjNDM7MTU0LDI4IEBACiAgICAgICAgICAgICAmIzM0O2VjaG8gXCYjMzQ7MVwmIzM0OyAmZ3Q7IC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlJiMzNDsKICAgICAgICAgXQogICAgIH0sCiYjNDM7ICAgIHsKJiM0MzsgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDtmNGIyJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtBZGQgdGFwcmlvIFFkaXNjIHdpdGggc29mdHdhcmUgaW50ZXJ2YWwgYmVsb3cgdGhlIG1pbmltdW0mIzM0OywKJiM0MzsgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7cWRpc2MmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3RhcHJpbyYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtwbHVnaW5zJiMzNDs6IHsKJiM0MzsgICAgICAgICAgICAmIzM0O3JlcXVpcmVzJiMzNDs6ICYjMzQ7bnNQbHVnaW4mIzM0OwomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7ZWNobyBcJiMzNDsxIDEgOFwmIzM0OyAmZ3Q7IC9zeXMvYnVzL25ldGRldnNpbS9uZXdfZGV2aWNlJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICRFVEggcm9vdCBoYW5kbGUgMTogdGFwcmlvIG51bV90YyAyIHF1ZXVlcyAxQDAgMUAxIHNjaGVkLWVudHJ5IFMgMDEgNTAwMDAgc2NoZWQtZW50cnkgUyAwMiA1MDAwMCBjbG9ja2lkIENMT0NLX1RBSSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzImIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIHFkaXNjIHNob3cgZGV2ICRFVEgmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7cWRpc2MgdGFwcmlvIDE6IHJvb3QgcmVmY250JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0O2VjaG8gXCYjMzQ7MVwmIzM0OyAmZ3Q7IC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlJiMzNDsKJiM0MzsgICAgICAgIF0KJiM0MzsgICAgfSwKICAgICB7CiAgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDs4MzFmJiMzNDssCiAgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0FkZCB0YXByaW8gUWRpc2Mgd2l0aCB0b28gc2hvcnQgY3ljbGUtdGltZSYjMzQ7LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTg0CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRhcHJpbyBRZGlzYyBQYXRjaCoqCgpPa2F5LCBzbyB3ZSBoYXZlIGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIHR3byBuZXcgZnVuY3Rpb25zOiBgdGFwcmlvX21pbl9pbnRlcnZhbCgpYCB3aGljaCBsaWtlbHkgZW5mb3JjZXMgc29tZSBraW5kIG9mIHNjaGVkdWxpbmcgY29uc3RyYWludCwgYW5kIGB0YXByaW9fY2F0Y2hfdXAoKWAgdG8gZGVhbCB3aXRoIG1pc3NlZCBkZWFkbGluZXMgb3IgY2xvY2sgc2tldywgd2hpY2ggaXMgYSBrZXkgY29uc2lkZXJhdGlvbiBmb3IgdGltZS1zZW5zaXRpdmUgc2NoZWR1bGVzLiBDcnVjaWFsbHksIGBhZHZhbmNlX3NjaGVkKClgIGlzIGJlaW5nIG1vZGlmaWVkIHRvIGNhbGwgYHRhcHJpb19jYXRjaF91cCgpYCwgaW1wbHlpbmcgdGhpcyBpcyBhIGNvcmUgb3BlcmF0aW9uYWwgY2hhbmdlLgoKVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudCB0byB0aGUgVGltZSBBd2FyZSBQcmlvcml0eSBTaGFwZXIsIHRoZSB0YXByaW8gcWRpc2MuIEZyb20gYSB1c2VyIHBlcnNwZWN0aXZlLCB0aGlzIHFkaXNjIGlzIGFjY2Vzc2libGUgdGhyb3VnaCBuZXRsaW5rIGFuZCB0aGUgYHRjIHFkaXNjIGFkZCAuLi4gdGFwcmlvYCBjb21tYW5kLiBHaXZlbiB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgdGltaW5nLXJlbGF0ZWQgYnVncyBhbmQgdGhlIHVzZXItc3BhY2UgaW50ZXJmYWNlLCB0aGlzIGlzICphYnNvbHV0ZWx5KiBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBhZ2dyZXNzaXZlIGZ1enppbmcuIFRoZSBpbnRlcmFjdGlvbiB3aXRoIHRpbWUsIHNjaGVkdWxpbmcsIGFuZCBwb3RlbnRpYWxseSBleHRlcm5hbCBjbG9jayBzb3VyY2VzIG1ha2VzIGl0IGEgcHJpbWUgdGFyZ2V0IGZvciBpZGVudGlmeWluZyBlZGdlIGNhc2VzIGFuZCB2dWxuZXJhYmlsaXRpZXMuCgpCZWZvcmUgZGl2aW5nIGludG8gYSBmdXp6aW5nIHN0cmF0ZWd5LCBJIHNob3VsZCBmaW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBpcyBlbmFibGVkLCBzbyBJJiMzOTtsbCBzdGFydCBieSBsb29raW5nIGF0IGBuZXQvc2NoZWQvTWFrZWZpbGVgIGFuZCBgS2NvbmZpZ2AgZm9yIHRoZSBgc2NoX3RhcHJpby5jYCBzb3VyY2UgZmlsZS4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgYmUgY3J1Y2lhbCBmb3IgY3JlYXRpbmcgZWZmZWN0aXZlIGZ1enppbmcgY29uZmlndXJhdGlvbnMgYW5kIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY2hfdGFwcmlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz0xNzI9Y29uZmlnIE5FVF9TQ0hfVEFQUklPXG4tLVxubmV0L3NjaGVkL0tjb25maWctMTc4LVxubmV0L3NjaGVkL0tjb25maWc6MTc5Olx0ICBTZWUgdGhlIHRvcCBvZiBcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cbm5ldC9zY2hlZC9LY29uZmlnLTE4MC1cbm5ldC9zY2hlZC9LY29uZmlnLTE4MS1cdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxubmV0L3NjaGVkL0tjb25maWc6MTgyOlx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RhcHJpby5cbm5ldC9zY2hlZC9LY29uZmlnLTE4My1cbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9NjM9b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRGKVx0JiM0Mzs9IHNjaF9ldGYub1xubmV0L3NjaGVkL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19ORVRfU0NIX1RBUFJJTylcdCYjNDM7PSBzY2hfdGFwcmlvLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS02NS1vYmotJChDT05GSUdfTkVUX1NDSF9CUEYpXHQmIzQzOz0gYnBmX3FkaXNjLm9cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTItXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjM6LyogbmV0L3NjaGVkL3NjaF90YXByaW8uY1x0IFRpbWUgQXdhcmUgUHJpb3JpdHkgU2NoZWR1bGVyXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQtICpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDA0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIFRBUFJJTyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSB0YXNrIGF0IGhhbmQgaW52b2x2ZXMgYE5FVF9TQ0hfVEFQUklPYC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlIHdpdGggbmV0d29yayBzY2hlZHVsaW5nLCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNvbnN1bHQgdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIGZpbGVzLiBTcGVjaWZpY2FsbHksIGBuZXQvc2NoZWQvS2NvbmZpZ2AgaXMgdGhlIG9idmlvdXMgcGxhY2UgdG8gZmluZCB0aGUgZGV0YWlsZWQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBoZWxwIHRleHQgcmVsYXRlZCB0byBgTkVUX1NDSF9UQVBSSU9gLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaXMgZW5hYmxlZCwgYW55IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGNvbXBpbGUtdGltZSBjb25maWd1cmF0aW9ucyBvciBjb25zdHJhaW50cyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgdG8gZW5zdXJlIGl0JiMzOTtzIGJ1aWx0IGNvcnJlY3RseSBmb3IgbXkgdGFyZ2V0IGVudmlyb25tZW50LiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZSByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIX1RBUFJJTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MTY3PWNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzEtXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9TQ0hfVEFQUklPXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMzIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyB0aGUgTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBzY2hlZHVsaW5nIGNvbmZpZ3VyYXRpb24uIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGBuZXQvc2NoZWQvS2NvbmZpZ2AgYXJvdW5kIGxpbmUgMTcyLiBJJiMzOTttIGd1ZXNzaW5nIHRoYXQgcGFydGljdWxhciBzZWN0aW9uIG1pZ2h0IGJlIHdoZXJlIGEgY2VydGFpbiBzZXR0aW5nIG9yIGZlYXR1cmUgcmVsYXRlZCB0by4uLiBbVXNlciYjMzk7cyBmaWVsZCBvZiBleHBlcnRpc2UsIGluZmVycmVkLCBlLmcuLCB0cmFmZmljIHNoYXBpbmcsIFFvUywgcXVldWUgbWFuYWdlbWVudCwgZXRjLl0uLi4gaXMgZGVmaW5lZC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIHJlbGV2YW50IG9wdGlvbnMsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBvciBjb21tZW50cy4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgdGhpcyBjb21wb25lbnQgaXMgY29uZmlndXJlZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJIGFudGljaXBhdGUgdGhlcmUgd2lsbCBiZSBkZXRhaWxzIHJlZ2FyZGluZyBhbnkgcGFyYW1ldGVycyBvciBjb25zdHJhaW50cyBvbiB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGFwcGx5IGluIG15IHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTcwOlx0XHQgIENvbW1vbiBsaWJyYXJ5IGZvciBtYW5pcHVsYXRpbmcgbXFwcmlvIHF1ZXVlIGNvbmZpZ3VyYXRpb25zLlxuIDE3MTpcdFxuIDE3MjpcdGNvbmZpZyBORVRfU0NIX1RBUFJJT1xuIDE3MzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcJiMzNDtcbiAxNzQ6XHRcdHNlbGVjdCBORVRfU0NIX01RUFJJT19MSUJcbiAxNzU6XHRcdGhlbHBcbiAxNzY6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIFRpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgcGFja2V0XG4gMTc3Olx0XHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtLlxuIDE3ODpcdFxuIDE3OTpcdFx0ICBTZWUgdGhlIHRvcCBvZiBcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cbiAxODA6XHRcbiAxODE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDE4MjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RhcHJpby5cbiAxODM6XHRcbiAxODQ6XHRjb25maWcgTkVUX1NDSF9HUkVEXG4gMTg1Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb24gKEdSRUQpXCYjMzQ7XG4gMTg2Olx0XHRoZWxwXG4gMTg3Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb25cbiAxODg6XHRcdCAgKEdSRUQpIHBhY2tldCBzY2hlZHVsaW5nIGFsZ29yaXRobSBmb3Igc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlc1xuIDE4OTpcdFx0ICAoc2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3JlZC5jXHUwMDNlIGZvciBkZXRhaWxzIGFuZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4ODgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgYE5FVF9TQ0hfVEFQUklPYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYE5FVF9TQ0hfVEFQUklPYC4gVGhhdCYjMzk7cyB0aGUgY29uZmlnLCBzbyBsZXQmIzM5O3MgZGlnIGludG8gdGhlIGRldGFpbHMuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGtleSBzeW1ib2xzIGludm9sdmVkLiBGaXJzdCwgSSBzZWUgYHRhcHJpb19jYXRjaF91cGAsIGBhZHZhbmNlX3NjaGVkYCwgYW5kIGB0YXByaW9fbWluX2ludGVydmFsYCBhcmUgYWxsIHN0YXRpYy4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cg4oCTIGl0IGdpdmVzIG1lIGEgbmFycm93ZXIgZm9jdXMuCgpOb3csIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGFsbCBhY3R1YWxseSAqd29ya3MqLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AuIEkgbmVlZCB0byBpZGVudGlmeSB3aGF0IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGV4aXN0IGFuZCwgY3J1Y2lhbGx5LCB3aGljaCBmdW5jdGlvbnMgYXJlIHJlZ2lzdGVyZWQgYXMgcWRpc2Mgb3BlcmF0aW9ucy4gVGhhdCB3aWxsIHNob3cgbWUgaG93IHRoaXMgc2NoZWR1bGVyIGFjdHVhbGx5IGludGVyZmFjZXMgd2l0aCB0aGUgbmV0d29ya2luZyBzdGFjayBhbmQgaXRzIHN1cnJvdW5kaW5nIGNvbXBvbmVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNjAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHRhcHJpb19jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjEwLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNjExOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHRhcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYxMi1cdC5jbF9vcHNcdFx0PSBcdTAwMjZ0YXByaW9fY2xhc3Nfb3BzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzUxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgc2NoX3RhcHJpby5jYCBmb3IgRGVlcGVyIFVuZGVyc3RhbmRpbmcqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIGRlbHZlIGludG8gYG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNgIGFnYWluLiBJJiMzOTt2ZSBiZWVuIHdvcmtpbmcgd2l0aCB0cmFmZmljIHNoYXBpbmcgYW5kIFRpbWUtQXdhcmUgU2hhcGVycyAoVEFTKSBsYXRlbHksIGFuZCBJIHdhbnQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb2RlLiBTcGVjaWZpY2FsbHksIG15IG1lbnRhbCBjdXJzb3IgaXMgbGFuZGluZyBhcm91bmQgbGluZSAyNjExLiBJIHJlY2FsbCB0aGF0IGFyZWEgYmVpbmcgcGl2b3RhbCBmb3IgW2luc2VydCBhIGJyaWVmLCByZWxldmFudCB0ZWNobmljYWwgZGV0YWlsIGFib3V0IHRoZSBmdW5jdGlvbiBvZiBsaW5lIDI2MTEgLSBlLmcuLCAmIzM0O2hhbmRsaW5nIHRoZSBzY2hlZHVsaW5nIG9mIHRpbWUgd2luZG93cyYjMzQ7LCBvciAmIzM0O2hvdyB0aGUgcGFja2V0IGlzIGNsYXNzaWZpZWQgYW5kIHNjaGVkdWxlZCYjMzQ7XSwgYW5kIEkgbmVlZCB0byBzb2xpZGlmeSBteSBncmFzcCBvbiBob3cgdGhhdCBwaWVjZSBpbnRlZ3JhdGVzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGluc2lnaHRzIG9uIFttZW50aW9uIHNwZWNpZmljIGFzcGVjdHMgeW91JiMzOTtyZSBsb29raW5nIGZvciwgZS5nLiwgJiMzNDt0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUgdGltZXN0YW1waW5nIG1lY2hhbmlzbXMmIzM0Oywgb3IgJiMzNDt0aGUgbG9naWMgZm9yIHJlLWNhbGN1bGF0aW5nIHRoZSBzY2hlZHVsaW5nIHBsYW4gYmFzZWQgb24gZXZlbnRzJiMzNDtdLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBhcm91bmQgdGhhdCBsaW5lLCBsb29raW5nIGZvciB0aGUgcmVsYXRlZCBkYXRhIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9ucyB0aGF0IGFyZSB1c2VkLCBhbmQgdHJ5aW5nIHRvIGJ1aWxkIGEgcHJlY2lzZSBtZW50YWwgbW9kZWwgb2YgaXRzIGV4ZWN1dGlvbiBwYXRoLiBJJiMzOTttIGV4cGVjdGluZyB0byByZWZpbmUgbXkgZXhpc3RpbmcgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUgVGltZS1Bd2FyZSBTaGFwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjYwMDpcdFxuMjYwMTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHRhcHJpb19jbGFzc19vcHMgPSB7XG4yNjAyOlx0XHQuZ3JhZnRcdFx0PSB0YXByaW9fZ3JhZnQsXG4yNjAzOlx0XHQubGVhZlx0XHQ9IHRhcHJpb19sZWFmLFxuMjYwNDpcdFx0LmZpbmRcdFx0PSB0YXByaW9fZmluZCxcbjI2MDU6XHRcdC53YWxrXHRcdD0gdGFwcmlvX3dhbGssXG4yNjA2Olx0XHQuZHVtcFx0XHQ9IHRhcHJpb19kdW1wX2NsYXNzLFxuMjYwNzpcdFx0LmR1bXBfc3RhdHNcdD0gdGFwcmlvX2R1bXBfY2xhc3Nfc3RhdHMsXG4yNjA4Olx0XHQuc2VsZWN0X3F1ZXVlXHQ9IHRhcHJpb19zZWxlY3RfcXVldWUsXG4yNjA5Olx0fTtcbjI2MTA6XHRcbjI2MTE6XHRzdGF0aWMgc3RydWN0IFFkaXNjX29wcyB0YXByaW9fcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4yNjEyOlx0XHQuY2xfb3BzXHRcdD0gXHUwMDI2dGFwcmlvX2NsYXNzX29wcyxcbjI2MTM6XHRcdC5pZFx0XHQ9IFwmIzM0O3RhcHJpb1wmIzM0OyxcbjI2MTQ6XHRcdC5wcml2X3NpemVcdD0gc2l6ZW9mKHN0cnVjdCB0YXByaW9fc2NoZWQpLFxuMjYxNTpcdFx0LmluaXRcdFx0PSB0YXByaW9faW5pdCxcbjI2MTY6XHRcdC5jaGFuZ2VcdFx0PSB0YXByaW9fY2hhbmdlLFxuMjYxNzpcdFx0LmRlc3Ryb3lcdD0gdGFwcmlvX2Rlc3Ryb3ksXG4yNjE4Olx0XHQucmVzZXRcdFx0PSB0YXByaW9fcmVzZXQsXG4yNjE5Olx0XHQuYXR0YWNoXHRcdD0gdGFwcmlvX2F0dGFjaCxcbjI2MjA6XHRcdC5wZWVrXHRcdD0gdGFwcmlvX3BlZWssXG4yNjIxOlx0XHQuZGVxdWV1ZVx0PSB0YXByaW9fZGVxdWV1ZSxcbjI2MjI6XHRcdC5lbnF1ZXVlXHQ9IHRhcHJpb19lbnF1ZXVlLFxuMjYyMzpcdFx0LmR1bXBcdFx0PSB0YXByaW9fZHVtcCxcbjI2MjQ6XHRcdC5kdW1wX3N0YXRzXHQ9IHRhcHJpb19kdW1wX3N0YXRzLFxuMjYyNTpcdFx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4yNjI2Olx0fTtcbjI2Mjc6XHRNT0RVTEVfQUxJQVNfTkVUX1NDSChcJiMzNDt0YXByaW9cJiMzNDspO1xuMjYyODpcdFxuMjYyOTpcdHN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgdGFwcmlvX2RldmljZV9ub3RpZmllciA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE5NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBUaGlzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIGZ1bmN0aW9ucyBgdGFwcmlvX2luaXRgLCBgdGFwcmlvX2NoYW5nZWAsIGB0YXByaW9fZW5xdWV1ZWAsIGFuZCBgdGFwcmlvX2RlcXVldWVgIGp1bXAgb3V0LiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLCBhbmQgSSBuZWVkIHRvIGNhcmVmdWxseSBldmFsdWF0ZSBob3cgdGhleSYjMzk7cmUgYmVpbmcgdG91Y2hlZC4gVGhlIGNvcmUgbW9kaWZpY2F0aW9uLCB0aG91Z2gsIHNlZW1zIHRvIGJlIGluIGBhZHZhbmNlX3NjaGVkYCwgd2hpY2gsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgaXMgdGhlIGhydGltZXIgY2FsbGJhY2suIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBwYXRoLCBzbyBhbnkgY2hhbmdlIHRoZXJlIHdhcnJhbnRzIGV4dHJhIHNjcnV0aW55LiBUaGUgZmFjdCB0aGF0IGl0IGFsc28gdG91Y2hlcyBgZmlsbF9zY2hlZF9lbnRyeWAgYW5kIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgLCBib3RoIGNhbGxlZCBmcm9tIGB0YXByaW9fY2hhbmdlYCwgaXMgc2lnbmlmaWNhbnQuIFNvLCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyBnb2luZyBvbiwgbXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byBgYWR2YW5jZV9zY2hlZGAgYW5kIGB0YXByaW9fY2hhbmdlYCBzcGVjaWZpY2FsbHkuIFRob3NlIGFyZSB0aGUgcG9pbnRzIG9mIGdyZWF0ZXN0IGNvbmNlcm4gcmlnaHQgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthZHZhbmNlX3NjaGVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTk0ND1zdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3Blcixcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTk4Mi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6OTgzOnN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTg0LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4ODc9c3RhdGljIGludCB0YXByaW9fY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDIxLVx0ICAgICFocnRpbWVyX2FjdGl2ZShcdTAwMjZxLVx1MDAzZWFkdmFuY2VfdGltZXIpKSB7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIwMjI6XHRcdGhydGltZXJfc2V0dXAoXHUwMDI2cS1cdTAwM2VhZHZhbmNlX3RpbWVyLCBhZHZhbmNlX3NjaGVkLCBxLVx1MDAzZWNsb2NraWQsIEhSVElNRVJfTU9ERV9BQlMpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDIzLVx0fVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjA0MC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjA0MTpcdFx0LyogTm90IGdvaW5nIHRvIHJhY2UgYWdhaW5zdCBhZHZhbmNlX3NjaGVkKCksIGJ1dCBzdGlsbCAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDQyLVx0XHRhZG1pbiA9IHJjdV9yZXBsYWNlX3BvaW50ZXIocS1cdTAwM2VhZG1pbl9zY2hlZCwgbmV3X2FkbWluLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjA0OC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjA0OTpcdFx0LyogUHJvdGVjdHMgYWdhaW5zdCBhZHZhbmNlX3NjaGVkKCkgKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjA1MC1cdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2cS1cdTAwM2VjdXJyZW50X2VudHJ5X2xvY2ssIGZsYWdzKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTIxMzY9c3RhdGljIGludCB0YXByaW9faW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE0NC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjE0NTpcdGhydGltZXJfc2V0dXAoXHUwMDI2cS1cdTAwM2VhZHZhbmNlX3RpbWVyLCBhZHZhbmNlX3NjaGVkLCBDTE9DS19UQUksIEhSVElNRVJfTU9ERV9BQlMpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTQ2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDU2CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMjMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVEFQUklPIFNjaGVkdWxlciBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgVEFQUklPIHNjaGVkdWxlciBpbXBsZW1lbnRhdGlvbi4gRnJvbSB3aGF0IEkgdW5kZXJzdGFuZCwgYHRhcHJpb19jaGFuZ2VgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIGZvciBwYXJzaW5nIHRoZSBzY2hlZHVsZSBhbmQgc2V0dGluZyB1cCB0aGUgdGltZXIuIFRoZW4sIGBhZHZhbmNlX3NjaGVkYCBpcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCYjMzk7cyB0cmlnZ2VyZWQgYnkgdGhlIHRpbWVyLCBhbmQgaXQgdXNlcyBgdGFwcmlvX2NhdGNoX3VwYCB0byBoYW5kbGUgdGhlIGFjdHVhbCBzY2hlZHVsaW5nIGxvZ2ljLiBJIHdhbnQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzLCBhbmQgYmFzZWQgb24gdGhlIHByb21wdCYjMzk7cyBpbnN0cnVjdGlvbiB0byBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBmdW5jdGlvbnMsIGl0IGxvb2tzIGxpa2UgYHRhcHJpb19jaGFuZ2VgLCBvciBwb3NzaWJseSBgdGFwcmlvX2VucXVldWVgIG9yIGB0YXByaW9fZGVxdWV1ZWAgYXJlIHN0cm9uZyBjYW5kaWRhdGVzIGZvciBpbmNsdXNpb24uIEhvd2V2ZXIsIHRoZSBwcm9tcHQgZW1waGFzaXplcyB0aGF0IHRoZSBtYWluIHBhcnNpbmcgaXMgZG9uZSBpbiBgdGFwcmlvX2NoYW5nZWAsIHNvIHRoYXQgaXMgcHJvYmFibHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuCgpOb3csIHRoZSBjYXZlYXQgaXMgdGhhdCBgYWR2YW5jZV9zY2hlZGAgaXMgc3RhdGljLCB3aGljaCBwcmVzZW50cyBhIGJpdCBvZiBhIGNoYWxsZW5nZSBpbiB0ZXJtcyBvZiB1c2luZyBpdCBhcyBhIGRpcmVjdCBmb2N1cy4gQnV0LCBzaW5jZSBpdCYjMzk7cyBhbiBocnRpbWVyIGNhbGxiYWNrLCBpdCBsaWtlbHkgKmlzbiYjMzk7dCogaW5saW5lZCwgc28gaXQmIzM5O3MgcHJvYmFibHkgc3RpbGwgcmVsZXZhbnQuIEhtbSwgYWNjb3JkaW5nIHRvIHRoZSBwcm9tcHQsIEkgc2hvdWxkIGZvY3VzIG9uIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIGxlYW5zIHRvd2FyZHMgYHRhcHJpb19jaGFuZ2VgIGJlaW5nIGEgZ29vZCBjaG9pY2UuCgpIb2xkIG9uLCBsZXQgbWUgcXVpY2tseSB2ZXJpZnkgaWYgYHRhcHJpb19jaGFuZ2VgIGlzIHN0YXRpYy4uLiBPa2F5LCBpdCBpcyBzdGF0aWMuICpEYXJuKi4gV2FpdCBhIG1pbnV0ZS4uLiBsb29raW5nIGF0IGFsbCB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGluIGBzY2hfdGFwcmlvLmNgLCB0aGV5IGFsbCBzZWVtIHRvIGJlIHN0YXRpYy4gT2theSwgbGV0IG1lIHF1aWNrbHkgc2NhbiB0aGUgc291cmNlIHRvIHNlZSBpZiB0aGVyZSBhcmUgKmFueSogbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWjAtOV9dJiM0MzsgW2EtekEtWjAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMzQtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjM1OnN0YXRpYyBMSVNUX0hFQUQodGFwcmlvX2xpc3QpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0zNi1zdGF0aWMgc3RydWN0IHN0YXRpY19rZXlfZmFsc2UgdGFwcmlvX2hhdmVfYnJva2VuX21xcHJpbztcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE0NzE9RVhQT1JUX1NZTUJPTF9HUEwodGFwcmlvX29mZmxvYWRfZ2V0KTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ3Mi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQ3Mzp2b2lkIHRhcHJpb19vZmZsb2FkX2ZyZWUoc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKm9mZmxvYWQpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODkwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVEFQUklPIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBwcm9tcHQgZW1waGFzaXplcyBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhlIHRoaW5nIGlzLCBgdGFwcmlvX29mZmxvYWRfZnJlZWAgaXMgaW5kZWVkIG5vbi1zdGF0aWMsIGJ1dCBpdCByZWFsbHkgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgY29yZSBjaGFuZ2UgaGVyZS4gSSBuZWVkIHRvIGZvY3VzIG9uIHdoYXQmIzM5O3MgcmVsZXZhbnQgdG8gdGhlIHByb21wdC4KClRoZSBpbXBvcnRhbnQgcG9pbnQgaXMgYHRhcHJpb19jaGFuZ2VgLiBJIGhhdmUgdG8gY29uZmlybSB0aGF0IGl0IGZpdHMgdGhlIGJpbGwuIFNpbmNlIGl0JiMzOTtzIHJlZ2lzdGVyZWQgaW4gYHRhcHJpb19xZGlzY19vcHNgLCB0aGF0IGltcGxpZXMgdGhhdCBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbiBzb21ld2hlcmUsIHJpZ2h0PyBJZiB0aGF0JiMzOTtzIHRoZSBjYXNlLCB0aGUgY29tcGlsZXIgd29uJiMzOTt0IGJlIGFibGUgdG8gaW5saW5lIGl0LCBhbmQgaXQgd2lsbCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFNvLCBiYXNlZCBvbiB0aGF0LCBgdGFwcmlvX2NoYW5nZWAgc2VlbXMgcGVyZmVjdGx5IGFjY2VwdGFibGUgYWNjb3JkaW5nIHRvIHRoaXMgZ3VpZGFuY2UuIE5vIGFjdGlvbiBpcyByZXF1aXJlZCB0aGVyZS4KCk5vdywgSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiBgTkVUX1NDSF9UQVBSSU9gIGhhcyBhbnkgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gQmV0dGVyIHRvIGNvbmZpcm0gdGhhdCBlYXJseSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTMzND1jb25maWcgTkVUX1NDSF9GUV9QSUVcbm5ldC9zY2hlZC9LY29uZmlnOjMzNTpcdGRlcGVuZHMgb24gTkVUX1NDSF9QSUVcbm5ldC9zY2hlZC9LY29uZmlnLTMzNi1cdHRyaXN0YXRlIFwmIzM0O0Zsb3cgUXVldWUgUHJvcG9ydGlvbmFsIEludGVncmFsIGNvbnRyb2xsZXIgRW5oYW5jZWQgKEZRLVBJRSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz0zNDc9Y29uZmlnIE5FVF9TQ0hfSU5HUkVTU1xubmV0L3NjaGVkL0tjb25maWctMzQ4LVx0dHJpc3RhdGUgXCYjMzQ7SW5ncmVzcy9jbGFzc2lmaWVyLWFjdGlvbiBRZGlzY1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6MzQ5Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctMzUwLVx0c2VsZWN0IE5FVF9YR1JFU1Ncbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz00MDY9Y29uZmlnIE5FVF9TQ0hfQlBGXG5uZXQvc2NoZWQvS2NvbmZpZy00MDctXHRib29sIFwmIzM0O0JQRi1iYXNlZCBRZGlzY1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NDA4Olx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTCBcdTAwMjZcdTAwMjYgQlBGX0pJVCBcdTAwMjZcdTAwMjYgREVCVUdfSU5GT19CVEZcbm5ldC9zY2hlZC9LY29uZmlnLTQwOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz00OTQ9Y29uZmlnIE5FVF9DTFNfUk9VVEU0XG5uZXQvc2NoZWQvS2NvbmZpZy00OTUtXHR0cmlzdGF0ZSBcJiMzNDtSb3V0aW5nIGRlY2lzaW9uIChST1VURSlcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjQ5NjpcdGRlcGVuZHMgb24gSU5FVFxubmV0L3NjaGVkL0tjb25maWctNDk3LVx0c2VsZWN0IElQX1JPVVRFX0NMQVNTSURcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01MjY9Y29uZmlnIENMU19VMzJfUEVSRlxubmV0L3NjaGVkL0tjb25maWctNTI3LVx0Ym9vbCBcJiMzNDtQZXJmb3JtYW5jZSBjb3VudGVycyBzdXBwb3J0XCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo1Mjg6XHRkZXBlbmRzIG9uIE5FVF9DTFNfVTMyXG5uZXQvc2NoZWQvS2NvbmZpZy01MjktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTMzPWNvbmZpZyBDTFNfVTMyX01BUktcbm5ldC9zY2hlZC9LY29uZmlnLTUzNC1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIG1hcmtzIHN1cHBvcnRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjUzNTpcdGRlcGVuZHMgb24gTkVUX0NMU19VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTUzNi1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01NTA9Y29uZmlnIE5FVF9DTFNfQ0dST1VQXG4tLVxubmV0L3NjaGVkL0tjb25maWctNTUzLVx0c2VsZWN0IENHUk9VUF9ORVRfQ0xBU1NJRFxubmV0L3NjaGVkL0tjb25maWc6NTU0Olx0ZGVwZW5kcyBvbiBDR1JPVVBTXG5uZXQvc2NoZWQvS2NvbmZpZy01NTUtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjA1PWNvbmZpZyBORVRfRU1BVENIX1NUQUNLXG5uZXQvc2NoZWQvS2NvbmZpZy02MDYtXHRpbnQgXCYjMzQ7U3RhY2sgc2l6ZVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjA3Olx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXG5uZXQvc2NoZWQvS2NvbmZpZy02MDgtXHRkZWZhdWx0IFwmIzM0OzMyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjE1PWNvbmZpZyBORVRfRU1BVENIX0NNUFxubmV0L3NjaGVkL0tjb25maWctNjE2LVx0dHJpc3RhdGUgXCYjMzQ7U2ltcGxlIHBhY2tldCBkYXRhIGNvbXBhcmlzb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjYxNzpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxubmV0L3NjaGVkL0tjb25maWctNjE4LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTYyNT1jb25maWcgTkVUX0VNQVRDSF9OQllURVxubmV0L3NjaGVkL0tjb25maWctNjI2LVx0dHJpc3RhdGUgXCYjMzQ7TXVsdGkgYnl0ZSBjb21wYXJpc29uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2Mjc6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcbm5ldC9zY2hlZC9LY29uZmlnLTYyOC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02MzU9Y29uZmlnIE5FVF9FTUFUQ0hfVTMyXG5uZXQvc2NoZWQvS2NvbmZpZy02MzYtXHR0cmlzdGF0ZSBcJiMzNDtVMzIga2V5XCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2Mzc6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcbm5ldC9zY2hlZC9LY29uZmlnLTYzOC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02NDU9Y29uZmlnIE5FVF9FTUFUQ0hfTUVUQVxubmV0L3NjaGVkL0tjb25maWctNjQ2LVx0dHJpc3RhdGUgXCYjMzQ7TWV0YWRhdGFcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjY0NzpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxubmV0L3NjaGVkL0tjb25maWctNjQ4LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTY1Nj1jb25maWcgTkVUX0VNQVRDSF9URVhUXG5uZXQvc2NoZWQvS2NvbmZpZy02NTctXHR0cmlzdGF0ZSBcJiMzNDtUZXh0c2VhcmNoXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2NTg6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcbm5ldC9zY2hlZC9LY29uZmlnLTY1OS1cdHNlbGVjdCBURVhUU0VBUkNIXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjcwPWNvbmZpZyBORVRfRU1BVENIX0NBTklEXG5uZXQvc2NoZWQvS2NvbmZpZy02NzEtXHR0cmlzdGF0ZSBcJiMzNDtDQU4gSWRlbnRpZmllclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjcyOlx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFx1MDAyNlx1MDAyNiAoQ0FOPXkgfHwgQ0FOPW0pXG5uZXQvc2NoZWQvS2NvbmZpZy02NzMtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjgwPWNvbmZpZyBORVRfRU1BVENIX0lQU0VUXG5uZXQvc2NoZWQvS2NvbmZpZy02ODEtXHR0cmlzdGF0ZSBcJiMzNDtJUHNldFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjgyOlx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFx1MDAyNlx1MDAyNiBJUF9TRVRcbm5ldC9zY2hlZC9LY29uZmlnLTY4My1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXG5uZXQvc2NoZWQvS2NvbmZpZy02OTEtXHR0cmlzdGF0ZSBcJiMzNDtJUHRhYmxlcyBNYXRjaGVzXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2OTI6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0ggXHUwMDI2XHUwMDI2IE5FVEZJTFRFUiBcdTAwMjZcdTAwMjYgTkVURklMVEVSX1hUQUJMRVNcbm5ldC9zY2hlZC9LY29uZmlnLTY5My1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03MTU9Y29uZmlnIE5FVF9BQ1RfUE9MSUNFXG5uZXQvc2NoZWQvS2NvbmZpZy03MTYtXHR0cmlzdGF0ZSBcJiMzNDtUcmFmZmljIFBvbGljaW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3MTc6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MTgtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzI2PWNvbmZpZyBORVRfQUNUX0dBQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcyNy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgYWN0aW9uc1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzI4Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzI5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTczNj1jb25maWcgR0FDVF9QUk9CXG5uZXQvc2NoZWQvS2NvbmZpZy03MzctXHRib29sIFwmIzM0O1Byb2JhYmlsaXR5IHN1cHBvcnRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjczODpcdGRlcGVuZHMgb24gTkVUX0FDVF9HQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MzktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzQyPWNvbmZpZyBORVRfQUNUX01JUlJFRFxubmV0L3NjaGVkL0tjb25maWctNzQzLVx0dHJpc3RhdGUgXCYjMzQ7UmVkaXJlY3RpbmcgYW5kIE1pcnJvcmluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzQ0Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzQ1LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc1Mj1jb25maWcgTkVUX0FDVF9TQU1QTEVcbm5ldC9zY2hlZC9LY29uZmlnLTc1My1cdHRyaXN0YXRlIFwmIzM0O1RyYWZmaWMgU2FtcGxpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc1NDpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTc1NS1cdHNlbGVjdCBQU0FNUExFXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzY0PWNvbmZpZyBORVRfQUNUX05BVFxubmV0L3NjaGVkL0tjb25maWctNzY1LVx0dHJpc3RhdGUgXCYjMzQ7U3RhdGVsZXNzIE5BVFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzY2Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzY3LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc3ND1jb25maWcgTkVUX0FDVF9QRURJVFxubmV0L3NjaGVkL0tjb25maWctNzc1LVx0dHJpc3RhdGUgXCYjMzQ7UGFja2V0IEVkaXRpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc3NjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTc3Ny1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03ODM9Y29uZmlnIE5FVF9BQ1RfU0lNUFxubmV0L3NjaGVkL0tjb25maWctNzg0LVx0dHJpc3RhdGUgXCYjMzQ7U2ltcGxlIEV4YW1wbGUgKERlYnVnKVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6Nzg1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzg2LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc5Nz1jb25maWcgTkVUX0FDVF9TS0JFRElUXG5uZXQvc2NoZWQvS2NvbmZpZy03OTgtXHR0cmlzdGF0ZSBcJiMzNDtTS0IgRWRpdGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6Nzk5Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODAwLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTgwOD1jb25maWcgTkVUX0FDVF9DU1VNXG5uZXQvc2NoZWQvS2NvbmZpZy04MDktXHR0cmlzdGF0ZSBcJiMzNDtDaGVja3N1bSBVcGRhdGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODEwOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgSU5FVFxubmV0L3NjaGVkL0tjb25maWctODExLVx0c2VsZWN0IE5FVF9DUkMzMkNcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04MTk9Y29uZmlnIE5FVF9BQ1RfTVBMU1xubmV0L3NjaGVkL0tjb25maWctODIwLVx0dHJpc3RhdGUgXCYjMzQ7TVBMUyBtYW5pcHVsYXRpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjgyMTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTgyMi1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04MzA9Y29uZmlnIE5FVF9BQ1RfVkxBTlxubmV0L3NjaGVkL0tjb25maWctODMxLVx0dHJpc3RhdGUgXCYjMzQ7VmxhbiBtYW5pcHVsYXRpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjgzMjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTgzMy1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04NDE9Y29uZmlnIE5FVF9BQ1RfQlBGXG5uZXQvc2NoZWQvS2NvbmZpZy04NDItXHR0cmlzdGF0ZSBcJiMzNDtCUEYgYmFzZWQgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4NDM6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04NDQtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODUzPWNvbmZpZyBORVRfQUNUX0NPTk5NQVJLXG5uZXQvc2NoZWQvS2NvbmZpZy04NTQtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIFJldHJpZXZlclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODU1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgTkVURklMVEVSXG5uZXQvc2NoZWQvS2NvbmZpZzo4NTY6XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX01BUktcbm5ldC9zY2hlZC9LY29uZmlnLTg1Ny1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04NjU9Y29uZmlnIE5FVF9BQ1RfQ1RJTkZPXG5uZXQvc2NoZWQvS2NvbmZpZy04NjYtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIEFjdGlvbnNcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg2NzpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxubmV0L3NjaGVkL0tjb25maWc6ODY4Olx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDS19NQVJLXG5uZXQvc2NoZWQvS2NvbmZpZy04NjktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODgyPWNvbmZpZyBORVRfQUNUX1NLQk1PRFxubmV0L3NjaGVkL0tjb25maWctODgzLVx0dHJpc3RhdGUgXCYjMzQ7c2tiIGRhdGEgbW9kaWZpY2F0aW9uIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODg0Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODg1LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg5Mz1jb25maWcgTkVUX0FDVF9JRkVcbm5ldC9zY2hlZC9LY29uZmlnLTg5NC1cdHRyaXN0YXRlIFwmIzM0O0ludGVyLUZFIGFjdGlvbiBiYXNlZCBvbiBJRVRGIEZvckNFUyBJbnRlckZFIExGQlwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODk1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODk2LVx0c2VsZWN0IE5FVF9JRkVcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05MDY9Y29uZmlnIE5FVF9BQ1RfVFVOTkVMX0tFWVxubmV0L3NjaGVkL0tjb25maWctOTA3LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdHVubmVsIG1ldGFkYXRhIG1hbmlwdWxhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTA4Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctOTA5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTkxNz1jb25maWcgTkVUX0FDVF9DVFxubmV0L3NjaGVkL0tjb25maWctOTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y29ubmVjdGlvbiB0cmFja2luZyB0YyBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjkxOTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgKCFORl9OQVQgfHwgTkZfTkFUKSBcdTAwMjZcdTAwMjYgTkZfRkxPV19UQUJMRVxubmV0L3NjaGVkL0tjb25maWctOTIwLVx0c2VsZWN0IE5GX0NPTk5UUkFDS19PVlNcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05MzA9Y29uZmlnIE5FVF9BQ1RfR0FURVxubmV0L3NjaGVkL0tjb25maWctOTMxLVx0dHJpc3RhdGUgXCYjMzQ7RnJhbWUgZ2F0ZSBlbnRyeSBsaXN0IGNvbnRyb2wgdGMgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5MzI6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy05MzMtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9OTQyPWNvbmZpZyBORVRfSUZFX1NLQk1BUktcbm5ldC9zY2hlZC9LY29uZmlnLTk0My1cdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgdG8gZW5jb2RpbmcgZGVjb2Rpbmcgc2tiIG1hcmsgb24gSUZFIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTQ0Olx0ZGVwZW5kcyBvbiBORVRfQUNUX0lGRVxubmV0L3NjaGVkL0tjb25maWctOTQ1LVxubmV0L3NjaGVkL0tjb25maWc9OTQ2PWNvbmZpZyBORVRfSUZFX1NLQlBSSU9cbm5ldC9zY2hlZC9LY29uZmlnLTk0Ny1cdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgdG8gZW5jb2RpbmcgZGVjb2Rpbmcgc2tiIHByaW8gb24gSUZFIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTQ4Olx0ZGVwZW5kcyBvbiBORVRfQUNUX0lGRVxubmV0L3NjaGVkL0tjb25maWctOTQ5LVxubmV0L3NjaGVkL0tjb25maWc9OTUwPWNvbmZpZyBORVRfSUZFX1NLQlRDSU5ERVhcbm5ldC9zY2hlZC9LY29uZmlnLTk1MS1cdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgdG8gZW5jb2RpbmcgZGVjb2Rpbmcgc2tiIHRjaW5kZXggb24gSUZFIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTUyOlx0ZGVwZW5kcyBvbiBORVRfQUNUX0lGRVxubmV0L3NjaGVkL0tjb25maWctOTUzLVxubmV0L3NjaGVkL0tjb25maWc9OTU0PWNvbmZpZyBORVRfVENfU0tCX0VYVFxubmV0L3NjaGVkL0tjb25maWctOTU1LVx0Ym9vbCBcJiMzNDtUQyByZWNpcmN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjk1NjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTk1Ny1cdHNlbGVjdCBTS0JfRVhURU5TSU9OU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjUxNQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBUQVBSSU8mIzM5O3MgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIEkmIzM5O20gbG9va2luZyBhdCBgTkVUX1NDSF9UQVBSSU9gIGluIGBuZXQvc2NoZWQvS2NvbmZpZ2AuIEZpcnN0IGdsYW5jZSwgYW5kIEkgZG9uJiMzOTt0IHNlZSBhbnkgZXhwbGljaXQgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMgbGlzdGVkIGRpcmVjdGx5IGZvciBpdC4gVGhhdCYjMzk7cyBhIGJpdCB1bnVzdWFsLCBidXQgbm90IG5lY2Vzc2FyaWx5IGEgcmVkIGZsYWcuIEJlZm9yZSBJIGp1bXAgdG8gYW55IGNvbmNsdXNpb25zLCBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgaWYgaXQgcmVsaWVzLCBldmVuIGluZGlyZWN0bHksIG9uIGEgYnJvYWRlciBzY2hlZHVsaW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGUgbW9zdCBsaWtlbHkgY2FuZGlkYXRlIHRvIGJlIGEgcGFyZW50LCBpbiB0aGlzIGNvbnRleHQsIGlzIGBORVRfU0NIRURgLiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbiB0aGVyZSBpcyBzb21lIGRlcGVuZGVuY3kuIExldCBtZSB2ZXJpZnkgdGhhdCBleHBsaWNpdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW51Y29uZmlnIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnLTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXG5uZXQvc2NoZWQvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MDcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCYjMzk7cyBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBzY2hlZHVsaW5nIGNvbmZpZ3VyYXRpb24uIEkga25vdyBgTkVUX1NDSEVEYCBpcyB0aGUgcHJpbWFyeSBtZW51Y29uZmlnIEkgbmVlZCB0byBiZSBsb29raW5nIGF0LiBOb3csIHRoZSBjcnVjaWFsIHBhcnQgaXMgY2hlY2tpbmcgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBORVRfU0NIX1RBUFJJT2AgYW5kIGBORVRfU0NIRURgLiBFc3NlbnRpYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgYE5FVF9TQ0hfVEFQUklPYCBpcyBjb25kaXRpb25hbGx5IGluY2x1ZGVkLCBhbmQgd2hhdCB0aGUgYGlmYCBzdGF0ZW1lbnQgc3RhdGVzLiBLbm93aW5nIHdoZXRoZXIgaXQmIzM5O3MgZW5hYmxlZCBvbmx5IGlmIGBORVRfU0NIRURgIGlzIGVuYWJsZWQgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgc2NoZWR1bGluZyBoaWVyYXJjaHkgYW5kIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhpcyBwYXJ0IG9mIHRoZSBrZXJuZWwuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBwYXJzZSB0aGF0IGNvbmRpdGlvbmFsIHN0YXRlbWVudCBub3cgdG8gbWFrZSBzdXJlIEkmIzM5O20gY2xlYXIgb24gdGhlIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lmIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRfU0NIRURcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy00My1cbm5ldC9zY2hlZC9LY29uZmlnOjQ0OmlmIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctNDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTIzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBLZXJuZWwgU2NoZWR1bGVyIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBgTkVUX1NDSEVEYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCBiZWZvcmUgSSBnbyB0b28gZmFyIGRvd24gdGhpcyBwYXRoLCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIGZvciB0aGUgc2FrZSBvZiB0aG9yb3VnaG5lc3MsIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiByZWxhdGVkIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgdGhpbmtpbmcgYWJvdXQgYE5FVF9TQ0hfVEFQUklPYC4gSSYjMzk7bGwgcXVpY2tseSByZS1leGFtaW5lIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24sIGp1c3QgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbC4gR290dGEgYmUgbWV0aWN1bG91cyB3aGVuIGRlYWxpbmcgd2l0aCBuZXR3b3JrIHNjaGVkdWxlcnMg4oCTIGEgbWlzc2VkIGRlcGVuZGVuY3kgY2FuIGxlYWQgdG8gc29tZSB0cnVseSBiaXphcnJlIGFuZCBmcnVzdHJhdGluZyBkZWJ1Z2dpbmcgc2Vzc2lvbnMgbGF0ZXIgb24hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2NTpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX2V0Zi5cbiAxNjY6XHRcbiAxNjc6XHRjb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXG4gMTY4Olx0XHR0cmlzdGF0ZVxuIDE2OTpcdFx0aGVscFxuIDE3MDpcdFx0ICBDb21tb24gbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIG1xcHJpbyBxdWV1ZSBjb25maWd1cmF0aW9ucy5cbiAxNzE6XHRcbiAxNzI6XHRjb25maWcgTkVUX1NDSF9UQVBSSU9cbiAxNzM6XHRcdHRyaXN0YXRlIFwmIzM0O1RpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXCYjMzQ7XG4gMTc0Olx0XHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXG4gMTc1Olx0XHRoZWxwXG4gMTc2Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxuIDE3NzpcdFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cbiAxNzg6XHRcbiAxNzk6XHRcdCAgU2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXG4gMTgwOlx0XG4gMTgxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAxODI6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF90YXByaW8uXG4gMTgzOlx0XG4gMTg0Olx0Y29uZmlnIE5FVF9TQ0hfR1JFRFxuIDE4NTpcdFx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVwmIzM0O1xuIDE4NjpcdFx0aGVscFxuIDE4NzpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgR2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uXG4gMTg4Olx0XHQgIChHUkVEKSBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0gZm9yIHNvbWUgb2YgeW91ciBuZXR3b3JrIGRldmljZXNcbiAxODk6XHRcdCAgKHNlZSB0aGUgdG9wIG9mIFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF9yZWQuY1x1MDAzZSBmb3IgZGV0YWlscyBhbmRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3MjgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4KCioqRGl2aW5nIGludG8gdGhlIENvbmZpZ3VyYXRpb24gU3BhY2UqKgoKQWxyaWdodCwgc28gdGhlIHN5c3RlbSBoYXMgY2hvc2VuIGBORVRfU0NIX01RUFJJT19MSUJgLiBSaWdodCBhd2F5LCB0aGF0IGltcGxpZXMgdGhhdCBgTkVUX1NDSEVEYCBhbmQgYE5FVF9TQ0hfVEFQUklPYCBhcmUgYWxzbyBpbiB0aGUgcGljdHVyZSwgYXMgcHJlcmVxdWlzaXRlcyBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgc2VsZWN0aW9uLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBsb29rIGF0IGB0YXByaW9fY2hhbmdlYC4gSXQmIzM5O3MgYSBjb21tb24gcGxhY2UgdG8gZmluZCBpbnRlcmVzdGluZyBzeW1ib2xzLCBhbmQgSSYjMzk7bSBob3BpbmcgSSBjYW4gbG9jYXRlIHNvbWUgZnVydGhlciAmIzM0O2ZvY3VzIHN5bWJvbHMmIzM0OyBhcm91bmQgdGhpcyBmdW5jdGlvbmFsaXR5LiBIb3BlZnVsbHksIEkgY2FuIGZpbmQgc29tZXRoaW5nIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4Njc9c3RhdGljIGludCB0YXByaW9fbXFwcmlvX2NtcChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg4Ni1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTg4NzpzdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg4OC1cdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjEzNj1zdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTQ5LVx0LyogV2Ugb25seSBzdXBwb3J0IHN0YXRpYyBjbG9ja2lkcy4gVXNlIGFuIGludmFsaWQgdmFsdWUgYXMgZGVmYXVsdFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTUwOlx0ICogYW5kIGdldCB0aGUgdmFsaWQgb25lIG9uIHRhcHJpb19jaGFuZ2UoKS5cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE1MS1cdCAqL1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE5Ny1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjE5ODpcdHJldHVybiB0YXByaW9fY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTk5LX1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI2MTE9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYxNS1cdC5pbml0XHRcdD0gdGFwcmlvX2luaXQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI2MTY6XHQuY2hhbmdlXHRcdD0gdGFwcmlvX2NoYW5nZSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYxNy1cdC5kZXN0cm95XHQ9IHRhcHJpb19kZXN0cm95LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQyNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkNvbnNpZGVyaW5nIFRBUFJJTyBGdW5jdGlvbmFsaXR5KioKCkFscmlnaHQsIHNvIGB0YXByaW9fY2hhbmdlYCwgdGhhdCYjMzk7cyBhIHNvbGlkIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEl0IGhhbmRsZXMgdGhlIGR5bmFtaWMgYWRqdXN0bWVudHMsIHRoZSBjb3JlIG9mIHdoYXQgd2UmIzM5O3JlIGFpbWluZyBmb3IuIEJ1dCBJJiMzOTttIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IHRoZSBwZXJpcGhlcnksIHRoZSBzdXBwb3J0aW5nIGVsZW1lbnRzLiBXaGVyZSBkbyBgdGFwcmlvX2VucXVldWVgIGFuZCBgdGFwcmlvX2RlcXVldWVgIGZpdCBpbnRvIHRoZSBncmFuZCBzY2hlbWUgb2YgdGhpbmdzPyBBcmUgdGhleSBlcXVhbGx5IHdlbGwtZGVmaW5lZCBhbmQgdGhvdWdodC1vdXQ/IEFyZSB3ZSBvdmVybG9va2luZyBwb3RlbnRpYWwgaW5lZmZpY2llbmNpZXMgb3IgY29tcGxleGl0aWVzIGluIGhvdyB0aG9zZSBhcmUgaW1wbGVtZW50ZWQgb3IgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB0YXByaW9fY2hhbmdlYD8gSSBuZWVkIHRvIGdpdmUgdGhlbSBzb21lIHNlcmlvdXMgc2NydXRpbnkuIEdvdHRhIG1ha2Ugc3VyZSB3ZSYjMzk7dmUgZ290IGEgY29oZXJlbnQgYW5kIGVmZmljaWVudCBUQVBSSU8gc3lzdGVtLCBmcm9tIGJlZ2lubmluZyB0byBlbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RhcHJpb19lbnF1ZXVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTU2MD1zdGF0aWMgYm9vbCB0YXByaW9fc2tiX2V4Y2VlZHNfcXVldWVfbWF4X3NkdShzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU4MC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NTgxOnN0YXRpYyBpbnQgdGFwcmlvX2VucXVldWVfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01ODItXHRcdFx0ICAgICAgc3RydWN0IFFkaXNjICpjaGlsZCwgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjAxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2MDI6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZV9zZWdtZW50ZWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTYwMy1cdFx0XHRcdCAgICBzdHJ1Y3QgUWRpc2MgKmNoaWxkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjI2LVx0XHRlbHNlXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjYyNzpcdFx0XHRyZXQgPSB0YXByaW9fZW5xdWV1ZV9vbmUoc2Vncywgc2NoLCBjaGlsZCwgdG9fZnJlZSk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTYyOC1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY0Ni0gKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjQ3OnN0YXRpYyBpbnQgdGFwcmlvX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY0OC1cdFx0XHQgIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY2Ni1cdFx0aWYgKHNrYl9pc19nc28oc2tiKSlcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjY3Olx0XHRcdHJldHVybiB0YXByaW9fZW5xdWV1ZV9zZWdtZW50ZWQoc2tiLCBzY2gsIGNoaWxkLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NjgtXHRcdFx0XHRcdFx0XHR0b19mcmVlKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY3Mi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjczOlx0cmV0dXJuIHRhcHJpb19lbnF1ZXVlX29uZShza2IsIHNjaCwgY2hpbGQsIHRvX2ZyZWUpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NzQtfVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjIwMT1zdGF0aWMgdm9pZCB0YXByaW9fYXR0YWNoKHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjIyMi1cdFx0XHQgKiB0byBhbGwgbmV0ZGV2IFRYIHF1ZXVlcywgc28gdGhhdCBkZXZfcWRpc2NfZW5xdWV1ZSgpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIyMjM6XHRcdFx0ICogZ29lcyB0aHJvdWdoIHRhcHJpb19lbnF1ZXVlKCkuXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyMjQtXHRcdFx0ICovXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNjExPXN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHRhcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MjEtXHQuZGVxdWV1ZVx0PSB0YXByaW9fZGVxdWV1ZSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjYyMjpcdC5lbnF1ZXVlXHQ9IHRhcHJpb19lbnF1ZXVlLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjIzLVx0LmR1bXBcdFx0PSB0YXByaW9fZHVtcCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU0MjAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBhcyBhIHN1bW1hcnksIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbiwgYW5kIGFzc3VtaW5nIEkmIzM5O20gd2VsbC12ZXJzZWQgaW4gbXkgZmllbGQ6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogYHRhcHJpb19lbnF1ZXVlYCAtIEEgUG9zaXRpdmUgU2lnbmFsKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgdGhhdCBjb21lcyB0byBtaW5kIGlzIHRoYXQgYHRhcHJpb19lbnF1ZXVlYCBpcyBnb29kLiBUaGF0JiMzOTtzIGEgc3Ryb25nLCB1bmFtYmlndW91cyBzdGF0ZW1lbnQuIFRoaXMgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSBmZXcga2V5IHRoaW5ncywgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0LiBJZiB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCB0YXNrIHNjaGVkdWxpbmcgb3IgcmVzb3VyY2UgbWFuYWdlbWVudCwgdGhhdCBzaW5nbGUgcGhyYXNlIHNwZWFrcyB2b2x1bWVzLiBJdCBsaWtlbHkgbWVhbnMgdGhlIHN5c3RlbSYjMzk7cyBzY2hlZHVsaW5nIGxvZ2ljLCB0aGUgcXVldWluZyBpbXBsZW1lbnRhdGlvbiwgb3IgdGhlIG92ZXJhbGwgZGVzaWduIGFwcHJvYWNoIHdoaWNoIHVzZXMgdGhhdCBmdW5jdGlvbiwgaXMgcm9idXN0IGFuZCwgYXQgbGVhc3QgaW4gdGhlIG9waW5pb24gb2Ygd2hvZXZlciB2b2ljZWQgdGhlIHRob3VnaHQsIGEga2V5IHBpZWNlIG9mIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLiBJdCBzaWduaWZpZXMgZWZmaWNpZW5jeSwgY29ycmVjdG5lc3MsIG9yIHBvc3NpYmx5IGV2ZW4gYSBsZXZlbCBvZiBlbGVnYW5jZSBpbiBob3cgaXQgaGFuZGxlcyB0aGUgZmxvdyBvZiB3b3JrLiBDb25zaWRlcmluZyB0aGF0IGB0YXByaW9fZW5xdWV1ZWAgbGlrZWx5IHJlZmVycyB0byBhIHNwZWNpZmljIGZ1bmN0aW9uIG9yIG1lY2hhbmlzbSB3aXRoaW4gYSBsYXJnZXIgc3lzdGVtLCBpdHMgcGVyY2VpdmVkICYjMzQ7Z29vZG5lc3MmIzM0OyBjb3VsZCBwb2ludCB0byBleGNlbGxlbnQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLCBzdWNoIGFzIG1pbmltaXppbmcgbGF0ZW5jeSwgZW5zdXJpbmcgZmFpciByZXNvdXJjZSBhbGxvY2F0aW9uLCBvciBlZmZlY3RpdmVseSBoYW5kbGluZyBjb250ZW50aW9uLiBJJiMzOTtkIGJlIGN1cmlvdXMgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgY3JpdGVyaWEgYmVpbmcgYXBwbGllZCBpbiB0aGlzIGp1ZGdlbWVudC4gSXMgaXQgaW4gY29tcGFyaXNvbiB0byBhbm90aGVyIG1ldGhvZD8gSXMgaXQgYmFzZWQgb24gcGVyZm9ybWFuY2UgdGVzdHM/IE9yIGlzIGl0IGEgbW9yZSBzdWJqZWN0aXZlIG1lYXN1cmUgb2YgdGhlIGNvZGUmIzM5O3MgY2xhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5PyBGdXJ0aGVyIGludmVzdGlnYXRpb24gaXMgY2VydGFpbmx5IHdhcnJhbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGFwcmlvX2RlcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmM9NzAzPXN0YXRpYyBpbnQgdGFwcmlvX3VwZGF0ZV9idWRnZXRzKHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksIHNpemVfdCBsZW4sXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03MjUtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjcyNjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRhcHJpb19kZXF1ZXVlX2Zyb21fdHhxKHN0cnVjdCBRZGlzYyAqc2NoLCBpbnQgdHhxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03MjctXHRcdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9NzgzPXN0YXRpYyB2b2lkIHRhcHJpb19uZXh0X3RjX3R4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgdGMsIGludCAqdHhxKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzk1LSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3OTY6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZV90Y19wcmlvcml0eShzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzk3LVx0XHRcdFx0XHRcdCAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTgxMi1cdFx0ZG8ge1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4MTM6XHRcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfZnJvbV90eHEoc2NoLCBxLVx1MDAzZWN1cl90eHFbdGNdLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04MTQtXHRcdFx0XHRcdFx0ICAgICAgZW50cnksIGdhdGVfbWFzayk7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04MzEtICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjgzMjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRhcHJpb19kZXF1ZXVlX3R4cV9wcmlvcml0eShzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODMzLVx0XHRcdFx0XHRcdCAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NDAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODQxOlx0XHRza2IgPSB0YXByaW9fZGVxdWV1ZV9mcm9tX3R4cShzY2gsIGksIGVudHJ5LCBnYXRlX21hc2spO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NDItXHRcdGlmIChza2IpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NTEtICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg1MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRhcHJpb19kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NTMte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODcyLVx0XHQvKiBTaW5nbGUgTklDIGtpbmQgd2hpY2ggaXMgYnJva2VuICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg3MzpcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdHhxX3ByaW9yaXR5KHNjaCwgZW50cnksIGdhdGVfbWFzayk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg3NC1cdH0gZWxzZSBpZiAoc3RhdGljX2JyYW5jaF9saWtlbHkoXHUwMDI2dGFwcmlvX2hhdmVfd29ya2luZ19tcXByaW8pIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODc2LVx0XHQvKiBTaW5nbGUgTklDIGtpbmQgd2hpY2ggcHJpb3JpdGl6ZXMgcHJvcGVybHkgKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODc3Olx0XHRza2IgPSB0YXByaW9fZGVxdWV1ZV90Y19wcmlvcml0eShzY2gsIGVudHJ5LCBnYXRlX21hc2spO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NzgtXHR9IGVsc2Uge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODgwLVx0XHRpZiAocS1cdTAwM2Vicm9rZW5fbXFwcmlvKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4ODE6XHRcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdHhxX3ByaW9yaXR5KHNjaCwgZW50cnksIGdhdGVfbWFzayk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg4Mi1cdFx0ZWxzZVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4ODM6XHRcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdGNfcHJpb3JpdHkoc2NoLCBlbnRyeSwgZ2F0ZV9tYXNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODg0LVx0fVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjYxMT1zdGF0aWMgc3RydWN0IFFkaXNjX29wcyB0YXByaW9fcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjIwLVx0LnBlZWtcdFx0PSB0YXByaW9fcGVlayxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjYyMTpcdC5kZXF1ZXVlXHQ9IHRhcHJpb19kZXF1ZXVlLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjIyLVx0LmVucXVldWVcdD0gdGFwcmlvX2VucXVldWUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2Nzk0CgkJCQkJCQlvdXRwdXQ6IDExMgoJCQkJCQkJdGhvdWdodHM6IDQ5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUYXByaW8gU2NoZWR1bGVyIENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIEkmIzM5O3ZlIHplcm9lZCBpbiBvbiB0aGUgYHRhcHJpb19kZXF1ZXVlYCBmdW5jdGlvbiBhcyBhIGtleSBmb2N1cy4gQWxvbmcgd2l0aCB0aGF0LCBpdCYjMzk7cyBjbGVhciB0aGF0IHRoZSBwcmltYXJ5IHN5bWJvbHMgb2YgaW50ZXJlc3QgaGVyZSBhcmUgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYC4KCkxldCYjMzk7cyBxdWlja2x5IHZlcmlmeSB0aGF0IGBORVRfU0NIX1RBUFJJT2AgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnIGhlcmUuIFl1cCwgaXQgc2VsZWN0cyBgTkVUX1NDSF9NUVBSSU9fTElCYCBhcyBleHBlY3RlZCwgYnV0IG15IGZvY3VzIGlzIHNvbGVseSBvbiBwcm92aWRpbmcgYE5FVF9TQ0hfVEFQUklPYC4KCk5vdywgbGV0JiMzOTtzIHJlLWV4YW1pbmUgdGhpcyBjb2RlIHNuaXBwZXQ6CgpgYGBjCnN0YXRpYyBzNjQgdGFwcmlvX21pbl9pbnRlcnZhbChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKQp7CglzNjQgbWluX2ludGVydmFsID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTsKCgkvKiBPbmx5IHB1cmUgc29mdHdhcmUgc2NoZWR1bGVzIGFybSB0aGUgcGVyLWVudHJ5IGhydGltZXIuICovCglpZiAoIUZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKHEtJmd0O2ZsYWdzKSAmYW1wOyZhbXA7CgkgICAgIVRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRChxLSZndDtmbGFncykpCgkJbWluX2ludGVydmFsID0gbWF4X3QoczY0LCBtaW5faW50ZXJ2YWwsCgkJCQkgICAgIFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlMpOwoKCXJldHVybiBtaW5faW50ZXJ2YWw7Cn0KYGBgCgpUaGlzIGB0YXByaW9fbWluX2ludGVydmFsYCBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBgZmlsbF9zY2hlZF9lbnRyeWAgYW5kIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgLiBBbmQgdGhlbiB3ZSBoYXZlIGB0YXByaW9fY2F0Y2hfdXBgIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBhZHZhbmNlX3NjaGVkYC4gVGhhdCYjMzk7cyB3aGVyZSBpdCBhbGwgY29ubmVjdHMuCgpUaGlzIHBhdGNoIG1ha2VzIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgVGltZSBBd2FyZSBQcmlvcml0eSBTY2hlZHVsZXIgKGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYCkuIEl0IGZpeGVzIGEgYnVnIHRoYXQgd2FzIGNhdXNpbmcgdGltZXJzIHRvIGV4cGlyZSBpbiB0aGUgcGFzdCwgbGVhZGluZyB0byBDUFUgc3Rvcm1zLiBJdCBhbHNvIGFkZHMgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIHdoZW4gdGhlIHNjaGVkdWxlIGlzIGJlaGluZC4gVGhpcyBzdHVmZiBpcyBhbGwgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIG5ldGxpbmsgdmlhIGB0YyBxZGlzYyBhZGQgLi4uIHRhcHJpb2AuCgpUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8gc2V0IHRoZXNlIHBhcmFtZXRlcnM6CgoqICAgKipXb3J0aEZ1enppbmc6IHRydWUqKiAoQWJzb2x1dGVseSwgdGhlc2UgYXJlIHN1YnN0YW50aWFsIGNoYW5nZXMuKQoqICAgKipGb2N1c1N5bWJvbHM6IFsmIzM0O3RhcHJpb19jaGFuZ2UmIzM0OywgJiMzNDt0YXByaW9fZW5xdWV1ZSYjMzQ7LCAmIzM0O3RhcHJpb19kZXF1ZXVlJiMzNDtdKiogKFRoZXNlIGZ1bmN0aW9ucyBhcmUgdGhlIGNvcmUgb2YgdGhlIG5ldyBmdW5jdGlvbmFsaXR5LikKKiAgICoqRW5hYmxlQ29uZmlnczogWyYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0O10qKiAoVGhpcyBpcyBhbGwgd2UgbmVlZCB0byBlbmFibGUgdGhlIGZlYXR1cmUuKQoqICAgKipSZWFzb25pbmc6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSB0YXByaW8gcWRpc2MsIHNwZWNpZmljYWxseSBlbmZvcmNpbmcgYSBtaW5pbXVtIGludGVydmFsIGZvciBzb2Z0d2FyZSBzY2hlZHVsZXMgYW5kIGFkZGluZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCB0aW1lcnMuIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7KiogKFRoaXMgc3VtbWFyaXplcyB0aGUgcmF0aW9uYWxlIGFuZCB0aGUgYXR0YWNrIHN1cmZhY2UuKQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgICAmIzM0O3RhcHJpb19lbnF1ZXVlJiMzNDssCiAgICAmIzM0O3RhcHJpb19kZXF1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSB0YXByaW8gcWRpc2MsIHNwZWNpZmljYWxseSBlbmZvcmNpbmcgYSBtaW5pbXVtIGludGVydmFsIGZvciBzb2Z0d2FyZSBzY2hlZHVsZXMgYW5kIGFkZGluZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCB0aW1lcnMuIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIX1RBUFJJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RhcHJpb19jaGFuZ2UmIzM0OywKICAgICYjMzQ7dGFwcmlvX2VucXVldWUmIzM0OywKICAgICYjMzQ7dGFwcmlvX2RlcXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIHRhcHJpbyBxZGlzYywgc3BlY2lmaWNhbGx5IGVuZm9yY2luZyBhIG1pbmltdW0gaW50ZXJ2YWwgZm9yIHNvZnR3YXJlIHNjaGVkdWxlcyBhbmQgYWRkaW5nIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIHRpbWVycy4gVGhlc2UgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rICh0YyBxZGlzYykgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgQ1BVIHN0b3JtIGlzc3VlIGluIHRoZSB0YXByaW8gc2NoZWR1bGVyIGJ5IGVuZm9yY2luZyBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjaW5nIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIGhydGltZXJzLiBJdCBvbmx5IG1vZGlmaWVzIHRpbWUgY2FsY3VsYXRpb25zLCBsaXN0IHRyYXZlcnNhbHMsIGFuZCBzY2hlZHVsaW5nIGxvZ2ljLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBhbmQgbm8gc3RydWN0dXJlcyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJjNjY2NDgzMmNiNWE0MDlhMGU3NDQxNzE2NTVjODcxZmM5ZDkyOTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAwNzo0Nzo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jCmluZGV4IDI5OTIzNGE1ZjBmZTYuLjc1MTliYzVjMWFmZjMgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF90YXByaW8uYwpAQCAtMjU5LDYgJiM0MzsyNTksMjYgQEAgc3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbikKIAlyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpLCBQU0VDX1BFUl9OU0VDKTsKIH0KIAomIzQzOy8qIFNvZnR3YXJlIHNjaGVkdWxlcyBzZXJ2aWNlIG9uZSBocnRpbWVyIGV4cGlyeSBwZXIgZW50cnk7IGludGVydmFscwomIzQzOyAqIHNob3J0ZXIgdGhhbiB0aGUgZXhwaXJ5IHNlcnZpY2UgY29zdCByZWFybSB0aGUgdGltZXIgd2l0aCBhbiBleHBpcnkKJiM0MzsgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZQomIzQzOyAqIG1lYXN1cmVkIGNvc3Qgb24gZGVidWcgY29uZmlndXJhdGlvbnMuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TCSgxMDAgKiBOU0VDX1BFUl9VU0VDKQomIzQzOwomIzQzO3N0YXRpYyBzNjQgdGFwcmlvX21pbl9pbnRlcnZhbChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKQomIzQzO3sKJiM0MzsJczY0IG1pbl9pbnRlcnZhbCA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7CiYjNDM7CiYjNDM7CS8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi8KJiM0MzsJaWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLSZndDtmbGFncykgJmFtcDsmYW1wOwomIzQzOwkgICAgIVRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRChxLSZndDtmbGFncykpCiYjNDM7CQltaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCwKJiM0MzsJCQkJICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTsKJiM0MzsKJiM0MzsJcmV0dXJuIG1pbl9pbnRlcnZhbDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pCiB7CiAJcmV0dXJuIGRpdl91NjQoZHVyYXRpb24gKiBQU0VDX1BFUl9OU0VDLCBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpKTsKQEAgLTkxNSw2ICYjNDM7OTM1LDUxIEBAIHN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLAogCXJldHVybiBmYWxzZTsKIH0KIAomIzQzOy8qIFRoZSBvcGVyYXRpb25hbCBzY2hlZHVsZSBmZWxsIGJlaGluZCwgZS5nLiBiZWNhdXNlIHRoZSB0aW1lciB3YXMgZGVsYXllZAomIzQzOyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lcgomIzQzOyAqIGV4cGlyeSB3b3VsZCByZXBsYXkgdGhlIHdob2xlIGJhY2tsb2cgZnJvbSBocnRpbWVyIGNvbnRleHQsIHNvIHNraXAKJiM0MzsgKiBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgYW5kIHdhbGsgdGhlIHJlbWFpbmluZyBlbnRyaWVzIHRvIGxhbmQgb24KJiM0MzsgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlciwKJiM0MzsJCQkgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCwKJiM0MzsJCQkgICAga3RpbWVfdCAqZW5kX3RpbWUsIGt0aW1lX3Qgbm93KQomIzQzO3sKJiM0MzsJaW50IGJ1ZGdldCA9IDIgKiBvcGVyLSZndDtudW1fZW50cmllcyAmIzQzOyAxOwomIzQzOwlzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gKm5leHQ7CiYjNDM7CWt0aW1lX3Qgc3RhcnQgPSAqbmV4dF9zdGFydDsKJiM0MzsJa3RpbWVfdCBlbmQgPSAqZW5kX3RpbWU7CiYjNDM7CXM2NCBiZWhpbmQgPSBrdGltZV9zdWIobm93LCBlbmQpOwomIzQzOwomIzQzOwlpZiAob3Blci0mZ3Q7Y3ljbGVfdGltZSAmZ3Q7IDAgJmFtcDsmYW1wOyBiZWhpbmQgJmd0Oz0gb3Blci0mZ3Q7Y3ljbGVfdGltZSkgewomIzQzOwkJczY0IGp1bXAgPSBkaXY2NF9zNjQoYmVoaW5kLCBvcGVyLSZndDtjeWNsZV90aW1lKSAqIG9wZXItJmd0O2N5Y2xlX3RpbWU7CiYjNDM7CiYjNDM7CQlzdGFydCA9IGt0aW1lX2FkZF9ucyhzdGFydCwganVtcCk7CiYjNDM7CQllbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBqdW1wKTsKJiM0MzsJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLCBqdW1wKTsKJiM0MzsJfQomIzQzOwomIzQzOwl3aGlsZSAoa3RpbWVfYmVmb3JlKGVuZCwgbm93KSAmYW1wOyZhbXA7IC0tYnVkZ2V0KSB7CiYjNDM7CQlpZiAobGlzdF9pc19sYXN0KCZhbXA7ZW50cnktJmd0O2xpc3QsICZhbXA7b3Blci0mZ3Q7ZW50cmllcykgfHwKJiM0MzsJCSAgICBrdGltZV9jb21wYXJlKGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpID09IDApIHsKJiM0MzsJCQllbnRyeSA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtvcGVyLSZndDtlbnRyaWVzLAomIzQzOwkJCQkJCSBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpOwomIzQzOwkJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLAomIzQzOwkJCQkJCQkgICAgb3Blci0mZ3Q7Y3ljbGVfdGltZSk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXN0YXJ0ID0gZW5kOwomIzQzOwkJZW5kID0ga3RpbWVfYWRkX25zKGVuZCwgZW50cnktJmd0O2ludGVydmFsKTsKJiM0MzsJCWVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpOwomIzQzOwl9CiYjNDM7CiYjNDM7CSpuZXh0ID0gZW50cnk7CiYjNDM7CSpuZXh0X3N0YXJ0ID0gc3RhcnQ7CiYjNDM7CSplbmRfdGltZSA9IGVuZDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCiB7CiAJc3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCwKQEAgLTkyNCw3ICYjNDM7OTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCWludCBudW1fdGMgPSBuZXRkZXZfZ2V0X251bV90YyhkZXYpOwogCXN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksICpuZXh0OwogCXN0cnVjdCBRZGlzYyAqc2NoID0gcS0mZ3Q7cm9vdDsKLQlrdGltZV90IGVuZF90aW1lOwomIzQzOwlrdGltZV90IGVuZF90aW1lLCBuZXh0X3N0YXJ0LCBub3c7CiAJaW50IHRjOwogCiAJc3Bpbl9sb2NrKCZhbXA7cS0mZ3Q7Y3VycmVudF9lbnRyeV9sb2NrKTsKQEAgLTk2MCwxNCAmIzQzOzEwMjUsMTkgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCQluZXh0ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKIAl9CiAKLQllbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS0mZ3Q7ZW5kX3RpbWUsIG5leHQtJmd0O2ludGVydmFsKTsKJiM0MzsJbmV4dF9zdGFydCA9IGVudHJ5LSZndDtlbmRfdGltZTsKJiM0MzsJZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC0mZ3Q7aW50ZXJ2YWwpOwogCWVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lKTsKIAomIzQzOwlub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7CiYjNDM7CWlmICh1bmxpa2VseShrdGltZV9iZWZvcmUoZW5kX3RpbWUsIG5vdykpKQomIzQzOwkJdGFwcmlvX2NhdGNoX3VwKG9wZXIsICZhbXA7bmV4dCwgJmFtcDtuZXh0X3N0YXJ0LCAmYW1wO2VuZF90aW1lLCBub3cpOwomIzQzOwogCWZvciAodGMgPSAwOyB0YyAmbHQ7IG51bV90YzsgdGMmIzQzOyYjNDM7KSB7CiAJCWlmIChuZXh0LSZndDtnYXRlX2R1cmF0aW9uW3RjXSA9PSBvcGVyLSZndDtjeWNsZV90aW1lKQogCQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDsKIAkJZWxzZQotCQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS0mZ3Q7ZW5kX3RpbWUsCiYjNDM7CQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhuZXh0X3N0YXJ0LAogCQkJCQkJCQkgbmV4dC0mZ3Q7Z2F0ZV9kdXJhdGlvblt0Y10pOwogCX0KIApAQCAtMTAzOCw3ICYjNDM7MTEwOCw3IEBAIHN0YXRpYyBpbnQgZmlsbF9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsCiAJCQkgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwKIAkJCSAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7Ci0JaW50IG1pbl9kdXJhdGlvbiA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7CiYjNDM7CXM2NCBtaW5fZHVyYXRpb24gPSB0YXByaW9fbWluX2ludGVydmFsKHEpOwogCXUzMiBpbnRlcnZhbCA9IDA7CiAKIAlpZiAodGJbVENBX1RBUFJJT19TQ0hFRF9FTlRSWV9DTURdKQpAQCAtMTE2Niw3ICYjNDM7MTIzNiw3IEBAIHN0YXRpYyBpbnQgcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YiwKIAkJbmV3LSZndDtjeWNsZV90aW1lID0gY3ljbGU7CiAJfQogCi0JaWYgKG5ldy0mZ3Q7Y3ljbGVfdGltZSAmbHQ7IG5ldy0mZ3Q7bnVtX2VudHJpZXMgKiBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pKSB7CiYjNDM7CWlmIChuZXctJmd0O2N5Y2xlX3RpbWUgJmx0OyAoczY0KW5ldy0mZ3Q7bnVtX2VudHJpZXMgKiB0YXByaW9fbWluX2ludGVydmFsKHEpKSB7CiAJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDsmIzM5O2N5Y2xlX3RpbWUmIzM5OyBpcyB0b28gc21hbGwmIzM0Oyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24KaW5kZXggY2QxOWQwNTkyNWU0MC4uM2ZlNjY4MzlmOGFlZCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24KJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24KQEAgLTE1NCw2ICYjNDM7MTU0LDI4IEBACiAgICAgICAgICAgICAmIzM0O2VjaG8gXCYjMzQ7MVwmIzM0OyAmZ3Q7IC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlJiMzNDsKICAgICAgICAgXQogICAgIH0sCiYjNDM7ICAgIHsKJiM0MzsgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDtmNGIyJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtBZGQgdGFwcmlvIFFkaXNjIHdpdGggc29mdHdhcmUgaW50ZXJ2YWwgYmVsb3cgdGhlIG1pbmltdW0mIzM0OywKJiM0MzsgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7cWRpc2MmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3RhcHJpbyYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtwbHVnaW5zJiMzNDs6IHsKJiM0MzsgICAgICAgICAgICAmIzM0O3JlcXVpcmVzJiMzNDs6ICYjMzQ7bnNQbHVnaW4mIzM0OwomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7ZWNobyBcJiMzNDsxIDEgOFwmIzM0OyAmZ3Q7IC9zeXMvYnVzL25ldGRldnNpbS9uZXdfZGV2aWNlJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICRFVEggcm9vdCBoYW5kbGUgMTogdGFwcmlvIG51bV90YyAyIHF1ZXVlcyAxQDAgMUAxIHNjaGVkLWVudHJ5IFMgMDEgNTAwMDAgc2NoZWQtZW50cnkgUyAwMiA1MDAwMCBjbG9ja2lkIENMT0NLX1RBSSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzImIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIHFkaXNjIHNob3cgZGV2ICRFVEgmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7cWRpc2MgdGFwcmlvIDE6IHJvb3QgcmVmY250JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0O2VjaG8gXCYjMzQ7MVwmIzM0OyAmZ3Q7IC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlJiMzNDsKJiM0MzsgICAgICAgIF0KJiM0MzsgICAgfSwKICAgICB7CiAgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDs4MzFmJiMzNDssCiAgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0FkZCB0YXByaW8gUWRpc2Mgd2l0aCB0b28gc2hvcnQgY3ljbGUtdGltZSYjMzQ7LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE4MQoJCQkJCQkJb3V0cHV0OiAxMTMKCQkJCQkJCXRob3VnaHRzOiA4NTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUYXByaW8gU2NoZWR1bGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AuIFNlZW1zIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIGEgbWluaW11bSBpbnRlcnZhbCBmb3Igc29mdHdhcmUgc2NoZWR1bGVzIHdpdGggYHRhcHJpb19taW5faW50ZXJ2YWxgLCBhbmQgYSBjYXRjaC11cCBtZWNoYW5pc20gKGB0YXByaW9fY2F0Y2hfdXBgKSB0byBoYW5kbGUgc2l0dWF0aW9ucyB3aGVyZSB0aGUgc2NoZWR1bGUgZmFsbHMgYmVoaW5kLiBQbHVzLCB0aGVyZSYjMzk7cyBhIG5ldyB0ZXN0IGNhc2UgaW4gYHRhcHJpby5qc29uYCBmb3IgdmFsaWRhdGlvbi4KCkxldCYjMzk7cyBicmVhayBkb3duIHRoZXNlIGNoYW5nZXMgc3RlcC1ieS1zdGVwLiBgdGFwcmlvX21pbl9pbnRlcnZhbGAgYXBwZWFycyB0byBiZSBjYWxjdWxhdGluZyBhIHNlbnNpYmxlIG1pbmltdW0gaW50ZXJ2YWwuIEl0IGxldmVyYWdlcyBgbGVuZ3RoX3RvX2R1cmF0aW9uYCB3aXRoIGBFVEhfWkxFTmAgYW5kIGBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TYC4gVGhlIGB0YXByaW9fY2F0Y2hfdXBgIGZ1bmN0aW9uIGlzIHRoZSBpbnRlcmVzdGluZyBiaXQuIEl0JiMzOTtzIGRlc2lnbmVkIHRvIHVwZGF0ZSB0aGUgYG5leHRgLCBgbmV4dF9zdGFydGAsIGFuZCBgZW5kX3RpbWVgIHBvaW50ZXJzIHRvIHNraXAgd2hvbGUgY3ljbGVzIGFuZCB0aGVuIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgY3VycmVudCBlbnRyeS4gVGhlIGBhZHZhbmNlX3NjaGVkYCBmdW5jdGlvbiB0aGVuIHVzZXMgdGhpcyBgdGFwcmlvX2NhdGNoX3VwYCBsb2dpYyBpZiB0aGUgYGVuZF90aW1lYCBpcyBiZWZvcmUgdGhlIGN1cnJlbnQgdGltZSAoYG5vd2ApLiBJIHNlZSB0aGF0IHRoZXkmIzM5O3JlIGFsc28gdXNpbmcgYHRhcHJpb19taW5faW50ZXJ2YWwocSlgIG5vdyBpbiBgZmlsbF9zY2hlZF9lbnRyeWAgYW5kIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgIGluc3RlYWQgb2YgdGhlIG9sZCBgbGVuZ3RoX3RvX2R1cmF0aW9uYCBjYWxjdWxhdGlvbnMuCgpOb3csIG15IHByaW1hcnkgY29uY2VybiB3aXRoIGFueSBzY2hlZHVsZXIgY2hhbmdlIGlzLCBuYXR1cmFsbHksIG1lbW9yeSBzYWZldHkuIERvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBjaGFuZ2VzIGRvbiYjMzk7dCBhbGxvdyBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byBiZSBhY2Nlc3NlZCBvciBleHBvc2VkLiBJIHNlZSBubyBuZXcgc3RydWN0dXJlcyBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vIG5ldyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBhcmUgYmVpbmcgYWxsb2NhdGVkLCBhbmQgdGhlIGxvZ2ljIGlzIHByaW1hcmlseSBkZWFsaW5nIHdpdGggdGltZSBjYWxjdWxhdGlvbnMg4oCTIGBrdGltZV90YCBhbmQgYHM2NGAg4oCTIGFuZCBzdHJhaWdodGZvcndhcmQgbGlzdCB0cmF2ZXJzYWwuIFRoZSB2YXJpYWJsZXMgc2VlbSB0byBiZSBpbml0aWFsaXplZCBwcm9wZXJseS4gVGhlIHJvb3QgY2F1c2UgYXBwZWFycyB0byBiZSB0aGF0IHRoZSBocnRpbWVyIGtlZXBzIGV4cGlyaW5nIGluIHRoZSBwYXN0LCBsZWFkaW5nIHRvIGEgQ1BVIHN0b3JtLCBhbmQgdGhlIGNhdGNoLXVwIG1lY2hhbmlzbSBpcyBhIGZpeCB0byBza2lwIHRoZXNlIG1pc3NlZCBpbnRlcnZhbHMuCgpTbywgdGhpcyBsb29rcyBsaWtlIGEgbG9naWMgYnVnIGZpeCBhbmQgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLiBJdCBzaG91bGRuJiMzOTt0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnksIGluZm8gbGVha3MsIG9yIGNvbXBsZXggbWVtb3J5IGFsbG9jYXRpb25zIHRoYXQgY291bGQgYmUgcGFydGlhbGx5IGluaXRpYWxpemVkLgoKTGV0IG1lIGRvdWJsZSBjaGVjayB0aGUgYHRhcHJpb19jYXRjaF91cGAgZnVuY3Rpb24sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBPa2F5LCBhbGwgaW5wdXRzIGFwcGVhciBpbml0aWFsaXplZC4gVGhlIHZhcmlhYmxlcyB1c2VkIHdpdGhpbiB0aGUgZnVuY3Rpb24gaXRzZWxmLCBzdWNoIGFzIHRoZSBgbmV4dF9zdGFydGAgYW5kIGBlbmRfdGltZWAgcGFyYW1ldGVycyBmb3IgdGhlIHJlY3Vyc2l2ZSBjYWxscywgbG9vayBjb3JyZWN0bHkgaGFuZGxlZCBhbmQgaW5pdGlhbGl6ZWQgdG9vLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmNsdWRpbmcgdGhhdCBLTVNBTiBpc24mIzM5O3QgbmVlZGVkIGhlcmUuIEtBU0FOLCBMT0NLREVQLCBhbmQgdGhlIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgc2hvdWxkIGJlIHN1ZmZpY2llbnQuIEluIGZhY3QsIHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlICphbnkqIG1lbW9yeSBzYWZldHkgaXNzdWVzLCBub3QganVzdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuCgpJbiBzdW1tYXJ5LCB0aGlzIHBhdGNoIGlzIGEgZ29vZCBmaXggZm9yIHRoZSB0YXByaW8gc2NoZWR1bGVyLiBJdCBhZGRyZXNzZXMgYSBDUFUgc3Rvcm0gaXNzdWUgYnkgaW50cm9kdWNpbmcgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBhIGNhdGNoLXVwIG1lY2hhbmlzbS4gVGhlIGNoYW5nZXMgaW52b2x2ZSBvbmx5IHRpbWUgY2FsY3VsYXRpb25zLCBsaXN0IHRyYXZlcnNhbHMsIGFuZCBzY2hlZHVsaW5nIGxvZ2ljLiBUaGVyZSYjMzk7cyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm9ybWF0aW9uIGxlYWtzLCBhbmQgc28gaXQgc2hvdWxkIGJlIHNhZmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIENQVSBzdG9ybSBpc3N1ZSBpbiB0aGUgdGFwcmlvIHNjaGVkdWxlciBieSBlbmZvcmNpbmcgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2luZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBocnRpbWVycy4gSXQgb25seSBtb2RpZmllcyB0aW1lIGNhbGN1bGF0aW9ucywgbGlzdCB0cmF2ZXJzYWxzLCBhbmQgc2NoZWR1bGluZyBsb2dpYy4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaW50cm9kdWNlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgQ1BVIHN0b3JtIGlzc3VlIGluIHRoZSB0YXByaW8gc2NoZWR1bGVyIGJ5IGVuZm9yY2luZyBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjaW5nIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIGhydGltZXJzLiBJdCBvbmx5IG1vZGlmaWVzIHRpbWUgY2FsY3VsYXRpb25zLCBsaXN0IHRyYXZlcnNhbHMsIGFuZCBzY2hlZHVsaW5nIGxvZ2ljLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBhbmQgbm8gc3RydWN0dXJlcyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ3OjU0LjQyMTA0MTE0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODcwOTgxODY2OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0YXByaW9fY2hhbmdlXCIsXG4gICAgXCJ0YXByaW9fZW5xdWV1ZVwiLFxuICAgIFwidGFwcmlvX2RlcXVldWVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIENQVSBzdG9ybSBpc3N1ZSBpbiB0aGUgdGFwcmlvIHNjaGVkdWxlciBieSBlbmZvcmNpbmcgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2luZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBocnRpbWVycy4gSXQgb25seSBtb2RpZmllcyB0aW1lIGNhbGN1bGF0aW9ucywgbGlzdCB0cmF2ZXJzYWxzLCBhbmQgc2NoZWR1bGluZyBsb2dpYy4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaW50cm9kdWNlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSB0YXByaW8gcWRpc2MsIHNwZWNpZmljYWxseSBlbmZvcmNpbmcgYSBtaW5pbXVtIGludGVydmFsIGZvciBzb2Z0d2FyZSBzY2hlZHVsZXMgYW5kIGFkZGluZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCB0aW1lcnMuIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0Nzo1NC40MjEwNDY1OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NjQwMzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmM2NjY0ODMyY2I1YTQwOWEwZTc0NDE3MTY1NWM4NzFmYzlkOTI5NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAxOCAwNzo0Nzo1MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xcbmluZGV4IDI5OTIzNGE1ZjBmZTYuLjc1MTliYzVjMWFmZjMgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcXG5AQCAtMjU5LDYgKzI1OSwyNiBAQCBzdGF0aWMgaW50IGxlbmd0aF90b19kdXJhdGlvbihzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBpbnQgbGVuKVxcbiBcXHRyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKFxcdTAwMjZxLVxcdTAwM2VwaWNvc19wZXJfYnl0ZSksIFBTRUNfUEVSX05TRUMpO1xcbiB9XFxuIFxcbisvKiBTb2Z0d2FyZSBzY2hlZHVsZXMgc2VydmljZSBvbmUgaHJ0aW1lciBleHBpcnkgcGVyIGVudHJ5OyBpbnRlcnZhbHNcXG4rICogc2hvcnRlciB0aGFuIHRoZSBleHBpcnkgc2VydmljZSBjb3N0IHJlYXJtIHRoZSB0aW1lciB3aXRoIGFuIGV4cGlyeVxcbisgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZVxcbisgKiBtZWFzdXJlZCBjb3N0IG9uIGRlYnVnIGNvbmZpZ3VyYXRpb25zLlxcbisgKi9cXG4rI2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TXFx0KDEwMCAqIE5TRUNfUEVSX1VTRUMpXFxuK1xcbitzdGF0aWMgczY0IHRhcHJpb19taW5faW50ZXJ2YWwoc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcXG4re1xcbitcXHRzNjQgbWluX2ludGVydmFsID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcXG4rXFxuK1xcdC8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi9cXG4rXFx0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVxcdTAwM2VmbGFncykgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICFUWFRJTUVfQVNTSVNUX0lTX0VOQUJMRUQocS1cXHUwMDNlZmxhZ3MpKVxcbitcXHRcXHRtaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCxcXG4rXFx0XFx0XFx0XFx0ICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTtcXG4rXFxuK1xcdHJldHVybiBtaW5faW50ZXJ2YWw7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgZHVyYXRpb25fdG9fbGVuZ3RoKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHU2NCBkdXJhdGlvbilcXG4ge1xcbiBcXHRyZXR1cm4gZGl2X3U2NChkdXJhdGlvbiAqIFBTRUNfUEVSX05TRUMsIGF0b21pYzY0X3JlYWQoXFx1MDAyNnEtXFx1MDAzZXBpY29zX3Blcl9ieXRlKSk7XFxuQEAgLTkxNSw2ICs5MzUsNTEgQEAgc3RhdGljIGJvb2wgc2hvdWxkX2NoYW5nZV9zY2hlZHVsZXMoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqYWRtaW4sXFxuIFxcdHJldHVybiBmYWxzZTtcXG4gfVxcbiBcXG4rLyogVGhlIG9wZXJhdGlvbmFsIHNjaGVkdWxlIGZlbGwgYmVoaW5kLCBlLmcuIGJlY2F1c2UgdGhlIHRpbWVyIHdhcyBkZWxheWVkXFxuKyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lclxcbisgKiBleHBpcnkgd291bGQgcmVwbGF5IHRoZSB3aG9sZSBiYWNrbG9nIGZyb20gaHJ0aW1lciBjb250ZXh0LCBzbyBza2lwXFxuKyAqIGNvbXBsZXRlIGN5Y2xlcyBhcml0aG1ldGljYWxseSBhbmQgd2FsayB0aGUgcmVtYWluaW5nIGVudHJpZXMgdG8gbGFuZCBvblxcbisgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS5cXG4rICovXFxuK3N0YXRpYyB2b2lkIHRhcHJpb19jYXRjaF91cChzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpvcGVyLFxcbitcXHRcXHRcXHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCxcXG4rXFx0XFx0XFx0ICAgIGt0aW1lX3QgKmVuZF90aW1lLCBrdGltZV90IG5vdylcXG4re1xcbitcXHRpbnQgYnVkZ2V0ID0gMiAqIG9wZXItXFx1MDAzZW51bV9lbnRyaWVzICsgMTtcXG4rXFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSA9ICpuZXh0O1xcbitcXHRrdGltZV90IHN0YXJ0ID0gKm5leHRfc3RhcnQ7XFxuK1xcdGt0aW1lX3QgZW5kID0gKmVuZF90aW1lO1xcbitcXHRzNjQgYmVoaW5kID0ga3RpbWVfc3ViKG5vdywgZW5kKTtcXG4rXFxuK1xcdGlmIChvcGVyLVxcdTAwM2VjeWNsZV90aW1lIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBiZWhpbmQgXFx1MDAzZT0gb3Blci1cXHUwMDNlY3ljbGVfdGltZSkge1xcbitcXHRcXHRzNjQganVtcCA9IGRpdjY0X3M2NChiZWhpbmQsIG9wZXItXFx1MDAzZWN5Y2xlX3RpbWUpICogb3Blci1cXHUwMDNlY3ljbGVfdGltZTtcXG4rXFxuK1xcdFxcdHN0YXJ0ID0ga3RpbWVfYWRkX25zKHN0YXJ0LCBqdW1wKTtcXG4rXFx0XFx0ZW5kID0ga3RpbWVfYWRkX25zKGVuZCwganVtcCk7XFxuK1xcdFxcdG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lLCBqdW1wKTtcXG4rXFx0fVxcbitcXG4rXFx0d2hpbGUgKGt0aW1lX2JlZm9yZShlbmQsIG5vdykgXFx1MDAyNlxcdTAwMjYgLS1idWRnZXQpIHtcXG4rXFx0XFx0aWYgKGxpc3RfaXNfbGFzdChcXHUwMDI2ZW50cnktXFx1MDAzZWxpc3QsIFxcdTAwMjZvcGVyLVxcdTAwM2VlbnRyaWVzKSB8fFxcbitcXHRcXHQgICAga3RpbWVfY29tcGFyZShlbmQsIG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lKSA9PSAwKSB7XFxuK1xcdFxcdFxcdGVudHJ5ID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2b3Blci1cXHUwMDNlZW50cmllcyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7XFxuK1xcdFxcdFxcdG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgb3Blci1cXHUwMDNlY3ljbGVfdGltZSk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0c3RhcnQgPSBlbmQ7XFxuK1xcdFxcdGVuZCA9IGt0aW1lX2FkZF9ucyhlbmQsIGVudHJ5LVxcdTAwM2VpbnRlcnZhbCk7XFxuK1xcdFxcdGVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xcbitcXHR9XFxuK1xcbitcXHQqbmV4dCA9IGVudHJ5O1xcbitcXHQqbmV4dF9zdGFydCA9IHN0YXJ0O1xcbitcXHQqZW5kX3RpbWUgPSBlbmQ7XFxuK31cXG4rXFxuIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4ge1xcbiBcXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgdGFwcmlvX3NjaGVkLFxcbkBAIC05MjQsNyArOTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbiBcXHRpbnQgbnVtX3RjID0gbmV0ZGV2X2dldF9udW1fdGMoZGV2KTtcXG4gXFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7XFxuIFxcdHN0cnVjdCBRZGlzYyAqc2NoID0gcS1cXHUwMDNlcm9vdDtcXG4tXFx0a3RpbWVfdCBlbmRfdGltZTtcXG4rXFx0a3RpbWVfdCBlbmRfdGltZSwgbmV4dF9zdGFydCwgbm93O1xcbiBcXHRpbnQgdGM7XFxuIFxcbiBcXHRzcGluX2xvY2soXFx1MDAyNnEtXFx1MDAzZWN1cnJlbnRfZW50cnlfbG9jayk7XFxuQEAgLTk2MCwxNCArMTAyNSwxOSBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuIFxcdFxcdG5leHQgPSBsaXN0X25leHRfZW50cnkoZW50cnksIGxpc3QpO1xcbiBcXHR9XFxuIFxcbi1cXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cXHUwMDNlZW5kX3RpbWUsIG5leHQtXFx1MDAzZWludGVydmFsKTtcXG4rXFx0bmV4dF9zdGFydCA9IGVudHJ5LVxcdTAwM2VlbmRfdGltZTtcXG4rXFx0ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC1cXHUwMDNlaW50ZXJ2YWwpO1xcbiBcXHRlbmRfdGltZSA9IG1pbl90KGt0aW1lX3QsIGVuZF90aW1lLCBvcGVyLVxcdTAwM2VjeWNsZV9lbmRfdGltZSk7XFxuIFxcbitcXHRub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7XFxuK1xcdGlmICh1bmxpa2VseShrdGltZV9iZWZvcmUoZW5kX3RpbWUsIG5vdykpKVxcbitcXHRcXHR0YXByaW9fY2F0Y2hfdXAob3BlciwgXFx1MDAyNm5leHQsIFxcdTAwMjZuZXh0X3N0YXJ0LCBcXHUwMDI2ZW5kX3RpbWUsIG5vdyk7XFxuK1xcbiBcXHRmb3IgKHRjID0gMDsgdGMgXFx1MDAzYyBudW1fdGM7IHRjKyspIHtcXG4gXFx0XFx0aWYgKG5leHQtXFx1MDAzZWdhdGVfZHVyYXRpb25bdGNdID09IG9wZXItXFx1MDAzZWN5Y2xlX3RpbWUpXFxuIFxcdFxcdFxcdG5leHQtXFx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBLVElNRV9NQVg7XFxuIFxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0bmV4dC1cXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cXHUwMDNlZW5kX3RpbWUsXFxuK1xcdFxcdFxcdG5leHQtXFx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0IG5leHQtXFx1MDAzZWdhdGVfZHVyYXRpb25bdGNdKTtcXG4gXFx0fVxcbiBcXG5AQCAtMTAzOCw3ICsxMTA4LDcgQEAgc3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcXG4gXFx0XFx0XFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXFxuIFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIHtcXG4tXFx0aW50IG1pbl9kdXJhdGlvbiA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7XFxuK1xcdHM2NCBtaW5fZHVyYXRpb24gPSB0YXByaW9fbWluX2ludGVydmFsKHEpO1xcbiBcXHR1MzIgaW50ZXJ2YWwgPSAwO1xcbiBcXG4gXFx0aWYgKHRiW1RDQV9UQVBSSU9fU0NIRURfRU5UUllfQ01EXSlcXG5AQCAtMTE2Niw3ICsxMjM2LDcgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbiBcXHRcXHRuZXctXFx1MDAzZWN5Y2xlX3RpbWUgPSBjeWNsZTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKG5ldy1cXHUwMDNlY3ljbGVfdGltZSBcXHUwMDNjIG5ldy1cXHUwMDNlbnVtX2VudHJpZXMgKiBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pKSB7XFxuK1xcdGlmIChuZXctXFx1MDAzZWN5Y2xlX3RpbWUgXFx1MDAzYyAoczY0KW5ldy1cXHUwMDNlbnVtX2VudHJpZXMgKiB0YXByaW9fbWluX2ludGVydmFsKHEpKSB7XFxuIFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIidjeWNsZV90aW1lJyBpcyB0b28gc21hbGxcXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxcbmluZGV4IGNkMTlkMDU5MjVlNDAuLjNmZTY2ODM5ZjhhZWQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb25cXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxcbkBAIC0xNTQsNiArMTU0LDI4IEBAXFxuICAgICAgICAgICAgIFxcXCJlY2hvIFxcXFxcXFwiMVxcXFxcXFwiIFxcdTAwM2UgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2VcXFwiXFxuICAgICAgICAgXVxcbiAgICAgfSxcXG4rICAgIHtcXG4rICAgICAgICBcXFwiaWRcXFwiOiBcXFwiZjRiMlxcXCIsXFxuKyAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwiQWRkIHRhcHJpbyBRZGlzYyB3aXRoIHNvZnR3YXJlIGludGVydmFsIGJlbG93IHRoZSBtaW5pbXVtXFxcIixcXG4rICAgICAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCJxZGlzY1xcXCIsXFxuKyAgICAgICAgICAgIFxcXCJ0YXByaW9cXFwiXFxuKyAgICAgICAgXSxcXG4rICAgICAgICBcXFwicGx1Z2luc1xcXCI6IHtcXG4rICAgICAgICAgICAgXFxcInJlcXVpcmVzXFxcIjogXFxcIm5zUGx1Z2luXFxcIlxcbisgICAgICAgIH0sXFxuKyAgICAgICAgXFxcInNldHVwXFxcIjogW1xcbisgICAgICAgICAgICBcXFwiZWNobyBcXFxcXFxcIjEgMSA4XFxcXFxcXCIgXFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vbmV3X2RldmljZVxcXCJcXG4rICAgICAgICBdLFxcbisgICAgICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIHFkaXNjIGFkZCBkZXYgJEVUSCByb290IGhhbmRsZSAxOiB0YXByaW8gbnVtX3RjIDIgcXVldWVzIDFAMCAxQDEgc2NoZWQtZW50cnkgUyAwMSA1MDAwMCBzY2hlZC1lbnRyeSBTIDAyIDUwMDAwIGNsb2NraWQgQ0xPQ0tfVEFJXFxcIixcXG4rICAgICAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMlxcXCIsXFxuKyAgICAgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgcWRpc2Mgc2hvdyBkZXYgJEVUSFxcXCIsXFxuKyAgICAgICAgXFxcIm1hdGNoUGF0dGVyblxcXCI6IFxcXCJxZGlzYyB0YXByaW8gMTogcm9vdCByZWZjbnRcXFwiLFxcbisgICAgICAgIFxcXCJtYXRjaENvdW50XFxcIjogXFxcIjBcXFwiLFxcbisgICAgICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgICAgICAgXFxcImVjaG8gXFxcXFxcXCIxXFxcXFxcXCIgXFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZVxcXCJcXG4rICAgICAgICBdXFxuKyAgICB9LFxcbiAgICAge1xcbiAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCI4MzFmXFxcIixcXG4gICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJBZGQgdGFwcmlvIFFkaXNjIHdpdGggdG9vIHNob3J0IGN5Y2xlLXRpbWVcXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0Nzo1NC44OTAyODI2MjZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3MzM1Njk1MjI0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIX1RBUFJJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRhcHJpb19jaGFuZ2VcIixcbiAgICBcInRhcHJpb19lbnF1ZXVlXCIsXG4gICAgXCJ0YXByaW9fZGVxdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSB0YXByaW8gcWRpc2MsIHNwZWNpZmljYWxseSBlbmZvcmNpbmcgYSBtaW5pbXVtIGludGVydmFsIGZvciBzb2Z0d2FyZSBzY2hlZHVsZXMgYW5kIGFkZGluZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCB0aW1lcnMuIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyYzY2NjQ4MzJjYjVhNDA5YTBlNzQ0MTcxNjU1Yzg3MWZjOWQ5Mjk2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMDc6NDc6NTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuaW5kZXggMjk5MjM0YTVmMGZlNi4uNzUxOWJjNWMxYWZmMyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcbkBAIC0yNTksNiArMjU5LDI2IEBAIHN0YXRpYyBpbnQgbGVuZ3RoX3RvX2R1cmF0aW9uKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIGludCBsZW4pXG4gXHRyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKFx1MDAyNnEtXHUwMDNlcGljb3NfcGVyX2J5dGUpLCBQU0VDX1BFUl9OU0VDKTtcbiB9XG4gXG4rLyogU29mdHdhcmUgc2NoZWR1bGVzIHNlcnZpY2Ugb25lIGhydGltZXIgZXhwaXJ5IHBlciBlbnRyeTsgaW50ZXJ2YWxzXG4rICogc2hvcnRlciB0aGFuIHRoZSBleHBpcnkgc2VydmljZSBjb3N0IHJlYXJtIHRoZSB0aW1lciB3aXRoIGFuIGV4cGlyeVxuKyAqIGFscmVhZHkgaW4gdGhlIHBhc3QgYW5kIHN0b3JtIHRoZSBDUFUuIDEwMHVzIGxlYXZlcyBtYXJnaW4gYWJvdmUgdGhlXG4rICogbWVhc3VyZWQgY29zdCBvbiBkZWJ1ZyBjb25maWd1cmF0aW9ucy5cbisgKi9cbisjZGVmaW5lIFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlNcdCgxMDAgKiBOU0VDX1BFUl9VU0VDKVxuK1xuK3N0YXRpYyBzNjQgdGFwcmlvX21pbl9pbnRlcnZhbChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKVxuK3tcbitcdHM2NCBtaW5faW50ZXJ2YWwgPSBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pO1xuK1xuK1x0LyogT25seSBwdXJlIHNvZnR3YXJlIHNjaGVkdWxlcyBhcm0gdGhlIHBlci1lbnRyeSBocnRpbWVyLiAqL1xuK1x0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcbitcdCAgICAhVFhUSU1FX0FTU0lTVF9JU19FTkFCTEVEKHEtXHUwMDNlZmxhZ3MpKVxuK1x0XHRtaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCxcbitcdFx0XHRcdCAgICAgVEFQUklPX01JTl9TV19JTlRFUlZBTF9OUyk7XG4rXG4rXHRyZXR1cm4gbWluX2ludGVydmFsO1xuK31cbitcbiBzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pXG4ge1xuIFx0cmV0dXJuIGRpdl91NjQoZHVyYXRpb24gKiBQU0VDX1BFUl9OU0VDLCBhdG9taWM2NF9yZWFkKFx1MDAyNnEtXHUwMDNlcGljb3NfcGVyX2J5dGUpKTtcbkBAIC05MTUsNiArOTM1LDUxIEBAIHN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLFxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbisvKiBUaGUgb3BlcmF0aW9uYWwgc2NoZWR1bGUgZmVsbCBiZWhpbmQsIGUuZy4gYmVjYXVzZSB0aGUgdGltZXIgd2FzIGRlbGF5ZWRcbisgKiBvciB0aGUgcmVmZXJlbmNlIGNsb2NrIHN0ZXBwZWQgZm9yd2FyZC4gQWR2YW5jaW5nIG9uZSBlbnRyeSBwZXIgdGltZXJcbisgKiBleHBpcnkgd291bGQgcmVwbGF5IHRoZSB3aG9sZSBiYWNrbG9nIGZyb20gaHJ0aW1lciBjb250ZXh0LCBzbyBza2lwXG4rICogY29tcGxldGUgY3ljbGVzIGFyaXRobWV0aWNhbGx5IGFuZCB3YWxrIHRoZSByZW1haW5pbmcgZW50cmllcyB0byBsYW5kIG9uXG4rICogdGhlIGVudHJ5IGNvdmVyaW5nIHRoZSBjdXJyZW50IHRpbWUuXG4rICovXG4rc3RhdGljIHZvaWQgdGFwcmlvX2NhdGNoX3VwKHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm9wZXIsXG4rXHRcdFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqKm5leHQsIGt0aW1lX3QgKm5leHRfc3RhcnQsXG4rXHRcdFx0ICAgIGt0aW1lX3QgKmVuZF90aW1lLCBrdGltZV90IG5vdylcbit7XG4rXHRpbnQgYnVkZ2V0ID0gMiAqIG9wZXItXHUwMDNlbnVtX2VudHJpZXMgKyAxO1xuK1x0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSA9ICpuZXh0O1xuK1x0a3RpbWVfdCBzdGFydCA9ICpuZXh0X3N0YXJ0O1xuK1x0a3RpbWVfdCBlbmQgPSAqZW5kX3RpbWU7XG4rXHRzNjQgYmVoaW5kID0ga3RpbWVfc3ViKG5vdywgZW5kKTtcbitcbitcdGlmIChvcGVyLVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGJlaGluZCBcdTAwM2U9IG9wZXItXHUwMDNlY3ljbGVfdGltZSkge1xuK1x0XHRzNjQganVtcCA9IGRpdjY0X3M2NChiZWhpbmQsIG9wZXItXHUwMDNlY3ljbGVfdGltZSkgKiBvcGVyLVx1MDAzZWN5Y2xlX3RpbWU7XG4rXG4rXHRcdHN0YXJ0ID0ga3RpbWVfYWRkX25zKHN0YXJ0LCBqdW1wKTtcbitcdFx0ZW5kID0ga3RpbWVfYWRkX25zKGVuZCwganVtcCk7XG4rXHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSwganVtcCk7XG4rXHR9XG4rXG4rXHR3aGlsZSAoa3RpbWVfYmVmb3JlKGVuZCwgbm93KSBcdTAwMjZcdTAwMjYgLS1idWRnZXQpIHtcbitcdFx0aWYgKGxpc3RfaXNfbGFzdChcdTAwMjZlbnRyeS1cdTAwM2VsaXN0LCBcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMpIHx8XG4rXHRcdCAgICBrdGltZV9jb21wYXJlKGVuZCwgb3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSkgPT0gMCkge1xuK1x0XHRcdGVudHJ5ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMsXG4rXHRcdFx0XHRcdFx0IHN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7XG4rXHRcdFx0b3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLFxuK1x0XHRcdFx0XHRcdFx0ICAgIG9wZXItXHUwMDNlY3ljbGVfdGltZSk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0ZW50cnkgPSBsaXN0X25leHRfZW50cnkoZW50cnksIGxpc3QpO1xuK1x0XHR9XG4rXG4rXHRcdHN0YXJ0ID0gZW5kO1xuK1x0XHRlbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBlbnRyeS1cdTAwM2VpbnRlcnZhbCk7XG4rXHRcdGVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSk7XG4rXHR9XG4rXG4rXHQqbmV4dCA9IGVudHJ5O1xuK1x0Km5leHRfc3RhcnQgPSBzdGFydDtcbitcdCplbmRfdGltZSA9IGVuZDtcbit9XG4rXG4gc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIHtcbiBcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBjb250YWluZXJfb2YodGltZXIsIHN0cnVjdCB0YXByaW9fc2NoZWQsXG5AQCAtOTI0LDcgKzk4OSw3IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbiBcdGludCBudW1fdGMgPSBuZXRkZXZfZ2V0X251bV90YyhkZXYpO1xuIFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7XG4gXHRzdHJ1Y3QgUWRpc2MgKnNjaCA9IHEtXHUwMDNlcm9vdDtcbi1cdGt0aW1lX3QgZW5kX3RpbWU7XG4rXHRrdGltZV90IGVuZF90aW1lLCBuZXh0X3N0YXJ0LCBub3c7XG4gXHRpbnQgdGM7XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2cS1cdTAwM2VjdXJyZW50X2VudHJ5X2xvY2spO1xuQEAgLTk2MCwxNCArMTAyNSwxOSBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4gXHRcdG5leHQgPSBsaXN0X25leHRfZW50cnkoZW50cnksIGxpc3QpO1xuIFx0fVxuIFxuLVx0ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW50cnktXHUwMDNlZW5kX3RpbWUsIG5leHQtXHUwMDNlaW50ZXJ2YWwpO1xuK1x0bmV4dF9zdGFydCA9IGVudHJ5LVx1MDAzZWVuZF90aW1lO1xuK1x0ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC1cdTAwM2VpbnRlcnZhbCk7XG4gXHRlbmRfdGltZSA9IG1pbl90KGt0aW1lX3QsIGVuZF90aW1lLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKTtcbiBcbitcdG5vdyA9IHRhcHJpb19nZXRfdGltZShxKTtcbitcdGlmICh1bmxpa2VseShrdGltZV9iZWZvcmUoZW5kX3RpbWUsIG5vdykpKVxuK1x0XHR0YXByaW9fY2F0Y2hfdXAob3BlciwgXHUwMDI2bmV4dCwgXHUwMDI2bmV4dF9zdGFydCwgXHUwMDI2ZW5kX3RpbWUsIG5vdyk7XG4rXG4gXHRmb3IgKHRjID0gMDsgdGMgXHUwMDNjIG51bV90YzsgdGMrKykge1xuIFx0XHRpZiAobmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSA9PSBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpXG4gXHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYO1xuIFx0XHRlbHNlXG4tXHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKGVudHJ5LVx1MDAzZWVuZF90aW1lLFxuK1x0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhuZXh0X3N0YXJ0LFxuIFx0XHRcdFx0XHRcdFx0XHQgbmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSk7XG4gXHR9XG4gXG5AQCAtMTAzOCw3ICsxMTA4LDcgQEAgc3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcbiBcdFx0XHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcbiBcdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdGludCBtaW5fZHVyYXRpb24gPSBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pO1xuK1x0czY0IG1pbl9kdXJhdGlvbiA9IHRhcHJpb19taW5faW50ZXJ2YWwocSk7XG4gXHR1MzIgaW50ZXJ2YWwgPSAwO1xuIFxuIFx0aWYgKHRiW1RDQV9UQVBSSU9fU0NIRURfRU5UUllfQ01EXSlcbkBAIC0xMTY2LDcgKzEyMzYsNyBAQCBzdGF0aWMgaW50IHBhcnNlX3RhcHJpb19zY2hlZHVsZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG4gXHRcdG5ldy1cdTAwM2VjeWNsZV90aW1lID0gY3ljbGU7XG4gXHR9XG4gXG4tXHRpZiAobmV3LVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNjIG5ldy1cdTAwM2VudW1fZW50cmllcyAqIGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTikpIHtcbitcdGlmIChuZXctXHUwMDNlY3ljbGVfdGltZSBcdTAwM2MgKHM2NCluZXctXHUwMDNlbnVtX2VudHJpZXMgKiB0YXByaW9fbWluX2ludGVydmFsKHEpKSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCInY3ljbGVfdGltZScgaXMgdG9vIHNtYWxsXCIpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXG5pbmRleCBjZDE5ZDA1OTI1ZTQwLi4zZmU2NjgzOWY4YWVkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb25cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXG5AQCAtMTU0LDYgKzE1NCwyOCBAQFxuICAgICAgICAgICAgIFwiZWNobyBcXFwiMVxcXCIgXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlXCJcbiAgICAgICAgIF1cbiAgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcImY0YjJcIixcbisgICAgICAgIFwibmFtZVwiOiBcIkFkZCB0YXByaW8gUWRpc2Mgd2l0aCBzb2Z0d2FyZSBpbnRlcnZhbCBiZWxvdyB0aGUgbWluaW11bVwiLFxuKyAgICAgICAgXCJjYXRlZ29yeVwiOiBbXG4rICAgICAgICAgICAgXCJxZGlzY1wiLFxuKyAgICAgICAgICAgIFwidGFwcmlvXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcInBsdWdpbnNcIjoge1xuKyAgICAgICAgICAgIFwicmVxdWlyZXNcIjogXCJuc1BsdWdpblwiXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgXCJlY2hvIFxcXCIxIDEgOFxcXCIgXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9uZXdfZGV2aWNlXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBxZGlzYyBhZGQgZGV2ICRFVEggcm9vdCBoYW5kbGUgMTogdGFwcmlvIG51bV90YyAyIHF1ZXVlcyAxQDAgMUAxIHNjaGVkLWVudHJ5IFMgMDEgNTAwMDAgc2NoZWQtZW50cnkgUyAwMiA1MDAwMCBjbG9ja2lkIENMT0NLX1RBSVwiLFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjJcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIHFkaXNjIHNob3cgZGV2ICRFVEhcIixcbisgICAgICAgIFwibWF0Y2hQYXR0ZXJuXCI6IFwicWRpc2MgdGFwcmlvIDE6IHJvb3QgcmVmY250XCIsXG4rICAgICAgICBcIm1hdGNoQ291bnRcIjogXCIwXCIsXG4rICAgICAgICBcInRlYXJkb3duXCI6IFtcbisgICAgICAgICAgICBcImVjaG8gXFxcIjFcXFwiIFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZVwiXG4rICAgICAgICBdXG4rICAgIH0sXG4gICAgIHtcbiAgICAgICAgIFwiaWRcIjogXCI4MzFmXCIsXG4gICAgICAgICBcIm5hbWVcIjogXCJBZGQgdGFwcmlvIFFkaXNjIHdpdGggdG9vIHNob3J0IGN5Y2xlLXRpbWVcIixcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ3OjU0Ljg5MDI4NDEwNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNzYzNjI3NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVGFwcmlvIFFkaXNjIFBhdGNoKipcblxuT2theSwgc28gd2UgaGF2ZSBhIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIHR3byBuZXcgZnVuY3Rpb25zOiBgdGFwcmlvX21pbl9pbnRlcnZhbCgpYCB3aGljaCBsaWtlbHkgZW5mb3JjZXMgc29tZSBraW5kIG9mIHNjaGVkdWxpbmcgY29uc3RyYWludCwgYW5kIGB0YXByaW9fY2F0Y2hfdXAoKWAgdG8gZGVhbCB3aXRoIG1pc3NlZCBkZWFkbGluZXMgb3IgY2xvY2sgc2tldywgd2hpY2ggaXMgYSBrZXkgY29uc2lkZXJhdGlvbiBmb3IgdGltZS1zZW5zaXRpdmUgc2NoZWR1bGVzLiBDcnVjaWFsbHksIGBhZHZhbmNlX3NjaGVkKClgIGlzIGJlaW5nIG1vZGlmaWVkIHRvIGNhbGwgYHRhcHJpb19jYXRjaF91cCgpYCwgaW1wbHlpbmcgdGhpcyBpcyBhIGNvcmUgb3BlcmF0aW9uYWwgY2hhbmdlLlxuXG5UaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50IHRvIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5IFNoYXBlciwgdGhlIHRhcHJpbyBxZGlzYy4gRnJvbSBhIHVzZXIgcGVyc3BlY3RpdmUsIHRoaXMgcWRpc2MgaXMgYWNjZXNzaWJsZSB0aHJvdWdoIG5ldGxpbmsgYW5kIHRoZSBgdGMgcWRpc2MgYWRkIC4uLiB0YXByaW9gIGNvbW1hbmQuIEdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHN1YnRsZSB0aW1pbmctcmVsYXRlZCBidWdzIGFuZCB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2UsIHRoaXMgaXMgKmFic29sdXRlbHkqIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGFnZ3Jlc3NpdmUgZnV6emluZy4gVGhlIGludGVyYWN0aW9uIHdpdGggdGltZSwgc2NoZWR1bGluZywgYW5kIHBvdGVudGlhbGx5IGV4dGVybmFsIGNsb2NrIHNvdXJjZXMgbWFrZXMgaXQgYSBwcmltZSB0YXJnZXQgZm9yIGlkZW50aWZ5aW5nIGVkZ2UgY2FzZXMgYW5kIHZ1bG5lcmFiaWxpdGllcy5cblxuQmVmb3JlIGRpdmluZyBpbnRvIGEgZnV6emluZyBzdHJhdGVneSwgSSBzaG91bGQgZmluZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBpcyBlbmFibGVkLCBzbyBJJ2xsIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYG5ldC9zY2hlZC9NYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmb3IgdGhlIGBzY2hfdGFwcmlvLmNgIHNvdXJjZSBmaWxlLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBiZSBjcnVjaWFsIGZvciBjcmVhdGluZyBlZmZlY3RpdmUgZnV6emluZyBjb25maWd1cmF0aW9ucyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTg0LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6MDEuMDY2NjQ5NDcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDA5MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjaF90YXByaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz0xNzI9Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzgtXFxubmV0L3NjaGVkL0tjb25maWc6MTc5OlxcdCAgU2VlIHRoZSB0b3Agb2YgXFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF90YXByaW8uY1xcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cXG5uZXQvc2NoZWQvS2NvbmZpZy0xODAtXFxubmV0L3NjaGVkL0tjb25maWctMTgxLVxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbm5ldC9zY2hlZC9LY29uZmlnOjE4MjpcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGFwcmlvLlxcbm5ldC9zY2hlZC9LY29uZmlnLTE4My1cXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT02Mz1vYmotJChDT05GSUdfTkVUX1NDSF9FVEYpXFx0Kz0gc2NoX2V0Zi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19ORVRfU0NIX1RBUFJJTylcXHQrPSBzY2hfdGFwcmlvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjUtb2JqLSQoQ09ORklHX05FVF9TQ0hfQlBGKVxcdCs9IGJwZl9xZGlzYy5vXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTItXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzozOi8qIG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcXHQgVGltZSBBd2FyZSBQcmlvcml0eSBTY2hlZHVsZXJcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQtICpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6MDEuMTEwMDYzNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MTg0NjQ0MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIFRBUFJJTyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIHRhc2sgYXQgaGFuZCBpbnZvbHZlcyBgTkVUX1NDSF9UQVBSSU9gLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVyaWVuY2Ugd2l0aCBuZXR3b3JrIHNjaGVkdWxpbmcsIGlzIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY29uc3VsdCB0aGUga2VybmVsJ3MgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBgbmV0L3NjaGVkL0tjb25maWdgIGlzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIGZpbmQgdGhlIGRldGFpbGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgaGVscCB0ZXh0IHJlbGF0ZWQgdG8gYE5FVF9TQ0hfVEFQUklPYC4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaXMgZW5hYmxlZCwgYW55IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGNvbXBpbGUtdGltZSBjb25maWd1cmF0aW9ucyBvciBjb25zdHJhaW50cyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgdG8gZW5zdXJlIGl0J3MgYnVpbHQgY29ycmVjdGx5IGZvciBteSB0YXJnZXQgZW52aXJvbm1lbnQuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMDQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODowNy45Mjg1MzA3MTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NTAyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hfVEFQUklPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MTY3PWNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE3MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxubmV0L3NjaGVkL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6MDcuOTczMzg5Mjg0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUwNTMwNjczNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIE5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGtlcm5lbCdzIG5ldHdvcmsgc2NoZWR1bGluZyBjb25maWd1cmF0aW9uLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBgbmV0L3NjaGVkL0tjb25maWdgIGFyb3VuZCBsaW5lIDE3Mi4gSSdtIGd1ZXNzaW5nIHRoYXQgcGFydGljdWxhciBzZWN0aW9uIG1pZ2h0IGJlIHdoZXJlIGEgY2VydGFpbiBzZXR0aW5nIG9yIGZlYXR1cmUgcmVsYXRlZCB0by4uLiBbVXNlcidzIGZpZWxkIG9mIGV4cGVydGlzZSwgaW5mZXJyZWQsIGUuZy4sIHRyYWZmaWMgc2hhcGluZywgUW9TLCBxdWV1ZSBtYW5hZ2VtZW50LCBldGMuXS4uLiBpcyBkZWZpbmVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSByZWxldmFudCBvcHRpb25zLCB0aGVpciBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gb3IgY29tbWVudHMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaG93IHRoaXMgY29tcG9uZW50IGlzIGNvbmZpZ3VyZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbmV0d29yayBzdGFjay4gSSBhbnRpY2lwYXRlIHRoZXJlIHdpbGwgYmUgZGV0YWlscyByZWdhcmRpbmcgYW55IHBhcmFtZXRlcnMgb3IgY29uc3RyYWludHMgb24gdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBhcHBseSBpbiBteSB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzMyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6MTEuNDc4Njk5MjlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTg5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzA6XFx0XFx0ICBDb21tb24gbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIG1xcHJpbyBxdWV1ZSBjb25maWd1cmF0aW9ucy5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxuIDE3MzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcXFwiXFxuIDE3NDpcXHRcXHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXFxuIDE3NTpcXHRcXHRoZWxwXFxuIDE3NjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxcbiAxNzc6XFx0XFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0XFx0ICBTZWUgdGhlIHRvcCBvZiBcXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXFx1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAxODA6XFx0XFxuIDE4MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gMTgyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF90YXByaW8uXFxuIDE4MzpcXHRcXG4gMTg0OlxcdGNvbmZpZyBORVRfU0NIX0dSRURcXG4gMTg1OlxcdFxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb24gKEdSRUQpXFxcIlxcbiAxODY6XFx0XFx0aGVscFxcbiAxODc6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgR2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uXFxuIDE4ODpcXHRcXHQgIChHUkVEKSBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0gZm9yIHNvbWUgb2YgeW91ciBuZXR3b3JrIGRldmljZXNcXG4gMTg5OlxcdFxcdCAgKHNlZSB0aGUgdG9wIG9mIFxcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfcmVkLmNcXHUwMDNlIGZvciBkZXRhaWxzIGFuZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODoxMS40Nzg3ODA1OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTI5NzgxMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBgTkVUX1NDSF9UQVBSSU9gKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYE5FVF9TQ0hfVEFQUklPYC4gVGhhdCdzIHRoZSBjb25maWcsIHNvIGxldCdzIGRpZyBpbnRvIHRoZSBkZXRhaWxzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBrZXkgc3ltYm9scyBpbnZvbHZlZC4gRmlyc3QsIEkgc2VlIGB0YXByaW9fY2F0Y2hfdXBgLCBgYWR2YW5jZV9zY2hlZGAsIGFuZCBgdGFwcmlvX21pbl9pbnRlcnZhbGAgYXJlIGFsbCBzdGF0aWMuIFRoYXQncyBnb29kIHRvIGtub3cg4oCTIGl0IGdpdmVzIG1lIGEgbmFycm93ZXIgZm9jdXMuXG5cbk5vdywgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGFsbCBhY3R1YWxseSAqd29ya3MqLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AuIEkgbmVlZCB0byBpZGVudGlmeSB3aGF0IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGV4aXN0IGFuZCwgY3J1Y2lhbGx5LCB3aGljaCBmdW5jdGlvbnMgYXJlIHJlZ2lzdGVyZWQgYXMgcWRpc2Mgb3BlcmF0aW9ucy4gVGhhdCB3aWxsIHNob3cgbWUgaG93IHRoaXMgc2NoZWR1bGVyIGFjdHVhbGx5IGludGVyZmFjZXMgd2l0aCB0aGUgbmV0d29ya2luZyBzdGFjayBhbmQgaXRzIHN1cnJvdW5kaW5nIGNvbXBvbmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4ODgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjE0Ljg5MTc2MTc0N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2MDYxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IFFkaXNjX29wcyB0YXByaW9fcWRpc2Nfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNjAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHRhcHJpb19jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MTAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNjExOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHRhcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MTItXFx0LmNsX29wc1xcdFxcdD0gXFx1MDAyNnRhcHJpb19jbGFzc19vcHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjE0LjkzNzM3MjI0NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjYyNjgyNjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBzY2hfdGFwcmlvLmNgIGZvciBEZWVwZXIgVW5kZXJzdGFuZGluZyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gdGhpbmtpbmcgSSBuZWVkIHRvIGRlbHZlIGludG8gYG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNgIGFnYWluLiBJJ3ZlIGJlZW4gd29ya2luZyB3aXRoIHRyYWZmaWMgc2hhcGluZyBhbmQgVGltZS1Bd2FyZSBTaGFwZXJzIChUQVMpIGxhdGVseSwgYW5kIEkgd2FudCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUuIFNwZWNpZmljYWxseSwgbXkgbWVudGFsIGN1cnNvciBpcyBsYW5kaW5nIGFyb3VuZCBsaW5lIDI2MTEuIEkgcmVjYWxsIHRoYXQgYXJlYSBiZWluZyBwaXZvdGFsIGZvciBbaW5zZXJ0IGEgYnJpZWYsIHJlbGV2YW50IHRlY2huaWNhbCBkZXRhaWwgYWJvdXQgdGhlIGZ1bmN0aW9uIG9mIGxpbmUgMjYxMSAtIGUuZy4sIFwiaGFuZGxpbmcgdGhlIHNjaGVkdWxpbmcgb2YgdGltZSB3aW5kb3dzXCIsIG9yIFwiaG93IHRoZSBwYWNrZXQgaXMgY2xhc3NpZmllZCBhbmQgc2NoZWR1bGVkXCJdLCBhbmQgSSBuZWVkIHRvIHNvbGlkaWZ5IG15IGdyYXNwIG9uIGhvdyB0aGF0IHBpZWNlIGludGVncmF0ZXMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUuIEknbSBleHBlY3RpbmcgdG8gZmluZCBpbnNpZ2h0cyBvbiBbbWVudGlvbiBzcGVjaWZpYyBhc3BlY3RzIHlvdSdyZSBsb29raW5nIGZvciwgZS5nLiwgXCJ0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUgdGltZXN0YW1waW5nIG1lY2hhbmlzbXNcIiwgb3IgXCJ0aGUgbG9naWMgZm9yIHJlLWNhbGN1bGF0aW5nIHRoZSBzY2hlZHVsaW5nIHBsYW4gYmFzZWQgb24gZXZlbnRzXCJdLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGFyb3VuZCB0aGF0IGxpbmUsIGxvb2tpbmcgZm9yIHRoZSByZWxhdGVkIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb25zIHRoYXQgYXJlIHVzZWQsIGFuZCB0cnlpbmcgdG8gYnVpbGQgYSBwcmVjaXNlIG1lbnRhbCBtb2RlbCBvZiBpdHMgZXhlY3V0aW9uIHBhdGguIEknbSBleHBlY3RpbmcgdG8gcmVmaW5lIG15IGV4aXN0aW5nIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIFRpbWUtQXdhcmUgU2hhcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzUxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6MTguNjAwMDU3Njg2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2MDAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI2MDA6XFx0XFxuMjYwMTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyB0YXByaW9fY2xhc3Nfb3BzID0ge1xcbjI2MDI6XFx0XFx0LmdyYWZ0XFx0XFx0PSB0YXByaW9fZ3JhZnQsXFxuMjYwMzpcXHRcXHQubGVhZlxcdFxcdD0gdGFwcmlvX2xlYWYsXFxuMjYwNDpcXHRcXHQuZmluZFxcdFxcdD0gdGFwcmlvX2ZpbmQsXFxuMjYwNTpcXHRcXHQud2Fsa1xcdFxcdD0gdGFwcmlvX3dhbGssXFxuMjYwNjpcXHRcXHQuZHVtcFxcdFxcdD0gdGFwcmlvX2R1bXBfY2xhc3MsXFxuMjYwNzpcXHRcXHQuZHVtcF9zdGF0c1xcdD0gdGFwcmlvX2R1bXBfY2xhc3Nfc3RhdHMsXFxuMjYwODpcXHRcXHQuc2VsZWN0X3F1ZXVlXFx0PSB0YXByaW9fc2VsZWN0X3F1ZXVlLFxcbjI2MDk6XFx0fTtcXG4yNjEwOlxcdFxcbjI2MTE6XFx0c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbjI2MTI6XFx0XFx0LmNsX29wc1xcdFxcdD0gXFx1MDAyNnRhcHJpb19jbGFzc19vcHMsXFxuMjYxMzpcXHRcXHQuaWRcXHRcXHQ9IFxcXCJ0YXByaW9cXFwiLFxcbjI2MTQ6XFx0XFx0LnByaXZfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCB0YXByaW9fc2NoZWQpLFxcbjI2MTU6XFx0XFx0LmluaXRcXHRcXHQ9IHRhcHJpb19pbml0LFxcbjI2MTY6XFx0XFx0LmNoYW5nZVxcdFxcdD0gdGFwcmlvX2NoYW5nZSxcXG4yNjE3OlxcdFxcdC5kZXN0cm95XFx0PSB0YXByaW9fZGVzdHJveSxcXG4yNjE4OlxcdFxcdC5yZXNldFxcdFxcdD0gdGFwcmlvX3Jlc2V0LFxcbjI2MTk6XFx0XFx0LmF0dGFjaFxcdFxcdD0gdGFwcmlvX2F0dGFjaCxcXG4yNjIwOlxcdFxcdC5wZWVrXFx0XFx0PSB0YXByaW9fcGVlayxcXG4yNjIxOlxcdFxcdC5kZXF1ZXVlXFx0PSB0YXByaW9fZGVxdWV1ZSxcXG4yNjIyOlxcdFxcdC5lbnF1ZXVlXFx0PSB0YXByaW9fZW5xdWV1ZSxcXG4yNjIzOlxcdFxcdC5kdW1wXFx0XFx0PSB0YXByaW9fZHVtcCxcXG4yNjI0OlxcdFxcdC5kdW1wX3N0YXRzXFx0PSB0YXByaW9fZHVtcF9zdGF0cyxcXG4yNjI1OlxcdFxcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuMjYyNjpcXHR9O1xcbjI2Mjc6XFx0TU9EVUxFX0FMSUFTX05FVF9TQ0goXFxcInRhcHJpb1xcXCIpO1xcbjI2Mjg6XFx0XFxuMjYyOTpcXHRzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHRhcHJpb19kZXZpY2Vfbm90aWZpZXIgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjE4LjYwMDE5MDUzNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjY2NDczMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBUaGlzIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBmdW5jdGlvbnMgYHRhcHJpb19pbml0YCwgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYCBqdW1wIG91dC4gVGhvc2UgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cywgYW5kIEkgbmVlZCB0byBjYXJlZnVsbHkgZXZhbHVhdGUgaG93IHRoZXkncmUgYmVpbmcgdG91Y2hlZC4gVGhlIGNvcmUgbW9kaWZpY2F0aW9uLCB0aG91Z2gsIHNlZW1zIHRvIGJlIGluIGBhZHZhbmNlX3NjaGVkYCwgd2hpY2gsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgaXMgdGhlIGhydGltZXIgY2FsbGJhY2suIFRoYXQncyBhIGNyaXRpY2FsIHBhdGgsIHNvIGFueSBjaGFuZ2UgdGhlcmUgd2FycmFudHMgZXh0cmEgc2NydXRpbnkuIFRoZSBmYWN0IHRoYXQgaXQgYWxzbyB0b3VjaGVzIGBmaWxsX3NjaGVkX2VudHJ5YCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAsIGJvdGggY2FsbGVkIGZyb20gYHRhcHJpb19jaGFuZ2VgLCBpcyBzaWduaWZpY2FudC4gU28sIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgZ29pbmcgb24sIG15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gYGFkdmFuY2Vfc2NoZWRgIGFuZCBgdGFwcmlvX2NoYW5nZWAgc3BlY2lmaWNhbGx5LiBUaG9zZSBhcmUgdGhlIHBvaW50cyBvZiBncmVhdGVzdCBjb25jZXJuIHJpZ2h0IG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE5NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6MjIuMjY2NjY2MTY2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzU5Mzc1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZHZhbmNlX3NjaGVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uYz05NDQ9c3RhdGljIHZvaWQgdGFwcmlvX2NhdGNoX3VwKHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm9wZXIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTk4Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjk4MzpzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05ODQte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0xODg3PXN0YXRpYyBpbnQgdGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDIxLVxcdCAgICAhaHJ0aW1lcl9hY3RpdmUoXFx1MDAyNnEtXFx1MDAzZWFkdmFuY2VfdGltZXIpKSB7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDIyOlxcdFxcdGhydGltZXJfc2V0dXAoXFx1MDAyNnEtXFx1MDAzZWFkdmFuY2VfdGltZXIsIGFkdmFuY2Vfc2NoZWQsIHEtXFx1MDAzZWNsb2NraWQsIEhSVElNRVJfTU9ERV9BQlMpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjAyMy1cXHR9XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwNDAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDQxOlxcdFxcdC8qIE5vdCBnb2luZyB0byByYWNlIGFnYWluc3QgYWR2YW5jZV9zY2hlZCgpLCBidXQgc3RpbGwgKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwNDItXFx0XFx0YWRtaW4gPSByY3VfcmVwbGFjZV9wb2ludGVyKHEtXFx1MDAzZWFkbWluX3NjaGVkLCBuZXdfYWRtaW4sXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwNDgtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDQ5OlxcdFxcdC8qIFByb3RlY3RzIGFnYWluc3QgYWR2YW5jZV9zY2hlZCgpICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDUwLVxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZxLVxcdTAwM2VjdXJyZW50X2VudHJ5X2xvY2ssIGZsYWdzKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjEzNj1zdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxNDQtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTQ1OlxcdGhydGltZXJfc2V0dXAoXFx1MDAyNnEtXFx1MDAzZWFkdmFuY2VfdGltZXIsIGFkdmFuY2Vfc2NoZWQsIENMT0NLX1RBSSwgSFJUSU1FUl9NT0RFX0FCUyk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTQ2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODoyMi4zMTQyNjU3NzVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjYxNDA4MDI2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRBUFJJTyBTY2hlZHVsZXIgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBUQVBSSU8gc2NoZWR1bGVyIGltcGxlbWVudGF0aW9uLiBGcm9tIHdoYXQgSSB1bmRlcnN0YW5kLCBgdGFwcmlvX2NoYW5nZWAgaXMgdGhlIGNvcmUgZnVuY3Rpb24gZm9yIHBhcnNpbmcgdGhlIHNjaGVkdWxlIGFuZCBzZXR0aW5nIHVwIHRoZSB0aW1lci4gVGhlbiwgYGFkdmFuY2Vfc2NoZWRgIGlzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0J3MgdHJpZ2dlcmVkIGJ5IHRoZSB0aW1lciwgYW5kIGl0IHVzZXMgYHRhcHJpb19jYXRjaF91cGAgdG8gaGFuZGxlIHRoZSBhY3R1YWwgc2NoZWR1bGluZyBsb2dpYy4gSSB3YW50IHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGVudHJ5IHBvaW50cywgYW5kIGJhc2VkIG9uIHRoZSBwcm9tcHQncyBpbnN0cnVjdGlvbiB0byBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBmdW5jdGlvbnMsIGl0IGxvb2tzIGxpa2UgYHRhcHJpb19jaGFuZ2VgLCBvciBwb3NzaWJseSBgdGFwcmlvX2VucXVldWVgIG9yIGB0YXByaW9fZGVxdWV1ZWAgYXJlIHN0cm9uZyBjYW5kaWRhdGVzIGZvciBpbmNsdXNpb24uIEhvd2V2ZXIsIHRoZSBwcm9tcHQgZW1waGFzaXplcyB0aGF0IHRoZSBtYWluIHBhcnNpbmcgaXMgZG9uZSBpbiBgdGFwcmlvX2NoYW5nZWAsIHNvIHRoYXQgaXMgcHJvYmFibHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuXG5cbk5vdywgdGhlIGNhdmVhdCBpcyB0aGF0IGBhZHZhbmNlX3NjaGVkYCBpcyBzdGF0aWMsIHdoaWNoIHByZXNlbnRzIGEgYml0IG9mIGEgY2hhbGxlbmdlIGluIHRlcm1zIG9mIHVzaW5nIGl0IGFzIGEgZGlyZWN0IGZvY3VzLiBCdXQsIHNpbmNlIGl0J3MgYW4gaHJ0aW1lciBjYWxsYmFjaywgaXQgbGlrZWx5ICppc24ndCogaW5saW5lZCwgc28gaXQncyBwcm9iYWJseSBzdGlsbCByZWxldmFudC4gSG1tLCBhY2NvcmRpbmcgdG8gdGhlIHByb21wdCwgSSBzaG91bGQgZm9jdXMgb24gbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFRoaXMgbGVhbnMgdG93YXJkcyBgdGFwcmlvX2NoYW5nZWAgYmVpbmcgYSBnb29kIGNob2ljZS5cblxuSG9sZCBvbiwgbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IGlmIGB0YXByaW9fY2hhbmdlYCBpcyBzdGF0aWMuLi4gT2theSwgaXQgaXMgc3RhdGljLiAqRGFybiouIFdhaXQgYSBtaW51dGUuLi4gbG9va2luZyBhdCBhbGwgdGhlIG9wZXJhdGlvbnMgZGVmaW5lZCBpbiBgc2NoX3RhcHJpby5jYCwgdGhleSBhbGwgc2VlbSB0byBiZSBzdGF0aWMuIE9rYXksIGxldCBtZSBxdWlja2x5IHNjYW4gdGhlIHNvdXJjZSB0byBzZWUgaWYgdGhlcmUgYXJlICphbnkqIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODA1NiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODoyOC45MjgzNDg1MTdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODAzMjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aMC05X10rIFthLXpBLVowLTlfXStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMzQtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzozNTpzdGF0aWMgTElTVF9IRUFEKHRhcHJpb19saXN0KTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTM2LXN0YXRpYyBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSB0YXByaW9faGF2ZV9icm9rZW5fbXFwcmlvO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0xNDcxPUVYUE9SVF9TWU1CT0xfR1BMKHRhcHJpb19vZmZsb2FkX2dldCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDcyLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQ3Mzp2b2lkIHRhcHJpb19vZmZsb2FkX2ZyZWUoc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKm9mZmxvYWQpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDc0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6MjguOTczMTU3NzM1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjcwMDA4MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUQVBSSU8gQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBwcm9tcHQgZW1waGFzaXplcyBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhlIHRoaW5nIGlzLCBgdGFwcmlvX29mZmxvYWRfZnJlZWAgaXMgaW5kZWVkIG5vbi1zdGF0aWMsIGJ1dCBpdCByZWFsbHkgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgY29yZSBjaGFuZ2UgaGVyZS4gSSBuZWVkIHRvIGZvY3VzIG9uIHdoYXQncyByZWxldmFudCB0byB0aGUgcHJvbXB0LlxuXG5UaGUgaW1wb3J0YW50IHBvaW50IGlzIGB0YXByaW9fY2hhbmdlYC4gSSBoYXZlIHRvIGNvbmZpcm0gdGhhdCBpdCBmaXRzIHRoZSBiaWxsLiBTaW5jZSBpdCdzIHJlZ2lzdGVyZWQgaW4gYHRhcHJpb19xZGlzY19vcHNgLCB0aGF0IGltcGxpZXMgdGhhdCBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbiBzb21ld2hlcmUsIHJpZ2h0PyBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZSBjb21waWxlciB3b24ndCBiZSBhYmxlIHRvIGlubGluZSBpdCwgYW5kIGl0IHdpbGwgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBTbywgYmFzZWQgb24gdGhhdCwgYHRhcHJpb19jaGFuZ2VgIHNlZW1zIHBlcmZlY3RseSBhY2NlcHRhYmxlIGFjY29yZGluZyB0byB0aGlzIGd1aWRhbmNlLiBObyBhY3Rpb24gaXMgcmVxdWlyZWQgdGhlcmUuXG5cbk5vdywgSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiBgTkVUX1NDSF9UQVBSSU9gIGhhcyBhbnkgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gQmV0dGVyIHRvIGNvbmZpcm0gdGhhdCBlYXJseSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODg5MCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODozMy44MDAxNjEzODFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDQ2NjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MzM0PWNvbmZpZyBORVRfU0NIX0ZRX1BJRVxcbm5ldC9zY2hlZC9LY29uZmlnOjMzNTpcXHRkZXBlbmRzIG9uIE5FVF9TQ0hfUElFXFxubmV0L3NjaGVkL0tjb25maWctMzM2LVxcdHRyaXN0YXRlIFxcXCJGbG93IFF1ZXVlIFByb3BvcnRpb25hbCBJbnRlZ3JhbCBjb250cm9sbGVyIEVuaGFuY2VkIChGUS1QSUUpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9MzQ3PWNvbmZpZyBORVRfU0NIX0lOR1JFU1NcXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDgtXFx0dHJpc3RhdGUgXFxcIkluZ3Jlc3MvY2xhc3NpZmllci1hY3Rpb24gUWRpc2NcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6MzQ5OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy0zNTAtXFx0c2VsZWN0IE5FVF9YR1JFU1NcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTQwNj1jb25maWcgTkVUX1NDSF9CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy00MDctXFx0Ym9vbCBcXFwiQlBGLWJhc2VkIFFkaXNjXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjQwODpcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMIFxcdTAwMjZcXHUwMDI2IEJQRl9KSVQgXFx1MDAyNlxcdTAwMjYgREVCVUdfSU5GT19CVEZcXG5uZXQvc2NoZWQvS2NvbmZpZy00MDktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NDk0PWNvbmZpZyBORVRfQ0xTX1JPVVRFNFxcbm5ldC9zY2hlZC9LY29uZmlnLTQ5NS1cXHR0cmlzdGF0ZSBcXFwiUm91dGluZyBkZWNpc2lvbiAoUk9VVEUpXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjQ5NjpcXHRkZXBlbmRzIG9uIElORVRcXG5uZXQvc2NoZWQvS2NvbmZpZy00OTctXFx0c2VsZWN0IElQX1JPVVRFX0NMQVNTSURcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTUyNj1jb25maWcgQ0xTX1UzMl9QRVJGXFxubmV0L3NjaGVkL0tjb25maWctNTI3LVxcdGJvb2wgXFxcIlBlcmZvcm1hbmNlIGNvdW50ZXJzIHN1cHBvcnRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTI4OlxcdGRlcGVuZHMgb24gTkVUX0NMU19VMzJcXG5uZXQvc2NoZWQvS2NvbmZpZy01MjktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTMzPWNvbmZpZyBDTFNfVTMyX01BUktcXG5uZXQvc2NoZWQvS2NvbmZpZy01MzQtXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIG1hcmtzIHN1cHBvcnRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTM1OlxcdGRlcGVuZHMgb24gTkVUX0NMU19VMzJcXG5uZXQvc2NoZWQvS2NvbmZpZy01MzYtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTUwPWNvbmZpZyBORVRfQ0xTX0NHUk9VUFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTUzLVxcdHNlbGVjdCBDR1JPVVBfTkVUX0NMQVNTSURcXG5uZXQvc2NoZWQvS2NvbmZpZzo1NTQ6XFx0ZGVwZW5kcyBvbiBDR1JPVVBTXFxubmV0L3NjaGVkL0tjb25maWctNTU1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTYwNT1jb25maWcgTkVUX0VNQVRDSF9TVEFDS1xcbm5ldC9zY2hlZC9LY29uZmlnLTYwNi1cXHRpbnQgXFxcIlN0YWNrIHNpemVcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NjA3OlxcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxcbm5ldC9zY2hlZC9LY29uZmlnLTYwOC1cXHRkZWZhdWx0IFxcXCIzMlxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTYxNT1jb25maWcgTkVUX0VNQVRDSF9DTVBcXG5uZXQvc2NoZWQvS2NvbmZpZy02MTYtXFx0dHJpc3RhdGUgXFxcIlNpbXBsZSBwYWNrZXQgZGF0YSBjb21wYXJpc29uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjYxNzpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02MTgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjI1PWNvbmZpZyBORVRfRU1BVENIX05CWVRFXFxubmV0L3NjaGVkL0tjb25maWctNjI2LVxcdHRyaXN0YXRlIFxcXCJNdWx0aSBieXRlIGNvbXBhcmlzb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NjI3OlxcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxcbm5ldC9zY2hlZC9LY29uZmlnLTYyOC1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02MzU9Y29uZmlnIE5FVF9FTUFUQ0hfVTMyXFxubmV0L3NjaGVkL0tjb25maWctNjM2LVxcdHRyaXN0YXRlIFxcXCJVMzIga2V5XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjYzNzpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02MzgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjQ1PWNvbmZpZyBORVRfRU1BVENIX01FVEFcXG5uZXQvc2NoZWQvS2NvbmZpZy02NDYtXFx0dHJpc3RhdGUgXFxcIk1ldGFkYXRhXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjY0NzpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02NDgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjU2PWNvbmZpZyBORVRfRU1BVENIX1RFWFRcXG5uZXQvc2NoZWQvS2NvbmZpZy02NTctXFx0dHJpc3RhdGUgXFxcIlRleHRzZWFyY2hcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NjU4OlxcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxcbm5ldC9zY2hlZC9LY29uZmlnLTY1OS1cXHRzZWxlY3QgVEVYVFNFQVJDSFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjcwPWNvbmZpZyBORVRfRU1BVENIX0NBTklEXFxubmV0L3NjaGVkL0tjb25maWctNjcxLVxcdHRyaXN0YXRlIFxcXCJDQU4gSWRlbnRpZmllclxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2NzI6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFxcdTAwMjZcXHUwMDI2IChDQU49eSB8fCBDQU49bSlcXG5uZXQvc2NoZWQvS2NvbmZpZy02NzMtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjgwPWNvbmZpZyBORVRfRU1BVENIX0lQU0VUXFxubmV0L3NjaGVkL0tjb25maWctNjgxLVxcdHRyaXN0YXRlIFxcXCJJUHNldFxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2ODI6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFxcdTAwMjZcXHUwMDI2IElQX1NFVFxcbm5ldC9zY2hlZC9LY29uZmlnLTY4My1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXFxubmV0L3NjaGVkL0tjb25maWctNjkxLVxcdHRyaXN0YXRlIFxcXCJJUHRhYmxlcyBNYXRjaGVzXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjY5MjpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0ggXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUl9YVEFCTEVTXFxubmV0L3NjaGVkL0tjb25maWctNjkzLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTcxNT1jb25maWcgTkVUX0FDVF9QT0xJQ0VcXG5uZXQvc2NoZWQvS2NvbmZpZy03MTYtXFx0dHJpc3RhdGUgXFxcIlRyYWZmaWMgUG9saWNpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzE3OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MTgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzI2PWNvbmZpZyBORVRfQUNUX0dBQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MjctXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgYWN0aW9uc1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3Mjg6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTcyOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03MzY9Y29uZmlnIEdBQ1RfUFJPQlxcbm5ldC9zY2hlZC9LY29uZmlnLTczNy1cXHRib29sIFxcXCJQcm9iYWJpbGl0eSBzdXBwb3J0XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjczODpcXHRkZXBlbmRzIG9uIE5FVF9BQ1RfR0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTczOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03NDI9Y29uZmlnIE5FVF9BQ1RfTUlSUkVEXFxubmV0L3NjaGVkL0tjb25maWctNzQzLVxcdHRyaXN0YXRlIFxcXCJSZWRpcmVjdGluZyBhbmQgTWlycm9yaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc0NDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzQ1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc1Mj1jb25maWcgTkVUX0FDVF9TQU1QTEVcXG5uZXQvc2NoZWQvS2NvbmZpZy03NTMtXFx0dHJpc3RhdGUgXFxcIlRyYWZmaWMgU2FtcGxpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzU0OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NTUtXFx0c2VsZWN0IFBTQU1QTEVcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc2ND1jb25maWcgTkVUX0FDVF9OQVRcXG5uZXQvc2NoZWQvS2NvbmZpZy03NjUtXFx0dHJpc3RhdGUgXFxcIlN0YXRlbGVzcyBOQVRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzY2OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NjctXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9Nzc0PWNvbmZpZyBORVRfQUNUX1BFRElUXFxubmV0L3NjaGVkL0tjb25maWctNzc1LVxcdHRyaXN0YXRlIFxcXCJQYWNrZXQgRWRpdGluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3NzY6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc3Ny1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03ODM9Y29uZmlnIE5FVF9BQ1RfU0lNUFxcbm5ldC9zY2hlZC9LY29uZmlnLTc4NC1cXHR0cmlzdGF0ZSBcXFwiU2ltcGxlIEV4YW1wbGUgKERlYnVnKVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3ODU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc4Ni1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03OTc9Y29uZmlnIE5FVF9BQ1RfU0tCRURJVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc5OC1cXHR0cmlzdGF0ZSBcXFwiU0tCIEVkaXRpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6Nzk5OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MDAtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODA4PWNvbmZpZyBORVRfQUNUX0NTVU1cXG5uZXQvc2NoZWQvS2NvbmZpZy04MDktXFx0dHJpc3RhdGUgXFxcIkNoZWNrc3VtIFVwZGF0aW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjgxMDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IElORVRcXG5uZXQvc2NoZWQvS2NvbmZpZy04MTEtXFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTgxOT1jb25maWcgTkVUX0FDVF9NUExTXFxubmV0L3NjaGVkL0tjb25maWctODIwLVxcdHRyaXN0YXRlIFxcXCJNUExTIG1hbmlwdWxhdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4MjE6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTgyMi1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04MzA9Y29uZmlnIE5FVF9BQ1RfVkxBTlxcbm5ldC9zY2hlZC9LY29uZmlnLTgzMS1cXHR0cmlzdGF0ZSBcXFwiVmxhbiBtYW5pcHVsYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODMyOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MzMtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODQxPWNvbmZpZyBORVRfQUNUX0JQRlxcbm5ldC9zY2hlZC9LY29uZmlnLTg0Mi1cXHR0cmlzdGF0ZSBcXFwiQlBGIGJhc2VkIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4NDM6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTg0NC1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04NTM9Y29uZmlnIE5FVF9BQ1RfQ09OTk1BUktcXG5uZXQvc2NoZWQvS2NvbmZpZy04NTQtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgUmV0cmlldmVyXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg1NTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbm5ldC9zY2hlZC9LY29uZmlnOjg1NjpcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xcbm5ldC9zY2hlZC9LY29uZmlnLTg1Ny1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04NjU9Y29uZmlnIE5FVF9BQ1RfQ1RJTkZPXFxubmV0L3NjaGVkL0tjb25maWctODY2LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIEFjdGlvbnNcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODY3OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSXFxubmV0L3NjaGVkL0tjb25maWc6ODY4OlxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2IE5GX0NPTk5UUkFDS19NQVJLXFxubmV0L3NjaGVkL0tjb25maWctODY5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTg4Mj1jb25maWcgTkVUX0FDVF9TS0JNT0RcXG5uZXQvc2NoZWQvS2NvbmZpZy04ODMtXFx0dHJpc3RhdGUgXFxcInNrYiBkYXRhIG1vZGlmaWNhdGlvbiBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODg0OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04ODUtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODkzPWNvbmZpZyBORVRfQUNUX0lGRVxcbm5ldC9zY2hlZC9LY29uZmlnLTg5NC1cXHR0cmlzdGF0ZSBcXFwiSW50ZXItRkUgYWN0aW9uIGJhc2VkIG9uIElFVEYgRm9yQ0VTIEludGVyRkUgTEZCXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg5NTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctODk2LVxcdHNlbGVjdCBORVRfSUZFXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05MDY9Y29uZmlnIE5FVF9BQ1RfVFVOTkVMX0tFWVxcbm5ldC9zY2hlZC9LY29uZmlnLTkwNy1cXHR0cmlzdGF0ZSBcXFwiSVAgdHVubmVsIG1ldGFkYXRhIG1hbmlwdWxhdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5MDg6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTkwOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05MTc9Y29uZmlnIE5FVF9BQ1RfQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy05MTgtXFx0dHJpc3RhdGUgXFxcImNvbm5lY3Rpb24gdHJhY2tpbmcgdGMgYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjkxOTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiAoIU5GX05BVCB8fCBORl9OQVQpIFxcdTAwMjZcXHUwMDI2IE5GX0ZMT1dfVEFCTEVcXG5uZXQvc2NoZWQvS2NvbmZpZy05MjAtXFx0c2VsZWN0IE5GX0NPTk5UUkFDS19PVlNcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTkzMD1jb25maWcgTkVUX0FDVF9HQVRFXFxubmV0L3NjaGVkL0tjb25maWctOTMxLVxcdHRyaXN0YXRlIFxcXCJGcmFtZSBnYXRlIGVudHJ5IGxpc3QgY29udHJvbCB0YyBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTMyOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy05MzMtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTQyPWNvbmZpZyBORVRfSUZFX1NLQk1BUktcXG5uZXQvc2NoZWQvS2NvbmZpZy05NDMtXFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgdG8gZW5jb2RpbmcgZGVjb2Rpbmcgc2tiIG1hcmsgb24gSUZFIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5NDQ6XFx0ZGVwZW5kcyBvbiBORVRfQUNUX0lGRVxcbm5ldC9zY2hlZC9LY29uZmlnLTk0NS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05NDY9Y29uZmlnIE5FVF9JRkVfU0tCUFJJT1xcbm5ldC9zY2hlZC9LY29uZmlnLTk0Ny1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCB0byBlbmNvZGluZyBkZWNvZGluZyBza2IgcHJpbyBvbiBJRkUgYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjk0ODpcXHRkZXBlbmRzIG9uIE5FVF9BQ1RfSUZFXFxubmV0L3NjaGVkL0tjb25maWctOTQ5LVxcbm5ldC9zY2hlZC9LY29uZmlnPTk1MD1jb25maWcgTkVUX0lGRV9TS0JUQ0lOREVYXFxubmV0L3NjaGVkL0tjb25maWctOTUxLVxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IHRvIGVuY29kaW5nIGRlY29kaW5nIHNrYiB0Y2luZGV4IG9uIElGRSBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTUyOlxcdGRlcGVuZHMgb24gTkVUX0FDVF9JRkVcXG5uZXQvc2NoZWQvS2NvbmZpZy05NTMtXFxubmV0L3NjaGVkL0tjb25maWc9OTU0PWNvbmZpZyBORVRfVENfU0tCX0VYVFxcbm5ldC9zY2hlZC9LY29uZmlnLTk1NS1cXHRib29sIFxcXCJUQyByZWNpcmN1bGF0aW9uIHN1cHBvcnRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTU2OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy05NTctXFx0c2VsZWN0IFNLQl9FWFRFTlNJT05TXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjMzLjg0MzYxMzcyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTg0MjUzMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBUQVBSSU8ncyBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIEknbSBsb29raW5nIGF0IGBORVRfU0NIX1RBUFJJT2AgaW4gYG5ldC9zY2hlZC9LY29uZmlnYC4gRmlyc3QgZ2xhbmNlLCBhbmQgSSBkb24ndCBzZWUgYW55IGV4cGxpY2l0IGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIGxpc3RlZCBkaXJlY3RseSBmb3IgaXQuIFRoYXQncyBhIGJpdCB1bnVzdWFsLCBidXQgbm90IG5lY2Vzc2FyaWx5IGEgcmVkIGZsYWcuIEJlZm9yZSBJIGp1bXAgdG8gYW55IGNvbmNsdXNpb25zLCBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayBpZiBpdCByZWxpZXMsIGV2ZW4gaW5kaXJlY3RseSwgb24gYSBicm9hZGVyIHNjaGVkdWxpbmcgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoZSBtb3N0IGxpa2VseSBjYW5kaWRhdGUgdG8gYmUgYSBwYXJlbnQsIGluIHRoaXMgY29udGV4dCwgaXMgYE5FVF9TQ0hFRGAuIEl0J3MgYWxtb3N0IGNlcnRhaW4gdGhlcmUgaXMgc29tZSBkZXBlbmRlbmN5LiBMZXQgbWUgdmVyaWZ5IHRoYXQgZXhwbGljaXRseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI1MTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODozNy43MDIwNDMwMzRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDM4Njc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbnVjb25maWcgTkVUX1NDSEVEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnLTUtXFxubmV0L3NjaGVkL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF9TQ0hFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTctXFx0Ym9vbCBcXFwiUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODozNy43NDY0ODg3MzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwODcwMjY0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBLZXJuZWwncyBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEknbSBkaXZpbmcgaW50byB0aGUga2VybmVsJ3MgbmV0d29yayBzY2hlZHVsaW5nIGNvbmZpZ3VyYXRpb24uIEkga25vdyBgTkVUX1NDSEVEYCBpcyB0aGUgcHJpbWFyeSBtZW51Y29uZmlnIEkgbmVlZCB0byBiZSBsb29raW5nIGF0LiBOb3csIHRoZSBjcnVjaWFsIHBhcnQgaXMgY2hlY2tpbmcgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBORVRfU0NIX1RBUFJJT2AgYW5kIGBORVRfU0NIRURgLiBFc3NlbnRpYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgYE5FVF9TQ0hfVEFQUklPYCBpcyBjb25kaXRpb25hbGx5IGluY2x1ZGVkLCBhbmQgd2hhdCB0aGUgYGlmYCBzdGF0ZW1lbnQgc3RhdGVzLiBLbm93aW5nIHdoZXRoZXIgaXQncyBlbmFibGVkIG9ubHkgaWYgYE5FVF9TQ0hFRGAgaXMgZW5hYmxlZCBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBzY2hlZHVsaW5nIGhpZXJhcmNoeSBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGlzIHBhcnQgb2YgdGhlIGtlcm5lbC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgcGFyc2UgdGhhdCBjb25kaXRpb25hbCBzdGF0ZW1lbnQgbm93IHRvIG1ha2Ugc3VyZSBJJ20gY2xlYXIgb24gdGhlIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODA3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6NDEuMzU1MTk0NzM1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njk2Njk1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZiBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9Nj1tZW51Y29uZmlnIE5FVF9TQ0hFRFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDMtXFxubmV0L3NjaGVkL0tjb25maWc6NDQ6aWYgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjQxLjQwMjE2NjMzNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzU3MDc2ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIEtlcm5lbCBTY2hlZHVsZXIgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gYE5FVF9TQ0hFRGAgaXMgZGVmaW5pdGVseSBhIHByZXJlcXVpc2l0ZS4gTm8gc3VycHJpc2VzIHRoZXJlLiBCdXQgYmVmb3JlIEkgZ28gdG9vIGZhciBkb3duIHRoaXMgcGF0aCwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBmb3IgdGhlIHNha2Ugb2YgdGhvcm91Z2huZXNzLCBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogcmVsYXRlZCBkZXBlbmRlbmNpZXMuIEknbSBzcGVjaWZpY2FsbHkgdGhpbmtpbmcgYWJvdXQgYE5FVF9TQ0hfVEFQUklPYC4gSSdsbCBxdWlja2x5IHJlLWV4YW1pbmUgdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiwganVzdCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGNydWNpYWwuIEdvdHRhIGJlIG1ldGljdWxvdXMgd2hlbiBkZWFsaW5nIHdpdGggbmV0d29yayBzY2hlZHVsZXJzIOKAkyBhIG1pc3NlZCBkZXBlbmRlbmN5IGNhbiBsZWFkIHRvIHNvbWUgdHJ1bHkgYml6YXJyZSBhbmQgZnJ1c3RyYXRpbmcgZGVidWdnaW5nIHNlc3Npb25zIGxhdGVyIG9uIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzEyMywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjQ1Ljc1OTI0NjA3M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjU6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX2V0Zi5cXG4gMTY2OlxcdFxcbiAxNjc6XFx0Y29uZmlnIE5FVF9TQ0hfTVFQUklPX0xJQlxcbiAxNjg6XFx0XFx0dHJpc3RhdGVcXG4gMTY5OlxcdFxcdGhlbHBcXG4gMTcwOlxcdFxcdCAgQ29tbW9uIGxpYnJhcnkgZm9yIG1hbmlwdWxhdGluZyBtcXByaW8gcXVldWUgY29uZmlndXJhdGlvbnMuXFxuIDE3MTpcXHRcXG4gMTcyOlxcdGNvbmZpZyBORVRfU0NIX1RBUFJJT1xcbiAxNzM6XFx0XFx0dHJpc3RhdGUgXFxcIlRpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXFxcIlxcbiAxNzQ6XFx0XFx0c2VsZWN0IE5FVF9TQ0hfTVFQUklPX0xJQlxcbiAxNzU6XFx0XFx0aGVscFxcbiAxNzY6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBwYWNrZXRcXG4gMTc3OlxcdFxcdCAgc2NoZWR1bGluZyBhbGdvcml0aG0uXFxuIDE3ODpcXHRcXG4gMTc5OlxcdFxcdCAgU2VlIHRoZSB0b3Agb2YgXFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF90YXByaW8uY1xcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gMTgwOlxcdFxcbiAxODE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDE4MjpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGFwcmlvLlxcbiAxODM6XFx0XFxuIDE4NDpcXHRjb25maWcgTkVUX1NDSF9HUkVEXFxuIDE4NTpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVxcXCJcXG4gMTg2OlxcdFxcdGhlbHBcXG4gMTg3OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIEdlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvblxcbiAxODg6XFx0XFx0ICAoR1JFRCkgcGFja2V0IHNjaGVkdWxpbmcgYWxnb3JpdGhtIGZvciBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzXFxuIDE4OTpcXHRcXHQgIChzZWUgdGhlIHRvcCBvZiBcXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3JlZC5jXFx1MDAzZSBmb3IgZGV0YWlscyBhbmRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6NDUuNzU5MzI2NTQzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyOTIyNjY5MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uXG5cbioqRGl2aW5nIGludG8gdGhlIENvbmZpZ3VyYXRpb24gU3BhY2UqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgc3lzdGVtIGhhcyBjaG9zZW4gYE5FVF9TQ0hfTVFQUklPX0xJQmAuIFJpZ2h0IGF3YXksIHRoYXQgaW1wbGllcyB0aGF0IGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gIGFyZSBhbHNvIGluIHRoZSBwaWN0dXJlLCBhcyBwcmVyZXF1aXNpdGVzIG9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzZWxlY3Rpb24uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgSSBzaG91bGQgbG9vayBhdCBgdGFwcmlvX2NoYW5nZWAuIEl0J3MgYSBjb21tb24gcGxhY2UgdG8gZmluZCBpbnRlcmVzdGluZyBzeW1ib2xzLCBhbmQgSSdtIGhvcGluZyBJIGNhbiBsb2NhdGUgc29tZSBmdXJ0aGVyIFwiZm9jdXMgc3ltYm9sc1wiIGFyb3VuZCB0aGlzIGZ1bmN0aW9uYWxpdHkuIEhvcGVmdWxseSwgSSBjYW4gZmluZCBzb21ldGhpbmcgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzI4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODo1MS4wNTE1OTYyMzRaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNTM0NjU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0YXByaW9fY2hhbmdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uYz0xODY3PXN0YXRpYyBpbnQgdGFwcmlvX21xcHJpb19jbXAoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg4Ni1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4ODc6c3RhdGljIGludCB0YXByaW9fY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODg4LVxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTIxMzY9c3RhdGljIGludCB0YXByaW9faW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTQ5LVxcdC8qIFdlIG9ubHkgc3VwcG9ydCBzdGF0aWMgY2xvY2tpZHMuIFVzZSBhbiBpbnZhbGlkIHZhbHVlIGFzIGRlZmF1bHRcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIxNTA6XFx0ICogYW5kIGdldCB0aGUgdmFsaWQgb25lIG9uIHRhcHJpb19jaGFuZ2UoKS5cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxNTEtXFx0ICovXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxOTctXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTk4OlxcdHJldHVybiB0YXByaW9fY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE5OS19XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI2MTE9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjE1LVxcdC5pbml0XFx0XFx0PSB0YXByaW9faW5pdCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI2MTY6XFx0LmNoYW5nZVxcdFxcdD0gdGFwcmlvX2NoYW5nZSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MTctXFx0LmRlc3Ryb3lcXHQ9IHRhcHJpb19kZXN0cm95LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODo1MS4zNTY5NDg1MDVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzNzE5MTk5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQ29uc2lkZXJpbmcgVEFQUklPIEZ1bmN0aW9uYWxpdHkqKlxuXG5BbHJpZ2h0LCBzbyBgdGFwcmlvX2NoYW5nZWAsIHRoYXQncyBhIHNvbGlkIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEl0IGhhbmRsZXMgdGhlIGR5bmFtaWMgYWRqdXN0bWVudHMsIHRoZSBjb3JlIG9mIHdoYXQgd2UncmUgYWltaW5nIGZvci4gQnV0IEknbSBzdGFydGluZyB0byB0aGluayBhYm91dCB0aGUgcGVyaXBoZXJ5LCB0aGUgc3VwcG9ydGluZyBlbGVtZW50cy4gV2hlcmUgZG8gYHRhcHJpb19lbnF1ZXVlYCBhbmQgYHRhcHJpb19kZXF1ZXVlYCBmaXQgaW50byB0aGUgZ3JhbmQgc2NoZW1lIG9mIHRoaW5ncz8gQXJlIHRoZXkgZXF1YWxseSB3ZWxsLWRlZmluZWQgYW5kIHRob3VnaHQtb3V0PyBBcmUgd2Ugb3Zlcmxvb2tpbmcgcG90ZW50aWFsIGluZWZmaWNpZW5jaWVzIG9yIGNvbXBsZXhpdGllcyBpbiBob3cgdGhvc2UgYXJlIGltcGxlbWVudGVkIG9yIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgdGFwcmlvX2NoYW5nZWA/IEkgbmVlZCB0byBnaXZlIHRoZW0gc29tZSBzZXJpb3VzIHNjcnV0aW55LiBHb3R0YSBtYWtlIHN1cmUgd2UndmUgZ290IGEgY29oZXJlbnQgYW5kIGVmZmljaWVudCBUQVBSSU8gc3lzdGVtLCBmcm9tIGJlZ2lubmluZyB0byBlbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDI3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6NTQuNjk0MTQzNjU2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDM5MDk1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0YXByaW9fZW5xdWV1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9NTYwPXN0YXRpYyBib29sIHRhcHJpb19za2JfZXhjZWVkc19xdWV1ZV9tYXhfc2R1KHN0cnVjdCBRZGlzYyAqc2NoLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01ODAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo1ODE6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZV9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01ODItXFx0XFx0XFx0ICAgICAgc3RydWN0IFFkaXNjICpjaGlsZCwgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MDEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2MDI6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZV9zZWdtZW50ZWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MDMtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBRZGlzYyAqY2hpbGQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTYyNi1cXHRcXHRlbHNlXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2Mjc6XFx0XFx0XFx0cmV0ID0gdGFwcmlvX2VucXVldWVfb25lKHNlZ3MsIHNjaCwgY2hpbGQsIHRvX2ZyZWUpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjI4LVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NDYtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2NDc6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY0OC1cXHRcXHRcXHQgIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjY2LVxcdFxcdGlmIChza2JfaXNfZ3NvKHNrYikpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2Njc6XFx0XFx0XFx0cmV0dXJuIHRhcHJpb19lbnF1ZXVlX3NlZ21lbnRlZChza2IsIHNjaCwgY2hpbGQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NjgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0dG9fZnJlZSk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY3Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY3MzpcXHRyZXR1cm4gdGFwcmlvX2VucXVldWVfb25lKHNrYiwgc2NoLCBjaGlsZCwgdG9fZnJlZSk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NzQtfVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yMjAxPXN0YXRpYyB2b2lkIHRhcHJpb19hdHRhY2goc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyMjItXFx0XFx0XFx0ICogdG8gYWxsIG5ldGRldiBUWCBxdWV1ZXMsIHNvIHRoYXQgZGV2X3FkaXNjX2VucXVldWUoKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjIyMzpcXHRcXHRcXHQgKiBnb2VzIHRocm91Z2ggdGFwcmlvX2VucXVldWUoKS5cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyMjQtXFx0XFx0XFx0ICovXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI2MTE9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjIxLVxcdC5kZXF1ZXVlXFx0PSB0YXByaW9fZGVxdWV1ZSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI2MjI6XFx0LmVucXVldWVcXHQ9IHRhcHJpb19lbnF1ZXVlLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYyMy1cXHQuZHVtcFxcdFxcdD0gdGFwcmlvX2R1bXAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjU0LjczODUzODkwNFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzM2MDg4NTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IGFzIGEgc3VtbWFyeSwgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uLCBhbmQgYXNzdW1pbmcgSSdtIHdlbGwtdmVyc2VkIGluIG15IGZpZWxkOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogYHRhcHJpb19lbnF1ZXVlYCAtIEEgUG9zaXRpdmUgU2lnbmFsKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCB0aGF0IGNvbWVzIHRvIG1pbmQgaXMgdGhhdCBgdGFwcmlvX2VucXVldWVgIGlzIGdvb2QuIFRoYXQncyBhIHN0cm9uZywgdW5hbWJpZ3VvdXMgc3RhdGVtZW50LiBUaGlzIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEgZmV3IGtleSB0aGluZ3MsIGRlcGVuZGluZyBvbiB0aGUgY29udGV4dC4gSWYgd2UncmUgdGFsa2luZyBhYm91dCB0YXNrIHNjaGVkdWxpbmcgb3IgcmVzb3VyY2UgbWFuYWdlbWVudCwgdGhhdCBzaW5nbGUgcGhyYXNlIHNwZWFrcyB2b2x1bWVzLiBJdCBsaWtlbHkgbWVhbnMgdGhlIHN5c3RlbSdzIHNjaGVkdWxpbmcgbG9naWMsIHRoZSBxdWV1aW5nIGltcGxlbWVudGF0aW9uLCBvciB0aGUgb3ZlcmFsbCBkZXNpZ24gYXBwcm9hY2ggd2hpY2ggdXNlcyB0aGF0IGZ1bmN0aW9uLCBpcyByb2J1c3QgYW5kLCBhdCBsZWFzdCBpbiB0aGUgb3BpbmlvbiBvZiB3aG9ldmVyIHZvaWNlZCB0aGUgdGhvdWdodCwgYSBrZXkgcGllY2Ugb2Ygc3VjY2Vzc2Z1bCBvcGVyYXRpb24uIEl0IHNpZ25pZmllcyBlZmZpY2llbmN5LCBjb3JyZWN0bmVzcywgb3IgcG9zc2libHkgZXZlbiBhIGxldmVsIG9mIGVsZWdhbmNlIGluIGhvdyBpdCBoYW5kbGVzIHRoZSBmbG93IG9mIHdvcmsuIENvbnNpZGVyaW5nIHRoYXQgYHRhcHJpb19lbnF1ZXVlYCBsaWtlbHkgcmVmZXJzIHRvIGEgc3BlY2lmaWMgZnVuY3Rpb24gb3IgbWVjaGFuaXNtIHdpdGhpbiBhIGxhcmdlciBzeXN0ZW0sIGl0cyBwZXJjZWl2ZWQgXCJnb29kbmVzc1wiIGNvdWxkIHBvaW50IHRvIGV4Y2VsbGVudCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MsIHN1Y2ggYXMgbWluaW1pemluZyBsYXRlbmN5LCBlbnN1cmluZyBmYWlyIHJlc291cmNlIGFsbG9jYXRpb24sIG9yIGVmZmVjdGl2ZWx5IGhhbmRsaW5nIGNvbnRlbnRpb24uIEknZCBiZSBjdXJpb3VzIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIGNyaXRlcmlhIGJlaW5nIGFwcGxpZWQgaW4gdGhpcyBqdWRnZW1lbnQuIElzIGl0IGluIGNvbXBhcmlzb24gdG8gYW5vdGhlciBtZXRob2Q/IElzIGl0IGJhc2VkIG9uIHBlcmZvcm1hbmNlIHRlc3RzPyBPciBpcyBpdCBhIG1vcmUgc3ViamVjdGl2ZSBtZWFzdXJlIG9mIHRoZSBjb2RlJ3MgY2xhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5PyBGdXJ0aGVyIGludmVzdGlnYXRpb24gaXMgY2VydGFpbmx5IHdhcnJhbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU0MjAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjU5LjA3NDYyOTI1NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxMDcwMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGFwcmlvX2RlcXVldWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTcwMz1zdGF0aWMgaW50IHRhcHJpb191cGRhdGVfYnVkZ2V0cyhzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBzaXplX3QgbGVuLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03MjUtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3MjY6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZV9mcm9tX3R4cShzdHJ1Y3QgUWRpc2MgKnNjaCwgaW50IHR4cSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTcyNy1cXHRcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9NzgzPXN0YXRpYyB2b2lkIHRhcHJpb19uZXh0X3RjX3R4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgdGMsIGludCAqdHhxKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03OTUtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3OTY6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZV90Y19wcmlvcml0eShzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc5Ny1cXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTgxMi1cXHRcXHRkbyB7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4MTM6XFx0XFx0XFx0c2tiID0gdGFwcmlvX2RlcXVldWVfZnJvbV90eHEoc2NoLCBxLVxcdTAwM2VjdXJfdHhxW3RjXSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTgxNC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBlbnRyeSwgZ2F0ZV9tYXNrKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODMxLSAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODMyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdGFwcmlvX2RlcXVldWVfdHhxX3ByaW9yaXR5KHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODMzLVxcdFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg0MC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZGV2LVxcdTAwM2VudW1fdHhfcXVldWVzOyBpKyspIHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg0MTpcXHRcXHRza2IgPSB0YXByaW9fZGVxdWV1ZV9mcm9tX3R4cShzY2gsIGksIGVudHJ5LCBnYXRlX21hc2spO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODQyLVxcdFxcdGlmIChza2IpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg1MS0gKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg1MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRhcHJpb19kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODUzLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODcyLVxcdFxcdC8qIFNpbmdsZSBOSUMga2luZCB3aGljaCBpcyBicm9rZW4gKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg3MzpcXHRcXHRza2IgPSB0YXByaW9fZGVxdWV1ZV90eHFfcHJpb3JpdHkoc2NoLCBlbnRyeSwgZ2F0ZV9tYXNrKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg3NC1cXHR9IGVsc2UgaWYgKHN0YXRpY19icmFuY2hfbGlrZWx5KFxcdTAwMjZ0YXByaW9faGF2ZV93b3JraW5nX21xcHJpbykgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODc2LVxcdFxcdC8qIFNpbmdsZSBOSUMga2luZCB3aGljaCBwcmlvcml0aXplcyBwcm9wZXJseSAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODc3OlxcdFxcdHNrYiA9IHRhcHJpb19kZXF1ZXVlX3RjX3ByaW9yaXR5KHNjaCwgZW50cnksIGdhdGVfbWFzayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NzgtXFx0fSBlbHNlIHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODgwLVxcdFxcdGlmIChxLVxcdTAwM2Vicm9rZW5fbXFwcmlvKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODgxOlxcdFxcdFxcdHNrYiA9IHRhcHJpb19kZXF1ZXVlX3R4cV9wcmlvcml0eShzY2gsIGVudHJ5LCBnYXRlX21hc2spO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODgyLVxcdFxcdGVsc2VcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg4MzpcXHRcXHRcXHRza2IgPSB0YXByaW9fZGVxdWV1ZV90Y19wcmlvcml0eShzY2gsIGVudHJ5LCBnYXRlX21hc2spO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODg0LVxcdH1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjYxMT1zdGF0aWMgc3RydWN0IFFkaXNjX29wcyB0YXByaW9fcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MjAtXFx0LnBlZWtcXHRcXHQ9IHRhcHJpb19wZWVrLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjYyMTpcXHQuZGVxdWV1ZVxcdD0gdGFwcmlvX2RlcXVldWUsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjIyLVxcdC5lbnF1ZXVlXFx0PSB0YXByaW9fZW5xdWV1ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6NTkuMTE5NzQxMzAzWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwNDkwMTY1NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVGFwcmlvIFNjaGVkdWxlciBDaGFuZ2VzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgSSd2ZSB6ZXJvZWQgaW4gb24gdGhlIGB0YXByaW9fZGVxdWV1ZWAgZnVuY3Rpb24gYXMgYSBrZXkgZm9jdXMuIEFsb25nIHdpdGggdGhhdCwgaXQncyBjbGVhciB0aGF0IHRoZSBwcmltYXJ5IHN5bWJvbHMgb2YgaW50ZXJlc3QgaGVyZSBhcmUgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYC5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgdGhhdCBgTkVUX1NDSF9UQVBSSU9gIGlzIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZyBoZXJlLiBZdXAsIGl0IHNlbGVjdHMgYE5FVF9TQ0hfTVFQUklPX0xJQmAgYXMgZXhwZWN0ZWQsIGJ1dCBteSBmb2N1cyBpcyBzb2xlbHkgb24gcHJvdmlkaW5nIGBORVRfU0NIX1RBUFJJT2AuXG5cbk5vdywgbGV0J3MgcmUtZXhhbWluZSB0aGlzIGNvZGUgc25pcHBldDpcblxuYGBgY1xuc3RhdGljIHM2NCB0YXByaW9fbWluX2ludGVydmFsKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG57XG5cdHM2NCBtaW5faW50ZXJ2YWwgPSBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pO1xuXG5cdC8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi9cblx0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcblx0ICAgICFUWFRJTUVfQVNTSVNUX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykpXG5cdFx0bWluX2ludGVydmFsID0gbWF4X3QoczY0LCBtaW5faW50ZXJ2YWwsXG5cdFx0XHRcdCAgICAgVEFQUklPX01JTl9TV19JTlRFUlZBTF9OUyk7XG5cblx0cmV0dXJuIG1pbl9pbnRlcnZhbDtcbn1cbmBgYFxuXG5UaGlzIGB0YXByaW9fbWluX2ludGVydmFsYCBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBgZmlsbF9zY2hlZF9lbnRyeWAgYW5kIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgLiBBbmQgdGhlbiB3ZSBoYXZlIGB0YXByaW9fY2F0Y2hfdXBgIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBhZHZhbmNlX3NjaGVkYC4gVGhhdCdzIHdoZXJlIGl0IGFsbCBjb25uZWN0cy5cblxuVGhpcyBwYXRjaCBtYWtlcyBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIFRpbWUgQXdhcmUgUHJpb3JpdHkgU2NoZWR1bGVyIChgbmV0L3NjaGVkL3NjaF90YXByaW8uY2ApLiBJdCBmaXhlcyBhIGJ1ZyB0aGF0IHdhcyBjYXVzaW5nIHRpbWVycyB0byBleHBpcmUgaW4gdGhlIHBhc3QsIGxlYWRpbmcgdG8gQ1BVIHN0b3Jtcy4gSXQgYWxzbyBhZGRzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciB3aGVuIHRoZSBzY2hlZHVsZSBpcyBiZWhpbmQuIFRoaXMgc3R1ZmYgaXMgYWxsIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBuZXRsaW5rIHZpYSBgdGMgcWRpc2MgYWRkIC4uLiB0YXByaW9gLlxuXG5UaGVyZWZvcmUsIEknbSBnb2luZyB0byBzZXQgdGhlc2UgcGFyYW1ldGVyczpcblxuKiAgICoqV29ydGhGdXp6aW5nOiB0cnVlKiogKEFic29sdXRlbHksIHRoZXNlIGFyZSBzdWJzdGFudGlhbCBjaGFuZ2VzLilcbiogICAqKkZvY3VzU3ltYm9sczogW1widGFwcmlvX2NoYW5nZVwiLCBcInRhcHJpb19lbnF1ZXVlXCIsIFwidGFwcmlvX2RlcXVldWVcIl0qKiAoVGhlc2UgZnVuY3Rpb25zIGFyZSB0aGUgY29yZSBvZiB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkuKVxuKiAgICoqRW5hYmxlQ29uZmlnczogW1wiTkVUX1NDSF9UQVBSSU9cIl0qKiAoVGhpcyBpcyBhbGwgd2UgbmVlZCB0byBlbmFibGUgdGhlIGZlYXR1cmUuKVxuKiAgICoqUmVhc29uaW5nOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgdGFwcmlvIHFkaXNjLCBzcGVjaWZpY2FsbHkgZW5mb3JjaW5nIGEgbWluaW11bSBpbnRlcnZhbCBmb3Igc29mdHdhcmUgc2NoZWR1bGVzIGFuZCBhZGRpbmcgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgdGltZXJzLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKHRjIHFkaXNjKSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIioqIChUaGlzIHN1bW1hcml6ZXMgdGhlIHJhdGlvbmFsZSBhbmQgdGhlIGF0dGFjayBzdXJmYWNlLilcblxuXG4iLCJJbnB1dFRva2VucyI6MTY3OTQsIk91dHB1dFRva2VucyI6MTEyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ5OjA4LjE2ODc2MDAzMloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NDcxNjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIX1RBUFJJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRhcHJpb19jaGFuZ2VcIixcbiAgICBcInRhcHJpb19lbnF1ZXVlXCIsXG4gICAgXCJ0YXByaW9fZGVxdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSB0YXByaW8gcWRpc2MsIHNwZWNpZmljYWxseSBlbmZvcmNpbmcgYSBtaW5pbXVtIGludGVydmFsIGZvciBzb2Z0d2FyZSBzY2hlZHVsZXMgYW5kIGFkZGluZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCB0aW1lcnMuIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hfVEFQUklPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGFwcmlvX2NoYW5nZVwiLFxuICAgIFwidGFwcmlvX2VucXVldWVcIixcbiAgICBcInRhcHJpb19kZXF1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIHRhcHJpbyBxZGlzYywgc3BlY2lmaWNhbGx5IGVuZm9yY2luZyBhIG1pbmltdW0gaW50ZXJ2YWwgZm9yIHNvZnR3YXJlIHNjaGVkdWxlcyBhbmQgYWRkaW5nIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIHRpbWVycy4gVGhlc2UgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rICh0YyBxZGlzYykgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ5OjA4LjI0NzIzOTMxWiIsIlNlcSI6MzMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzI3MTk3ODY5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ5OjA4LjI0Nzc2ODI1OVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMzI3MTQ0NTE4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgQ1BVIHN0b3JtIGlzc3VlIGluIHRoZSB0YXByaW8gc2NoZWR1bGVyIGJ5IGVuZm9yY2luZyBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjaW5nIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIGhydGltZXJzLiBJdCBvbmx5IG1vZGlmaWVzIHRpbWUgY2FsY3VsYXRpb25zLCBsaXN0IHRyYXZlcnNhbHMsIGFuZCBzY2hlZHVsaW5nIGxvZ2ljLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBhbmQgbm8gc3RydWN0dXJlcyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmM2NjY0ODMyY2I1YTQwOWEwZTc0NDE3MTY1NWM4NzFmYzlkOTI5NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDA3OjQ3OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF90YXByaW8uYyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcbmluZGV4IDI5OTIzNGE1ZjBmZTYuLjc1MTliYzVjMWFmZjMgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5AQCAtMjU5LDYgKzI1OSwyNiBAQCBzdGF0aWMgaW50IGxlbmd0aF90b19kdXJhdGlvbihzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBpbnQgbGVuKVxuIFx0cmV0dXJuIGRpdl91NjQobGVuICogYXRvbWljNjRfcmVhZChcdTAwMjZxLVx1MDAzZXBpY29zX3Blcl9ieXRlKSwgUFNFQ19QRVJfTlNFQyk7XG4gfVxuIFxuKy8qIFNvZnR3YXJlIHNjaGVkdWxlcyBzZXJ2aWNlIG9uZSBocnRpbWVyIGV4cGlyeSBwZXIgZW50cnk7IGludGVydmFsc1xuKyAqIHNob3J0ZXIgdGhhbiB0aGUgZXhwaXJ5IHNlcnZpY2UgY29zdCByZWFybSB0aGUgdGltZXIgd2l0aCBhbiBleHBpcnlcbisgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZVxuKyAqIG1lYXN1cmVkIGNvc3Qgb24gZGVidWcgY29uZmlndXJhdGlvbnMuXG4rICovXG4rI2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TXHQoMTAwICogTlNFQ19QRVJfVVNFQylcbitcbitzdGF0aWMgczY0IHRhcHJpb19taW5faW50ZXJ2YWwoc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcbit7XG4rXHRzNjQgbWluX2ludGVydmFsID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcbitcbitcdC8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi9cbitcdGlmICghRlVMTF9PRkZMT0FEX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG4rXHQgICAgIVRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRChxLVx1MDAzZWZsYWdzKSlcbitcdFx0bWluX2ludGVydmFsID0gbWF4X3QoczY0LCBtaW5faW50ZXJ2YWwsXG4rXHRcdFx0XHQgICAgIFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlMpO1xuK1xuK1x0cmV0dXJuIG1pbl9pbnRlcnZhbDtcbit9XG4rXG4gc3RhdGljIGludCBkdXJhdGlvbl90b19sZW5ndGgoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgdTY0IGR1cmF0aW9uKVxuIHtcbiBcdHJldHVybiBkaXZfdTY0KGR1cmF0aW9uICogUFNFQ19QRVJfTlNFQywgYXRvbWljNjRfcmVhZChcdTAwMjZxLVx1MDAzZXBpY29zX3Blcl9ieXRlKSk7XG5AQCAtOTE1LDYgKzkzNSw1MSBAQCBzdGF0aWMgYm9vbCBzaG91bGRfY2hhbmdlX3NjaGVkdWxlcyhjb25zdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1pbixcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4rLyogVGhlIG9wZXJhdGlvbmFsIHNjaGVkdWxlIGZlbGwgYmVoaW5kLCBlLmcuIGJlY2F1c2UgdGhlIHRpbWVyIHdhcyBkZWxheWVkXG4rICogb3IgdGhlIHJlZmVyZW5jZSBjbG9jayBzdGVwcGVkIGZvcndhcmQuIEFkdmFuY2luZyBvbmUgZW50cnkgcGVyIHRpbWVyXG4rICogZXhwaXJ5IHdvdWxkIHJlcGxheSB0aGUgd2hvbGUgYmFja2xvZyBmcm9tIGhydGltZXIgY29udGV4dCwgc28gc2tpcFxuKyAqIGNvbXBsZXRlIGN5Y2xlcyBhcml0aG1ldGljYWxseSBhbmQgd2FsayB0aGUgcmVtYWluaW5nIGVudHJpZXMgdG8gbGFuZCBvblxuKyAqIHRoZSBlbnRyeSBjb3ZlcmluZyB0aGUgY3VycmVudCB0aW1lLlxuKyAqL1xuK3N0YXRpYyB2b2lkIHRhcHJpb19jYXRjaF91cChzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpvcGVyLFxuK1x0XHRcdCAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKipuZXh0LCBrdGltZV90ICpuZXh0X3N0YXJ0LFxuK1x0XHRcdCAgICBrdGltZV90ICplbmRfdGltZSwga3RpbWVfdCBub3cpXG4re1xuK1x0aW50IGJ1ZGdldCA9IDIgKiBvcGVyLVx1MDAzZW51bV9lbnRyaWVzICsgMTtcbitcdHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnkgPSAqbmV4dDtcbitcdGt0aW1lX3Qgc3RhcnQgPSAqbmV4dF9zdGFydDtcbitcdGt0aW1lX3QgZW5kID0gKmVuZF90aW1lO1xuK1x0czY0IGJlaGluZCA9IGt0aW1lX3N1Yihub3csIGVuZCk7XG4rXG4rXHRpZiAob3Blci1cdTAwM2VjeWNsZV90aW1lIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBiZWhpbmQgXHUwMDNlPSBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpIHtcbitcdFx0czY0IGp1bXAgPSBkaXY2NF9zNjQoYmVoaW5kLCBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpICogb3Blci1cdTAwM2VjeWNsZV90aW1lO1xuK1xuK1x0XHRzdGFydCA9IGt0aW1lX2FkZF9ucyhzdGFydCwganVtcCk7XG4rXHRcdGVuZCA9IGt0aW1lX2FkZF9ucyhlbmQsIGp1bXApO1xuK1x0XHRvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUsIGp1bXApO1xuK1x0fVxuK1xuK1x0d2hpbGUgKGt0aW1lX2JlZm9yZShlbmQsIG5vdykgXHUwMDI2XHUwMDI2IC0tYnVkZ2V0KSB7XG4rXHRcdGlmIChsaXN0X2lzX2xhc3QoXHUwMDI2ZW50cnktXHUwMDNlbGlzdCwgXHUwMDI2b3Blci1cdTAwM2VlbnRyaWVzKSB8fFxuK1x0XHQgICAga3RpbWVfY29tcGFyZShlbmQsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpID09IDApIHtcbitcdFx0XHRlbnRyeSA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2b3Blci1cdTAwM2VlbnRyaWVzLFxuK1x0XHRcdFx0XHRcdCBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpO1xuK1x0XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSxcbitcdFx0XHRcdFx0XHRcdCAgICBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdGVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTtcbitcdFx0fVxuK1xuK1x0XHRzdGFydCA9IGVuZDtcbitcdFx0ZW5kID0ga3RpbWVfYWRkX25zKGVuZCwgZW50cnktXHUwMDNlaW50ZXJ2YWwpO1xuK1x0XHRlbmQgPSBtaW5fdChrdGltZV90LCBlbmQsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xuK1x0fVxuK1xuK1x0Km5leHQgPSBlbnRyeTtcbitcdCpuZXh0X3N0YXJ0ID0gc3RhcnQ7XG4rXHQqZW5kX3RpbWUgPSBlbmQ7XG4rfVxuK1xuIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbiB7XG4gXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgdGFwcmlvX3NjaGVkLFxuQEAgLTkyNCw3ICs5ODksNyBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4gXHRpbnQgbnVtX3RjID0gbmV0ZGV2X2dldF9udW1fdGMoZGV2KTtcbiBcdHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksICpuZXh0O1xuIFx0c3RydWN0IFFkaXNjICpzY2ggPSBxLVx1MDAzZXJvb3Q7XG4tXHRrdGltZV90IGVuZF90aW1lO1xuK1x0a3RpbWVfdCBlbmRfdGltZSwgbmV4dF9zdGFydCwgbm93O1xuIFx0aW50IHRjO1xuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNnEtXHUwMDNlY3VycmVudF9lbnRyeV9sb2NrKTtcbkBAIC05NjAsMTQgKzEwMjUsMTkgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0XHRuZXh0ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTtcbiBcdH1cbiBcbi1cdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKGVudHJ5LVx1MDAzZWVuZF90aW1lLCBuZXh0LVx1MDAzZWludGVydmFsKTtcbitcdG5leHRfc3RhcnQgPSBlbnRyeS1cdTAwM2VlbmRfdGltZTtcbitcdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKG5leHRfc3RhcnQsIG5leHQtXHUwMDNlaW50ZXJ2YWwpO1xuIFx0ZW5kX3RpbWUgPSBtaW5fdChrdGltZV90LCBlbmRfdGltZSwgb3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSk7XG4gXG4rXHRub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7XG4rXHRpZiAodW5saWtlbHkoa3RpbWVfYmVmb3JlKGVuZF90aW1lLCBub3cpKSlcbitcdFx0dGFwcmlvX2NhdGNoX3VwKG9wZXIsIFx1MDAyNm5leHQsIFx1MDAyNm5leHRfc3RhcnQsIFx1MDAyNmVuZF90aW1lLCBub3cpO1xuK1xuIFx0Zm9yICh0YyA9IDA7IHRjIFx1MDAzYyBudW1fdGM7IHRjKyspIHtcbiBcdFx0aWYgKG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci1cdTAwM2VjeWNsZV90aW1lKVxuIFx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDtcbiBcdFx0ZWxzZVxuLVx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSxcbitcdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCxcbiBcdFx0XHRcdFx0XHRcdFx0IG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10pO1xuIFx0fVxuIFxuQEAgLTEwMzgsNyArMTEwOCw3IEBAIHN0YXRpYyBpbnQgZmlsbF9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG4gXHRcdFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXG4gXHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4tXHRpbnQgbWluX2R1cmF0aW9uID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcbitcdHM2NCBtaW5fZHVyYXRpb24gPSB0YXByaW9fbWluX2ludGVydmFsKHEpO1xuIFx0dTMyIGludGVydmFsID0gMDtcbiBcbiBcdGlmICh0YltUQ0FfVEFQUklPX1NDSEVEX0VOVFJZX0NNRF0pXG5AQCAtMTE2Niw3ICsxMjM2LDcgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxuIFx0XHRuZXctXHUwMDNlY3ljbGVfdGltZSA9IGN5Y2xlO1xuIFx0fVxuIFxuLVx0aWYgKG5ldy1cdTAwM2VjeWNsZV90aW1lIFx1MDAzYyBuZXctXHUwMDNlbnVtX2VudHJpZXMgKiBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pKSB7XG4rXHRpZiAobmV3LVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNjIChzNjQpbmV3LVx1MDAzZW51bV9lbnRyaWVzICogdGFwcmlvX21pbl9pbnRlcnZhbChxKSkge1xuIFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiJ2N5Y2xlX3RpbWUnIGlzIHRvbyBzbWFsbFwiKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuaW5kZXggY2QxOWQwNTkyNWU0MC4uM2ZlNjY4MzlmOGFlZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuQEAgLTE1NCw2ICsxNTQsMjggQEBcbiAgICAgICAgICAgICBcImVjaG8gXFxcIjFcXFwiIFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZVwiXG4gICAgICAgICBdXG4gICAgIH0sXG4rICAgIHtcbisgICAgICAgIFwiaWRcIjogXCJmNGIyXCIsXG4rICAgICAgICBcIm5hbWVcIjogXCJBZGQgdGFwcmlvIFFkaXNjIHdpdGggc29mdHdhcmUgaW50ZXJ2YWwgYmVsb3cgdGhlIG1pbmltdW1cIixcbisgICAgICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgICAgICAgIFwicWRpc2NcIixcbisgICAgICAgICAgICBcInRhcHJpb1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFwibnNQbHVnaW5cIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwic2V0dXBcIjogW1xuKyAgICAgICAgICAgIFwiZWNobyBcXFwiMSAxIDhcXFwiIFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vbmV3X2RldmljZVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgcWRpc2MgYWRkIGRldiAkRVRIIHJvb3QgaGFuZGxlIDE6IHRhcHJpbyBudW1fdGMgMiBxdWV1ZXMgMUAwIDFAMSBzY2hlZC1lbnRyeSBTIDAxIDUwMDAwIHNjaGVkLWVudHJ5IFMgMDIgNTAwMDAgY2xvY2tpZCBDTE9DS19UQUlcIixcbisgICAgICAgIFwiZXhwRXhpdENvZGVcIjogXCIyXCIsXG4rICAgICAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBxZGlzYyBzaG93IGRldiAkRVRIXCIsXG4rICAgICAgICBcIm1hdGNoUGF0dGVyblwiOiBcInFkaXNjIHRhcHJpbyAxOiByb290IHJlZmNudFwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiMFwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCJlY2hvIFxcXCIxXFxcIiBcdTAwM2UgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2VcIlxuKyAgICAgICAgXVxuKyAgICB9LFxuICAgICB7XG4gICAgICAgICBcImlkXCI6IFwiODMxZlwiLFxuICAgICAgICAgXCJuYW1lXCI6IFwiQWRkIHRhcHJpbyBRZGlzYyB3aXRoIHRvbyBzaG9ydCBjeWNsZS10aW1lXCIsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0OTowOC4yNDc3NjkzNTlaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMyNzE0MjE0NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUYXByaW8gU2NoZWR1bGVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNgLiBTZWVtcyBsaWtlIHRoZXkncmUgYWRkaW5nIGEgbWluaW11bSBpbnRlcnZhbCBmb3Igc29mdHdhcmUgc2NoZWR1bGVzIHdpdGggYHRhcHJpb19taW5faW50ZXJ2YWxgLCBhbmQgYSBjYXRjaC11cCBtZWNoYW5pc20gKGB0YXByaW9fY2F0Y2hfdXBgKSB0byBoYW5kbGUgc2l0dWF0aW9ucyB3aGVyZSB0aGUgc2NoZWR1bGUgZmFsbHMgYmVoaW5kLiBQbHVzLCB0aGVyZSdzIGEgbmV3IHRlc3QgY2FzZSBpbiBgdGFwcmlvLmpzb25gIGZvciB2YWxpZGF0aW9uLlxuXG5MZXQncyBicmVhayBkb3duIHRoZXNlIGNoYW5nZXMgc3RlcC1ieS1zdGVwLiBgdGFwcmlvX21pbl9pbnRlcnZhbGAgYXBwZWFycyB0byBiZSBjYWxjdWxhdGluZyBhIHNlbnNpYmxlIG1pbmltdW0gaW50ZXJ2YWwuIEl0IGxldmVyYWdlcyBgbGVuZ3RoX3RvX2R1cmF0aW9uYCB3aXRoIGBFVEhfWkxFTmAgYW5kIGBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TYC4gVGhlIGB0YXByaW9fY2F0Y2hfdXBgIGZ1bmN0aW9uIGlzIHRoZSBpbnRlcmVzdGluZyBiaXQuIEl0J3MgZGVzaWduZWQgdG8gdXBkYXRlIHRoZSBgbmV4dGAsIGBuZXh0X3N0YXJ0YCwgYW5kIGBlbmRfdGltZWAgcG9pbnRlcnMgdG8gc2tpcCB3aG9sZSBjeWNsZXMgYW5kIHRoZW4gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjdXJyZW50IGVudHJ5LiBUaGUgYGFkdmFuY2Vfc2NoZWRgIGZ1bmN0aW9uIHRoZW4gdXNlcyB0aGlzIGB0YXByaW9fY2F0Y2hfdXBgIGxvZ2ljIGlmIHRoZSBgZW5kX3RpbWVgIGlzIGJlZm9yZSB0aGUgY3VycmVudCB0aW1lIChgbm93YCkuIEkgc2VlIHRoYXQgdGhleSdyZSBhbHNvIHVzaW5nIGB0YXByaW9fbWluX2ludGVydmFsKHEpYCBub3cgaW4gYGZpbGxfc2NoZWRfZW50cnlgIGFuZCBgcGFyc2VfdGFwcmlvX3NjaGVkdWxlYCBpbnN0ZWFkIG9mIHRoZSBvbGQgYGxlbmd0aF90b19kdXJhdGlvbmAgY2FsY3VsYXRpb25zLlxuXG5Ob3csIG15IHByaW1hcnkgY29uY2VybiB3aXRoIGFueSBzY2hlZHVsZXIgY2hhbmdlIGlzLCBuYXR1cmFsbHksIG1lbW9yeSBzYWZldHkuIERvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBjaGFuZ2VzIGRvbid0IGFsbG93IHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIGJlIGFjY2Vzc2VkIG9yIGV4cG9zZWQuIEkgc2VlIG5vIG5ldyBzdHJ1Y3R1cmVzIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBhbGxvY2F0ZWQsIGFuZCB0aGUgbG9naWMgaXMgcHJpbWFyaWx5IGRlYWxpbmcgd2l0aCB0aW1lIGNhbGN1bGF0aW9ucyDigJMgYGt0aW1lX3RgIGFuZCBgczY0YCDigJMgYW5kIHN0cmFpZ2h0Zm9yd2FyZCBsaXN0IHRyYXZlcnNhbC4gVGhlIHZhcmlhYmxlcyBzZWVtIHRvIGJlIGluaXRpYWxpemVkIHByb3Blcmx5LiBUaGUgcm9vdCBjYXVzZSBhcHBlYXJzIHRvIGJlIHRoYXQgdGhlIGhydGltZXIga2VlcHMgZXhwaXJpbmcgaW4gdGhlIHBhc3QsIGxlYWRpbmcgdG8gYSBDUFUgc3Rvcm0sIGFuZCB0aGUgY2F0Y2gtdXAgbWVjaGFuaXNtIGlzIGEgZml4IHRvIHNraXAgdGhlc2UgbWlzc2VkIGludGVydmFscy5cblxuU28sIHRoaXMgbG9va3MgbGlrZSBhIGxvZ2ljIGJ1ZyBmaXggYW5kIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4gSXQgc2hvdWxkbid0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnksIGluZm8gbGVha3MsIG9yIGNvbXBsZXggbWVtb3J5IGFsbG9jYXRpb25zIHRoYXQgY291bGQgYmUgcGFydGlhbGx5IGluaXRpYWxpemVkLlxuXG5MZXQgbWUgZG91YmxlIGNoZWNrIHRoZSBgdGFwcmlvX2NhdGNoX3VwYCBmdW5jdGlvbiwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIE9rYXksIGFsbCBpbnB1dHMgYXBwZWFyIGluaXRpYWxpemVkLiBUaGUgdmFyaWFibGVzIHVzZWQgd2l0aGluIHRoZSBmdW5jdGlvbiBpdHNlbGYsIHN1Y2ggYXMgdGhlIGBuZXh0X3N0YXJ0YCBhbmQgYGVuZF90aW1lYCBwYXJhbWV0ZXJzIGZvciB0aGUgcmVjdXJzaXZlIGNhbGxzLCBsb29rIGNvcnJlY3RseSBoYW5kbGVkIGFuZCBpbml0aWFsaXplZCB0b28uXG5cblRoZXJlZm9yZSwgSSdtIGNvbmNsdWRpbmcgdGhhdCBLTVNBTiBpc24ndCBuZWVkZWQgaGVyZS4gS0FTQU4sIExPQ0tERVAsIGFuZCB0aGUgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBzaG91bGQgYmUgc3VmZmljaWVudC4gSW4gZmFjdCwgdGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSAqYW55KiBtZW1vcnkgc2FmZXR5IGlzc3Vlcywgbm90IGp1c3QgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLlxuXG5JbiBzdW1tYXJ5LCB0aGlzIHBhdGNoIGlzIGEgZ29vZCBmaXggZm9yIHRoZSB0YXByaW8gc2NoZWR1bGVyLiBJdCBhZGRyZXNzZXMgYSBDUFUgc3Rvcm0gaXNzdWUgYnkgaW50cm9kdWNpbmcgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBhIGNhdGNoLXVwIG1lY2hhbmlzbS4gVGhlIGNoYW5nZXMgaW52b2x2ZSBvbmx5IHRpbWUgY2FsY3VsYXRpb25zLCBsaXN0IHRyYXZlcnNhbHMsIGFuZCBzY2hlZHVsaW5nIGxvZ2ljLiBUaGVyZSdzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mb3JtYXRpb24gbGVha3MsIGFuZCBzbyBpdCBzaG91bGQgYmUgc2FmZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE4MSwiT3V0cHV0VG9rZW5zIjoxMTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0OToyMS41MTkxOTQ2MjJaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzMxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIENQVSBzdG9ybSBpc3N1ZSBpbiB0aGUgdGFwcmlvIHNjaGVkdWxlciBieSBlbmZvcmNpbmcgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2luZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBocnRpbWVycy4gSXQgb25seSBtb2RpZmllcyB0aW1lIGNhbGN1bGF0aW9ucywgbGlzdCB0cmF2ZXJzYWxzLCBhbmQgc2NoZWR1bGluZyBsb2dpYy4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaW50cm9kdWNlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIENQVSBzdG9ybSBpc3N1ZSBpbiB0aGUgdGFwcmlvIHNjaGVkdWxlciBieSBlbmZvcmNpbmcgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2luZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBocnRpbWVycy4gSXQgb25seSBtb2RpZmllcyB0aW1lIGNhbGN1bGF0aW9ucywgbGlzdCB0cmF2ZXJzYWxzLCBhbmQgc2NoZWR1bGluZyBsb2dpYy4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaW50cm9kdWNlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowx6h2l[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-18 07:31:52 +0000 UTC FinishedAt: 2026-08-18 07:49:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d09c98a6da215bce2173a292e4b95c8de6ea5d51", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCH_TAPRIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d09c98a6da215bce2173a292e4b95c8de6ea5d51", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCH_TAPRIO" ], "series_id": "2b5d2635-579e-4c7f-bf05-64bb8d35aa41" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "taprio_change", "taprio_enqueue", "taprio_dequeue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-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+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hfVEFQUklPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGFwcmlvX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZW5xdWV1ZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZGVxdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIENQVSBzdG9ybSBpc3N1ZSBpbiB0aGUgdGFwcmlvIHNjaGVkdWxlciBieSBlbmZvcmNpbmcgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2luZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBocnRpbWVycy4gSXQgb25seSBtb2RpZmllcyB0aW1lIGNhbGN1bGF0aW9ucywgbGlzdCB0cmF2ZXJzYWxzLCBhbmQgc2NoZWR1bGluZyBsb2dpYy4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaW50cm9kdWNlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgdGFwcmlvIHFkaXNjLCBzcGVjaWZpY2FsbHkgZW5mb3JjaW5nIGEgbWluaW11bSBpbnRlcnZhbCBmb3Igc29mdHdhcmUgc2NoZWR1bGVzIGFuZCBhZGRpbmcgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgdGltZXJzLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKHRjIHFkaXNjKSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJjNjY2NDgzMmNiNWE0MDlhMGU3NDQxNzE2NTVjODcxZmM5ZDkyOTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAwNzo0Nzo1MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuaW5kZXggMjk5MjM0YTVmMGZlNi4uNzUxOWJjNWMxYWZmMyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcbkBAIC0yNTksNiAmIzQzOzI1OSwyNiBAQCBzdGF0aWMgaW50IGxlbmd0aF90b19kdXJhdGlvbihzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBpbnQgbGVuKVxuIFx0cmV0dXJuIGRpdl91NjQobGVuICogYXRvbWljNjRfcmVhZChcdTAwMjZxLVx1MDAzZXBpY29zX3Blcl9ieXRlKSwgUFNFQ19QRVJfTlNFQyk7XG4gfVxuIFxuJiM0MzsvKiBTb2Z0d2FyZSBzY2hlZHVsZXMgc2VydmljZSBvbmUgaHJ0aW1lciBleHBpcnkgcGVyIGVudHJ5OyBpbnRlcnZhbHNcbiYjNDM7ICogc2hvcnRlciB0aGFuIHRoZSBleHBpcnkgc2VydmljZSBjb3N0IHJlYXJtIHRoZSB0aW1lciB3aXRoIGFuIGV4cGlyeVxuJiM0MzsgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZVxuJiM0MzsgKiBtZWFzdXJlZCBjb3N0IG9uIGRlYnVnIGNvbmZpZ3VyYXRpb25zLlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TXHQoMTAwICogTlNFQ19QRVJfVVNFQylcbiYjNDM7XG4mIzQzO3N0YXRpYyBzNjQgdGFwcmlvX21pbl9pbnRlcnZhbChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKVxuJiM0Mzt7XG4mIzQzO1x0czY0IG1pbl9pbnRlcnZhbCA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7XG4mIzQzO1xuJiM0MztcdC8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi9cbiYjNDM7XHRpZiAoIUZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKHEtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhVFhUSU1FX0FTU0lTVF9JU19FTkFCTEVEKHEtXHUwMDNlZmxhZ3MpKVxuJiM0MztcdFx0bWluX2ludGVydmFsID0gbWF4X3QoczY0LCBtaW5faW50ZXJ2YWwsXG4mIzQzO1x0XHRcdFx0ICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG1pbl9pbnRlcnZhbDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pXG4ge1xuIFx0cmV0dXJuIGRpdl91NjQoZHVyYXRpb24gKiBQU0VDX1BFUl9OU0VDLCBhdG9taWM2NF9yZWFkKFx1MDAyNnEtXHUwMDNlcGljb3NfcGVyX2J5dGUpKTtcbkBAIC05MTUsNiAmIzQzOzkzNSw1MSBAQCBzdGF0aWMgYm9vbCBzaG91bGRfY2hhbmdlX3NjaGVkdWxlcyhjb25zdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1pbixcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4mIzQzOy8qIFRoZSBvcGVyYXRpb25hbCBzY2hlZHVsZSBmZWxsIGJlaGluZCwgZS5nLiBiZWNhdXNlIHRoZSB0aW1lciB3YXMgZGVsYXllZFxuJiM0MzsgKiBvciB0aGUgcmVmZXJlbmNlIGNsb2NrIHN0ZXBwZWQgZm9yd2FyZC4gQWR2YW5jaW5nIG9uZSBlbnRyeSBwZXIgdGltZXJcbiYjNDM7ICogZXhwaXJ5IHdvdWxkIHJlcGxheSB0aGUgd2hvbGUgYmFja2xvZyBmcm9tIGhydGltZXIgY29udGV4dCwgc28gc2tpcFxuJiM0MzsgKiBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgYW5kIHdhbGsgdGhlIHJlbWFpbmluZyBlbnRyaWVzIHRvIGxhbmQgb25cbiYjNDM7ICogdGhlIGVudHJ5IGNvdmVyaW5nIHRoZSBjdXJyZW50IHRpbWUuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlcixcbiYjNDM7XHRcdFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqKm5leHQsIGt0aW1lX3QgKm5leHRfc3RhcnQsXG4mIzQzO1x0XHRcdCAgICBrdGltZV90ICplbmRfdGltZSwga3RpbWVfdCBub3cpXG4mIzQzO3tcbiYjNDM7XHRpbnQgYnVkZ2V0ID0gMiAqIG9wZXItXHUwMDNlbnVtX2VudHJpZXMgJiM0MzsgMTtcbiYjNDM7XHRzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gKm5leHQ7XG4mIzQzO1x0a3RpbWVfdCBzdGFydCA9ICpuZXh0X3N0YXJ0O1xuJiM0MztcdGt0aW1lX3QgZW5kID0gKmVuZF90aW1lO1xuJiM0MztcdHM2NCBiZWhpbmQgPSBrdGltZV9zdWIobm93LCBlbmQpO1xuJiM0MztcbiYjNDM7XHRpZiAob3Blci1cdTAwM2VjeWNsZV90aW1lIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBiZWhpbmQgXHUwMDNlPSBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpIHtcbiYjNDM7XHRcdHM2NCBqdW1wID0gZGl2NjRfczY0KGJlaGluZCwgb3Blci1cdTAwM2VjeWNsZV90aW1lKSAqIG9wZXItXHUwMDNlY3ljbGVfdGltZTtcbiYjNDM7XG4mIzQzO1x0XHRzdGFydCA9IGt0aW1lX2FkZF9ucyhzdGFydCwganVtcCk7XG4mIzQzO1x0XHRlbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBqdW1wKTtcbiYjNDM7XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSwganVtcCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHR3aGlsZSAoa3RpbWVfYmVmb3JlKGVuZCwgbm93KSBcdTAwMjZcdTAwMjYgLS1idWRnZXQpIHtcbiYjNDM7XHRcdGlmIChsaXN0X2lzX2xhc3QoXHUwMDI2ZW50cnktXHUwMDNlbGlzdCwgXHUwMDI2b3Blci1cdTAwM2VlbnRyaWVzKSB8fFxuJiM0MztcdFx0ICAgIGt0aW1lX2NvbXBhcmUoZW5kLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKSA9PSAwKSB7XG4mIzQzO1x0XHRcdGVudHJ5ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMsXG4mIzQzO1x0XHRcdFx0XHRcdCBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpO1xuJiM0MztcdFx0XHRvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUsXG4mIzQzO1x0XHRcdFx0XHRcdFx0ICAgIG9wZXItXHUwMDNlY3ljbGVfdGltZSk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRlbnRyeSA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0c3RhcnQgPSBlbmQ7XG4mIzQzO1x0XHRlbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBlbnRyeS1cdTAwM2VpbnRlcnZhbCk7XG4mIzQzO1x0XHRlbmQgPSBtaW5fdChrdGltZV90LCBlbmQsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0Km5leHQgPSBlbnRyeTtcbiYjNDM7XHQqbmV4dF9zdGFydCA9IHN0YXJ0O1xuJiM0MztcdCplbmRfdGltZSA9IGVuZDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4ge1xuIFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCxcbkBAIC05MjQsNyAmIzQzOzk4OSw3IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbiBcdGludCBudW1fdGMgPSBuZXRkZXZfZ2V0X251bV90YyhkZXYpO1xuIFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7XG4gXHRzdHJ1Y3QgUWRpc2MgKnNjaCA9IHEtXHUwMDNlcm9vdDtcbi1cdGt0aW1lX3QgZW5kX3RpbWU7XG4mIzQzO1x0a3RpbWVfdCBlbmRfdGltZSwgbmV4dF9zdGFydCwgbm93O1xuIFx0aW50IHRjO1xuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNnEtXHUwMDNlY3VycmVudF9lbnRyeV9sb2NrKTtcbkBAIC05NjAsMTQgJiM0MzsxMDI1LDE5IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbiBcdFx0bmV4dCA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4gXHR9XG4gXG4tXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSwgbmV4dC1cdTAwM2VpbnRlcnZhbCk7XG4mIzQzO1x0bmV4dF9zdGFydCA9IGVudHJ5LVx1MDAzZWVuZF90aW1lO1xuJiM0MztcdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKG5leHRfc3RhcnQsIG5leHQtXHUwMDNlaW50ZXJ2YWwpO1xuIFx0ZW5kX3RpbWUgPSBtaW5fdChrdGltZV90LCBlbmRfdGltZSwgb3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSk7XG4gXG4mIzQzO1x0bm93ID0gdGFwcmlvX2dldF90aW1lKHEpO1xuJiM0MztcdGlmICh1bmxpa2VseShrdGltZV9iZWZvcmUoZW5kX3RpbWUsIG5vdykpKVxuJiM0MztcdFx0dGFwcmlvX2NhdGNoX3VwKG9wZXIsIFx1MDAyNm5leHQsIFx1MDAyNm5leHRfc3RhcnQsIFx1MDAyNmVuZF90aW1lLCBub3cpO1xuJiM0MztcbiBcdGZvciAodGMgPSAwOyB0YyBcdTAwM2MgbnVtX3RjOyB0YyYjNDM7JiM0MzspIHtcbiBcdFx0aWYgKG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci1cdTAwM2VjeWNsZV90aW1lKVxuIFx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDtcbiBcdFx0ZWxzZVxuLVx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSxcbiYjNDM7XHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKG5leHRfc3RhcnQsXG4gXHRcdFx0XHRcdFx0XHRcdCBuZXh0LVx1MDAzZWdhdGVfZHVyYXRpb25bdGNdKTtcbiBcdH1cbiBcbkBAIC0xMDM4LDcgJiM0MzsxMTA4LDcgQEAgc3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcbiBcdFx0XHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcbiBcdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdGludCBtaW5fZHVyYXRpb24gPSBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pO1xuJiM0MztcdHM2NCBtaW5fZHVyYXRpb24gPSB0YXByaW9fbWluX2ludGVydmFsKHEpO1xuIFx0dTMyIGludGVydmFsID0gMDtcbiBcbiBcdGlmICh0YltUQ0FfVEFQUklPX1NDSEVEX0VOVFJZX0NNRF0pXG5AQCAtMTE2Niw3ICYjNDM7MTIzNiw3IEBAIHN0YXRpYyBpbnQgcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcbiBcdFx0bmV3LVx1MDAzZWN5Y2xlX3RpbWUgPSBjeWNsZTtcbiBcdH1cbiBcbi1cdGlmIChuZXctXHUwMDNlY3ljbGVfdGltZSBcdTAwM2MgbmV3LVx1MDAzZW51bV9lbnRyaWVzICogbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKSkge1xuJiM0MztcdGlmIChuZXctXHUwMDNlY3ljbGVfdGltZSBcdTAwM2MgKHM2NCluZXctXHUwMDNlbnVtX2VudHJpZXMgKiB0YXByaW9fbWluX2ludGVydmFsKHEpKSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCYjMzQ7JiMzOTtjeWNsZV90aW1lJiMzOTsgaXMgdG9vIHNtYWxsXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuaW5kZXggY2QxOWQwNTkyNWU0MC4uM2ZlNjY4MzlmOGFlZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuQEAgLTE1NCw2ICYjNDM7MTU0LDI4IEBAXG4gICAgICAgICAgICAgXCYjMzQ7ZWNobyBcXFwmIzM0OzFcXFwmIzM0OyBcdTAwM2UgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2VcJiMzNDtcbiAgICAgICAgIF1cbiAgICAgfSxcbiYjNDM7ICAgIHtcbiYjNDM7ICAgICAgICBcJiMzNDtpZFwmIzM0OzogXCYjMzQ7ZjRiMlwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtBZGQgdGFwcmlvIFFkaXNjIHdpdGggc29mdHdhcmUgaW50ZXJ2YWwgYmVsb3cgdGhlIG1pbmltdW1cJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7Y2F0ZWdvcnlcJiMzNDs6IFtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7cWRpc2NcJiMzNDssXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3RhcHJpb1wmIzM0O1xuJiM0MzsgICAgICAgIF0sXG4mIzQzOyAgICAgICAgXCYjMzQ7cGx1Z2luc1wmIzM0Ozoge1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtyZXF1aXJlc1wmIzM0OzogXCYjMzQ7bnNQbHVnaW5cJiMzNDtcbiYjNDM7ICAgICAgICB9LFxuJiM0MzsgICAgICAgIFwmIzM0O3NldHVwXCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2VjaG8gXFxcJiMzNDsxIDEgOFxcXCYjMzQ7IFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vbmV3X2RldmljZVwmIzM0O1xuJiM0MzsgICAgICAgIF0sXG4mIzQzOyAgICAgICAgXCYjMzQ7Y21kVW5kZXJUZXN0XCYjMzQ7OiBcJiMzNDskVEMgcWRpc2MgYWRkIGRldiAkRVRIIHJvb3QgaGFuZGxlIDE6IHRhcHJpbyBudW1fdGMgMiBxdWV1ZXMgMUAwIDFAMSBzY2hlZC1lbnRyeSBTIDAxIDUwMDAwIHNjaGVkLWVudHJ5IFMgMDIgNTAwMDAgY2xvY2tpZCBDTE9DS19UQUlcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7ZXhwRXhpdENvZGVcJiMzNDs6IFwmIzM0OzJcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7dmVyaWZ5Q21kXCYjMzQ7OiBcJiMzNDskVEMgcWRpc2Mgc2hvdyBkZXYgJEVUSFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDttYXRjaFBhdHRlcm5cJiMzNDs6IFwmIzM0O3FkaXNjIHRhcHJpbyAxOiByb290IHJlZmNudFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDttYXRjaENvdW50XCYjMzQ7OiBcJiMzNDswXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O3RlYXJkb3duXCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O2VjaG8gXFxcJiMzNDsxXFxcJiMzNDsgXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlXCYjMzQ7XG4mIzQzOyAgICAgICAgXVxuJiM0MzsgICAgfSxcbiAgICAge1xuICAgICAgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0OzgzMWZcJiMzNDssXG4gICAgICAgICBcJiMzNDtuYW1lXCYjMzQ7OiBcJiMzNDtBZGQgdGFwcmlvIFFkaXNjIHdpdGggdG9vIHNob3J0IGN5Y2xlLXRpbWVcJiMzNDssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hfVEFQUklPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGFwcmlvX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZW5xdWV1ZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZGVxdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgdGFwcmlvIHFkaXNjLCBzcGVjaWZpY2FsbHkgZW5mb3JjaW5nIGEgbWluaW11bSBpbnRlcnZhbCBmb3Igc29mdHdhcmUgc2NoZWR1bGVzIGFuZCBhZGRpbmcgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgdGltZXJzLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKHRjIHFkaXNjKSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJjNjY2NDgzMmNiNWE0MDlhMGU3NDQxNzE2NTVjODcxZmM5ZDkyOTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAwNzo0Nzo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jCmluZGV4IDI5OTIzNGE1ZjBmZTYuLjc1MTliYzVjMWFmZjMgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF90YXByaW8uYwpAQCAtMjU5LDYgJiM0MzsyNTksMjYgQEAgc3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbikKIAlyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpLCBQU0VDX1BFUl9OU0VDKTsKIH0KIAomIzQzOy8qIFNvZnR3YXJlIHNjaGVkdWxlcyBzZXJ2aWNlIG9uZSBocnRpbWVyIGV4cGlyeSBwZXIgZW50cnk7IGludGVydmFscwomIzQzOyAqIHNob3J0ZXIgdGhhbiB0aGUgZXhwaXJ5IHNlcnZpY2UgY29zdCByZWFybSB0aGUgdGltZXIgd2l0aCBhbiBleHBpcnkKJiM0MzsgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZQomIzQzOyAqIG1lYXN1cmVkIGNvc3Qgb24gZGVidWcgY29uZmlndXJhdGlvbnMuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TCSgxMDAgKiBOU0VDX1BFUl9VU0VDKQomIzQzOwomIzQzO3N0YXRpYyBzNjQgdGFwcmlvX21pbl9pbnRlcnZhbChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKQomIzQzO3sKJiM0MzsJczY0IG1pbl9pbnRlcnZhbCA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7CiYjNDM7CiYjNDM7CS8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi8KJiM0MzsJaWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLSZndDtmbGFncykgJmFtcDsmYW1wOwomIzQzOwkgICAgIVRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRChxLSZndDtmbGFncykpCiYjNDM7CQltaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCwKJiM0MzsJCQkJICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTsKJiM0MzsKJiM0MzsJcmV0dXJuIG1pbl9pbnRlcnZhbDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pCiB7CiAJcmV0dXJuIGRpdl91NjQoZHVyYXRpb24gKiBQU0VDX1BFUl9OU0VDLCBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpKTsKQEAgLTkxNSw2ICYjNDM7OTM1LDUxIEBAIHN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLAogCXJldHVybiBmYWxzZTsKIH0KIAomIzQzOy8qIFRoZSBvcGVyYXRpb25hbCBzY2hlZHVsZSBmZWxsIGJlaGluZCwgZS5nLiBiZWNhdXNlIHRoZSB0aW1lciB3YXMgZGVsYXllZAomIzQzOyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lcgomIzQzOyAqIGV4cGlyeSB3b3VsZCByZXBsYXkgdGhlIHdob2xlIGJhY2tsb2cgZnJvbSBocnRpbWVyIGNvbnRleHQsIHNvIHNraXAKJiM0MzsgKiBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgYW5kIHdhbGsgdGhlIHJlbWFpbmluZyBlbnRyaWVzIHRvIGxhbmQgb24KJiM0MzsgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlciwKJiM0MzsJCQkgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCwKJiM0MzsJCQkgICAga3RpbWVfdCAqZW5kX3RpbWUsIGt0aW1lX3Qgbm93KQomIzQzO3sKJiM0MzsJaW50IGJ1ZGdldCA9IDIgKiBvcGVyLSZndDtudW1fZW50cmllcyAmIzQzOyAxOwomIzQzOwlzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gKm5leHQ7CiYjNDM7CWt0aW1lX3Qgc3RhcnQgPSAqbmV4dF9zdGFydDsKJiM0MzsJa3RpbWVfdCBlbmQgPSAqZW5kX3RpbWU7CiYjNDM7CXM2NCBiZWhpbmQgPSBrdGltZV9zdWIobm93LCBlbmQpOwomIzQzOwomIzQzOwlpZiAob3Blci0mZ3Q7Y3ljbGVfdGltZSAmZ3Q7IDAgJmFtcDsmYW1wOyBiZWhpbmQgJmd0Oz0gb3Blci0mZ3Q7Y3ljbGVfdGltZSkgewomIzQzOwkJczY0IGp1bXAgPSBkaXY2NF9zNjQoYmVoaW5kLCBvcGVyLSZndDtjeWNsZV90aW1lKSAqIG9wZXItJmd0O2N5Y2xlX3RpbWU7CiYjNDM7CiYjNDM7CQlzdGFydCA9IGt0aW1lX2FkZF9ucyhzdGFydCwganVtcCk7CiYjNDM7CQllbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBqdW1wKTsKJiM0MzsJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLCBqdW1wKTsKJiM0MzsJfQomIzQzOwomIzQzOwl3aGlsZSAoa3RpbWVfYmVmb3JlKGVuZCwgbm93KSAmYW1wOyZhbXA7IC0tYnVkZ2V0KSB7CiYjNDM7CQlpZiAobGlzdF9pc19sYXN0KCZhbXA7ZW50cnktJmd0O2xpc3QsICZhbXA7b3Blci0mZ3Q7ZW50cmllcykgfHwKJiM0MzsJCSAgICBrdGltZV9jb21wYXJlKGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpID09IDApIHsKJiM0MzsJCQllbnRyeSA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtvcGVyLSZndDtlbnRyaWVzLAomIzQzOwkJCQkJCSBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpOwomIzQzOwkJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLAomIzQzOwkJCQkJCQkgICAgb3Blci0mZ3Q7Y3ljbGVfdGltZSk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXN0YXJ0ID0gZW5kOwomIzQzOwkJZW5kID0ga3RpbWVfYWRkX25zKGVuZCwgZW50cnktJmd0O2ludGVydmFsKTsKJiM0MzsJCWVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpOwomIzQzOwl9CiYjNDM7CiYjNDM7CSpuZXh0ID0gZW50cnk7CiYjNDM7CSpuZXh0X3N0YXJ0ID0gc3RhcnQ7CiYjNDM7CSplbmRfdGltZSA9IGVuZDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCiB7CiAJc3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCwKQEAgLTkyNCw3ICYjNDM7OTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCWludCBudW1fdGMgPSBuZXRkZXZfZ2V0X251bV90YyhkZXYpOwogCXN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksICpuZXh0OwogCXN0cnVjdCBRZGlzYyAqc2NoID0gcS0mZ3Q7cm9vdDsKLQlrdGltZV90IGVuZF90aW1lOwomIzQzOwlrdGltZV90IGVuZF90aW1lLCBuZXh0X3N0YXJ0LCBub3c7CiAJaW50IHRjOwogCiAJc3Bpbl9sb2NrKCZhbXA7cS0mZ3Q7Y3VycmVudF9lbnRyeV9sb2NrKTsKQEAgLTk2MCwxNCAmIzQzOzEwMjUsMTkgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCQluZXh0ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKIAl9CiAKLQllbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS0mZ3Q7ZW5kX3RpbWUsIG5leHQtJmd0O2ludGVydmFsKTsKJiM0MzsJbmV4dF9zdGFydCA9IGVudHJ5LSZndDtlbmRfdGltZTsKJiM0MzsJZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC0mZ3Q7aW50ZXJ2YWwpOwogCWVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lKTsKIAomIzQzOwlub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7CiYjNDM7CWlmICh1bmxpa2VseShrdGltZV9iZWZvcmUoZW5kX3RpbWUsIG5vdykpKQomIzQzOwkJdGFwcmlvX2NhdGNoX3VwKG9wZXIsICZhbXA7bmV4dCwgJmFtcDtuZXh0X3N0YXJ0LCAmYW1wO2VuZF90aW1lLCBub3cpOwomIzQzOwogCWZvciAodGMgPSAwOyB0YyAmbHQ7IG51bV90YzsgdGMmIzQzOyYjNDM7KSB7CiAJCWlmIChuZXh0LSZndDtnYXRlX2R1cmF0aW9uW3RjXSA9PSBvcGVyLSZndDtjeWNsZV90aW1lKQogCQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDsKIAkJZWxzZQotCQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS0mZ3Q7ZW5kX3RpbWUsCiYjNDM7CQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhuZXh0X3N0YXJ0LAogCQkJCQkJCQkgbmV4dC0mZ3Q7Z2F0ZV9kdXJhdGlvblt0Y10pOwogCX0KIApAQCAtMTAzOCw3ICYjNDM7MTEwOCw3IEBAIHN0YXRpYyBpbnQgZmlsbF9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsCiAJCQkgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwKIAkJCSAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7Ci0JaW50IG1pbl9kdXJhdGlvbiA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7CiYjNDM7CXM2NCBtaW5fZHVyYXRpb24gPSB0YXByaW9fbWluX2ludGVydmFsKHEpOwogCXUzMiBpbnRlcnZhbCA9IDA7CiAKIAlpZiAodGJbVENBX1RBUFJJT19TQ0hFRF9FTlRSWV9DTURdKQpAQCAtMTE2Niw3ICYjNDM7MTIzNiw3IEBAIHN0YXRpYyBpbnQgcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YiwKIAkJbmV3LSZndDtjeWNsZV90aW1lID0gY3ljbGU7CiAJfQogCi0JaWYgKG5ldy0mZ3Q7Y3ljbGVfdGltZSAmbHQ7IG5ldy0mZ3Q7bnVtX2VudHJpZXMgKiBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pKSB7CiYjNDM7CWlmIChuZXctJmd0O2N5Y2xlX3RpbWUgJmx0OyAoczY0KW5ldy0mZ3Q7bnVtX2VudHJpZXMgKiB0YXByaW9fbWluX2ludGVydmFsKHEpKSB7CiAJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDsmIzM5O2N5Y2xlX3RpbWUmIzM5OyBpcyB0b28gc21hbGwmIzM0Oyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24KaW5kZXggY2QxOWQwNTkyNWU0MC4uM2ZlNjY4MzlmOGFlZCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24KJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24KQEAgLTE1NCw2ICYjNDM7MTU0LDI4IEBACiAgICAgICAgICAgICAmIzM0O2VjaG8gXCYjMzQ7MVwmIzM0OyAmZ3Q7IC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlJiMzNDsKICAgICAgICAgXQogICAgIH0sCiYjNDM7ICAgIHsKJiM0MzsgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDtmNGIyJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtBZGQgdGFwcmlvIFFkaXNjIHdpdGggc29mdHdhcmUgaW50ZXJ2YWwgYmVsb3cgdGhlIG1pbmltdW0mIzM0OywKJiM0MzsgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7cWRpc2MmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3RhcHJpbyYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtwbHVnaW5zJiMzNDs6IHsKJiM0MzsgICAgICAgICAgICAmIzM0O3JlcXVpcmVzJiMzNDs6ICYjMzQ7bnNQbHVnaW4mIzM0OwomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7ZWNobyBcJiMzNDsxIDEgOFwmIzM0OyAmZ3Q7IC9zeXMvYnVzL25ldGRldnNpbS9uZXdfZGV2aWNlJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICRFVEggcm9vdCBoYW5kbGUgMTogdGFwcmlvIG51bV90YyAyIHF1ZXVlcyAxQDAgMUAxIHNjaGVkLWVudHJ5IFMgMDEgNTAwMDAgc2NoZWQtZW50cnkgUyAwMiA1MDAwMCBjbG9ja2lkIENMT0NLX1RBSSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzImIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIHFkaXNjIHNob3cgZGV2ICRFVEgmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7cWRpc2MgdGFwcmlvIDE6IHJvb3QgcmVmY250JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0O2VjaG8gXCYjMzQ7MVwmIzM0OyAmZ3Q7IC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlJiMzNDsKJiM0MzsgICAgICAgIF0KJiM0MzsgICAgfSwKICAgICB7CiAgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDs4MzFmJiMzNDssCiAgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0FkZCB0YXByaW8gUWRpc2Mgd2l0aCB0b28gc2hvcnQgY3ljbGUtdGltZSYjMzQ7LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTg0CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRhcHJpbyBRZGlzYyBQYXRjaCoqCgpPa2F5LCBzbyB3ZSBoYXZlIGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIHR3byBuZXcgZnVuY3Rpb25zOiBgdGFwcmlvX21pbl9pbnRlcnZhbCgpYCB3aGljaCBsaWtlbHkgZW5mb3JjZXMgc29tZSBraW5kIG9mIHNjaGVkdWxpbmcgY29uc3RyYWludCwgYW5kIGB0YXByaW9fY2F0Y2hfdXAoKWAgdG8gZGVhbCB3aXRoIG1pc3NlZCBkZWFkbGluZXMgb3IgY2xvY2sgc2tldywgd2hpY2ggaXMgYSBrZXkgY29uc2lkZXJhdGlvbiBmb3IgdGltZS1zZW5zaXRpdmUgc2NoZWR1bGVzLiBDcnVjaWFsbHksIGBhZHZhbmNlX3NjaGVkKClgIGlzIGJlaW5nIG1vZGlmaWVkIHRvIGNhbGwgYHRhcHJpb19jYXRjaF91cCgpYCwgaW1wbHlpbmcgdGhpcyBpcyBhIGNvcmUgb3BlcmF0aW9uYWwgY2hhbmdlLgoKVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudCB0byB0aGUgVGltZSBBd2FyZSBQcmlvcml0eSBTaGFwZXIsIHRoZSB0YXByaW8gcWRpc2MuIEZyb20gYSB1c2VyIHBlcnNwZWN0aXZlLCB0aGlzIHFkaXNjIGlzIGFjY2Vzc2libGUgdGhyb3VnaCBuZXRsaW5rIGFuZCB0aGUgYHRjIHFkaXNjIGFkZCAuLi4gdGFwcmlvYCBjb21tYW5kLiBHaXZlbiB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgdGltaW5nLXJlbGF0ZWQgYnVncyBhbmQgdGhlIHVzZXItc3BhY2UgaW50ZXJmYWNlLCB0aGlzIGlzICphYnNvbHV0ZWx5KiBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBhZ2dyZXNzaXZlIGZ1enppbmcuIFRoZSBpbnRlcmFjdGlvbiB3aXRoIHRpbWUsIHNjaGVkdWxpbmcsIGFuZCBwb3RlbnRpYWxseSBleHRlcm5hbCBjbG9jayBzb3VyY2VzIG1ha2VzIGl0IGEgcHJpbWUgdGFyZ2V0IGZvciBpZGVudGlmeWluZyBlZGdlIGNhc2VzIGFuZCB2dWxuZXJhYmlsaXRpZXMuCgpCZWZvcmUgZGl2aW5nIGludG8gYSBmdXp6aW5nIHN0cmF0ZWd5LCBJIHNob3VsZCBmaW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBpcyBlbmFibGVkLCBzbyBJJiMzOTtsbCBzdGFydCBieSBsb29raW5nIGF0IGBuZXQvc2NoZWQvTWFrZWZpbGVgIGFuZCBgS2NvbmZpZ2AgZm9yIHRoZSBgc2NoX3RhcHJpby5jYCBzb3VyY2UgZmlsZS4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgYmUgY3J1Y2lhbCBmb3IgY3JlYXRpbmcgZWZmZWN0aXZlIGZ1enppbmcgY29uZmlndXJhdGlvbnMgYW5kIHVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY2hfdGFwcmlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz0xNzI9Y29uZmlnIE5FVF9TQ0hfVEFQUklPXG4tLVxubmV0L3NjaGVkL0tjb25maWctMTc4LVxubmV0L3NjaGVkL0tjb25maWc6MTc5Olx0ICBTZWUgdGhlIHRvcCBvZiBcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cbm5ldC9zY2hlZC9LY29uZmlnLTE4MC1cbm5ldC9zY2hlZC9LY29uZmlnLTE4MS1cdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxubmV0L3NjaGVkL0tjb25maWc6MTgyOlx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RhcHJpby5cbm5ldC9zY2hlZC9LY29uZmlnLTE4My1cbi0tXG5uZXQvc2NoZWQvTWFrZWZpbGU9NjM9b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRGKVx0JiM0Mzs9IHNjaF9ldGYub1xubmV0L3NjaGVkL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19ORVRfU0NIX1RBUFJJTylcdCYjNDM7PSBzY2hfdGFwcmlvLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS02NS1vYmotJChDT05GSUdfTkVUX1NDSF9CUEYpXHQmIzQzOz0gYnBmX3FkaXNjLm9cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTItXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjM6LyogbmV0L3NjaGVkL3NjaF90YXByaW8uY1x0IFRpbWUgQXdhcmUgUHJpb3JpdHkgU2NoZWR1bGVyXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQtICpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDA0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIFRBUFJJTyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSB0YXNrIGF0IGhhbmQgaW52b2x2ZXMgYE5FVF9TQ0hfVEFQUklPYC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlIHdpdGggbmV0d29yayBzY2hlZHVsaW5nLCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGNvbnN1bHQgdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIGZpbGVzLiBTcGVjaWZpY2FsbHksIGBuZXQvc2NoZWQvS2NvbmZpZ2AgaXMgdGhlIG9idmlvdXMgcGxhY2UgdG8gZmluZCB0aGUgZGV0YWlsZWQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBoZWxwIHRleHQgcmVsYXRlZCB0byBgTkVUX1NDSF9UQVBSSU9gLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaXMgZW5hYmxlZCwgYW55IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGNvbXBpbGUtdGltZSBjb25maWd1cmF0aW9ucyBvciBjb25zdHJhaW50cyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgdG8gZW5zdXJlIGl0JiMzOTtzIGJ1aWx0IGNvcnJlY3RseSBmb3IgbXkgdGFyZ2V0IGVudmlyb25tZW50LiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZSByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIX1RBUFJJTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MTY3PWNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzEtXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9TQ0hfVEFQUklPXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMzIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyB0aGUgTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBzY2hlZHVsaW5nIGNvbmZpZ3VyYXRpb24uIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGBuZXQvc2NoZWQvS2NvbmZpZ2AgYXJvdW5kIGxpbmUgMTcyLiBJJiMzOTttIGd1ZXNzaW5nIHRoYXQgcGFydGljdWxhciBzZWN0aW9uIG1pZ2h0IGJlIHdoZXJlIGEgY2VydGFpbiBzZXR0aW5nIG9yIGZlYXR1cmUgcmVsYXRlZCB0by4uLiBbVXNlciYjMzk7cyBmaWVsZCBvZiBleHBlcnRpc2UsIGluZmVycmVkLCBlLmcuLCB0cmFmZmljIHNoYXBpbmcsIFFvUywgcXVldWUgbWFuYWdlbWVudCwgZXRjLl0uLi4gaXMgZGVmaW5lZC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIHJlbGV2YW50IG9wdGlvbnMsIHRoZWlyIGRlcGVuZGVuY2llcywgYW5kIGFueSBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBvciBjb21tZW50cy4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgdGhpcyBjb21wb25lbnQgaXMgY29uZmlndXJlZCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBJIGFudGljaXBhdGUgdGhlcmUgd2lsbCBiZSBkZXRhaWxzIHJlZ2FyZGluZyBhbnkgcGFyYW1ldGVycyBvciBjb25zdHJhaW50cyBvbiB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGFwcGx5IGluIG15IHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTcwOlx0XHQgIENvbW1vbiBsaWJyYXJ5IGZvciBtYW5pcHVsYXRpbmcgbXFwcmlvIHF1ZXVlIGNvbmZpZ3VyYXRpb25zLlxuIDE3MTpcdFxuIDE3MjpcdGNvbmZpZyBORVRfU0NIX1RBUFJJT1xuIDE3MzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcJiMzNDtcbiAxNzQ6XHRcdHNlbGVjdCBORVRfU0NIX01RUFJJT19MSUJcbiAxNzU6XHRcdGhlbHBcbiAxNzY6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIFRpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgcGFja2V0XG4gMTc3Olx0XHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtLlxuIDE3ODpcdFxuIDE3OTpcdFx0ICBTZWUgdGhlIHRvcCBvZiBcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cbiAxODA6XHRcbiAxODE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDE4MjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RhcHJpby5cbiAxODM6XHRcbiAxODQ6XHRjb25maWcgTkVUX1NDSF9HUkVEXG4gMTg1Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb24gKEdSRUQpXCYjMzQ7XG4gMTg2Olx0XHRoZWxwXG4gMTg3Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb25cbiAxODg6XHRcdCAgKEdSRUQpIHBhY2tldCBzY2hlZHVsaW5nIGFsZ29yaXRobSBmb3Igc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlc1xuIDE4OTpcdFx0ICAoc2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3JlZC5jXHUwMDNlIGZvciBkZXRhaWxzIGFuZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4ODgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgYE5FVF9TQ0hfVEFQUklPYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYE5FVF9TQ0hfVEFQUklPYC4gVGhhdCYjMzk7cyB0aGUgY29uZmlnLCBzbyBsZXQmIzM5O3MgZGlnIGludG8gdGhlIGRldGFpbHMuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGtleSBzeW1ib2xzIGludm9sdmVkLiBGaXJzdCwgSSBzZWUgYHRhcHJpb19jYXRjaF91cGAsIGBhZHZhbmNlX3NjaGVkYCwgYW5kIGB0YXByaW9fbWluX2ludGVydmFsYCBhcmUgYWxsIHN0YXRpYy4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cg4oCTIGl0IGdpdmVzIG1lIGEgbmFycm93ZXIgZm9jdXMuCgpOb3csIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGFsbCBhY3R1YWxseSAqd29ya3MqLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AuIEkgbmVlZCB0byBpZGVudGlmeSB3aGF0IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGV4aXN0IGFuZCwgY3J1Y2lhbGx5LCB3aGljaCBmdW5jdGlvbnMgYXJlIHJlZ2lzdGVyZWQgYXMgcWRpc2Mgb3BlcmF0aW9ucy4gVGhhdCB3aWxsIHNob3cgbWUgaG93IHRoaXMgc2NoZWR1bGVyIGFjdHVhbGx5IGludGVyZmFjZXMgd2l0aCB0aGUgbmV0d29ya2luZyBzdGFjayBhbmQgaXRzIHN1cnJvdW5kaW5nIGNvbXBvbmVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNjAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHRhcHJpb19jbGFzc19vcHMgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjEwLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNjExOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHRhcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYxMi1cdC5jbF9vcHNcdFx0PSBcdTAwMjZ0YXByaW9fY2xhc3Nfb3BzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzUxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgc2NoX3RhcHJpby5jYCBmb3IgRGVlcGVyIFVuZGVyc3RhbmRpbmcqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIGRlbHZlIGludG8gYG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNgIGFnYWluLiBJJiMzOTt2ZSBiZWVuIHdvcmtpbmcgd2l0aCB0cmFmZmljIHNoYXBpbmcgYW5kIFRpbWUtQXdhcmUgU2hhcGVycyAoVEFTKSBsYXRlbHksIGFuZCBJIHdhbnQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb2RlLiBTcGVjaWZpY2FsbHksIG15IG1lbnRhbCBjdXJzb3IgaXMgbGFuZGluZyBhcm91bmQgbGluZSAyNjExLiBJIHJlY2FsbCB0aGF0IGFyZWEgYmVpbmcgcGl2b3RhbCBmb3IgW2luc2VydCBhIGJyaWVmLCByZWxldmFudCB0ZWNobmljYWwgZGV0YWlsIGFib3V0IHRoZSBmdW5jdGlvbiBvZiBsaW5lIDI2MTEgLSBlLmcuLCAmIzM0O2hhbmRsaW5nIHRoZSBzY2hlZHVsaW5nIG9mIHRpbWUgd2luZG93cyYjMzQ7LCBvciAmIzM0O2hvdyB0aGUgcGFja2V0IGlzIGNsYXNzaWZpZWQgYW5kIHNjaGVkdWxlZCYjMzQ7XSwgYW5kIEkgbmVlZCB0byBzb2xpZGlmeSBteSBncmFzcCBvbiBob3cgdGhhdCBwaWVjZSBpbnRlZ3JhdGVzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGluc2lnaHRzIG9uIFttZW50aW9uIHNwZWNpZmljIGFzcGVjdHMgeW91JiMzOTtyZSBsb29raW5nIGZvciwgZS5nLiwgJiMzNDt0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUgdGltZXN0YW1waW5nIG1lY2hhbmlzbXMmIzM0Oywgb3IgJiMzNDt0aGUgbG9naWMgZm9yIHJlLWNhbGN1bGF0aW5nIHRoZSBzY2hlZHVsaW5nIHBsYW4gYmFzZWQgb24gZXZlbnRzJiMzNDtdLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBhcm91bmQgdGhhdCBsaW5lLCBsb29raW5nIGZvciB0aGUgcmVsYXRlZCBkYXRhIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9ucyB0aGF0IGFyZSB1c2VkLCBhbmQgdHJ5aW5nIHRvIGJ1aWxkIGEgcHJlY2lzZSBtZW50YWwgbW9kZWwgb2YgaXRzIGV4ZWN1dGlvbiBwYXRoLiBJJiMzOTttIGV4cGVjdGluZyB0byByZWZpbmUgbXkgZXhpc3RpbmcgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUgVGltZS1Bd2FyZSBTaGFwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjYwMDpcdFxuMjYwMTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHRhcHJpb19jbGFzc19vcHMgPSB7XG4yNjAyOlx0XHQuZ3JhZnRcdFx0PSB0YXByaW9fZ3JhZnQsXG4yNjAzOlx0XHQubGVhZlx0XHQ9IHRhcHJpb19sZWFmLFxuMjYwNDpcdFx0LmZpbmRcdFx0PSB0YXByaW9fZmluZCxcbjI2MDU6XHRcdC53YWxrXHRcdD0gdGFwcmlvX3dhbGssXG4yNjA2Olx0XHQuZHVtcFx0XHQ9IHRhcHJpb19kdW1wX2NsYXNzLFxuMjYwNzpcdFx0LmR1bXBfc3RhdHNcdD0gdGFwcmlvX2R1bXBfY2xhc3Nfc3RhdHMsXG4yNjA4Olx0XHQuc2VsZWN0X3F1ZXVlXHQ9IHRhcHJpb19zZWxlY3RfcXVldWUsXG4yNjA5Olx0fTtcbjI2MTA6XHRcbjI2MTE6XHRzdGF0aWMgc3RydWN0IFFkaXNjX29wcyB0YXByaW9fcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4yNjEyOlx0XHQuY2xfb3BzXHRcdD0gXHUwMDI2dGFwcmlvX2NsYXNzX29wcyxcbjI2MTM6XHRcdC5pZFx0XHQ9IFwmIzM0O3RhcHJpb1wmIzM0OyxcbjI2MTQ6XHRcdC5wcml2X3NpemVcdD0gc2l6ZW9mKHN0cnVjdCB0YXByaW9fc2NoZWQpLFxuMjYxNTpcdFx0LmluaXRcdFx0PSB0YXByaW9faW5pdCxcbjI2MTY6XHRcdC5jaGFuZ2VcdFx0PSB0YXByaW9fY2hhbmdlLFxuMjYxNzpcdFx0LmRlc3Ryb3lcdD0gdGFwcmlvX2Rlc3Ryb3ksXG4yNjE4Olx0XHQucmVzZXRcdFx0PSB0YXByaW9fcmVzZXQsXG4yNjE5Olx0XHQuYXR0YWNoXHRcdD0gdGFwcmlvX2F0dGFjaCxcbjI2MjA6XHRcdC5wZWVrXHRcdD0gdGFwcmlvX3BlZWssXG4yNjIxOlx0XHQuZGVxdWV1ZVx0PSB0YXByaW9fZGVxdWV1ZSxcbjI2MjI6XHRcdC5lbnF1ZXVlXHQ9IHRhcHJpb19lbnF1ZXVlLFxuMjYyMzpcdFx0LmR1bXBcdFx0PSB0YXByaW9fZHVtcCxcbjI2MjQ6XHRcdC5kdW1wX3N0YXRzXHQ9IHRhcHJpb19kdW1wX3N0YXRzLFxuMjYyNTpcdFx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4yNjI2Olx0fTtcbjI2Mjc6XHRNT0RVTEVfQUxJQVNfTkVUX1NDSChcJiMzNDt0YXByaW9cJiMzNDspO1xuMjYyODpcdFxuMjYyOTpcdHN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgdGFwcmlvX2RldmljZV9ub3RpZmllciA9IHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE5NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBUaGlzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgdGhlIGZ1bmN0aW9ucyBgdGFwcmlvX2luaXRgLCBgdGFwcmlvX2NoYW5nZWAsIGB0YXByaW9fZW5xdWV1ZWAsIGFuZCBgdGFwcmlvX2RlcXVldWVgIGp1bXAgb3V0LiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLCBhbmQgSSBuZWVkIHRvIGNhcmVmdWxseSBldmFsdWF0ZSBob3cgdGhleSYjMzk7cmUgYmVpbmcgdG91Y2hlZC4gVGhlIGNvcmUgbW9kaWZpY2F0aW9uLCB0aG91Z2gsIHNlZW1zIHRvIGJlIGluIGBhZHZhbmNlX3NjaGVkYCwgd2hpY2gsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgaXMgdGhlIGhydGltZXIgY2FsbGJhY2suIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBwYXRoLCBzbyBhbnkgY2hhbmdlIHRoZXJlIHdhcnJhbnRzIGV4dHJhIHNjcnV0aW55LiBUaGUgZmFjdCB0aGF0IGl0IGFsc28gdG91Y2hlcyBgZmlsbF9zY2hlZF9lbnRyeWAgYW5kIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgLCBib3RoIGNhbGxlZCBmcm9tIGB0YXByaW9fY2hhbmdlYCwgaXMgc2lnbmlmaWNhbnQuIFNvLCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyBnb2luZyBvbiwgbXkgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byBgYWR2YW5jZV9zY2hlZGAgYW5kIGB0YXByaW9fY2hhbmdlYCBzcGVjaWZpY2FsbHkuIFRob3NlIGFyZSB0aGUgcG9pbnRzIG9mIGdyZWF0ZXN0IGNvbmNlcm4gcmlnaHQgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthZHZhbmNlX3NjaGVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTk0ND1zdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3Blcixcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTk4Mi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6OTgzOnN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTg0LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4ODc9c3RhdGljIGludCB0YXByaW9fY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDIxLVx0ICAgICFocnRpbWVyX2FjdGl2ZShcdTAwMjZxLVx1MDAzZWFkdmFuY2VfdGltZXIpKSB7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIwMjI6XHRcdGhydGltZXJfc2V0dXAoXHUwMDI2cS1cdTAwM2VhZHZhbmNlX3RpbWVyLCBhZHZhbmNlX3NjaGVkLCBxLVx1MDAzZWNsb2NraWQsIEhSVElNRVJfTU9ERV9BQlMpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDIzLVx0fVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjA0MC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjA0MTpcdFx0LyogTm90IGdvaW5nIHRvIHJhY2UgYWdhaW5zdCBhZHZhbmNlX3NjaGVkKCksIGJ1dCBzdGlsbCAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDQyLVx0XHRhZG1pbiA9IHJjdV9yZXBsYWNlX3BvaW50ZXIocS1cdTAwM2VhZG1pbl9zY2hlZCwgbmV3X2FkbWluLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjA0OC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjA0OTpcdFx0LyogUHJvdGVjdHMgYWdhaW5zdCBhZHZhbmNlX3NjaGVkKCkgKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjA1MC1cdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2cS1cdTAwM2VjdXJyZW50X2VudHJ5X2xvY2ssIGZsYWdzKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTIxMzY9c3RhdGljIGludCB0YXByaW9faW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE0NC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjE0NTpcdGhydGltZXJfc2V0dXAoXHUwMDI2cS1cdTAwM2VhZHZhbmNlX3RpbWVyLCBhZHZhbmNlX3NjaGVkLCBDTE9DS19UQUksIEhSVElNRVJfTU9ERV9BQlMpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTQ2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDU2CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMjMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVEFQUklPIFNjaGVkdWxlciBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgVEFQUklPIHNjaGVkdWxlciBpbXBsZW1lbnRhdGlvbi4gRnJvbSB3aGF0IEkgdW5kZXJzdGFuZCwgYHRhcHJpb19jaGFuZ2VgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIGZvciBwYXJzaW5nIHRoZSBzY2hlZHVsZSBhbmQgc2V0dGluZyB1cCB0aGUgdGltZXIuIFRoZW4sIGBhZHZhbmNlX3NjaGVkYCBpcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCYjMzk7cyB0cmlnZ2VyZWQgYnkgdGhlIHRpbWVyLCBhbmQgaXQgdXNlcyBgdGFwcmlvX2NhdGNoX3VwYCB0byBoYW5kbGUgdGhlIGFjdHVhbCBzY2hlZHVsaW5nIGxvZ2ljLiBJIHdhbnQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzLCBhbmQgYmFzZWQgb24gdGhlIHByb21wdCYjMzk7cyBpbnN0cnVjdGlvbiB0byBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBmdW5jdGlvbnMsIGl0IGxvb2tzIGxpa2UgYHRhcHJpb19jaGFuZ2VgLCBvciBwb3NzaWJseSBgdGFwcmlvX2VucXVldWVgIG9yIGB0YXByaW9fZGVxdWV1ZWAgYXJlIHN0cm9uZyBjYW5kaWRhdGVzIGZvciBpbmNsdXNpb24uIEhvd2V2ZXIsIHRoZSBwcm9tcHQgZW1waGFzaXplcyB0aGF0IHRoZSBtYWluIHBhcnNpbmcgaXMgZG9uZSBpbiBgdGFwcmlvX2NoYW5nZWAsIHNvIHRoYXQgaXMgcHJvYmFibHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuCgpOb3csIHRoZSBjYXZlYXQgaXMgdGhhdCBgYWR2YW5jZV9zY2hlZGAgaXMgc3RhdGljLCB3aGljaCBwcmVzZW50cyBhIGJpdCBvZiBhIGNoYWxsZW5nZSBpbiB0ZXJtcyBvZiB1c2luZyBpdCBhcyBhIGRpcmVjdCBmb2N1cy4gQnV0LCBzaW5jZSBpdCYjMzk7cyBhbiBocnRpbWVyIGNhbGxiYWNrLCBpdCBsaWtlbHkgKmlzbiYjMzk7dCogaW5saW5lZCwgc28gaXQmIzM5O3MgcHJvYmFibHkgc3RpbGwgcmVsZXZhbnQuIEhtbSwgYWNjb3JkaW5nIHRvIHRoZSBwcm9tcHQsIEkgc2hvdWxkIGZvY3VzIG9uIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIGxlYW5zIHRvd2FyZHMgYHRhcHJpb19jaGFuZ2VgIGJlaW5nIGEgZ29vZCBjaG9pY2UuCgpIb2xkIG9uLCBsZXQgbWUgcXVpY2tseSB2ZXJpZnkgaWYgYHRhcHJpb19jaGFuZ2VgIGlzIHN0YXRpYy4uLiBPa2F5LCBpdCBpcyBzdGF0aWMuICpEYXJuKi4gV2FpdCBhIG1pbnV0ZS4uLiBsb29raW5nIGF0IGFsbCB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGluIGBzY2hfdGFwcmlvLmNgLCB0aGV5IGFsbCBzZWVtIHRvIGJlIHN0YXRpYy4gT2theSwgbGV0IG1lIHF1aWNrbHkgc2NhbiB0aGUgc291cmNlIHRvIHNlZSBpZiB0aGVyZSBhcmUgKmFueSogbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWjAtOV9dJiM0MzsgW2EtekEtWjAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMzQtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjM1OnN0YXRpYyBMSVNUX0hFQUQodGFwcmlvX2xpc3QpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0zNi1zdGF0aWMgc3RydWN0IHN0YXRpY19rZXlfZmFsc2UgdGFwcmlvX2hhdmVfYnJva2VuX21xcHJpbztcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE0NzE9RVhQT1JUX1NZTUJPTF9HUEwodGFwcmlvX29mZmxvYWRfZ2V0KTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ3Mi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQ3Mzp2b2lkIHRhcHJpb19vZmZsb2FkX2ZyZWUoc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKm9mZmxvYWQpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODkwCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVEFQUklPIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBwcm9tcHQgZW1waGFzaXplcyBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhlIHRoaW5nIGlzLCBgdGFwcmlvX29mZmxvYWRfZnJlZWAgaXMgaW5kZWVkIG5vbi1zdGF0aWMsIGJ1dCBpdCByZWFsbHkgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgY29yZSBjaGFuZ2UgaGVyZS4gSSBuZWVkIHRvIGZvY3VzIG9uIHdoYXQmIzM5O3MgcmVsZXZhbnQgdG8gdGhlIHByb21wdC4KClRoZSBpbXBvcnRhbnQgcG9pbnQgaXMgYHRhcHJpb19jaGFuZ2VgLiBJIGhhdmUgdG8gY29uZmlybSB0aGF0IGl0IGZpdHMgdGhlIGJpbGwuIFNpbmNlIGl0JiMzOTtzIHJlZ2lzdGVyZWQgaW4gYHRhcHJpb19xZGlzY19vcHNgLCB0aGF0IGltcGxpZXMgdGhhdCBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbiBzb21ld2hlcmUsIHJpZ2h0PyBJZiB0aGF0JiMzOTtzIHRoZSBjYXNlLCB0aGUgY29tcGlsZXIgd29uJiMzOTt0IGJlIGFibGUgdG8gaW5saW5lIGl0LCBhbmQgaXQgd2lsbCBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFNvLCBiYXNlZCBvbiB0aGF0LCBgdGFwcmlvX2NoYW5nZWAgc2VlbXMgcGVyZmVjdGx5IGFjY2VwdGFibGUgYWNjb3JkaW5nIHRvIHRoaXMgZ3VpZGFuY2UuIE5vIGFjdGlvbiBpcyByZXF1aXJlZCB0aGVyZS4KCk5vdywgSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiBgTkVUX1NDSF9UQVBSSU9gIGhhcyBhbnkgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gQmV0dGVyIHRvIGNvbmZpcm0gdGhhdCBlYXJseSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTMzND1jb25maWcgTkVUX1NDSF9GUV9QSUVcbm5ldC9zY2hlZC9LY29uZmlnOjMzNTpcdGRlcGVuZHMgb24gTkVUX1NDSF9QSUVcbm5ldC9zY2hlZC9LY29uZmlnLTMzNi1cdHRyaXN0YXRlIFwmIzM0O0Zsb3cgUXVldWUgUHJvcG9ydGlvbmFsIEludGVncmFsIGNvbnRyb2xsZXIgRW5oYW5jZWQgKEZRLVBJRSlcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz0zNDc9Y29uZmlnIE5FVF9TQ0hfSU5HUkVTU1xubmV0L3NjaGVkL0tjb25maWctMzQ4LVx0dHJpc3RhdGUgXCYjMzQ7SW5ncmVzcy9jbGFzc2lmaWVyLWFjdGlvbiBRZGlzY1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6MzQ5Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctMzUwLVx0c2VsZWN0IE5FVF9YR1JFU1Ncbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz00MDY9Y29uZmlnIE5FVF9TQ0hfQlBGXG5uZXQvc2NoZWQvS2NvbmZpZy00MDctXHRib29sIFwmIzM0O0JQRi1iYXNlZCBRZGlzY1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NDA4Olx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTCBcdTAwMjZcdTAwMjYgQlBGX0pJVCBcdTAwMjZcdTAwMjYgREVCVUdfSU5GT19CVEZcbm5ldC9zY2hlZC9LY29uZmlnLTQwOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz00OTQ9Y29uZmlnIE5FVF9DTFNfUk9VVEU0XG5uZXQvc2NoZWQvS2NvbmZpZy00OTUtXHR0cmlzdGF0ZSBcJiMzNDtSb3V0aW5nIGRlY2lzaW9uIChST1VURSlcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjQ5NjpcdGRlcGVuZHMgb24gSU5FVFxubmV0L3NjaGVkL0tjb25maWctNDk3LVx0c2VsZWN0IElQX1JPVVRFX0NMQVNTSURcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01MjY9Y29uZmlnIENMU19VMzJfUEVSRlxubmV0L3NjaGVkL0tjb25maWctNTI3LVx0Ym9vbCBcJiMzNDtQZXJmb3JtYW5jZSBjb3VudGVycyBzdXBwb3J0XCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo1Mjg6XHRkZXBlbmRzIG9uIE5FVF9DTFNfVTMyXG5uZXQvc2NoZWQvS2NvbmZpZy01MjktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NTMzPWNvbmZpZyBDTFNfVTMyX01BUktcbm5ldC9zY2hlZC9LY29uZmlnLTUzNC1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIG1hcmtzIHN1cHBvcnRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjUzNTpcdGRlcGVuZHMgb24gTkVUX0NMU19VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTUzNi1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01NTA9Y29uZmlnIE5FVF9DTFNfQ0dST1VQXG4tLVxubmV0L3NjaGVkL0tjb25maWctNTUzLVx0c2VsZWN0IENHUk9VUF9ORVRfQ0xBU1NJRFxubmV0L3NjaGVkL0tjb25maWc6NTU0Olx0ZGVwZW5kcyBvbiBDR1JPVVBTXG5uZXQvc2NoZWQvS2NvbmZpZy01NTUtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjA1PWNvbmZpZyBORVRfRU1BVENIX1NUQUNLXG5uZXQvc2NoZWQvS2NvbmZpZy02MDYtXHRpbnQgXCYjMzQ7U3RhY2sgc2l6ZVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjA3Olx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXG5uZXQvc2NoZWQvS2NvbmZpZy02MDgtXHRkZWZhdWx0IFwmIzM0OzMyXCYjMzQ7XG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjE1PWNvbmZpZyBORVRfRU1BVENIX0NNUFxubmV0L3NjaGVkL0tjb25maWctNjE2LVx0dHJpc3RhdGUgXCYjMzQ7U2ltcGxlIHBhY2tldCBkYXRhIGNvbXBhcmlzb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjYxNzpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxubmV0L3NjaGVkL0tjb25maWctNjE4LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTYyNT1jb25maWcgTkVUX0VNQVRDSF9OQllURVxubmV0L3NjaGVkL0tjb25maWctNjI2LVx0dHJpc3RhdGUgXCYjMzQ7TXVsdGkgYnl0ZSBjb21wYXJpc29uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2Mjc6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcbm5ldC9zY2hlZC9LY29uZmlnLTYyOC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02MzU9Y29uZmlnIE5FVF9FTUFUQ0hfVTMyXG5uZXQvc2NoZWQvS2NvbmZpZy02MzYtXHR0cmlzdGF0ZSBcJiMzNDtVMzIga2V5XCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2Mzc6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcbm5ldC9zY2hlZC9LY29uZmlnLTYzOC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02NDU9Y29uZmlnIE5FVF9FTUFUQ0hfTUVUQVxubmV0L3NjaGVkL0tjb25maWctNjQ2LVx0dHJpc3RhdGUgXCYjMzQ7TWV0YWRhdGFcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjY0NzpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxubmV0L3NjaGVkL0tjb25maWctNjQ4LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTY1Nj1jb25maWcgTkVUX0VNQVRDSF9URVhUXG5uZXQvc2NoZWQvS2NvbmZpZy02NTctXHR0cmlzdGF0ZSBcJiMzNDtUZXh0c2VhcmNoXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2NTg6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcbm5ldC9zY2hlZC9LY29uZmlnLTY1OS1cdHNlbGVjdCBURVhUU0VBUkNIXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjcwPWNvbmZpZyBORVRfRU1BVENIX0NBTklEXG5uZXQvc2NoZWQvS2NvbmZpZy02NzEtXHR0cmlzdGF0ZSBcJiMzNDtDQU4gSWRlbnRpZmllclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjcyOlx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFx1MDAyNlx1MDAyNiAoQ0FOPXkgfHwgQ0FOPW0pXG5uZXQvc2NoZWQvS2NvbmZpZy02NzMtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjgwPWNvbmZpZyBORVRfRU1BVENIX0lQU0VUXG5uZXQvc2NoZWQvS2NvbmZpZy02ODEtXHR0cmlzdGF0ZSBcJiMzNDtJUHNldFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjgyOlx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFx1MDAyNlx1MDAyNiBJUF9TRVRcbm5ldC9zY2hlZC9LY29uZmlnLTY4My1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXG5uZXQvc2NoZWQvS2NvbmZpZy02OTEtXHR0cmlzdGF0ZSBcJiMzNDtJUHRhYmxlcyBNYXRjaGVzXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2OTI6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0ggXHUwMDI2XHUwMDI2IE5FVEZJTFRFUiBcdTAwMjZcdTAwMjYgTkVURklMVEVSX1hUQUJMRVNcbm5ldC9zY2hlZC9LY29uZmlnLTY5My1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03MTU9Y29uZmlnIE5FVF9BQ1RfUE9MSUNFXG5uZXQvc2NoZWQvS2NvbmZpZy03MTYtXHR0cmlzdGF0ZSBcJiMzNDtUcmFmZmljIFBvbGljaW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3MTc6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MTgtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzI2PWNvbmZpZyBORVRfQUNUX0dBQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcyNy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgYWN0aW9uc1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzI4Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzI5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTczNj1jb25maWcgR0FDVF9QUk9CXG5uZXQvc2NoZWQvS2NvbmZpZy03MzctXHRib29sIFwmIzM0O1Byb2JhYmlsaXR5IHN1cHBvcnRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjczODpcdGRlcGVuZHMgb24gTkVUX0FDVF9HQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MzktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzQyPWNvbmZpZyBORVRfQUNUX01JUlJFRFxubmV0L3NjaGVkL0tjb25maWctNzQzLVx0dHJpc3RhdGUgXCYjMzQ7UmVkaXJlY3RpbmcgYW5kIE1pcnJvcmluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzQ0Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzQ1LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc1Mj1jb25maWcgTkVUX0FDVF9TQU1QTEVcbm5ldC9zY2hlZC9LY29uZmlnLTc1My1cdHRyaXN0YXRlIFwmIzM0O1RyYWZmaWMgU2FtcGxpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc1NDpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTc1NS1cdHNlbGVjdCBQU0FNUExFXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzY0PWNvbmZpZyBORVRfQUNUX05BVFxubmV0L3NjaGVkL0tjb25maWctNzY1LVx0dHJpc3RhdGUgXCYjMzQ7U3RhdGVsZXNzIE5BVFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzY2Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzY3LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc3ND1jb25maWcgTkVUX0FDVF9QRURJVFxubmV0L3NjaGVkL0tjb25maWctNzc1LVx0dHJpc3RhdGUgXCYjMzQ7UGFja2V0IEVkaXRpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjc3NjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTc3Ny1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03ODM9Y29uZmlnIE5FVF9BQ1RfU0lNUFxubmV0L3NjaGVkL0tjb25maWctNzg0LVx0dHJpc3RhdGUgXCYjMzQ7U2ltcGxlIEV4YW1wbGUgKERlYnVnKVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6Nzg1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzg2LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc5Nz1jb25maWcgTkVUX0FDVF9TS0JFRElUXG5uZXQvc2NoZWQvS2NvbmZpZy03OTgtXHR0cmlzdGF0ZSBcJiMzNDtTS0IgRWRpdGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6Nzk5Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODAwLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTgwOD1jb25maWcgTkVUX0FDVF9DU1VNXG5uZXQvc2NoZWQvS2NvbmZpZy04MDktXHR0cmlzdGF0ZSBcJiMzNDtDaGVja3N1bSBVcGRhdGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODEwOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgSU5FVFxubmV0L3NjaGVkL0tjb25maWctODExLVx0c2VsZWN0IE5FVF9DUkMzMkNcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04MTk9Y29uZmlnIE5FVF9BQ1RfTVBMU1xubmV0L3NjaGVkL0tjb25maWctODIwLVx0dHJpc3RhdGUgXCYjMzQ7TVBMUyBtYW5pcHVsYXRpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjgyMTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTgyMi1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04MzA9Y29uZmlnIE5FVF9BQ1RfVkxBTlxubmV0L3NjaGVkL0tjb25maWctODMxLVx0dHJpc3RhdGUgXCYjMzQ7VmxhbiBtYW5pcHVsYXRpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjgzMjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTgzMy1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04NDE9Y29uZmlnIE5FVF9BQ1RfQlBGXG5uZXQvc2NoZWQvS2NvbmZpZy04NDItXHR0cmlzdGF0ZSBcJiMzNDtCUEYgYmFzZWQgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4NDM6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04NDQtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODUzPWNvbmZpZyBORVRfQUNUX0NPTk5NQVJLXG5uZXQvc2NoZWQvS2NvbmZpZy04NTQtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIFJldHJpZXZlclwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODU1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgTkVURklMVEVSXG5uZXQvc2NoZWQvS2NvbmZpZzo4NTY6XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX01BUktcbm5ldC9zY2hlZC9LY29uZmlnLTg1Ny1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04NjU9Y29uZmlnIE5FVF9BQ1RfQ1RJTkZPXG5uZXQvc2NoZWQvS2NvbmZpZy04NjYtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIEFjdGlvbnNcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg2NzpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxubmV0L3NjaGVkL0tjb25maWc6ODY4Olx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDS19NQVJLXG5uZXQvc2NoZWQvS2NvbmZpZy04NjktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODgyPWNvbmZpZyBORVRfQUNUX1NLQk1PRFxubmV0L3NjaGVkL0tjb25maWctODgzLVx0dHJpc3RhdGUgXCYjMzQ7c2tiIGRhdGEgbW9kaWZpY2F0aW9uIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODg0Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODg1LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg5Mz1jb25maWcgTkVUX0FDVF9JRkVcbm5ldC9zY2hlZC9LY29uZmlnLTg5NC1cdHRyaXN0YXRlIFwmIzM0O0ludGVyLUZFIGFjdGlvbiBiYXNlZCBvbiBJRVRGIEZvckNFUyBJbnRlckZFIExGQlwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODk1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODk2LVx0c2VsZWN0IE5FVF9JRkVcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05MDY9Y29uZmlnIE5FVF9BQ1RfVFVOTkVMX0tFWVxubmV0L3NjaGVkL0tjb25maWctOTA3LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdHVubmVsIG1ldGFkYXRhIG1hbmlwdWxhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTA4Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctOTA5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTkxNz1jb25maWcgTkVUX0FDVF9DVFxubmV0L3NjaGVkL0tjb25maWctOTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y29ubmVjdGlvbiB0cmFja2luZyB0YyBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjkxOTpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXHUwMDI2XHUwMDI2IE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgKCFORl9OQVQgfHwgTkZfTkFUKSBcdTAwMjZcdTAwMjYgTkZfRkxPV19UQUJMRVxubmV0L3NjaGVkL0tjb25maWctOTIwLVx0c2VsZWN0IE5GX0NPTk5UUkFDS19PVlNcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05MzA9Y29uZmlnIE5FVF9BQ1RfR0FURVxubmV0L3NjaGVkL0tjb25maWctOTMxLVx0dHJpc3RhdGUgXCYjMzQ7RnJhbWUgZ2F0ZSBlbnRyeSBsaXN0IGNvbnRyb2wgdGMgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5MzI6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy05MzMtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9OTQyPWNvbmZpZyBORVRfSUZFX1NLQk1BUktcbm5ldC9zY2hlZC9LY29uZmlnLTk0My1cdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgdG8gZW5jb2RpbmcgZGVjb2Rpbmcgc2tiIG1hcmsgb24gSUZFIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTQ0Olx0ZGVwZW5kcyBvbiBORVRfQUNUX0lGRVxubmV0L3NjaGVkL0tjb25maWctOTQ1LVxubmV0L3NjaGVkL0tjb25maWc9OTQ2PWNvbmZpZyBORVRfSUZFX1NLQlBSSU9cbm5ldC9zY2hlZC9LY29uZmlnLTk0Ny1cdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgdG8gZW5jb2RpbmcgZGVjb2Rpbmcgc2tiIHByaW8gb24gSUZFIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTQ4Olx0ZGVwZW5kcyBvbiBORVRfQUNUX0lGRVxubmV0L3NjaGVkL0tjb25maWctOTQ5LVxubmV0L3NjaGVkL0tjb25maWc9OTUwPWNvbmZpZyBORVRfSUZFX1NLQlRDSU5ERVhcbm5ldC9zY2hlZC9LY29uZmlnLTk1MS1cdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgdG8gZW5jb2RpbmcgZGVjb2Rpbmcgc2tiIHRjaW5kZXggb24gSUZFIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTUyOlx0ZGVwZW5kcyBvbiBORVRfQUNUX0lGRVxubmV0L3NjaGVkL0tjb25maWctOTUzLVxubmV0L3NjaGVkL0tjb25maWc9OTU0PWNvbmZpZyBORVRfVENfU0tCX0VYVFxubmV0L3NjaGVkL0tjb25maWctOTU1LVx0Ym9vbCBcJiMzNDtUQyByZWNpcmN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjk1NjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTk1Ny1cdHNlbGVjdCBTS0JfRVhURU5TSU9OU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjUxNQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBUQVBSSU8mIzM5O3MgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIEkmIzM5O20gbG9va2luZyBhdCBgTkVUX1NDSF9UQVBSSU9gIGluIGBuZXQvc2NoZWQvS2NvbmZpZ2AuIEZpcnN0IGdsYW5jZSwgYW5kIEkgZG9uJiMzOTt0IHNlZSBhbnkgZXhwbGljaXQgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMgbGlzdGVkIGRpcmVjdGx5IGZvciBpdC4gVGhhdCYjMzk7cyBhIGJpdCB1bnVzdWFsLCBidXQgbm90IG5lY2Vzc2FyaWx5IGEgcmVkIGZsYWcuIEJlZm9yZSBJIGp1bXAgdG8gYW55IGNvbmNsdXNpb25zLCBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgaWYgaXQgcmVsaWVzLCBldmVuIGluZGlyZWN0bHksIG9uIGEgYnJvYWRlciBzY2hlZHVsaW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGUgbW9zdCBsaWtlbHkgY2FuZGlkYXRlIHRvIGJlIGEgcGFyZW50LCBpbiB0aGlzIGNvbnRleHQsIGlzIGBORVRfU0NIRURgLiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbiB0aGVyZSBpcyBzb21lIGRlcGVuZGVuY3kuIExldCBtZSB2ZXJpZnkgdGhhdCBleHBsaWNpdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW51Y29uZmlnIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnLTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXG5uZXQvc2NoZWQvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MDcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCYjMzk7cyBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBzY2hlZHVsaW5nIGNvbmZpZ3VyYXRpb24uIEkga25vdyBgTkVUX1NDSEVEYCBpcyB0aGUgcHJpbWFyeSBtZW51Y29uZmlnIEkgbmVlZCB0byBiZSBsb29raW5nIGF0LiBOb3csIHRoZSBjcnVjaWFsIHBhcnQgaXMgY2hlY2tpbmcgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBORVRfU0NIX1RBUFJJT2AgYW5kIGBORVRfU0NIRURgLiBFc3NlbnRpYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgYE5FVF9TQ0hfVEFQUklPYCBpcyBjb25kaXRpb25hbGx5IGluY2x1ZGVkLCBhbmQgd2hhdCB0aGUgYGlmYCBzdGF0ZW1lbnQgc3RhdGVzLiBLbm93aW5nIHdoZXRoZXIgaXQmIzM5O3MgZW5hYmxlZCBvbmx5IGlmIGBORVRfU0NIRURgIGlzIGVuYWJsZWQgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgc2NoZWR1bGluZyBoaWVyYXJjaHkgYW5kIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhpcyBwYXJ0IG9mIHRoZSBrZXJuZWwuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBwYXJzZSB0aGF0IGNvbmRpdGlvbmFsIHN0YXRlbWVudCBub3cgdG8gbWFrZSBzdXJlIEkmIzM5O20gY2xlYXIgb24gdGhlIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lmIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRfU0NIRURcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy00My1cbm5ldC9zY2hlZC9LY29uZmlnOjQ0OmlmIE5FVF9TQ0hFRFxubmV0L3NjaGVkL0tjb25maWctNDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTIzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBLZXJuZWwgU2NoZWR1bGVyIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBgTkVUX1NDSEVEYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCBiZWZvcmUgSSBnbyB0b28gZmFyIGRvd24gdGhpcyBwYXRoLCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIGZvciB0aGUgc2FrZSBvZiB0aG9yb3VnaG5lc3MsIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiByZWxhdGVkIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBzcGVjaWZpY2FsbHkgdGhpbmtpbmcgYWJvdXQgYE5FVF9TQ0hfVEFQUklPYC4gSSYjMzk7bGwgcXVpY2tseSByZS1leGFtaW5lIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24sIGp1c3QgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbC4gR290dGEgYmUgbWV0aWN1bG91cyB3aGVuIGRlYWxpbmcgd2l0aCBuZXR3b3JrIHNjaGVkdWxlcnMg4oCTIGEgbWlzc2VkIGRlcGVuZGVuY3kgY2FuIGxlYWQgdG8gc29tZSB0cnVseSBiaXphcnJlIGFuZCBmcnVzdHJhdGluZyBkZWJ1Z2dpbmcgc2Vzc2lvbnMgbGF0ZXIgb24hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2NTpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX2V0Zi5cbiAxNjY6XHRcbiAxNjc6XHRjb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXG4gMTY4Olx0XHR0cmlzdGF0ZVxuIDE2OTpcdFx0aGVscFxuIDE3MDpcdFx0ICBDb21tb24gbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIG1xcHJpbyBxdWV1ZSBjb25maWd1cmF0aW9ucy5cbiAxNzE6XHRcbiAxNzI6XHRjb25maWcgTkVUX1NDSF9UQVBSSU9cbiAxNzM6XHRcdHRyaXN0YXRlIFwmIzM0O1RpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXCYjMzQ7XG4gMTc0Olx0XHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXG4gMTc1Olx0XHRoZWxwXG4gMTc2Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxuIDE3NzpcdFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cbiAxNzg6XHRcbiAxNzk6XHRcdCAgU2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXG4gMTgwOlx0XG4gMTgxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAxODI6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF90YXByaW8uXG4gMTgzOlx0XG4gMTg0Olx0Y29uZmlnIE5FVF9TQ0hfR1JFRFxuIDE4NTpcdFx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVwmIzM0O1xuIDE4NjpcdFx0aGVscFxuIDE4NzpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgR2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uXG4gMTg4Olx0XHQgIChHUkVEKSBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0gZm9yIHNvbWUgb2YgeW91ciBuZXR3b3JrIGRldmljZXNcbiAxODk6XHRcdCAgKHNlZSB0aGUgdG9wIG9mIFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF9yZWQuY1x1MDAzZSBmb3IgZGV0YWlscyBhbmRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3MjgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4KCioqRGl2aW5nIGludG8gdGhlIENvbmZpZ3VyYXRpb24gU3BhY2UqKgoKQWxyaWdodCwgc28gdGhlIHN5c3RlbSBoYXMgY2hvc2VuIGBORVRfU0NIX01RUFJJT19MSUJgLiBSaWdodCBhd2F5LCB0aGF0IGltcGxpZXMgdGhhdCBgTkVUX1NDSEVEYCBhbmQgYE5FVF9TQ0hfVEFQUklPYCBhcmUgYWxzbyBpbiB0aGUgcGljdHVyZSwgYXMgcHJlcmVxdWlzaXRlcyBvciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgc2VsZWN0aW9uLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBsb29rIGF0IGB0YXByaW9fY2hhbmdlYC4gSXQmIzM5O3MgYSBjb21tb24gcGxhY2UgdG8gZmluZCBpbnRlcmVzdGluZyBzeW1ib2xzLCBhbmQgSSYjMzk7bSBob3BpbmcgSSBjYW4gbG9jYXRlIHNvbWUgZnVydGhlciAmIzM0O2ZvY3VzIHN5bWJvbHMmIzM0OyBhcm91bmQgdGhpcyBmdW5jdGlvbmFsaXR5LiBIb3BlZnVsbHksIEkgY2FuIGZpbmQgc29tZXRoaW5nIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4Njc9c3RhdGljIGludCB0YXByaW9fbXFwcmlvX2NtcChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg4Ni1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTg4NzpzdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg4OC1cdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjEzNj1zdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTQ5LVx0LyogV2Ugb25seSBzdXBwb3J0IHN0YXRpYyBjbG9ja2lkcy4gVXNlIGFuIGludmFsaWQgdmFsdWUgYXMgZGVmYXVsdFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTUwOlx0ICogYW5kIGdldCB0aGUgdmFsaWQgb25lIG9uIHRhcHJpb19jaGFuZ2UoKS5cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE1MS1cdCAqL1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE5Ny1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjE5ODpcdHJldHVybiB0YXByaW9fY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTk5LX1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI2MTE9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYxNS1cdC5pbml0XHRcdD0gdGFwcmlvX2luaXQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI2MTY6XHQuY2hhbmdlXHRcdD0gdGFwcmlvX2NoYW5nZSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYxNy1cdC5kZXN0cm95XHQ9IHRhcHJpb19kZXN0cm95LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQyNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkNvbnNpZGVyaW5nIFRBUFJJTyBGdW5jdGlvbmFsaXR5KioKCkFscmlnaHQsIHNvIGB0YXByaW9fY2hhbmdlYCwgdGhhdCYjMzk7cyBhIHNvbGlkIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEl0IGhhbmRsZXMgdGhlIGR5bmFtaWMgYWRqdXN0bWVudHMsIHRoZSBjb3JlIG9mIHdoYXQgd2UmIzM5O3JlIGFpbWluZyBmb3IuIEJ1dCBJJiMzOTttIHN0YXJ0aW5nIHRvIHRoaW5rIGFib3V0IHRoZSBwZXJpcGhlcnksIHRoZSBzdXBwb3J0aW5nIGVsZW1lbnRzLiBXaGVyZSBkbyBgdGFwcmlvX2VucXVldWVgIGFuZCBgdGFwcmlvX2RlcXVldWVgIGZpdCBpbnRvIHRoZSBncmFuZCBzY2hlbWUgb2YgdGhpbmdzPyBBcmUgdGhleSBlcXVhbGx5IHdlbGwtZGVmaW5lZCBhbmQgdGhvdWdodC1vdXQ/IEFyZSB3ZSBvdmVybG9va2luZyBwb3RlbnRpYWwgaW5lZmZpY2llbmNpZXMgb3IgY29tcGxleGl0aWVzIGluIGhvdyB0aG9zZSBhcmUgaW1wbGVtZW50ZWQgb3IgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB0YXByaW9fY2hhbmdlYD8gSSBuZWVkIHRvIGdpdmUgdGhlbSBzb21lIHNlcmlvdXMgc2NydXRpbnkuIEdvdHRhIG1ha2Ugc3VyZSB3ZSYjMzk7dmUgZ290IGEgY29oZXJlbnQgYW5kIGVmZmljaWVudCBUQVBSSU8gc3lzdGVtLCBmcm9tIGJlZ2lubmluZyB0byBlbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RhcHJpb19lbnF1ZXVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTU2MD1zdGF0aWMgYm9vbCB0YXByaW9fc2tiX2V4Y2VlZHNfcXVldWVfbWF4X3NkdShzdHJ1Y3QgUWRpc2MgKnNjaCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU4MC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NTgxOnN0YXRpYyBpbnQgdGFwcmlvX2VucXVldWVfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01ODItXHRcdFx0ICAgICAgc3RydWN0IFFkaXNjICpjaGlsZCwgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjAxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2MDI6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZV9zZWdtZW50ZWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTYwMy1cdFx0XHRcdCAgICBzdHJ1Y3QgUWRpc2MgKmNoaWxkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjI2LVx0XHRlbHNlXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjYyNzpcdFx0XHRyZXQgPSB0YXByaW9fZW5xdWV1ZV9vbmUoc2Vncywgc2NoLCBjaGlsZCwgdG9fZnJlZSk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTYyOC1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY0Ni0gKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjQ3OnN0YXRpYyBpbnQgdGFwcmlvX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY0OC1cdFx0XHQgIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY2Ni1cdFx0aWYgKHNrYl9pc19nc28oc2tiKSlcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjY3Olx0XHRcdHJldHVybiB0YXByaW9fZW5xdWV1ZV9zZWdtZW50ZWQoc2tiLCBzY2gsIGNoaWxkLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NjgtXHRcdFx0XHRcdFx0XHR0b19mcmVlKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY3Mi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjczOlx0cmV0dXJuIHRhcHJpb19lbnF1ZXVlX29uZShza2IsIHNjaCwgY2hpbGQsIHRvX2ZyZWUpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NzQtfVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjIwMT1zdGF0aWMgdm9pZCB0YXByaW9fYXR0YWNoKHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjIyMi1cdFx0XHQgKiB0byBhbGwgbmV0ZGV2IFRYIHF1ZXVlcywgc28gdGhhdCBkZXZfcWRpc2NfZW5xdWV1ZSgpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIyMjM6XHRcdFx0ICogZ29lcyB0aHJvdWdoIHRhcHJpb19lbnF1ZXVlKCkuXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyMjQtXHRcdFx0ICovXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNjExPXN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHRhcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MjEtXHQuZGVxdWV1ZVx0PSB0YXByaW9fZGVxdWV1ZSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjYyMjpcdC5lbnF1ZXVlXHQ9IHRhcHJpb19lbnF1ZXVlLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjIzLVx0LmR1bXBcdFx0PSB0YXByaW9fZHVtcCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU0MjAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBhcyBhIHN1bW1hcnksIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbiwgYW5kIGFzc3VtaW5nIEkmIzM5O20gd2VsbC12ZXJzZWQgaW4gbXkgZmllbGQ6CgoqKkluaXRpYWwgQXNzZXNzbWVudDogYHRhcHJpb19lbnF1ZXVlYCAtIEEgUG9zaXRpdmUgU2lnbmFsKioKCkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIHRob3VnaHQgdGhhdCBjb21lcyB0byBtaW5kIGlzIHRoYXQgYHRhcHJpb19lbnF1ZXVlYCBpcyBnb29kLiBUaGF0JiMzOTtzIGEgc3Ryb25nLCB1bmFtYmlndW91cyBzdGF0ZW1lbnQuIFRoaXMgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSBmZXcga2V5IHRoaW5ncywgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0LiBJZiB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCB0YXNrIHNjaGVkdWxpbmcgb3IgcmVzb3VyY2UgbWFuYWdlbWVudCwgdGhhdCBzaW5nbGUgcGhyYXNlIHNwZWFrcyB2b2x1bWVzLiBJdCBsaWtlbHkgbWVhbnMgdGhlIHN5c3RlbSYjMzk7cyBzY2hlZHVsaW5nIGxvZ2ljLCB0aGUgcXVldWluZyBpbXBsZW1lbnRhdGlvbiwgb3IgdGhlIG92ZXJhbGwgZGVzaWduIGFwcHJvYWNoIHdoaWNoIHVzZXMgdGhhdCBmdW5jdGlvbiwgaXMgcm9idXN0IGFuZCwgYXQgbGVhc3QgaW4gdGhlIG9waW5pb24gb2Ygd2hvZXZlciB2b2ljZWQgdGhlIHRob3VnaHQsIGEga2V5IHBpZWNlIG9mIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLiBJdCBzaWduaWZpZXMgZWZmaWNpZW5jeSwgY29ycmVjdG5lc3MsIG9yIHBvc3NpYmx5IGV2ZW4gYSBsZXZlbCBvZiBlbGVnYW5jZSBpbiBob3cgaXQgaGFuZGxlcyB0aGUgZmxvdyBvZiB3b3JrLiBDb25zaWRlcmluZyB0aGF0IGB0YXByaW9fZW5xdWV1ZWAgbGlrZWx5IHJlZmVycyB0byBhIHNwZWNpZmljIGZ1bmN0aW9uIG9yIG1lY2hhbmlzbSB3aXRoaW4gYSBsYXJnZXIgc3lzdGVtLCBpdHMgcGVyY2VpdmVkICYjMzQ7Z29vZG5lc3MmIzM0OyBjb3VsZCBwb2ludCB0byBleGNlbGxlbnQgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLCBzdWNoIGFzIG1pbmltaXppbmcgbGF0ZW5jeSwgZW5zdXJpbmcgZmFpciByZXNvdXJjZSBhbGxvY2F0aW9uLCBvciBlZmZlY3RpdmVseSBoYW5kbGluZyBjb250ZW50aW9uLiBJJiMzOTtkIGJlIGN1cmlvdXMgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWMgY3JpdGVyaWEgYmVpbmcgYXBwbGllZCBpbiB0aGlzIGp1ZGdlbWVudC4gSXMgaXQgaW4gY29tcGFyaXNvbiB0byBhbm90aGVyIG1ldGhvZD8gSXMgaXQgYmFzZWQgb24gcGVyZm9ybWFuY2UgdGVzdHM/IE9yIGlzIGl0IGEgbW9yZSBzdWJqZWN0aXZlIG1lYXN1cmUgb2YgdGhlIGNvZGUmIzM5O3MgY2xhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5PyBGdXJ0aGVyIGludmVzdGlnYXRpb24gaXMgY2VydGFpbmx5IHdhcnJhbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGFwcmlvX2RlcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmM9NzAzPXN0YXRpYyBpbnQgdGFwcmlvX3VwZGF0ZV9idWRnZXRzKHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksIHNpemVfdCBsZW4sXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03MjUtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjcyNjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRhcHJpb19kZXF1ZXVlX2Zyb21fdHhxKHN0cnVjdCBRZGlzYyAqc2NoLCBpbnQgdHhxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03MjctXHRcdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9NzgzPXN0YXRpYyB2b2lkIHRhcHJpb19uZXh0X3RjX3R4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgdGMsIGludCAqdHhxKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzk1LSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3OTY6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZV90Y19wcmlvcml0eShzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzk3LVx0XHRcdFx0XHRcdCAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTgxMi1cdFx0ZG8ge1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4MTM6XHRcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfZnJvbV90eHEoc2NoLCBxLVx1MDAzZWN1cl90eHFbdGNdLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04MTQtXHRcdFx0XHRcdFx0ICAgICAgZW50cnksIGdhdGVfbWFzayk7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04MzEtICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjgzMjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRhcHJpb19kZXF1ZXVlX3R4cV9wcmlvcml0eShzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODMzLVx0XHRcdFx0XHRcdCAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NDAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzspIHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODQxOlx0XHRza2IgPSB0YXByaW9fZGVxdWV1ZV9mcm9tX3R4cShzY2gsIGksIGVudHJ5LCBnYXRlX21hc2spO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NDItXHRcdGlmIChza2IpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NTEtICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg1MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRhcHJpb19kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NTMte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODcyLVx0XHQvKiBTaW5nbGUgTklDIGtpbmQgd2hpY2ggaXMgYnJva2VuICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg3MzpcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdHhxX3ByaW9yaXR5KHNjaCwgZW50cnksIGdhdGVfbWFzayk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg3NC1cdH0gZWxzZSBpZiAoc3RhdGljX2JyYW5jaF9saWtlbHkoXHUwMDI2dGFwcmlvX2hhdmVfd29ya2luZ19tcXByaW8pIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODc2LVx0XHQvKiBTaW5nbGUgTklDIGtpbmQgd2hpY2ggcHJpb3JpdGl6ZXMgcHJvcGVybHkgKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODc3Olx0XHRza2IgPSB0YXByaW9fZGVxdWV1ZV90Y19wcmlvcml0eShzY2gsIGVudHJ5LCBnYXRlX21hc2spO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NzgtXHR9IGVsc2Uge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODgwLVx0XHRpZiAocS1cdTAwM2Vicm9rZW5fbXFwcmlvKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4ODE6XHRcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdHhxX3ByaW9yaXR5KHNjaCwgZW50cnksIGdhdGVfbWFzayk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg4Mi1cdFx0ZWxzZVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4ODM6XHRcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdGNfcHJpb3JpdHkoc2NoLCBlbnRyeSwgZ2F0ZV9tYXNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODg0LVx0fVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjYxMT1zdGF0aWMgc3RydWN0IFFkaXNjX29wcyB0YXByaW9fcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjIwLVx0LnBlZWtcdFx0PSB0YXByaW9fcGVlayxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjYyMTpcdC5kZXF1ZXVlXHQ9IHRhcHJpb19kZXF1ZXVlLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjIyLVx0LmVucXVldWVcdD0gdGFwcmlvX2VucXVldWUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2Nzk0CgkJCQkJCQlvdXRwdXQ6IDExMgoJCQkJCQkJdGhvdWdodHM6IDQ5MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUYXByaW8gU2NoZWR1bGVyIENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIEkmIzM5O3ZlIHplcm9lZCBpbiBvbiB0aGUgYHRhcHJpb19kZXF1ZXVlYCBmdW5jdGlvbiBhcyBhIGtleSBmb2N1cy4gQWxvbmcgd2l0aCB0aGF0LCBpdCYjMzk7cyBjbGVhciB0aGF0IHRoZSBwcmltYXJ5IHN5bWJvbHMgb2YgaW50ZXJlc3QgaGVyZSBhcmUgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYC4KCkxldCYjMzk7cyBxdWlja2x5IHZlcmlmeSB0aGF0IGBORVRfU0NIX1RBUFJJT2AgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnIGhlcmUuIFl1cCwgaXQgc2VsZWN0cyBgTkVUX1NDSF9NUVBSSU9fTElCYCBhcyBleHBlY3RlZCwgYnV0IG15IGZvY3VzIGlzIHNvbGVseSBvbiBwcm92aWRpbmcgYE5FVF9TQ0hfVEFQUklPYC4KCk5vdywgbGV0JiMzOTtzIHJlLWV4YW1pbmUgdGhpcyBjb2RlIHNuaXBwZXQ6CgpgYGBjCnN0YXRpYyBzNjQgdGFwcmlvX21pbl9pbnRlcnZhbChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKQp7CglzNjQgbWluX2ludGVydmFsID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTsKCgkvKiBPbmx5IHB1cmUgc29mdHdhcmUgc2NoZWR1bGVzIGFybSB0aGUgcGVyLWVudHJ5IGhydGltZXIuICovCglpZiAoIUZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKHEtJmd0O2ZsYWdzKSAmYW1wOyZhbXA7CgkgICAgIVRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRChxLSZndDtmbGFncykpCgkJbWluX2ludGVydmFsID0gbWF4X3QoczY0LCBtaW5faW50ZXJ2YWwsCgkJCQkgICAgIFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlMpOwoKCXJldHVybiBtaW5faW50ZXJ2YWw7Cn0KYGBgCgpUaGlzIGB0YXByaW9fbWluX2ludGVydmFsYCBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBgZmlsbF9zY2hlZF9lbnRyeWAgYW5kIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgLiBBbmQgdGhlbiB3ZSBoYXZlIGB0YXByaW9fY2F0Y2hfdXBgIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBhZHZhbmNlX3NjaGVkYC4gVGhhdCYjMzk7cyB3aGVyZSBpdCBhbGwgY29ubmVjdHMuCgpUaGlzIHBhdGNoIG1ha2VzIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgVGltZSBBd2FyZSBQcmlvcml0eSBTY2hlZHVsZXIgKGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYCkuIEl0IGZpeGVzIGEgYnVnIHRoYXQgd2FzIGNhdXNpbmcgdGltZXJzIHRvIGV4cGlyZSBpbiB0aGUgcGFzdCwgbGVhZGluZyB0byBDUFUgc3Rvcm1zLiBJdCBhbHNvIGFkZHMgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIHdoZW4gdGhlIHNjaGVkdWxlIGlzIGJlaGluZC4gVGhpcyBzdHVmZiBpcyBhbGwgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIG5ldGxpbmsgdmlhIGB0YyBxZGlzYyBhZGQgLi4uIHRhcHJpb2AuCgpUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8gc2V0IHRoZXNlIHBhcmFtZXRlcnM6CgoqICAgKipXb3J0aEZ1enppbmc6IHRydWUqKiAoQWJzb2x1dGVseSwgdGhlc2UgYXJlIHN1YnN0YW50aWFsIGNoYW5nZXMuKQoqICAgKipGb2N1c1N5bWJvbHM6IFsmIzM0O3RhcHJpb19jaGFuZ2UmIzM0OywgJiMzNDt0YXByaW9fZW5xdWV1ZSYjMzQ7LCAmIzM0O3RhcHJpb19kZXF1ZXVlJiMzNDtdKiogKFRoZXNlIGZ1bmN0aW9ucyBhcmUgdGhlIGNvcmUgb2YgdGhlIG5ldyBmdW5jdGlvbmFsaXR5LikKKiAgICoqRW5hYmxlQ29uZmlnczogWyYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0O10qKiAoVGhpcyBpcyBhbGwgd2UgbmVlZCB0byBlbmFibGUgdGhlIGZlYXR1cmUuKQoqICAgKipSZWFzb25pbmc6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSB0YXByaW8gcWRpc2MsIHNwZWNpZmljYWxseSBlbmZvcmNpbmcgYSBtaW5pbXVtIGludGVydmFsIGZvciBzb2Z0d2FyZSBzY2hlZHVsZXMgYW5kIGFkZGluZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCB0aW1lcnMuIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7KiogKFRoaXMgc3VtbWFyaXplcyB0aGUgcmF0aW9uYWxlIGFuZCB0aGUgYXR0YWNrIHN1cmZhY2UuKQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAwNzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgICAmIzM0O3RhcHJpb19lbnF1ZXVlJiMzNDssCiAgICAmIzM0O3RhcHJpb19kZXF1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSB0YXByaW8gcWRpc2MsIHNwZWNpZmljYWxseSBlbmZvcmNpbmcgYSBtaW5pbXVtIGludGVydmFsIGZvciBzb2Z0d2FyZSBzY2hlZHVsZXMgYW5kIGFkZGluZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCB0aW1lcnMuIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIX1RBUFJJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RhcHJpb19jaGFuZ2UmIzM0OywKICAgICYjMzQ7dGFwcmlvX2VucXVldWUmIzM0OywKICAgICYjMzQ7dGFwcmlvX2RlcXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIHRhcHJpbyBxZGlzYywgc3BlY2lmaWNhbGx5IGVuZm9yY2luZyBhIG1pbmltdW0gaW50ZXJ2YWwgZm9yIHNvZnR3YXJlIHNjaGVkdWxlcyBhbmQgYWRkaW5nIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIHRpbWVycy4gVGhlc2UgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rICh0YyBxZGlzYykgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgQ1BVIHN0b3JtIGlzc3VlIGluIHRoZSB0YXByaW8gc2NoZWR1bGVyIGJ5IGVuZm9yY2luZyBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjaW5nIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIGhydGltZXJzLiBJdCBvbmx5IG1vZGlmaWVzIHRpbWUgY2FsY3VsYXRpb25zLCBsaXN0IHRyYXZlcnNhbHMsIGFuZCBzY2hlZHVsaW5nIGxvZ2ljLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBhbmQgbm8gc3RydWN0dXJlcyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJjNjY2NDgzMmNiNWE0MDlhMGU3NDQxNzE2NTVjODcxZmM5ZDkyOTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAwNzo0Nzo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jCmluZGV4IDI5OTIzNGE1ZjBmZTYuLjc1MTliYzVjMWFmZjMgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF90YXByaW8uYwpAQCAtMjU5LDYgJiM0MzsyNTksMjYgQEAgc3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbikKIAlyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpLCBQU0VDX1BFUl9OU0VDKTsKIH0KIAomIzQzOy8qIFNvZnR3YXJlIHNjaGVkdWxlcyBzZXJ2aWNlIG9uZSBocnRpbWVyIGV4cGlyeSBwZXIgZW50cnk7IGludGVydmFscwomIzQzOyAqIHNob3J0ZXIgdGhhbiB0aGUgZXhwaXJ5IHNlcnZpY2UgY29zdCByZWFybSB0aGUgdGltZXIgd2l0aCBhbiBleHBpcnkKJiM0MzsgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZQomIzQzOyAqIG1lYXN1cmVkIGNvc3Qgb24gZGVidWcgY29uZmlndXJhdGlvbnMuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TCSgxMDAgKiBOU0VDX1BFUl9VU0VDKQomIzQzOwomIzQzO3N0YXRpYyBzNjQgdGFwcmlvX21pbl9pbnRlcnZhbChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKQomIzQzO3sKJiM0MzsJczY0IG1pbl9pbnRlcnZhbCA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7CiYjNDM7CiYjNDM7CS8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi8KJiM0MzsJaWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLSZndDtmbGFncykgJmFtcDsmYW1wOwomIzQzOwkgICAgIVRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRChxLSZndDtmbGFncykpCiYjNDM7CQltaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCwKJiM0MzsJCQkJICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTsKJiM0MzsKJiM0MzsJcmV0dXJuIG1pbl9pbnRlcnZhbDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pCiB7CiAJcmV0dXJuIGRpdl91NjQoZHVyYXRpb24gKiBQU0VDX1BFUl9OU0VDLCBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpKTsKQEAgLTkxNSw2ICYjNDM7OTM1LDUxIEBAIHN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLAogCXJldHVybiBmYWxzZTsKIH0KIAomIzQzOy8qIFRoZSBvcGVyYXRpb25hbCBzY2hlZHVsZSBmZWxsIGJlaGluZCwgZS5nLiBiZWNhdXNlIHRoZSB0aW1lciB3YXMgZGVsYXllZAomIzQzOyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lcgomIzQzOyAqIGV4cGlyeSB3b3VsZCByZXBsYXkgdGhlIHdob2xlIGJhY2tsb2cgZnJvbSBocnRpbWVyIGNvbnRleHQsIHNvIHNraXAKJiM0MzsgKiBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgYW5kIHdhbGsgdGhlIHJlbWFpbmluZyBlbnRyaWVzIHRvIGxhbmQgb24KJiM0MzsgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlciwKJiM0MzsJCQkgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCwKJiM0MzsJCQkgICAga3RpbWVfdCAqZW5kX3RpbWUsIGt0aW1lX3Qgbm93KQomIzQzO3sKJiM0MzsJaW50IGJ1ZGdldCA9IDIgKiBvcGVyLSZndDtudW1fZW50cmllcyAmIzQzOyAxOwomIzQzOwlzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gKm5leHQ7CiYjNDM7CWt0aW1lX3Qgc3RhcnQgPSAqbmV4dF9zdGFydDsKJiM0MzsJa3RpbWVfdCBlbmQgPSAqZW5kX3RpbWU7CiYjNDM7CXM2NCBiZWhpbmQgPSBrdGltZV9zdWIobm93LCBlbmQpOwomIzQzOwomIzQzOwlpZiAob3Blci0mZ3Q7Y3ljbGVfdGltZSAmZ3Q7IDAgJmFtcDsmYW1wOyBiZWhpbmQgJmd0Oz0gb3Blci0mZ3Q7Y3ljbGVfdGltZSkgewomIzQzOwkJczY0IGp1bXAgPSBkaXY2NF9zNjQoYmVoaW5kLCBvcGVyLSZndDtjeWNsZV90aW1lKSAqIG9wZXItJmd0O2N5Y2xlX3RpbWU7CiYjNDM7CiYjNDM7CQlzdGFydCA9IGt0aW1lX2FkZF9ucyhzdGFydCwganVtcCk7CiYjNDM7CQllbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBqdW1wKTsKJiM0MzsJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLCBqdW1wKTsKJiM0MzsJfQomIzQzOwomIzQzOwl3aGlsZSAoa3RpbWVfYmVmb3JlKGVuZCwgbm93KSAmYW1wOyZhbXA7IC0tYnVkZ2V0KSB7CiYjNDM7CQlpZiAobGlzdF9pc19sYXN0KCZhbXA7ZW50cnktJmd0O2xpc3QsICZhbXA7b3Blci0mZ3Q7ZW50cmllcykgfHwKJiM0MzsJCSAgICBrdGltZV9jb21wYXJlKGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpID09IDApIHsKJiM0MzsJCQllbnRyeSA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtvcGVyLSZndDtlbnRyaWVzLAomIzQzOwkJCQkJCSBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpOwomIzQzOwkJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLAomIzQzOwkJCQkJCQkgICAgb3Blci0mZ3Q7Y3ljbGVfdGltZSk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXN0YXJ0ID0gZW5kOwomIzQzOwkJZW5kID0ga3RpbWVfYWRkX25zKGVuZCwgZW50cnktJmd0O2ludGVydmFsKTsKJiM0MzsJCWVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpOwomIzQzOwl9CiYjNDM7CiYjNDM7CSpuZXh0ID0gZW50cnk7CiYjNDM7CSpuZXh0X3N0YXJ0ID0gc3RhcnQ7CiYjNDM7CSplbmRfdGltZSA9IGVuZDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCiB7CiAJc3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCwKQEAgLTkyNCw3ICYjNDM7OTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCWludCBudW1fdGMgPSBuZXRkZXZfZ2V0X251bV90YyhkZXYpOwogCXN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksICpuZXh0OwogCXN0cnVjdCBRZGlzYyAqc2NoID0gcS0mZ3Q7cm9vdDsKLQlrdGltZV90IGVuZF90aW1lOwomIzQzOwlrdGltZV90IGVuZF90aW1lLCBuZXh0X3N0YXJ0LCBub3c7CiAJaW50IHRjOwogCiAJc3Bpbl9sb2NrKCZhbXA7cS0mZ3Q7Y3VycmVudF9lbnRyeV9sb2NrKTsKQEAgLTk2MCwxNCAmIzQzOzEwMjUsMTkgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCQluZXh0ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKIAl9CiAKLQllbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS0mZ3Q7ZW5kX3RpbWUsIG5leHQtJmd0O2ludGVydmFsKTsKJiM0MzsJbmV4dF9zdGFydCA9IGVudHJ5LSZndDtlbmRfdGltZTsKJiM0MzsJZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC0mZ3Q7aW50ZXJ2YWwpOwogCWVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lKTsKIAomIzQzOwlub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7CiYjNDM7CWlmICh1bmxpa2VseShrdGltZV9iZWZvcmUoZW5kX3RpbWUsIG5vdykpKQomIzQzOwkJdGFwcmlvX2NhdGNoX3VwKG9wZXIsICZhbXA7bmV4dCwgJmFtcDtuZXh0X3N0YXJ0LCAmYW1wO2VuZF90aW1lLCBub3cpOwomIzQzOwogCWZvciAodGMgPSAwOyB0YyAmbHQ7IG51bV90YzsgdGMmIzQzOyYjNDM7KSB7CiAJCWlmIChuZXh0LSZndDtnYXRlX2R1cmF0aW9uW3RjXSA9PSBvcGVyLSZndDtjeWNsZV90aW1lKQogCQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDsKIAkJZWxzZQotCQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS0mZ3Q7ZW5kX3RpbWUsCiYjNDM7CQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhuZXh0X3N0YXJ0LAogCQkJCQkJCQkgbmV4dC0mZ3Q7Z2F0ZV9kdXJhdGlvblt0Y10pOwogCX0KIApAQCAtMTAzOCw3ICYjNDM7MTEwOCw3IEBAIHN0YXRpYyBpbnQgZmlsbF9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsCiAJCQkgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwKIAkJCSAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7Ci0JaW50IG1pbl9kdXJhdGlvbiA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7CiYjNDM7CXM2NCBtaW5fZHVyYXRpb24gPSB0YXByaW9fbWluX2ludGVydmFsKHEpOwogCXUzMiBpbnRlcnZhbCA9IDA7CiAKIAlpZiAodGJbVENBX1RBUFJJT19TQ0hFRF9FTlRSWV9DTURdKQpAQCAtMTE2Niw3ICYjNDM7MTIzNiw3IEBAIHN0YXRpYyBpbnQgcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YiwKIAkJbmV3LSZndDtjeWNsZV90aW1lID0gY3ljbGU7CiAJfQogCi0JaWYgKG5ldy0mZ3Q7Y3ljbGVfdGltZSAmbHQ7IG5ldy0mZ3Q7bnVtX2VudHJpZXMgKiBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pKSB7CiYjNDM7CWlmIChuZXctJmd0O2N5Y2xlX3RpbWUgJmx0OyAoczY0KW5ldy0mZ3Q7bnVtX2VudHJpZXMgKiB0YXByaW9fbWluX2ludGVydmFsKHEpKSB7CiAJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDsmIzM5O2N5Y2xlX3RpbWUmIzM5OyBpcyB0b28gc21hbGwmIzM0Oyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24KaW5kZXggY2QxOWQwNTkyNWU0MC4uM2ZlNjY4MzlmOGFlZCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24KJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24KQEAgLTE1NCw2ICYjNDM7MTU0LDI4IEBACiAgICAgICAgICAgICAmIzM0O2VjaG8gXCYjMzQ7MVwmIzM0OyAmZ3Q7IC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlJiMzNDsKICAgICAgICAgXQogICAgIH0sCiYjNDM7ICAgIHsKJiM0MzsgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDtmNGIyJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O25hbWUmIzM0OzogJiMzNDtBZGQgdGFwcmlvIFFkaXNjIHdpdGggc29mdHdhcmUgaW50ZXJ2YWwgYmVsb3cgdGhlIG1pbmltdW0mIzM0OywKJiM0MzsgICAgICAgICYjMzQ7Y2F0ZWdvcnkmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7cWRpc2MmIzM0OywKJiM0MzsgICAgICAgICAgICAmIzM0O3RhcHJpbyYjMzQ7CiYjNDM7ICAgICAgICBdLAomIzQzOyAgICAgICAgJiMzNDtwbHVnaW5zJiMzNDs6IHsKJiM0MzsgICAgICAgICAgICAmIzM0O3JlcXVpcmVzJiMzNDs6ICYjMzQ7bnNQbHVnaW4mIzM0OwomIzQzOyAgICAgICAgfSwKJiM0MzsgICAgICAgICYjMzQ7c2V0dXAmIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7ZWNobyBcJiMzNDsxIDEgOFwmIzM0OyAmZ3Q7IC9zeXMvYnVzL25ldGRldnNpbS9uZXdfZGV2aWNlJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O2NtZFVuZGVyVGVzdCYjMzQ7OiAmIzM0OyRUQyBxZGlzYyBhZGQgZGV2ICRFVEggcm9vdCBoYW5kbGUgMTogdGFwcmlvIG51bV90YyAyIHF1ZXVlcyAxQDAgMUAxIHNjaGVkLWVudHJ5IFMgMDEgNTAwMDAgc2NoZWQtZW50cnkgUyAwMiA1MDAwMCBjbG9ja2lkIENMT0NLX1RBSSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtleHBFeGl0Q29kZSYjMzQ7OiAmIzM0OzImIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dmVyaWZ5Q21kJiMzNDs6ICYjMzQ7JFRDIHFkaXNjIHNob3cgZGV2ICRFVEgmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hQYXR0ZXJuJiMzNDs6ICYjMzQ7cWRpc2MgdGFwcmlvIDE6IHJvb3QgcmVmY250JiMzNDssCiYjNDM7ICAgICAgICAmIzM0O21hdGNoQ291bnQmIzM0OzogJiMzNDswJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O3RlYXJkb3duJiMzNDs6IFsKJiM0MzsgICAgICAgICAgICAmIzM0O2VjaG8gXCYjMzQ7MVwmIzM0OyAmZ3Q7IC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlJiMzNDsKJiM0MzsgICAgICAgIF0KJiM0MzsgICAgfSwKICAgICB7CiAgICAgICAgICYjMzQ7aWQmIzM0OzogJiMzNDs4MzFmJiMzNDssCiAgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0FkZCB0YXByaW8gUWRpc2Mgd2l0aCB0b28gc2hvcnQgY3ljbGUtdGltZSYjMzQ7LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMDc6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE4MQoJCQkJCQkJb3V0cHV0OiAxMTMKCQkJCQkJCXRob3VnaHRzOiA4NTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUYXByaW8gU2NoZWR1bGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AuIFNlZW1zIGxpa2UgdGhleSYjMzk7cmUgYWRkaW5nIGEgbWluaW11bSBpbnRlcnZhbCBmb3Igc29mdHdhcmUgc2NoZWR1bGVzIHdpdGggYHRhcHJpb19taW5faW50ZXJ2YWxgLCBhbmQgYSBjYXRjaC11cCBtZWNoYW5pc20gKGB0YXByaW9fY2F0Y2hfdXBgKSB0byBoYW5kbGUgc2l0dWF0aW9ucyB3aGVyZSB0aGUgc2NoZWR1bGUgZmFsbHMgYmVoaW5kLiBQbHVzLCB0aGVyZSYjMzk7cyBhIG5ldyB0ZXN0IGNhc2UgaW4gYHRhcHJpby5qc29uYCBmb3IgdmFsaWRhdGlvbi4KCkxldCYjMzk7cyBicmVhayBkb3duIHRoZXNlIGNoYW5nZXMgc3RlcC1ieS1zdGVwLiBgdGFwcmlvX21pbl9pbnRlcnZhbGAgYXBwZWFycyB0byBiZSBjYWxjdWxhdGluZyBhIHNlbnNpYmxlIG1pbmltdW0gaW50ZXJ2YWwuIEl0IGxldmVyYWdlcyBgbGVuZ3RoX3RvX2R1cmF0aW9uYCB3aXRoIGBFVEhfWkxFTmAgYW5kIGBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TYC4gVGhlIGB0YXByaW9fY2F0Y2hfdXBgIGZ1bmN0aW9uIGlzIHRoZSBpbnRlcmVzdGluZyBiaXQuIEl0JiMzOTtzIGRlc2lnbmVkIHRvIHVwZGF0ZSB0aGUgYG5leHRgLCBgbmV4dF9zdGFydGAsIGFuZCBgZW5kX3RpbWVgIHBvaW50ZXJzIHRvIHNraXAgd2hvbGUgY3ljbGVzIGFuZCB0aGVuIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgY3VycmVudCBlbnRyeS4gVGhlIGBhZHZhbmNlX3NjaGVkYCBmdW5jdGlvbiB0aGVuIHVzZXMgdGhpcyBgdGFwcmlvX2NhdGNoX3VwYCBsb2dpYyBpZiB0aGUgYGVuZF90aW1lYCBpcyBiZWZvcmUgdGhlIGN1cnJlbnQgdGltZSAoYG5vd2ApLiBJIHNlZSB0aGF0IHRoZXkmIzM5O3JlIGFsc28gdXNpbmcgYHRhcHJpb19taW5faW50ZXJ2YWwocSlgIG5vdyBpbiBgZmlsbF9zY2hlZF9lbnRyeWAgYW5kIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgIGluc3RlYWQgb2YgdGhlIG9sZCBgbGVuZ3RoX3RvX2R1cmF0aW9uYCBjYWxjdWxhdGlvbnMuCgpOb3csIG15IHByaW1hcnkgY29uY2VybiB3aXRoIGFueSBzY2hlZHVsZXIgY2hhbmdlIGlzLCBuYXR1cmFsbHksIG1lbW9yeSBzYWZldHkuIERvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBjaGFuZ2VzIGRvbiYjMzk7dCBhbGxvdyBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byBiZSBhY2Nlc3NlZCBvciBleHBvc2VkLiBJIHNlZSBubyBuZXcgc3RydWN0dXJlcyBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2UsIG5vIG5ldyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBhcmUgYmVpbmcgYWxsb2NhdGVkLCBhbmQgdGhlIGxvZ2ljIGlzIHByaW1hcmlseSBkZWFsaW5nIHdpdGggdGltZSBjYWxjdWxhdGlvbnMg4oCTIGBrdGltZV90YCBhbmQgYHM2NGAg4oCTIGFuZCBzdHJhaWdodGZvcndhcmQgbGlzdCB0cmF2ZXJzYWwuIFRoZSB2YXJpYWJsZXMgc2VlbSB0byBiZSBpbml0aWFsaXplZCBwcm9wZXJseS4gVGhlIHJvb3QgY2F1c2UgYXBwZWFycyB0byBiZSB0aGF0IHRoZSBocnRpbWVyIGtlZXBzIGV4cGlyaW5nIGluIHRoZSBwYXN0LCBsZWFkaW5nIHRvIGEgQ1BVIHN0b3JtLCBhbmQgdGhlIGNhdGNoLXVwIG1lY2hhbmlzbSBpcyBhIGZpeCB0byBza2lwIHRoZXNlIG1pc3NlZCBpbnRlcnZhbHMuCgpTbywgdGhpcyBsb29rcyBsaWtlIGEgbG9naWMgYnVnIGZpeCBhbmQgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLiBJdCBzaG91bGRuJiMzOTt0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnksIGluZm8gbGVha3MsIG9yIGNvbXBsZXggbWVtb3J5IGFsbG9jYXRpb25zIHRoYXQgY291bGQgYmUgcGFydGlhbGx5IGluaXRpYWxpemVkLgoKTGV0IG1lIGRvdWJsZSBjaGVjayB0aGUgYHRhcHJpb19jYXRjaF91cGAgZnVuY3Rpb24sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBPa2F5LCBhbGwgaW5wdXRzIGFwcGVhciBpbml0aWFsaXplZC4gVGhlIHZhcmlhYmxlcyB1c2VkIHdpdGhpbiB0aGUgZnVuY3Rpb24gaXRzZWxmLCBzdWNoIGFzIHRoZSBgbmV4dF9zdGFydGAgYW5kIGBlbmRfdGltZWAgcGFyYW1ldGVycyBmb3IgdGhlIHJlY3Vyc2l2ZSBjYWxscywgbG9vayBjb3JyZWN0bHkgaGFuZGxlZCBhbmQgaW5pdGlhbGl6ZWQgdG9vLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmNsdWRpbmcgdGhhdCBLTVNBTiBpc24mIzM5O3QgbmVlZGVkIGhlcmUuIEtBU0FOLCBMT0NLREVQLCBhbmQgdGhlIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgc2hvdWxkIGJlIHN1ZmZpY2llbnQuIEluIGZhY3QsIHRoaXMgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlICphbnkqIG1lbW9yeSBzYWZldHkgaXNzdWVzLCBub3QganVzdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuCgpJbiBzdW1tYXJ5LCB0aGlzIHBhdGNoIGlzIGEgZ29vZCBmaXggZm9yIHRoZSB0YXByaW8gc2NoZWR1bGVyLiBJdCBhZGRyZXNzZXMgYSBDUFUgc3Rvcm0gaXNzdWUgYnkgaW50cm9kdWNpbmcgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBhIGNhdGNoLXVwIG1lY2hhbmlzbS4gVGhlIGNoYW5nZXMgaW52b2x2ZSBvbmx5IHRpbWUgY2FsY3VsYXRpb25zLCBsaXN0IHRyYXZlcnNhbHMsIGFuZCBzY2hlZHVsaW5nIGxvZ2ljLiBUaGVyZSYjMzk7cyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm9ybWF0aW9uIGxlYWtzLCBhbmQgc28gaXQgc2hvdWxkIGJlIHNhZmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDA3OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBhIENQVSBzdG9ybSBpc3N1ZSBpbiB0aGUgdGFwcmlvIHNjaGVkdWxlciBieSBlbmZvcmNpbmcgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2luZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBocnRpbWVycy4gSXQgb25seSBtb2RpZmllcyB0aW1lIGNhbGN1bGF0aW9ucywgbGlzdCB0cmF2ZXJzYWxzLCBhbmQgc2NoZWR1bGluZyBsb2dpYy4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaW50cm9kdWNlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgQ1BVIHN0b3JtIGlzc3VlIGluIHRoZSB0YXByaW8gc2NoZWR1bGVyIGJ5IGVuZm9yY2luZyBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjaW5nIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIGhydGltZXJzLiBJdCBvbmx5IG1vZGlmaWVzIHRpbWUgY2FsY3VsYXRpb25zLCBsaXN0IHRyYXZlcnNhbHMsIGFuZCBzY2hlZHVsaW5nIGxvZ2ljLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBhbmQgbm8gc3RydWN0dXJlcyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ3OjU0LjQyMTA0MTE0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODcwOTgxODY2OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0YXByaW9fY2hhbmdlXCIsXG4gICAgXCJ0YXByaW9fZW5xdWV1ZVwiLFxuICAgIFwidGFwcmlvX2RlcXVldWVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIENQVSBzdG9ybSBpc3N1ZSBpbiB0aGUgdGFwcmlvIHNjaGVkdWxlciBieSBlbmZvcmNpbmcgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2luZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBocnRpbWVycy4gSXQgb25seSBtb2RpZmllcyB0aW1lIGNhbGN1bGF0aW9ucywgbGlzdCB0cmF2ZXJzYWxzLCBhbmQgc2NoZWR1bGluZyBsb2dpYy4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaW50cm9kdWNlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSB0YXByaW8gcWRpc2MsIHNwZWNpZmljYWxseSBlbmZvcmNpbmcgYSBtaW5pbXVtIGludGVydmFsIGZvciBzb2Z0d2FyZSBzY2hlZHVsZXMgYW5kIGFkZGluZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCB0aW1lcnMuIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0Nzo1NC40MjEwNDY1OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NjQwMzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmM2NjY0ODMyY2I1YTQwOWEwZTc0NDE3MTY1NWM4NzFmYzlkOTI5NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyAxOCAwNzo0Nzo1MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xcbmluZGV4IDI5OTIzNGE1ZjBmZTYuLjc1MTliYzVjMWFmZjMgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcXG5AQCAtMjU5LDYgKzI1OSwyNiBAQCBzdGF0aWMgaW50IGxlbmd0aF90b19kdXJhdGlvbihzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBpbnQgbGVuKVxcbiBcXHRyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKFxcdTAwMjZxLVxcdTAwM2VwaWNvc19wZXJfYnl0ZSksIFBTRUNfUEVSX05TRUMpO1xcbiB9XFxuIFxcbisvKiBTb2Z0d2FyZSBzY2hlZHVsZXMgc2VydmljZSBvbmUgaHJ0aW1lciBleHBpcnkgcGVyIGVudHJ5OyBpbnRlcnZhbHNcXG4rICogc2hvcnRlciB0aGFuIHRoZSBleHBpcnkgc2VydmljZSBjb3N0IHJlYXJtIHRoZSB0aW1lciB3aXRoIGFuIGV4cGlyeVxcbisgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZVxcbisgKiBtZWFzdXJlZCBjb3N0IG9uIGRlYnVnIGNvbmZpZ3VyYXRpb25zLlxcbisgKi9cXG4rI2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TXFx0KDEwMCAqIE5TRUNfUEVSX1VTRUMpXFxuK1xcbitzdGF0aWMgczY0IHRhcHJpb19taW5faW50ZXJ2YWwoc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcXG4re1xcbitcXHRzNjQgbWluX2ludGVydmFsID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcXG4rXFxuK1xcdC8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi9cXG4rXFx0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVxcdTAwM2VmbGFncykgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICFUWFRJTUVfQVNTSVNUX0lTX0VOQUJMRUQocS1cXHUwMDNlZmxhZ3MpKVxcbitcXHRcXHRtaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCxcXG4rXFx0XFx0XFx0XFx0ICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTtcXG4rXFxuK1xcdHJldHVybiBtaW5faW50ZXJ2YWw7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgZHVyYXRpb25fdG9fbGVuZ3RoKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHU2NCBkdXJhdGlvbilcXG4ge1xcbiBcXHRyZXR1cm4gZGl2X3U2NChkdXJhdGlvbiAqIFBTRUNfUEVSX05TRUMsIGF0b21pYzY0X3JlYWQoXFx1MDAyNnEtXFx1MDAzZXBpY29zX3Blcl9ieXRlKSk7XFxuQEAgLTkxNSw2ICs5MzUsNTEgQEAgc3RhdGljIGJvb2wgc2hvdWxkX2NoYW5nZV9zY2hlZHVsZXMoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqYWRtaW4sXFxuIFxcdHJldHVybiBmYWxzZTtcXG4gfVxcbiBcXG4rLyogVGhlIG9wZXJhdGlvbmFsIHNjaGVkdWxlIGZlbGwgYmVoaW5kLCBlLmcuIGJlY2F1c2UgdGhlIHRpbWVyIHdhcyBkZWxheWVkXFxuKyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lclxcbisgKiBleHBpcnkgd291bGQgcmVwbGF5IHRoZSB3aG9sZSBiYWNrbG9nIGZyb20gaHJ0aW1lciBjb250ZXh0LCBzbyBza2lwXFxuKyAqIGNvbXBsZXRlIGN5Y2xlcyBhcml0aG1ldGljYWxseSBhbmQgd2FsayB0aGUgcmVtYWluaW5nIGVudHJpZXMgdG8gbGFuZCBvblxcbisgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS5cXG4rICovXFxuK3N0YXRpYyB2b2lkIHRhcHJpb19jYXRjaF91cChzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpvcGVyLFxcbitcXHRcXHRcXHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCxcXG4rXFx0XFx0XFx0ICAgIGt0aW1lX3QgKmVuZF90aW1lLCBrdGltZV90IG5vdylcXG4re1xcbitcXHRpbnQgYnVkZ2V0ID0gMiAqIG9wZXItXFx1MDAzZW51bV9lbnRyaWVzICsgMTtcXG4rXFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSA9ICpuZXh0O1xcbitcXHRrdGltZV90IHN0YXJ0ID0gKm5leHRfc3RhcnQ7XFxuK1xcdGt0aW1lX3QgZW5kID0gKmVuZF90aW1lO1xcbitcXHRzNjQgYmVoaW5kID0ga3RpbWVfc3ViKG5vdywgZW5kKTtcXG4rXFxuK1xcdGlmIChvcGVyLVxcdTAwM2VjeWNsZV90aW1lIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBiZWhpbmQgXFx1MDAzZT0gb3Blci1cXHUwMDNlY3ljbGVfdGltZSkge1xcbitcXHRcXHRzNjQganVtcCA9IGRpdjY0X3M2NChiZWhpbmQsIG9wZXItXFx1MDAzZWN5Y2xlX3RpbWUpICogb3Blci1cXHUwMDNlY3ljbGVfdGltZTtcXG4rXFxuK1xcdFxcdHN0YXJ0ID0ga3RpbWVfYWRkX25zKHN0YXJ0LCBqdW1wKTtcXG4rXFx0XFx0ZW5kID0ga3RpbWVfYWRkX25zKGVuZCwganVtcCk7XFxuK1xcdFxcdG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lLCBqdW1wKTtcXG4rXFx0fVxcbitcXG4rXFx0d2hpbGUgKGt0aW1lX2JlZm9yZShlbmQsIG5vdykgXFx1MDAyNlxcdTAwMjYgLS1idWRnZXQpIHtcXG4rXFx0XFx0aWYgKGxpc3RfaXNfbGFzdChcXHUwMDI2ZW50cnktXFx1MDAzZWxpc3QsIFxcdTAwMjZvcGVyLVxcdTAwM2VlbnRyaWVzKSB8fFxcbitcXHRcXHQgICAga3RpbWVfY29tcGFyZShlbmQsIG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lKSA9PSAwKSB7XFxuK1xcdFxcdFxcdGVudHJ5ID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2b3Blci1cXHUwMDNlZW50cmllcyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7XFxuK1xcdFxcdFxcdG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgb3Blci1cXHUwMDNlY3ljbGVfdGltZSk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0c3RhcnQgPSBlbmQ7XFxuK1xcdFxcdGVuZCA9IGt0aW1lX2FkZF9ucyhlbmQsIGVudHJ5LVxcdTAwM2VpbnRlcnZhbCk7XFxuK1xcdFxcdGVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xcbitcXHR9XFxuK1xcbitcXHQqbmV4dCA9IGVudHJ5O1xcbitcXHQqbmV4dF9zdGFydCA9IHN0YXJ0O1xcbitcXHQqZW5kX3RpbWUgPSBlbmQ7XFxuK31cXG4rXFxuIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4ge1xcbiBcXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgdGFwcmlvX3NjaGVkLFxcbkBAIC05MjQsNyArOTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbiBcXHRpbnQgbnVtX3RjID0gbmV0ZGV2X2dldF9udW1fdGMoZGV2KTtcXG4gXFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7XFxuIFxcdHN0cnVjdCBRZGlzYyAqc2NoID0gcS1cXHUwMDNlcm9vdDtcXG4tXFx0a3RpbWVfdCBlbmRfdGltZTtcXG4rXFx0a3RpbWVfdCBlbmRfdGltZSwgbmV4dF9zdGFydCwgbm93O1xcbiBcXHRpbnQgdGM7XFxuIFxcbiBcXHRzcGluX2xvY2soXFx1MDAyNnEtXFx1MDAzZWN1cnJlbnRfZW50cnlfbG9jayk7XFxuQEAgLTk2MCwxNCArMTAyNSwxOSBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuIFxcdFxcdG5leHQgPSBsaXN0X25leHRfZW50cnkoZW50cnksIGxpc3QpO1xcbiBcXHR9XFxuIFxcbi1cXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cXHUwMDNlZW5kX3RpbWUsIG5leHQtXFx1MDAzZWludGVydmFsKTtcXG4rXFx0bmV4dF9zdGFydCA9IGVudHJ5LVxcdTAwM2VlbmRfdGltZTtcXG4rXFx0ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC1cXHUwMDNlaW50ZXJ2YWwpO1xcbiBcXHRlbmRfdGltZSA9IG1pbl90KGt0aW1lX3QsIGVuZF90aW1lLCBvcGVyLVxcdTAwM2VjeWNsZV9lbmRfdGltZSk7XFxuIFxcbitcXHRub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7XFxuK1xcdGlmICh1bmxpa2VseShrdGltZV9iZWZvcmUoZW5kX3RpbWUsIG5vdykpKVxcbitcXHRcXHR0YXByaW9fY2F0Y2hfdXAob3BlciwgXFx1MDAyNm5leHQsIFxcdTAwMjZuZXh0X3N0YXJ0LCBcXHUwMDI2ZW5kX3RpbWUsIG5vdyk7XFxuK1xcbiBcXHRmb3IgKHRjID0gMDsgdGMgXFx1MDAzYyBudW1fdGM7IHRjKyspIHtcXG4gXFx0XFx0aWYgKG5leHQtXFx1MDAzZWdhdGVfZHVyYXRpb25bdGNdID09IG9wZXItXFx1MDAzZWN5Y2xlX3RpbWUpXFxuIFxcdFxcdFxcdG5leHQtXFx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBLVElNRV9NQVg7XFxuIFxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0bmV4dC1cXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cXHUwMDNlZW5kX3RpbWUsXFxuK1xcdFxcdFxcdG5leHQtXFx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0IG5leHQtXFx1MDAzZWdhdGVfZHVyYXRpb25bdGNdKTtcXG4gXFx0fVxcbiBcXG5AQCAtMTAzOCw3ICsxMTA4LDcgQEAgc3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcXG4gXFx0XFx0XFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXFxuIFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuIHtcXG4tXFx0aW50IG1pbl9kdXJhdGlvbiA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7XFxuK1xcdHM2NCBtaW5fZHVyYXRpb24gPSB0YXByaW9fbWluX2ludGVydmFsKHEpO1xcbiBcXHR1MzIgaW50ZXJ2YWwgPSAwO1xcbiBcXG4gXFx0aWYgKHRiW1RDQV9UQVBSSU9fU0NIRURfRU5UUllfQ01EXSlcXG5AQCAtMTE2Niw3ICsxMjM2LDcgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbiBcXHRcXHRuZXctXFx1MDAzZWN5Y2xlX3RpbWUgPSBjeWNsZTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKG5ldy1cXHUwMDNlY3ljbGVfdGltZSBcXHUwMDNjIG5ldy1cXHUwMDNlbnVtX2VudHJpZXMgKiBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pKSB7XFxuK1xcdGlmIChuZXctXFx1MDAzZWN5Y2xlX3RpbWUgXFx1MDAzYyAoczY0KW5ldy1cXHUwMDNlbnVtX2VudHJpZXMgKiB0YXByaW9fbWluX2ludGVydmFsKHEpKSB7XFxuIFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIidjeWNsZV90aW1lJyBpcyB0b28gc21hbGxcXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxcbmluZGV4IGNkMTlkMDU5MjVlNDAuLjNmZTY2ODM5ZjhhZWQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb25cXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxcbkBAIC0xNTQsNiArMTU0LDI4IEBAXFxuICAgICAgICAgICAgIFxcXCJlY2hvIFxcXFxcXFwiMVxcXFxcXFwiIFxcdTAwM2UgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2VcXFwiXFxuICAgICAgICAgXVxcbiAgICAgfSxcXG4rICAgIHtcXG4rICAgICAgICBcXFwiaWRcXFwiOiBcXFwiZjRiMlxcXCIsXFxuKyAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwiQWRkIHRhcHJpbyBRZGlzYyB3aXRoIHNvZnR3YXJlIGludGVydmFsIGJlbG93IHRoZSBtaW5pbXVtXFxcIixcXG4rICAgICAgICBcXFwiY2F0ZWdvcnlcXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCJxZGlzY1xcXCIsXFxuKyAgICAgICAgICAgIFxcXCJ0YXByaW9cXFwiXFxuKyAgICAgICAgXSxcXG4rICAgICAgICBcXFwicGx1Z2luc1xcXCI6IHtcXG4rICAgICAgICAgICAgXFxcInJlcXVpcmVzXFxcIjogXFxcIm5zUGx1Z2luXFxcIlxcbisgICAgICAgIH0sXFxuKyAgICAgICAgXFxcInNldHVwXFxcIjogW1xcbisgICAgICAgICAgICBcXFwiZWNobyBcXFxcXFxcIjEgMSA4XFxcXFxcXCIgXFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vbmV3X2RldmljZVxcXCJcXG4rICAgICAgICBdLFxcbisgICAgICAgIFxcXCJjbWRVbmRlclRlc3RcXFwiOiBcXFwiJFRDIHFkaXNjIGFkZCBkZXYgJEVUSCByb290IGhhbmRsZSAxOiB0YXByaW8gbnVtX3RjIDIgcXVldWVzIDFAMCAxQDEgc2NoZWQtZW50cnkgUyAwMSA1MDAwMCBzY2hlZC1lbnRyeSBTIDAyIDUwMDAwIGNsb2NraWQgQ0xPQ0tfVEFJXFxcIixcXG4rICAgICAgICBcXFwiZXhwRXhpdENvZGVcXFwiOiBcXFwiMlxcXCIsXFxuKyAgICAgICAgXFxcInZlcmlmeUNtZFxcXCI6IFxcXCIkVEMgcWRpc2Mgc2hvdyBkZXYgJEVUSFxcXCIsXFxuKyAgICAgICAgXFxcIm1hdGNoUGF0dGVyblxcXCI6IFxcXCJxZGlzYyB0YXByaW8gMTogcm9vdCByZWZjbnRcXFwiLFxcbisgICAgICAgIFxcXCJtYXRjaENvdW50XFxcIjogXFxcIjBcXFwiLFxcbisgICAgICAgIFxcXCJ0ZWFyZG93blxcXCI6IFtcXG4rICAgICAgICAgICAgXFxcImVjaG8gXFxcXFxcXCIxXFxcXFxcXCIgXFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZVxcXCJcXG4rICAgICAgICBdXFxuKyAgICB9LFxcbiAgICAge1xcbiAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCI4MzFmXFxcIixcXG4gICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJBZGQgdGFwcmlvIFFkaXNjIHdpdGggdG9vIHNob3J0IGN5Y2xlLXRpbWVcXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0Nzo1NC44OTAyODI2MjZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3MzM1Njk1MjI0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIX1RBUFJJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRhcHJpb19jaGFuZ2VcIixcbiAgICBcInRhcHJpb19lbnF1ZXVlXCIsXG4gICAgXCJ0YXByaW9fZGVxdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSB0YXByaW8gcWRpc2MsIHNwZWNpZmljYWxseSBlbmZvcmNpbmcgYSBtaW5pbXVtIGludGVydmFsIGZvciBzb2Z0d2FyZSBzY2hlZHVsZXMgYW5kIGFkZGluZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCB0aW1lcnMuIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyYzY2NjQ4MzJjYjVhNDA5YTBlNzQ0MTcxNjU1Yzg3MWZjOWQ5Mjk2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMDc6NDc6NTMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuaW5kZXggMjk5MjM0YTVmMGZlNi4uNzUxOWJjNWMxYWZmMyAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcbisrKyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcbkBAIC0yNTksNiArMjU5LDI2IEBAIHN0YXRpYyBpbnQgbGVuZ3RoX3RvX2R1cmF0aW9uKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIGludCBsZW4pXG4gXHRyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKFx1MDAyNnEtXHUwMDNlcGljb3NfcGVyX2J5dGUpLCBQU0VDX1BFUl9OU0VDKTtcbiB9XG4gXG4rLyogU29mdHdhcmUgc2NoZWR1bGVzIHNlcnZpY2Ugb25lIGhydGltZXIgZXhwaXJ5IHBlciBlbnRyeTsgaW50ZXJ2YWxzXG4rICogc2hvcnRlciB0aGFuIHRoZSBleHBpcnkgc2VydmljZSBjb3N0IHJlYXJtIHRoZSB0aW1lciB3aXRoIGFuIGV4cGlyeVxuKyAqIGFscmVhZHkgaW4gdGhlIHBhc3QgYW5kIHN0b3JtIHRoZSBDUFUuIDEwMHVzIGxlYXZlcyBtYXJnaW4gYWJvdmUgdGhlXG4rICogbWVhc3VyZWQgY29zdCBvbiBkZWJ1ZyBjb25maWd1cmF0aW9ucy5cbisgKi9cbisjZGVmaW5lIFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlNcdCgxMDAgKiBOU0VDX1BFUl9VU0VDKVxuK1xuK3N0YXRpYyBzNjQgdGFwcmlvX21pbl9pbnRlcnZhbChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKVxuK3tcbitcdHM2NCBtaW5faW50ZXJ2YWwgPSBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pO1xuK1xuK1x0LyogT25seSBwdXJlIHNvZnR3YXJlIHNjaGVkdWxlcyBhcm0gdGhlIHBlci1lbnRyeSBocnRpbWVyLiAqL1xuK1x0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcbitcdCAgICAhVFhUSU1FX0FTU0lTVF9JU19FTkFCTEVEKHEtXHUwMDNlZmxhZ3MpKVxuK1x0XHRtaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCxcbitcdFx0XHRcdCAgICAgVEFQUklPX01JTl9TV19JTlRFUlZBTF9OUyk7XG4rXG4rXHRyZXR1cm4gbWluX2ludGVydmFsO1xuK31cbitcbiBzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pXG4ge1xuIFx0cmV0dXJuIGRpdl91NjQoZHVyYXRpb24gKiBQU0VDX1BFUl9OU0VDLCBhdG9taWM2NF9yZWFkKFx1MDAyNnEtXHUwMDNlcGljb3NfcGVyX2J5dGUpKTtcbkBAIC05MTUsNiArOTM1LDUxIEBAIHN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLFxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbisvKiBUaGUgb3BlcmF0aW9uYWwgc2NoZWR1bGUgZmVsbCBiZWhpbmQsIGUuZy4gYmVjYXVzZSB0aGUgdGltZXIgd2FzIGRlbGF5ZWRcbisgKiBvciB0aGUgcmVmZXJlbmNlIGNsb2NrIHN0ZXBwZWQgZm9yd2FyZC4gQWR2YW5jaW5nIG9uZSBlbnRyeSBwZXIgdGltZXJcbisgKiBleHBpcnkgd291bGQgcmVwbGF5IHRoZSB3aG9sZSBiYWNrbG9nIGZyb20gaHJ0aW1lciBjb250ZXh0LCBzbyBza2lwXG4rICogY29tcGxldGUgY3ljbGVzIGFyaXRobWV0aWNhbGx5IGFuZCB3YWxrIHRoZSByZW1haW5pbmcgZW50cmllcyB0byBsYW5kIG9uXG4rICogdGhlIGVudHJ5IGNvdmVyaW5nIHRoZSBjdXJyZW50IHRpbWUuXG4rICovXG4rc3RhdGljIHZvaWQgdGFwcmlvX2NhdGNoX3VwKHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm9wZXIsXG4rXHRcdFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqKm5leHQsIGt0aW1lX3QgKm5leHRfc3RhcnQsXG4rXHRcdFx0ICAgIGt0aW1lX3QgKmVuZF90aW1lLCBrdGltZV90IG5vdylcbit7XG4rXHRpbnQgYnVkZ2V0ID0gMiAqIG9wZXItXHUwMDNlbnVtX2VudHJpZXMgKyAxO1xuK1x0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSA9ICpuZXh0O1xuK1x0a3RpbWVfdCBzdGFydCA9ICpuZXh0X3N0YXJ0O1xuK1x0a3RpbWVfdCBlbmQgPSAqZW5kX3RpbWU7XG4rXHRzNjQgYmVoaW5kID0ga3RpbWVfc3ViKG5vdywgZW5kKTtcbitcbitcdGlmIChvcGVyLVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGJlaGluZCBcdTAwM2U9IG9wZXItXHUwMDNlY3ljbGVfdGltZSkge1xuK1x0XHRzNjQganVtcCA9IGRpdjY0X3M2NChiZWhpbmQsIG9wZXItXHUwMDNlY3ljbGVfdGltZSkgKiBvcGVyLVx1MDAzZWN5Y2xlX3RpbWU7XG4rXG4rXHRcdHN0YXJ0ID0ga3RpbWVfYWRkX25zKHN0YXJ0LCBqdW1wKTtcbitcdFx0ZW5kID0ga3RpbWVfYWRkX25zKGVuZCwganVtcCk7XG4rXHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSwganVtcCk7XG4rXHR9XG4rXG4rXHR3aGlsZSAoa3RpbWVfYmVmb3JlKGVuZCwgbm93KSBcdTAwMjZcdTAwMjYgLS1idWRnZXQpIHtcbitcdFx0aWYgKGxpc3RfaXNfbGFzdChcdTAwMjZlbnRyeS1cdTAwM2VsaXN0LCBcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMpIHx8XG4rXHRcdCAgICBrdGltZV9jb21wYXJlKGVuZCwgb3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSkgPT0gMCkge1xuK1x0XHRcdGVudHJ5ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMsXG4rXHRcdFx0XHRcdFx0IHN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7XG4rXHRcdFx0b3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLFxuK1x0XHRcdFx0XHRcdFx0ICAgIG9wZXItXHUwMDNlY3ljbGVfdGltZSk7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0ZW50cnkgPSBsaXN0X25leHRfZW50cnkoZW50cnksIGxpc3QpO1xuK1x0XHR9XG4rXG4rXHRcdHN0YXJ0ID0gZW5kO1xuK1x0XHRlbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBlbnRyeS1cdTAwM2VpbnRlcnZhbCk7XG4rXHRcdGVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSk7XG4rXHR9XG4rXG4rXHQqbmV4dCA9IGVudHJ5O1xuK1x0Km5leHRfc3RhcnQgPSBzdGFydDtcbitcdCplbmRfdGltZSA9IGVuZDtcbit9XG4rXG4gc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIHtcbiBcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBjb250YWluZXJfb2YodGltZXIsIHN0cnVjdCB0YXByaW9fc2NoZWQsXG5AQCAtOTI0LDcgKzk4OSw3IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbiBcdGludCBudW1fdGMgPSBuZXRkZXZfZ2V0X251bV90YyhkZXYpO1xuIFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7XG4gXHRzdHJ1Y3QgUWRpc2MgKnNjaCA9IHEtXHUwMDNlcm9vdDtcbi1cdGt0aW1lX3QgZW5kX3RpbWU7XG4rXHRrdGltZV90IGVuZF90aW1lLCBuZXh0X3N0YXJ0LCBub3c7XG4gXHRpbnQgdGM7XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2cS1cdTAwM2VjdXJyZW50X2VudHJ5X2xvY2spO1xuQEAgLTk2MCwxNCArMTAyNSwxOSBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4gXHRcdG5leHQgPSBsaXN0X25leHRfZW50cnkoZW50cnksIGxpc3QpO1xuIFx0fVxuIFxuLVx0ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW50cnktXHUwMDNlZW5kX3RpbWUsIG5leHQtXHUwMDNlaW50ZXJ2YWwpO1xuK1x0bmV4dF9zdGFydCA9IGVudHJ5LVx1MDAzZWVuZF90aW1lO1xuK1x0ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC1cdTAwM2VpbnRlcnZhbCk7XG4gXHRlbmRfdGltZSA9IG1pbl90KGt0aW1lX3QsIGVuZF90aW1lLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKTtcbiBcbitcdG5vdyA9IHRhcHJpb19nZXRfdGltZShxKTtcbitcdGlmICh1bmxpa2VseShrdGltZV9iZWZvcmUoZW5kX3RpbWUsIG5vdykpKVxuK1x0XHR0YXByaW9fY2F0Y2hfdXAob3BlciwgXHUwMDI2bmV4dCwgXHUwMDI2bmV4dF9zdGFydCwgXHUwMDI2ZW5kX3RpbWUsIG5vdyk7XG4rXG4gXHRmb3IgKHRjID0gMDsgdGMgXHUwMDNjIG51bV90YzsgdGMrKykge1xuIFx0XHRpZiAobmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSA9PSBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpXG4gXHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYO1xuIFx0XHRlbHNlXG4tXHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKGVudHJ5LVx1MDAzZWVuZF90aW1lLFxuK1x0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhuZXh0X3N0YXJ0LFxuIFx0XHRcdFx0XHRcdFx0XHQgbmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSk7XG4gXHR9XG4gXG5AQCAtMTAzOCw3ICsxMTA4LDcgQEAgc3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcbiBcdFx0XHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcbiBcdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbi1cdGludCBtaW5fZHVyYXRpb24gPSBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pO1xuK1x0czY0IG1pbl9kdXJhdGlvbiA9IHRhcHJpb19taW5faW50ZXJ2YWwocSk7XG4gXHR1MzIgaW50ZXJ2YWwgPSAwO1xuIFxuIFx0aWYgKHRiW1RDQV9UQVBSSU9fU0NIRURfRU5UUllfQ01EXSlcbkBAIC0xMTY2LDcgKzEyMzYsNyBAQCBzdGF0aWMgaW50IHBhcnNlX3RhcHJpb19zY2hlZHVsZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG4gXHRcdG5ldy1cdTAwM2VjeWNsZV90aW1lID0gY3ljbGU7XG4gXHR9XG4gXG4tXHRpZiAobmV3LVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNjIG5ldy1cdTAwM2VudW1fZW50cmllcyAqIGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTikpIHtcbitcdGlmIChuZXctXHUwMDNlY3ljbGVfdGltZSBcdTAwM2MgKHM2NCluZXctXHUwMDNlbnVtX2VudHJpZXMgKiB0YXByaW9fbWluX2ludGVydmFsKHEpKSB7XG4gXHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXCInY3ljbGVfdGltZScgaXMgdG9vIHNtYWxsXCIpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXG5pbmRleCBjZDE5ZDA1OTI1ZTQwLi4zZmU2NjgzOWY4YWVkIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb25cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXG5AQCAtMTU0LDYgKzE1NCwyOCBAQFxuICAgICAgICAgICAgIFwiZWNobyBcXFwiMVxcXCIgXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlXCJcbiAgICAgICAgIF1cbiAgICAgfSxcbisgICAge1xuKyAgICAgICAgXCJpZFwiOiBcImY0YjJcIixcbisgICAgICAgIFwibmFtZVwiOiBcIkFkZCB0YXByaW8gUWRpc2Mgd2l0aCBzb2Z0d2FyZSBpbnRlcnZhbCBiZWxvdyB0aGUgbWluaW11bVwiLFxuKyAgICAgICAgXCJjYXRlZ29yeVwiOiBbXG4rICAgICAgICAgICAgXCJxZGlzY1wiLFxuKyAgICAgICAgICAgIFwidGFwcmlvXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcInBsdWdpbnNcIjoge1xuKyAgICAgICAgICAgIFwicmVxdWlyZXNcIjogXCJuc1BsdWdpblwiXG4rICAgICAgICB9LFxuKyAgICAgICAgXCJzZXR1cFwiOiBbXG4rICAgICAgICAgICAgXCJlY2hvIFxcXCIxIDEgOFxcXCIgXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9uZXdfZGV2aWNlXCJcbisgICAgICAgIF0sXG4rICAgICAgICBcImNtZFVuZGVyVGVzdFwiOiBcIiRUQyBxZGlzYyBhZGQgZGV2ICRFVEggcm9vdCBoYW5kbGUgMTogdGFwcmlvIG51bV90YyAyIHF1ZXVlcyAxQDAgMUAxIHNjaGVkLWVudHJ5IFMgMDEgNTAwMDAgc2NoZWQtZW50cnkgUyAwMiA1MDAwMCBjbG9ja2lkIENMT0NLX1RBSVwiLFxuKyAgICAgICAgXCJleHBFeGl0Q29kZVwiOiBcIjJcIixcbisgICAgICAgIFwidmVyaWZ5Q21kXCI6IFwiJFRDIHFkaXNjIHNob3cgZGV2ICRFVEhcIixcbisgICAgICAgIFwibWF0Y2hQYXR0ZXJuXCI6IFwicWRpc2MgdGFwcmlvIDE6IHJvb3QgcmVmY250XCIsXG4rICAgICAgICBcIm1hdGNoQ291bnRcIjogXCIwXCIsXG4rICAgICAgICBcInRlYXJkb3duXCI6IFtcbisgICAgICAgICAgICBcImVjaG8gXFxcIjFcXFwiIFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZVwiXG4rICAgICAgICBdXG4rICAgIH0sXG4gICAgIHtcbiAgICAgICAgIFwiaWRcIjogXCI4MzFmXCIsXG4gICAgICAgICBcIm5hbWVcIjogXCJBZGQgdGFwcmlvIFFkaXNjIHdpdGggdG9vIHNob3J0IGN5Y2xlLXRpbWVcIixcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ3OjU0Ljg5MDI4NDEwNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNzYzNjI3NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVGFwcmlvIFFkaXNjIFBhdGNoKipcblxuT2theSwgc28gd2UgaGF2ZSBhIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIHR3byBuZXcgZnVuY3Rpb25zOiBgdGFwcmlvX21pbl9pbnRlcnZhbCgpYCB3aGljaCBsaWtlbHkgZW5mb3JjZXMgc29tZSBraW5kIG9mIHNjaGVkdWxpbmcgY29uc3RyYWludCwgYW5kIGB0YXByaW9fY2F0Y2hfdXAoKWAgdG8gZGVhbCB3aXRoIG1pc3NlZCBkZWFkbGluZXMgb3IgY2xvY2sgc2tldywgd2hpY2ggaXMgYSBrZXkgY29uc2lkZXJhdGlvbiBmb3IgdGltZS1zZW5zaXRpdmUgc2NoZWR1bGVzLiBDcnVjaWFsbHksIGBhZHZhbmNlX3NjaGVkKClgIGlzIGJlaW5nIG1vZGlmaWVkIHRvIGNhbGwgYHRhcHJpb19jYXRjaF91cCgpYCwgaW1wbHlpbmcgdGhpcyBpcyBhIGNvcmUgb3BlcmF0aW9uYWwgY2hhbmdlLlxuXG5UaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50IHRvIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5IFNoYXBlciwgdGhlIHRhcHJpbyBxZGlzYy4gRnJvbSBhIHVzZXIgcGVyc3BlY3RpdmUsIHRoaXMgcWRpc2MgaXMgYWNjZXNzaWJsZSB0aHJvdWdoIG5ldGxpbmsgYW5kIHRoZSBgdGMgcWRpc2MgYWRkIC4uLiB0YXByaW9gIGNvbW1hbmQuIEdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHN1YnRsZSB0aW1pbmctcmVsYXRlZCBidWdzIGFuZCB0aGUgdXNlci1zcGFjZSBpbnRlcmZhY2UsIHRoaXMgaXMgKmFic29sdXRlbHkqIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGFnZ3Jlc3NpdmUgZnV6emluZy4gVGhlIGludGVyYWN0aW9uIHdpdGggdGltZSwgc2NoZWR1bGluZywgYW5kIHBvdGVudGlhbGx5IGV4dGVybmFsIGNsb2NrIHNvdXJjZXMgbWFrZXMgaXQgYSBwcmltZSB0YXJnZXQgZm9yIGlkZW50aWZ5aW5nIGVkZ2UgY2FzZXMgYW5kIHZ1bG5lcmFiaWxpdGllcy5cblxuQmVmb3JlIGRpdmluZyBpbnRvIGEgZnV6emluZyBzdHJhdGVneSwgSSBzaG91bGQgZmluZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBpcyBlbmFibGVkLCBzbyBJJ2xsIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYG5ldC9zY2hlZC9NYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmb3IgdGhlIGBzY2hfdGFwcmlvLmNgIHNvdXJjZSBmaWxlLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBiZSBjcnVjaWFsIGZvciBjcmVhdGluZyBlZmZlY3RpdmUgZnV6emluZyBjb25maWd1cmF0aW9ucyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTg0LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6MDEuMDY2NjQ5NDcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDA5MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjaF90YXByaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz0xNzI9Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzgtXFxubmV0L3NjaGVkL0tjb25maWc6MTc5OlxcdCAgU2VlIHRoZSB0b3Agb2YgXFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF90YXByaW8uY1xcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cXG5uZXQvc2NoZWQvS2NvbmZpZy0xODAtXFxubmV0L3NjaGVkL0tjb25maWctMTgxLVxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbm5ldC9zY2hlZC9LY29uZmlnOjE4MjpcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGFwcmlvLlxcbm5ldC9zY2hlZC9LY29uZmlnLTE4My1cXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT02Mz1vYmotJChDT05GSUdfTkVUX1NDSF9FVEYpXFx0Kz0gc2NoX2V0Zi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19ORVRfU0NIX1RBUFJJTylcXHQrPSBzY2hfdGFwcmlvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjUtb2JqLSQoQ09ORklHX05FVF9TQ0hfQlBGKVxcdCs9IGJwZl9xZGlzYy5vXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTItXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzozOi8qIG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcXHQgVGltZSBBd2FyZSBQcmlvcml0eSBTY2hlZHVsZXJcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQtICpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6MDEuMTEwMDYzNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MTg0NjQ0MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIFRBUFJJTyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIHRhc2sgYXQgaGFuZCBpbnZvbHZlcyBgTkVUX1NDSF9UQVBSSU9gLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QsIGdpdmVuIG15IGV4cGVyaWVuY2Ugd2l0aCBuZXR3b3JrIHNjaGVkdWxpbmcsIGlzIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gY29uc3VsdCB0aGUga2VybmVsJ3MgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBgbmV0L3NjaGVkL0tjb25maWdgIGlzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIGZpbmQgdGhlIGRldGFpbGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgaGVscCB0ZXh0IHJlbGF0ZWQgdG8gYE5FVF9TQ0hfVEFQUklPYC4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaXMgZW5hYmxlZCwgYW55IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGNvbXBpbGUtdGltZSBjb25maWd1cmF0aW9ucyBvciBjb25zdHJhaW50cyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgdG8gZW5zdXJlIGl0J3MgYnVpbHQgY29ycmVjdGx5IGZvciBteSB0YXJnZXQgZW52aXJvbm1lbnQuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMDQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODowNy45Mjg1MzA3MTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NTAyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hfVEFQUklPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MTY3PWNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE3MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxubmV0L3NjaGVkL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6MDcuOTczMzg5Mjg0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUwNTMwNjczNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipFeGFtaW5pbmcgdGhlIE5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGtlcm5lbCdzIG5ldHdvcmsgc2NoZWR1bGluZyBjb25maWd1cmF0aW9uLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBgbmV0L3NjaGVkL0tjb25maWdgIGFyb3VuZCBsaW5lIDE3Mi4gSSdtIGd1ZXNzaW5nIHRoYXQgcGFydGljdWxhciBzZWN0aW9uIG1pZ2h0IGJlIHdoZXJlIGEgY2VydGFpbiBzZXR0aW5nIG9yIGZlYXR1cmUgcmVsYXRlZCB0by4uLiBbVXNlcidzIGZpZWxkIG9mIGV4cGVydGlzZSwgaW5mZXJyZWQsIGUuZy4sIHRyYWZmaWMgc2hhcGluZywgUW9TLCBxdWV1ZSBtYW5hZ2VtZW50LCBldGMuXS4uLiBpcyBkZWZpbmVkLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoZSByZWxldmFudCBvcHRpb25zLCB0aGVpciBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gb3IgY29tbWVudHMuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaG93IHRoaXMgY29tcG9uZW50IGlzIGNvbmZpZ3VyZWQgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbmV0d29yayBzdGFjay4gSSBhbnRpY2lwYXRlIHRoZXJlIHdpbGwgYmUgZGV0YWlscyByZWdhcmRpbmcgYW55IHBhcmFtZXRlcnMgb3IgY29uc3RyYWludHMgb24gdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBhcHBseSBpbiBteSB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzMyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6MTEuNDc4Njk5MjlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTg5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzA6XFx0XFx0ICBDb21tb24gbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIG1xcHJpbyBxdWV1ZSBjb25maWd1cmF0aW9ucy5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxuIDE3MzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcXFwiXFxuIDE3NDpcXHRcXHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXFxuIDE3NTpcXHRcXHRoZWxwXFxuIDE3NjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxcbiAxNzc6XFx0XFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0XFx0ICBTZWUgdGhlIHRvcCBvZiBcXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXFx1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAxODA6XFx0XFxuIDE4MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gMTgyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF90YXByaW8uXFxuIDE4MzpcXHRcXG4gMTg0OlxcdGNvbmZpZyBORVRfU0NIX0dSRURcXG4gMTg1OlxcdFxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb24gKEdSRUQpXFxcIlxcbiAxODY6XFx0XFx0aGVscFxcbiAxODc6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgR2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uXFxuIDE4ODpcXHRcXHQgIChHUkVEKSBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0gZm9yIHNvbWUgb2YgeW91ciBuZXR3b3JrIGRldmljZXNcXG4gMTg5OlxcdFxcdCAgKHNlZSB0aGUgdG9wIG9mIFxcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfcmVkLmNcXHUwMDNlIGZvciBkZXRhaWxzIGFuZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODoxMS40Nzg3ODA1OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTI5NzgxMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEZWNvbnN0cnVjdGluZyBgTkVUX1NDSF9UQVBSSU9gKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYE5FVF9TQ0hfVEFQUklPYC4gVGhhdCdzIHRoZSBjb25maWcsIHNvIGxldCdzIGRpZyBpbnRvIHRoZSBkZXRhaWxzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBrZXkgc3ltYm9scyBpbnZvbHZlZC4gRmlyc3QsIEkgc2VlIGB0YXByaW9fY2F0Y2hfdXBgLCBgYWR2YW5jZV9zY2hlZGAsIGFuZCBgdGFwcmlvX21pbl9pbnRlcnZhbGAgYXJlIGFsbCBzdGF0aWMuIFRoYXQncyBnb29kIHRvIGtub3cg4oCTIGl0IGdpdmVzIG1lIGEgbmFycm93ZXIgZm9jdXMuXG5cbk5vdywgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGFsbCBhY3R1YWxseSAqd29ya3MqLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AuIEkgbmVlZCB0byBpZGVudGlmeSB3aGF0IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGV4aXN0IGFuZCwgY3J1Y2lhbGx5LCB3aGljaCBmdW5jdGlvbnMgYXJlIHJlZ2lzdGVyZWQgYXMgcWRpc2Mgb3BlcmF0aW9ucy4gVGhhdCB3aWxsIHNob3cgbWUgaG93IHRoaXMgc2NoZWR1bGVyIGFjdHVhbGx5IGludGVyZmFjZXMgd2l0aCB0aGUgbmV0d29ya2luZyBzdGFjayBhbmQgaXRzIHN1cnJvdW5kaW5nIGNvbXBvbmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4ODgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjE0Ljg5MTc2MTc0N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2MDYxMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IFFkaXNjX29wcyB0YXByaW9fcWRpc2Nfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNjAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHRhcHJpb19jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MTAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNjExOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHRhcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MTItXFx0LmNsX29wc1xcdFxcdD0gXFx1MDAyNnRhcHJpb19jbGFzc19vcHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjE0LjkzNzM3MjI0NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjYyNjgyNjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBzY2hfdGFwcmlvLmNgIGZvciBEZWVwZXIgVW5kZXJzdGFuZGluZyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gdGhpbmtpbmcgSSBuZWVkIHRvIGRlbHZlIGludG8gYG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNgIGFnYWluLiBJJ3ZlIGJlZW4gd29ya2luZyB3aXRoIHRyYWZmaWMgc2hhcGluZyBhbmQgVGltZS1Bd2FyZSBTaGFwZXJzIChUQVMpIGxhdGVseSwgYW5kIEkgd2FudCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvZGUuIFNwZWNpZmljYWxseSwgbXkgbWVudGFsIGN1cnNvciBpcyBsYW5kaW5nIGFyb3VuZCBsaW5lIDI2MTEuIEkgcmVjYWxsIHRoYXQgYXJlYSBiZWluZyBwaXZvdGFsIGZvciBbaW5zZXJ0IGEgYnJpZWYsIHJlbGV2YW50IHRlY2huaWNhbCBkZXRhaWwgYWJvdXQgdGhlIGZ1bmN0aW9uIG9mIGxpbmUgMjYxMSAtIGUuZy4sIFwiaGFuZGxpbmcgdGhlIHNjaGVkdWxpbmcgb2YgdGltZSB3aW5kb3dzXCIsIG9yIFwiaG93IHRoZSBwYWNrZXQgaXMgY2xhc3NpZmllZCBhbmQgc2NoZWR1bGVkXCJdLCBhbmQgSSBuZWVkIHRvIHNvbGlkaWZ5IG15IGdyYXNwIG9uIGhvdyB0aGF0IHBpZWNlIGludGVncmF0ZXMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUuIEknbSBleHBlY3RpbmcgdG8gZmluZCBpbnNpZ2h0cyBvbiBbbWVudGlvbiBzcGVjaWZpYyBhc3BlY3RzIHlvdSdyZSBsb29raW5nIGZvciwgZS5nLiwgXCJ0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUgdGltZXN0YW1waW5nIG1lY2hhbmlzbXNcIiwgb3IgXCJ0aGUgbG9naWMgZm9yIHJlLWNhbGN1bGF0aW5nIHRoZSBzY2hlZHVsaW5nIHBsYW4gYmFzZWQgb24gZXZlbnRzXCJdLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGFyb3VuZCB0aGF0IGxpbmUsIGxvb2tpbmcgZm9yIHRoZSByZWxhdGVkIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb25zIHRoYXQgYXJlIHVzZWQsIGFuZCB0cnlpbmcgdG8gYnVpbGQgYSBwcmVjaXNlIG1lbnRhbCBtb2RlbCBvZiBpdHMgZXhlY3V0aW9uIHBhdGguIEknbSBleHBlY3RpbmcgdG8gcmVmaW5lIG15IGV4aXN0aW5nIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIFRpbWUtQXdhcmUgU2hhcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzUxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6MTguNjAwMDU3Njg2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2MDAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI2MDA6XFx0XFxuMjYwMTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyB0YXByaW9fY2xhc3Nfb3BzID0ge1xcbjI2MDI6XFx0XFx0LmdyYWZ0XFx0XFx0PSB0YXByaW9fZ3JhZnQsXFxuMjYwMzpcXHRcXHQubGVhZlxcdFxcdD0gdGFwcmlvX2xlYWYsXFxuMjYwNDpcXHRcXHQuZmluZFxcdFxcdD0gdGFwcmlvX2ZpbmQsXFxuMjYwNTpcXHRcXHQud2Fsa1xcdFxcdD0gdGFwcmlvX3dhbGssXFxuMjYwNjpcXHRcXHQuZHVtcFxcdFxcdD0gdGFwcmlvX2R1bXBfY2xhc3MsXFxuMjYwNzpcXHRcXHQuZHVtcF9zdGF0c1xcdD0gdGFwcmlvX2R1bXBfY2xhc3Nfc3RhdHMsXFxuMjYwODpcXHRcXHQuc2VsZWN0X3F1ZXVlXFx0PSB0YXByaW9fc2VsZWN0X3F1ZXVlLFxcbjI2MDk6XFx0fTtcXG4yNjEwOlxcdFxcbjI2MTE6XFx0c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbjI2MTI6XFx0XFx0LmNsX29wc1xcdFxcdD0gXFx1MDAyNnRhcHJpb19jbGFzc19vcHMsXFxuMjYxMzpcXHRcXHQuaWRcXHRcXHQ9IFxcXCJ0YXByaW9cXFwiLFxcbjI2MTQ6XFx0XFx0LnByaXZfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCB0YXByaW9fc2NoZWQpLFxcbjI2MTU6XFx0XFx0LmluaXRcXHRcXHQ9IHRhcHJpb19pbml0LFxcbjI2MTY6XFx0XFx0LmNoYW5nZVxcdFxcdD0gdGFwcmlvX2NoYW5nZSxcXG4yNjE3OlxcdFxcdC5kZXN0cm95XFx0PSB0YXByaW9fZGVzdHJveSxcXG4yNjE4OlxcdFxcdC5yZXNldFxcdFxcdD0gdGFwcmlvX3Jlc2V0LFxcbjI2MTk6XFx0XFx0LmF0dGFjaFxcdFxcdD0gdGFwcmlvX2F0dGFjaCxcXG4yNjIwOlxcdFxcdC5wZWVrXFx0XFx0PSB0YXByaW9fcGVlayxcXG4yNjIxOlxcdFxcdC5kZXF1ZXVlXFx0PSB0YXByaW9fZGVxdWV1ZSxcXG4yNjIyOlxcdFxcdC5lbnF1ZXVlXFx0PSB0YXByaW9fZW5xdWV1ZSxcXG4yNjIzOlxcdFxcdC5kdW1wXFx0XFx0PSB0YXByaW9fZHVtcCxcXG4yNjI0OlxcdFxcdC5kdW1wX3N0YXRzXFx0PSB0YXByaW9fZHVtcF9zdGF0cyxcXG4yNjI1OlxcdFxcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuMjYyNjpcXHR9O1xcbjI2Mjc6XFx0TU9EVUxFX0FMSUFTX05FVF9TQ0goXFxcInRhcHJpb1xcXCIpO1xcbjI2Mjg6XFx0XFxuMjYyOTpcXHRzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHRhcHJpb19kZXZpY2Vfbm90aWZpZXIgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjE4LjYwMDE5MDUzNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjY2NDczMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBUaGlzIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBmdW5jdGlvbnMgYHRhcHJpb19pbml0YCwgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYCBqdW1wIG91dC4gVGhvc2UgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cywgYW5kIEkgbmVlZCB0byBjYXJlZnVsbHkgZXZhbHVhdGUgaG93IHRoZXkncmUgYmVpbmcgdG91Y2hlZC4gVGhlIGNvcmUgbW9kaWZpY2F0aW9uLCB0aG91Z2gsIHNlZW1zIHRvIGJlIGluIGBhZHZhbmNlX3NjaGVkYCwgd2hpY2gsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgaXMgdGhlIGhydGltZXIgY2FsbGJhY2suIFRoYXQncyBhIGNyaXRpY2FsIHBhdGgsIHNvIGFueSBjaGFuZ2UgdGhlcmUgd2FycmFudHMgZXh0cmEgc2NydXRpbnkuIFRoZSBmYWN0IHRoYXQgaXQgYWxzbyB0b3VjaGVzIGBmaWxsX3NjaGVkX2VudHJ5YCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAsIGJvdGggY2FsbGVkIGZyb20gYHRhcHJpb19jaGFuZ2VgLCBpcyBzaWduaWZpY2FudC4gU28sIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgZ29pbmcgb24sIG15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gYGFkdmFuY2Vfc2NoZWRgIGFuZCBgdGFwcmlvX2NoYW5nZWAgc3BlY2lmaWNhbGx5LiBUaG9zZSBhcmUgdGhlIHBvaW50cyBvZiBncmVhdGVzdCBjb25jZXJuIHJpZ2h0IG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE5NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6MjIuMjY2NjY2MTY2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzU5Mzc1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZHZhbmNlX3NjaGVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uYz05NDQ9c3RhdGljIHZvaWQgdGFwcmlvX2NhdGNoX3VwKHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm9wZXIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTk4Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjk4MzpzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05ODQte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0xODg3PXN0YXRpYyBpbnQgdGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDIxLVxcdCAgICAhaHJ0aW1lcl9hY3RpdmUoXFx1MDAyNnEtXFx1MDAzZWFkdmFuY2VfdGltZXIpKSB7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDIyOlxcdFxcdGhydGltZXJfc2V0dXAoXFx1MDAyNnEtXFx1MDAzZWFkdmFuY2VfdGltZXIsIGFkdmFuY2Vfc2NoZWQsIHEtXFx1MDAzZWNsb2NraWQsIEhSVElNRVJfTU9ERV9BQlMpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjAyMy1cXHR9XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwNDAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDQxOlxcdFxcdC8qIE5vdCBnb2luZyB0byByYWNlIGFnYWluc3QgYWR2YW5jZV9zY2hlZCgpLCBidXQgc3RpbGwgKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwNDItXFx0XFx0YWRtaW4gPSByY3VfcmVwbGFjZV9wb2ludGVyKHEtXFx1MDAzZWFkbWluX3NjaGVkLCBuZXdfYWRtaW4sXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwNDgtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDQ5OlxcdFxcdC8qIFByb3RlY3RzIGFnYWluc3QgYWR2YW5jZV9zY2hlZCgpICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDUwLVxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZxLVxcdTAwM2VjdXJyZW50X2VudHJ5X2xvY2ssIGZsYWdzKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjEzNj1zdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxNDQtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTQ1OlxcdGhydGltZXJfc2V0dXAoXFx1MDAyNnEtXFx1MDAzZWFkdmFuY2VfdGltZXIsIGFkdmFuY2Vfc2NoZWQsIENMT0NLX1RBSSwgSFJUSU1FUl9NT0RFX0FCUyk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTQ2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODoyMi4zMTQyNjU3NzVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjYxNDA4MDI2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRBUFJJTyBTY2hlZHVsZXIgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBUQVBSSU8gc2NoZWR1bGVyIGltcGxlbWVudGF0aW9uLiBGcm9tIHdoYXQgSSB1bmRlcnN0YW5kLCBgdGFwcmlvX2NoYW5nZWAgaXMgdGhlIGNvcmUgZnVuY3Rpb24gZm9yIHBhcnNpbmcgdGhlIHNjaGVkdWxlIGFuZCBzZXR0aW5nIHVwIHRoZSB0aW1lci4gVGhlbiwgYGFkdmFuY2Vfc2NoZWRgIGlzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0J3MgdHJpZ2dlcmVkIGJ5IHRoZSB0aW1lciwgYW5kIGl0IHVzZXMgYHRhcHJpb19jYXRjaF91cGAgdG8gaGFuZGxlIHRoZSBhY3R1YWwgc2NoZWR1bGluZyBsb2dpYy4gSSB3YW50IHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGVudHJ5IHBvaW50cywgYW5kIGJhc2VkIG9uIHRoZSBwcm9tcHQncyBpbnN0cnVjdGlvbiB0byBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBmdW5jdGlvbnMsIGl0IGxvb2tzIGxpa2UgYHRhcHJpb19jaGFuZ2VgLCBvciBwb3NzaWJseSBgdGFwcmlvX2VucXVldWVgIG9yIGB0YXByaW9fZGVxdWV1ZWAgYXJlIHN0cm9uZyBjYW5kaWRhdGVzIGZvciBpbmNsdXNpb24uIEhvd2V2ZXIsIHRoZSBwcm9tcHQgZW1waGFzaXplcyB0aGF0IHRoZSBtYWluIHBhcnNpbmcgaXMgZG9uZSBpbiBgdGFwcmlvX2NoYW5nZWAsIHNvIHRoYXQgaXMgcHJvYmFibHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuXG5cbk5vdywgdGhlIGNhdmVhdCBpcyB0aGF0IGBhZHZhbmNlX3NjaGVkYCBpcyBzdGF0aWMsIHdoaWNoIHByZXNlbnRzIGEgYml0IG9mIGEgY2hhbGxlbmdlIGluIHRlcm1zIG9mIHVzaW5nIGl0IGFzIGEgZGlyZWN0IGZvY3VzLiBCdXQsIHNpbmNlIGl0J3MgYW4gaHJ0aW1lciBjYWxsYmFjaywgaXQgbGlrZWx5ICppc24ndCogaW5saW5lZCwgc28gaXQncyBwcm9iYWJseSBzdGlsbCByZWxldmFudC4gSG1tLCBhY2NvcmRpbmcgdG8gdGhlIHByb21wdCwgSSBzaG91bGQgZm9jdXMgb24gbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzIG92ZXIgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIFRoaXMgbGVhbnMgdG93YXJkcyBgdGFwcmlvX2NoYW5nZWAgYmVpbmcgYSBnb29kIGNob2ljZS5cblxuSG9sZCBvbiwgbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IGlmIGB0YXByaW9fY2hhbmdlYCBpcyBzdGF0aWMuLi4gT2theSwgaXQgaXMgc3RhdGljLiAqRGFybiouIFdhaXQgYSBtaW51dGUuLi4gbG9va2luZyBhdCBhbGwgdGhlIG9wZXJhdGlvbnMgZGVmaW5lZCBpbiBgc2NoX3RhcHJpby5jYCwgdGhleSBhbGwgc2VlbSB0byBiZSBzdGF0aWMuIE9rYXksIGxldCBtZSBxdWlja2x5IHNjYW4gdGhlIHNvdXJjZSB0byBzZWUgaWYgdGhlcmUgYXJlICphbnkqIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODA1NiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODoyOC45MjgzNDg1MTdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0ODAzMjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aMC05X10rIFthLXpBLVowLTlfXStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMzQtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzozNTpzdGF0aWMgTElTVF9IRUFEKHRhcHJpb19saXN0KTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTM2LXN0YXRpYyBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSB0YXByaW9faGF2ZV9icm9rZW5fbXFwcmlvO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0xNDcxPUVYUE9SVF9TWU1CT0xfR1BMKHRhcHJpb19vZmZsb2FkX2dldCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDcyLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQ3Mzp2b2lkIHRhcHJpb19vZmZsb2FkX2ZyZWUoc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKm9mZmxvYWQpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDc0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6MjguOTczMTU3NzM1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjcwMDA4MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUQVBSSU8gQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBwcm9tcHQgZW1waGFzaXplcyBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhlIHRoaW5nIGlzLCBgdGFwcmlvX29mZmxvYWRfZnJlZWAgaXMgaW5kZWVkIG5vbi1zdGF0aWMsIGJ1dCBpdCByZWFsbHkgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgY29yZSBjaGFuZ2UgaGVyZS4gSSBuZWVkIHRvIGZvY3VzIG9uIHdoYXQncyByZWxldmFudCB0byB0aGUgcHJvbXB0LlxuXG5UaGUgaW1wb3J0YW50IHBvaW50IGlzIGB0YXByaW9fY2hhbmdlYC4gSSBoYXZlIHRvIGNvbmZpcm0gdGhhdCBpdCBmaXRzIHRoZSBiaWxsLiBTaW5jZSBpdCdzIHJlZ2lzdGVyZWQgaW4gYHRhcHJpb19xZGlzY19vcHNgLCB0aGF0IGltcGxpZXMgdGhhdCBpdHMgYWRkcmVzcyBpcyBiZWluZyB0YWtlbiBzb21ld2hlcmUsIHJpZ2h0PyBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZSBjb21waWxlciB3b24ndCBiZSBhYmxlIHRvIGlubGluZSBpdCwgYW5kIGl0IHdpbGwgaGF2ZSBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBTbywgYmFzZWQgb24gdGhhdCwgYHRhcHJpb19jaGFuZ2VgIHNlZW1zIHBlcmZlY3RseSBhY2NlcHRhYmxlIGFjY29yZGluZyB0byB0aGlzIGd1aWRhbmNlLiBObyBhY3Rpb24gaXMgcmVxdWlyZWQgdGhlcmUuXG5cbk5vdywgSSBzaG91bGQgcXVpY2tseSBjaGVjayBpZiBgTkVUX1NDSF9UQVBSSU9gIGhhcyBhbnkgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gQmV0dGVyIHRvIGNvbmZpcm0gdGhhdCBlYXJseSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODg5MCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODozMy44MDAxNjEzODFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDQ2NjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MzM0PWNvbmZpZyBORVRfU0NIX0ZRX1BJRVxcbm5ldC9zY2hlZC9LY29uZmlnOjMzNTpcXHRkZXBlbmRzIG9uIE5FVF9TQ0hfUElFXFxubmV0L3NjaGVkL0tjb25maWctMzM2LVxcdHRyaXN0YXRlIFxcXCJGbG93IFF1ZXVlIFByb3BvcnRpb25hbCBJbnRlZ3JhbCBjb250cm9sbGVyIEVuaGFuY2VkIChGUS1QSUUpXFxcIlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9MzQ3PWNvbmZpZyBORVRfU0NIX0lOR1JFU1NcXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDgtXFx0dHJpc3RhdGUgXFxcIkluZ3Jlc3MvY2xhc3NpZmllci1hY3Rpb24gUWRpc2NcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6MzQ5OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy0zNTAtXFx0c2VsZWN0IE5FVF9YR1JFU1NcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTQwNj1jb25maWcgTkVUX1NDSF9CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy00MDctXFx0Ym9vbCBcXFwiQlBGLWJhc2VkIFFkaXNjXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjQwODpcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMIFxcdTAwMjZcXHUwMDI2IEJQRl9KSVQgXFx1MDAyNlxcdTAwMjYgREVCVUdfSU5GT19CVEZcXG5uZXQvc2NoZWQvS2NvbmZpZy00MDktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NDk0PWNvbmZpZyBORVRfQ0xTX1JPVVRFNFxcbm5ldC9zY2hlZC9LY29uZmlnLTQ5NS1cXHR0cmlzdGF0ZSBcXFwiUm91dGluZyBkZWNpc2lvbiAoUk9VVEUpXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjQ5NjpcXHRkZXBlbmRzIG9uIElORVRcXG5uZXQvc2NoZWQvS2NvbmZpZy00OTctXFx0c2VsZWN0IElQX1JPVVRFX0NMQVNTSURcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTUyNj1jb25maWcgQ0xTX1UzMl9QRVJGXFxubmV0L3NjaGVkL0tjb25maWctNTI3LVxcdGJvb2wgXFxcIlBlcmZvcm1hbmNlIGNvdW50ZXJzIHN1cHBvcnRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTI4OlxcdGRlcGVuZHMgb24gTkVUX0NMU19VMzJcXG5uZXQvc2NoZWQvS2NvbmZpZy01MjktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTMzPWNvbmZpZyBDTFNfVTMyX01BUktcXG5uZXQvc2NoZWQvS2NvbmZpZy01MzQtXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIG1hcmtzIHN1cHBvcnRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NTM1OlxcdGRlcGVuZHMgb24gTkVUX0NMU19VMzJcXG5uZXQvc2NoZWQvS2NvbmZpZy01MzYtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NTUwPWNvbmZpZyBORVRfQ0xTX0NHUk9VUFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNTUzLVxcdHNlbGVjdCBDR1JPVVBfTkVUX0NMQVNTSURcXG5uZXQvc2NoZWQvS2NvbmZpZzo1NTQ6XFx0ZGVwZW5kcyBvbiBDR1JPVVBTXFxubmV0L3NjaGVkL0tjb25maWctNTU1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTYwNT1jb25maWcgTkVUX0VNQVRDSF9TVEFDS1xcbm5ldC9zY2hlZC9LY29uZmlnLTYwNi1cXHRpbnQgXFxcIlN0YWNrIHNpemVcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NjA3OlxcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxcbm5ldC9zY2hlZC9LY29uZmlnLTYwOC1cXHRkZWZhdWx0IFxcXCIzMlxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTYxNT1jb25maWcgTkVUX0VNQVRDSF9DTVBcXG5uZXQvc2NoZWQvS2NvbmZpZy02MTYtXFx0dHJpc3RhdGUgXFxcIlNpbXBsZSBwYWNrZXQgZGF0YSBjb21wYXJpc29uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjYxNzpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02MTgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjI1PWNvbmZpZyBORVRfRU1BVENIX05CWVRFXFxubmV0L3NjaGVkL0tjb25maWctNjI2LVxcdHRyaXN0YXRlIFxcXCJNdWx0aSBieXRlIGNvbXBhcmlzb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NjI3OlxcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxcbm5ldC9zY2hlZC9LY29uZmlnLTYyOC1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02MzU9Y29uZmlnIE5FVF9FTUFUQ0hfVTMyXFxubmV0L3NjaGVkL0tjb25maWctNjM2LVxcdHRyaXN0YXRlIFxcXCJVMzIga2V5XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjYzNzpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02MzgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjQ1PWNvbmZpZyBORVRfRU1BVENIX01FVEFcXG5uZXQvc2NoZWQvS2NvbmZpZy02NDYtXFx0dHJpc3RhdGUgXFxcIk1ldGFkYXRhXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjY0NzpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02NDgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjU2PWNvbmZpZyBORVRfRU1BVENIX1RFWFRcXG5uZXQvc2NoZWQvS2NvbmZpZy02NTctXFx0dHJpc3RhdGUgXFxcIlRleHRzZWFyY2hcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NjU4OlxcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxcbm5ldC9zY2hlZC9LY29uZmlnLTY1OS1cXHRzZWxlY3QgVEVYVFNFQVJDSFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjcwPWNvbmZpZyBORVRfRU1BVENIX0NBTklEXFxubmV0L3NjaGVkL0tjb25maWctNjcxLVxcdHRyaXN0YXRlIFxcXCJDQU4gSWRlbnRpZmllclxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2NzI6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFxcdTAwMjZcXHUwMDI2IChDQU49eSB8fCBDQU49bSlcXG5uZXQvc2NoZWQvS2NvbmZpZy02NzMtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjgwPWNvbmZpZyBORVRfRU1BVENIX0lQU0VUXFxubmV0L3NjaGVkL0tjb25maWctNjgxLVxcdHRyaXN0YXRlIFxcXCJJUHNldFxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2ODI6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFxcdTAwMjZcXHUwMDI2IElQX1NFVFxcbm5ldC9zY2hlZC9LY29uZmlnLTY4My1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02OTA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBUXFxubmV0L3NjaGVkL0tjb25maWctNjkxLVxcdHRyaXN0YXRlIFxcXCJJUHRhYmxlcyBNYXRjaGVzXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjY5MjpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0ggXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUl9YVEFCTEVTXFxubmV0L3NjaGVkL0tjb25maWctNjkzLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTcxNT1jb25maWcgTkVUX0FDVF9QT0xJQ0VcXG5uZXQvc2NoZWQvS2NvbmZpZy03MTYtXFx0dHJpc3RhdGUgXFxcIlRyYWZmaWMgUG9saWNpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzE3OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MTgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzI2PWNvbmZpZyBORVRfQUNUX0dBQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MjctXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgYWN0aW9uc1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3Mjg6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTcyOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03MzY9Y29uZmlnIEdBQ1RfUFJPQlxcbm5ldC9zY2hlZC9LY29uZmlnLTczNy1cXHRib29sIFxcXCJQcm9iYWJpbGl0eSBzdXBwb3J0XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjczODpcXHRkZXBlbmRzIG9uIE5FVF9BQ1RfR0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTczOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03NDI9Y29uZmlnIE5FVF9BQ1RfTUlSUkVEXFxubmV0L3NjaGVkL0tjb25maWctNzQzLVxcdHRyaXN0YXRlIFxcXCJSZWRpcmVjdGluZyBhbmQgTWlycm9yaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc0NDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzQ1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc1Mj1jb25maWcgTkVUX0FDVF9TQU1QTEVcXG5uZXQvc2NoZWQvS2NvbmZpZy03NTMtXFx0dHJpc3RhdGUgXFxcIlRyYWZmaWMgU2FtcGxpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzU0OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NTUtXFx0c2VsZWN0IFBTQU1QTEVcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc2ND1jb25maWcgTkVUX0FDVF9OQVRcXG5uZXQvc2NoZWQvS2NvbmZpZy03NjUtXFx0dHJpc3RhdGUgXFxcIlN0YXRlbGVzcyBOQVRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzY2OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NjctXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9Nzc0PWNvbmZpZyBORVRfQUNUX1BFRElUXFxubmV0L3NjaGVkL0tjb25maWctNzc1LVxcdHRyaXN0YXRlIFxcXCJQYWNrZXQgRWRpdGluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3NzY6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc3Ny1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03ODM9Y29uZmlnIE5FVF9BQ1RfU0lNUFxcbm5ldC9zY2hlZC9LY29uZmlnLTc4NC1cXHR0cmlzdGF0ZSBcXFwiU2ltcGxlIEV4YW1wbGUgKERlYnVnKVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3ODU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc4Ni1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03OTc9Y29uZmlnIE5FVF9BQ1RfU0tCRURJVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc5OC1cXHR0cmlzdGF0ZSBcXFwiU0tCIEVkaXRpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6Nzk5OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MDAtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODA4PWNvbmZpZyBORVRfQUNUX0NTVU1cXG5uZXQvc2NoZWQvS2NvbmZpZy04MDktXFx0dHJpc3RhdGUgXFxcIkNoZWNrc3VtIFVwZGF0aW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjgxMDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IElORVRcXG5uZXQvc2NoZWQvS2NvbmZpZy04MTEtXFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTgxOT1jb25maWcgTkVUX0FDVF9NUExTXFxubmV0L3NjaGVkL0tjb25maWctODIwLVxcdHRyaXN0YXRlIFxcXCJNUExTIG1hbmlwdWxhdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4MjE6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTgyMi1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04MzA9Y29uZmlnIE5FVF9BQ1RfVkxBTlxcbm5ldC9zY2hlZC9LY29uZmlnLTgzMS1cXHR0cmlzdGF0ZSBcXFwiVmxhbiBtYW5pcHVsYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODMyOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MzMtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODQxPWNvbmZpZyBORVRfQUNUX0JQRlxcbm5ldC9zY2hlZC9LY29uZmlnLTg0Mi1cXHR0cmlzdGF0ZSBcXFwiQlBGIGJhc2VkIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4NDM6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTg0NC1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04NTM9Y29uZmlnIE5FVF9BQ1RfQ09OTk1BUktcXG5uZXQvc2NoZWQvS2NvbmZpZy04NTQtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgUmV0cmlldmVyXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg1NTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbm5ldC9zY2hlZC9LY29uZmlnOjg1NjpcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xcbm5ldC9zY2hlZC9LY29uZmlnLTg1Ny1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04NjU9Y29uZmlnIE5FVF9BQ1RfQ1RJTkZPXFxubmV0L3NjaGVkL0tjb25maWctODY2LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIEFjdGlvbnNcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODY3OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1QgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSXFxubmV0L3NjaGVkL0tjb25maWc6ODY4OlxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFxcdTAwMjZcXHUwMDI2IE5GX0NPTk5UUkFDS19NQVJLXFxubmV0L3NjaGVkL0tjb25maWctODY5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTg4Mj1jb25maWcgTkVUX0FDVF9TS0JNT0RcXG5uZXQvc2NoZWQvS2NvbmZpZy04ODMtXFx0dHJpc3RhdGUgXFxcInNrYiBkYXRhIG1vZGlmaWNhdGlvbiBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODg0OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04ODUtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODkzPWNvbmZpZyBORVRfQUNUX0lGRVxcbm5ldC9zY2hlZC9LY29uZmlnLTg5NC1cXHR0cmlzdGF0ZSBcXFwiSW50ZXItRkUgYWN0aW9uIGJhc2VkIG9uIElFVEYgRm9yQ0VTIEludGVyRkUgTEZCXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg5NTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctODk2LVxcdHNlbGVjdCBORVRfSUZFXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05MDY9Y29uZmlnIE5FVF9BQ1RfVFVOTkVMX0tFWVxcbm5ldC9zY2hlZC9LY29uZmlnLTkwNy1cXHR0cmlzdGF0ZSBcXFwiSVAgdHVubmVsIG1ldGFkYXRhIG1hbmlwdWxhdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5MDg6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTkwOS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05MTc9Y29uZmlnIE5FVF9BQ1RfQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy05MTgtXFx0dHJpc3RhdGUgXFxcImNvbm5lY3Rpb24gdHJhY2tpbmcgdGMgYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjkxOTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiAoIU5GX05BVCB8fCBORl9OQVQpIFxcdTAwMjZcXHUwMDI2IE5GX0ZMT1dfVEFCTEVcXG5uZXQvc2NoZWQvS2NvbmZpZy05MjAtXFx0c2VsZWN0IE5GX0NPTk5UUkFDS19PVlNcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTkzMD1jb25maWcgTkVUX0FDVF9HQVRFXFxubmV0L3NjaGVkL0tjb25maWctOTMxLVxcdHRyaXN0YXRlIFxcXCJGcmFtZSBnYXRlIGVudHJ5IGxpc3QgY29udHJvbCB0YyBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTMyOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy05MzMtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTQyPWNvbmZpZyBORVRfSUZFX1NLQk1BUktcXG5uZXQvc2NoZWQvS2NvbmZpZy05NDMtXFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgdG8gZW5jb2RpbmcgZGVjb2Rpbmcgc2tiIG1hcmsgb24gSUZFIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5NDQ6XFx0ZGVwZW5kcyBvbiBORVRfQUNUX0lGRVxcbm5ldC9zY2hlZC9LY29uZmlnLTk0NS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05NDY9Y29uZmlnIE5FVF9JRkVfU0tCUFJJT1xcbm5ldC9zY2hlZC9LY29uZmlnLTk0Ny1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCB0byBlbmNvZGluZyBkZWNvZGluZyBza2IgcHJpbyBvbiBJRkUgYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjk0ODpcXHRkZXBlbmRzIG9uIE5FVF9BQ1RfSUZFXFxubmV0L3NjaGVkL0tjb25maWctOTQ5LVxcbm5ldC9zY2hlZC9LY29uZmlnPTk1MD1jb25maWcgTkVUX0lGRV9TS0JUQ0lOREVYXFxubmV0L3NjaGVkL0tjb25maWctOTUxLVxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IHRvIGVuY29kaW5nIGRlY29kaW5nIHNrYiB0Y2luZGV4IG9uIElGRSBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTUyOlxcdGRlcGVuZHMgb24gTkVUX0FDVF9JRkVcXG5uZXQvc2NoZWQvS2NvbmZpZy05NTMtXFxubmV0L3NjaGVkL0tjb25maWc9OTU0PWNvbmZpZyBORVRfVENfU0tCX0VYVFxcbm5ldC9zY2hlZC9LY29uZmlnLTk1NS1cXHRib29sIFxcXCJUQyByZWNpcmN1bGF0aW9uIHN1cHBvcnRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTU2OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy05NTctXFx0c2VsZWN0IFNLQl9FWFRFTlNJT05TXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjMzLjg0MzYxMzcyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTg0MjUzMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBUQVBSSU8ncyBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIEknbSBsb29raW5nIGF0IGBORVRfU0NIX1RBUFJJT2AgaW4gYG5ldC9zY2hlZC9LY29uZmlnYC4gRmlyc3QgZ2xhbmNlLCBhbmQgSSBkb24ndCBzZWUgYW55IGV4cGxpY2l0IGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIGxpc3RlZCBkaXJlY3RseSBmb3IgaXQuIFRoYXQncyBhIGJpdCB1bnVzdWFsLCBidXQgbm90IG5lY2Vzc2FyaWx5IGEgcmVkIGZsYWcuIEJlZm9yZSBJIGp1bXAgdG8gYW55IGNvbmNsdXNpb25zLCBJJ2QgYmV0dGVyIGRvdWJsZS1jaGVjayBpZiBpdCByZWxpZXMsIGV2ZW4gaW5kaXJlY3RseSwgb24gYSBicm9hZGVyIHNjaGVkdWxpbmcgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoZSBtb3N0IGxpa2VseSBjYW5kaWRhdGUgdG8gYmUgYSBwYXJlbnQsIGluIHRoaXMgY29udGV4dCwgaXMgYE5FVF9TQ0hFRGAuIEl0J3MgYWxtb3N0IGNlcnRhaW4gdGhlcmUgaXMgc29tZSBkZXBlbmRlbmN5LiBMZXQgbWUgdmVyaWZ5IHRoYXQgZXhwbGljaXRseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI1MTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODozNy43MDIwNDMwMzRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDM4Njc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbnVjb25maWcgTkVUX1NDSEVEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnLTUtXFxubmV0L3NjaGVkL0tjb25maWc6NjptZW51Y29uZmlnIE5FVF9TQ0hFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTctXFx0Ym9vbCBcXFwiUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODozNy43NDY0ODg3MzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYwODcwMjY0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBLZXJuZWwncyBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEknbSBkaXZpbmcgaW50byB0aGUga2VybmVsJ3MgbmV0d29yayBzY2hlZHVsaW5nIGNvbmZpZ3VyYXRpb24uIEkga25vdyBgTkVUX1NDSEVEYCBpcyB0aGUgcHJpbWFyeSBtZW51Y29uZmlnIEkgbmVlZCB0byBiZSBsb29raW5nIGF0LiBOb3csIHRoZSBjcnVjaWFsIHBhcnQgaXMgY2hlY2tpbmcgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBORVRfU0NIX1RBUFJJT2AgYW5kIGBORVRfU0NIRURgLiBFc3NlbnRpYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gaWYgYE5FVF9TQ0hfVEFQUklPYCBpcyBjb25kaXRpb25hbGx5IGluY2x1ZGVkLCBhbmQgd2hhdCB0aGUgYGlmYCBzdGF0ZW1lbnQgc3RhdGVzLiBLbm93aW5nIHdoZXRoZXIgaXQncyBlbmFibGVkIG9ubHkgaWYgYE5FVF9TQ0hFRGAgaXMgZW5hYmxlZCBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBzY2hlZHVsaW5nIGhpZXJhcmNoeSBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGlzIHBhcnQgb2YgdGhlIGtlcm5lbC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgcGFyc2UgdGhhdCBjb25kaXRpb25hbCBzdGF0ZW1lbnQgbm93IHRvIG1ha2Ugc3VyZSBJJ20gY2xlYXIgb24gdGhlIG9wdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODA3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6NDEuMzU1MTk0NzM1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njk2Njk1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZiBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9Nj1tZW51Y29uZmlnIE5FVF9TQ0hFRFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctNDMtXFxubmV0L3NjaGVkL0tjb25maWc6NDQ6aWYgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjQxLjQwMjE2NjMzNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzU3MDc2ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIEtlcm5lbCBTY2hlZHVsZXIgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gYE5FVF9TQ0hFRGAgaXMgZGVmaW5pdGVseSBhIHByZXJlcXVpc2l0ZS4gTm8gc3VycHJpc2VzIHRoZXJlLiBCdXQgYmVmb3JlIEkgZ28gdG9vIGZhciBkb3duIHRoaXMgcGF0aCwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrLCBmb3IgdGhlIHNha2Ugb2YgdGhvcm91Z2huZXNzLCBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogcmVsYXRlZCBkZXBlbmRlbmNpZXMuIEknbSBzcGVjaWZpY2FsbHkgdGhpbmtpbmcgYWJvdXQgYE5FVF9TQ0hfVEFQUklPYC4gSSdsbCBxdWlja2x5IHJlLWV4YW1pbmUgdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiwganVzdCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGNydWNpYWwuIEdvdHRhIGJlIG1ldGljdWxvdXMgd2hlbiBkZWFsaW5nIHdpdGggbmV0d29yayBzY2hlZHVsZXJzIOKAkyBhIG1pc3NlZCBkZXBlbmRlbmN5IGNhbiBsZWFkIHRvIHNvbWUgdHJ1bHkgYml6YXJyZSBhbmQgZnJ1c3RyYXRpbmcgZGVidWdnaW5nIHNlc3Npb25zIGxhdGVyIG9uIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzEyMywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjQ1Ljc1OTI0NjA3M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjU6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX2V0Zi5cXG4gMTY2OlxcdFxcbiAxNjc6XFx0Y29uZmlnIE5FVF9TQ0hfTVFQUklPX0xJQlxcbiAxNjg6XFx0XFx0dHJpc3RhdGVcXG4gMTY5OlxcdFxcdGhlbHBcXG4gMTcwOlxcdFxcdCAgQ29tbW9uIGxpYnJhcnkgZm9yIG1hbmlwdWxhdGluZyBtcXByaW8gcXVldWUgY29uZmlndXJhdGlvbnMuXFxuIDE3MTpcXHRcXG4gMTcyOlxcdGNvbmZpZyBORVRfU0NIX1RBUFJJT1xcbiAxNzM6XFx0XFx0dHJpc3RhdGUgXFxcIlRpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXFxcIlxcbiAxNzQ6XFx0XFx0c2VsZWN0IE5FVF9TQ0hfTVFQUklPX0xJQlxcbiAxNzU6XFx0XFx0aGVscFxcbiAxNzY6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBwYWNrZXRcXG4gMTc3OlxcdFxcdCAgc2NoZWR1bGluZyBhbGdvcml0aG0uXFxuIDE3ODpcXHRcXG4gMTc5OlxcdFxcdCAgU2VlIHRoZSB0b3Agb2YgXFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF90YXByaW8uY1xcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gMTgwOlxcdFxcbiAxODE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDE4MjpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGFwcmlvLlxcbiAxODM6XFx0XFxuIDE4NDpcXHRjb25maWcgTkVUX1NDSF9HUkVEXFxuIDE4NTpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVxcXCJcXG4gMTg2OlxcdFxcdGhlbHBcXG4gMTg3OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIEdlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvblxcbiAxODg6XFx0XFx0ICAoR1JFRCkgcGFja2V0IHNjaGVkdWxpbmcgYWxnb3JpdGhtIGZvciBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzXFxuIDE4OTpcXHRcXHQgIChzZWUgdGhlIHRvcCBvZiBcXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3JlZC5jXFx1MDAzZSBmb3IgZGV0YWlscyBhbmRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6NDUuNzU5MzI2NTQzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyOTIyNjY5MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSBicmVhayB0aGlzIGRvd24uXG5cbioqRGl2aW5nIGludG8gdGhlIENvbmZpZ3VyYXRpb24gU3BhY2UqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgc3lzdGVtIGhhcyBjaG9zZW4gYE5FVF9TQ0hfTVFQUklPX0xJQmAuIFJpZ2h0IGF3YXksIHRoYXQgaW1wbGllcyB0aGF0IGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gIGFyZSBhbHNvIGluIHRoZSBwaWN0dXJlLCBhcyBwcmVyZXF1aXNpdGVzIG9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzZWxlY3Rpb24uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgSSBzaG91bGQgbG9vayBhdCBgdGFwcmlvX2NoYW5nZWAuIEl0J3MgYSBjb21tb24gcGxhY2UgdG8gZmluZCBpbnRlcmVzdGluZyBzeW1ib2xzLCBhbmQgSSdtIGhvcGluZyBJIGNhbiBsb2NhdGUgc29tZSBmdXJ0aGVyIFwiZm9jdXMgc3ltYm9sc1wiIGFyb3VuZCB0aGlzIGZ1bmN0aW9uYWxpdHkuIEhvcGVmdWxseSwgSSBjYW4gZmluZCBzb21ldGhpbmcgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzI4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODo1MS4wNTE1OTYyMzRaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNTM0NjU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0YXByaW9fY2hhbmdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uYz0xODY3PXN0YXRpYyBpbnQgdGFwcmlvX21xcHJpb19jbXAoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg4Ni1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4ODc6c3RhdGljIGludCB0YXByaW9fY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODg4LVxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTIxMzY9c3RhdGljIGludCB0YXByaW9faW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTQ5LVxcdC8qIFdlIG9ubHkgc3VwcG9ydCBzdGF0aWMgY2xvY2tpZHMuIFVzZSBhbiBpbnZhbGlkIHZhbHVlIGFzIGRlZmF1bHRcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIxNTA6XFx0ICogYW5kIGdldCB0aGUgdmFsaWQgb25lIG9uIHRhcHJpb19jaGFuZ2UoKS5cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxNTEtXFx0ICovXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxOTctXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTk4OlxcdHJldHVybiB0YXByaW9fY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE5OS19XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI2MTE9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjE1LVxcdC5pbml0XFx0XFx0PSB0YXByaW9faW5pdCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI2MTY6XFx0LmNoYW5nZVxcdFxcdD0gdGFwcmlvX2NoYW5nZSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MTctXFx0LmRlc3Ryb3lcXHQ9IHRhcHJpb19kZXN0cm95LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0ODo1MS4zNTY5NDg1MDVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzNzE5MTk5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQ29uc2lkZXJpbmcgVEFQUklPIEZ1bmN0aW9uYWxpdHkqKlxuXG5BbHJpZ2h0LCBzbyBgdGFwcmlvX2NoYW5nZWAsIHRoYXQncyBhIHNvbGlkIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEl0IGhhbmRsZXMgdGhlIGR5bmFtaWMgYWRqdXN0bWVudHMsIHRoZSBjb3JlIG9mIHdoYXQgd2UncmUgYWltaW5nIGZvci4gQnV0IEknbSBzdGFydGluZyB0byB0aGluayBhYm91dCB0aGUgcGVyaXBoZXJ5LCB0aGUgc3VwcG9ydGluZyBlbGVtZW50cy4gV2hlcmUgZG8gYHRhcHJpb19lbnF1ZXVlYCBhbmQgYHRhcHJpb19kZXF1ZXVlYCBmaXQgaW50byB0aGUgZ3JhbmQgc2NoZW1lIG9mIHRoaW5ncz8gQXJlIHRoZXkgZXF1YWxseSB3ZWxsLWRlZmluZWQgYW5kIHRob3VnaHQtb3V0PyBBcmUgd2Ugb3Zlcmxvb2tpbmcgcG90ZW50aWFsIGluZWZmaWNpZW5jaWVzIG9yIGNvbXBsZXhpdGllcyBpbiBob3cgdGhvc2UgYXJlIGltcGxlbWVudGVkIG9yIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgdGFwcmlvX2NoYW5nZWA/IEkgbmVlZCB0byBnaXZlIHRoZW0gc29tZSBzZXJpb3VzIHNjcnV0aW55LiBHb3R0YSBtYWtlIHN1cmUgd2UndmUgZ290IGEgY29oZXJlbnQgYW5kIGVmZmljaWVudCBUQVBSSU8gc3lzdGVtLCBmcm9tIGJlZ2lubmluZyB0byBlbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDI3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6NTQuNjk0MTQzNjU2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDM5MDk1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0YXByaW9fZW5xdWV1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9NTYwPXN0YXRpYyBib29sIHRhcHJpb19za2JfZXhjZWVkc19xdWV1ZV9tYXhfc2R1KHN0cnVjdCBRZGlzYyAqc2NoLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01ODAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo1ODE6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZV9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01ODItXFx0XFx0XFx0ICAgICAgc3RydWN0IFFkaXNjICpjaGlsZCwgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MDEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2MDI6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZV9zZWdtZW50ZWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MDMtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBRZGlzYyAqY2hpbGQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTYyNi1cXHRcXHRlbHNlXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2Mjc6XFx0XFx0XFx0cmV0ID0gdGFwcmlvX2VucXVldWVfb25lKHNlZ3MsIHNjaCwgY2hpbGQsIHRvX2ZyZWUpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjI4LVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NDYtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2NDc6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY0OC1cXHRcXHRcXHQgIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjY2LVxcdFxcdGlmIChza2JfaXNfZ3NvKHNrYikpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2Njc6XFx0XFx0XFx0cmV0dXJuIHRhcHJpb19lbnF1ZXVlX3NlZ21lbnRlZChza2IsIHNjaCwgY2hpbGQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NjgtXFx0XFx0XFx0XFx0XFx0XFx0XFx0dG9fZnJlZSk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY3Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY3MzpcXHRyZXR1cm4gdGFwcmlvX2VucXVldWVfb25lKHNrYiwgc2NoLCBjaGlsZCwgdG9fZnJlZSk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NzQtfVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yMjAxPXN0YXRpYyB2b2lkIHRhcHJpb19hdHRhY2goc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyMjItXFx0XFx0XFx0ICogdG8gYWxsIG5ldGRldiBUWCBxdWV1ZXMsIHNvIHRoYXQgZGV2X3FkaXNjX2VucXVldWUoKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjIyMzpcXHRcXHRcXHQgKiBnb2VzIHRocm91Z2ggdGFwcmlvX2VucXVldWUoKS5cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyMjQtXFx0XFx0XFx0ICovXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI2MTE9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjIxLVxcdC5kZXF1ZXVlXFx0PSB0YXByaW9fZGVxdWV1ZSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI2MjI6XFx0LmVucXVldWVcXHQ9IHRhcHJpb19lbnF1ZXVlLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYyMy1cXHQuZHVtcFxcdFxcdD0gdGFwcmlvX2R1bXAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjU0LjczODUzODkwNFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzM2MDg4NTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IGFzIGEgc3VtbWFyeSwgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uLCBhbmQgYXNzdW1pbmcgSSdtIHdlbGwtdmVyc2VkIGluIG15IGZpZWxkOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogYHRhcHJpb19lbnF1ZXVlYCAtIEEgUG9zaXRpdmUgU2lnbmFsKipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgdGhvdWdodCB0aGF0IGNvbWVzIHRvIG1pbmQgaXMgdGhhdCBgdGFwcmlvX2VucXVldWVgIGlzIGdvb2QuIFRoYXQncyBhIHN0cm9uZywgdW5hbWJpZ3VvdXMgc3RhdGVtZW50LiBUaGlzIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEgZmV3IGtleSB0aGluZ3MsIGRlcGVuZGluZyBvbiB0aGUgY29udGV4dC4gSWYgd2UncmUgdGFsa2luZyBhYm91dCB0YXNrIHNjaGVkdWxpbmcgb3IgcmVzb3VyY2UgbWFuYWdlbWVudCwgdGhhdCBzaW5nbGUgcGhyYXNlIHNwZWFrcyB2b2x1bWVzLiBJdCBsaWtlbHkgbWVhbnMgdGhlIHN5c3RlbSdzIHNjaGVkdWxpbmcgbG9naWMsIHRoZSBxdWV1aW5nIGltcGxlbWVudGF0aW9uLCBvciB0aGUgb3ZlcmFsbCBkZXNpZ24gYXBwcm9hY2ggd2hpY2ggdXNlcyB0aGF0IGZ1bmN0aW9uLCBpcyByb2J1c3QgYW5kLCBhdCBsZWFzdCBpbiB0aGUgb3BpbmlvbiBvZiB3aG9ldmVyIHZvaWNlZCB0aGUgdGhvdWdodCwgYSBrZXkgcGllY2Ugb2Ygc3VjY2Vzc2Z1bCBvcGVyYXRpb24uIEl0IHNpZ25pZmllcyBlZmZpY2llbmN5LCBjb3JyZWN0bmVzcywgb3IgcG9zc2libHkgZXZlbiBhIGxldmVsIG9mIGVsZWdhbmNlIGluIGhvdyBpdCBoYW5kbGVzIHRoZSBmbG93IG9mIHdvcmsuIENvbnNpZGVyaW5nIHRoYXQgYHRhcHJpb19lbnF1ZXVlYCBsaWtlbHkgcmVmZXJzIHRvIGEgc3BlY2lmaWMgZnVuY3Rpb24gb3IgbWVjaGFuaXNtIHdpdGhpbiBhIGxhcmdlciBzeXN0ZW0sIGl0cyBwZXJjZWl2ZWQgXCJnb29kbmVzc1wiIGNvdWxkIHBvaW50IHRvIGV4Y2VsbGVudCBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MsIHN1Y2ggYXMgbWluaW1pemluZyBsYXRlbmN5LCBlbnN1cmluZyBmYWlyIHJlc291cmNlIGFsbG9jYXRpb24sIG9yIGVmZmVjdGl2ZWx5IGhhbmRsaW5nIGNvbnRlbnRpb24uIEknZCBiZSBjdXJpb3VzIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljIGNyaXRlcmlhIGJlaW5nIGFwcGxpZWQgaW4gdGhpcyBqdWRnZW1lbnQuIElzIGl0IGluIGNvbXBhcmlzb24gdG8gYW5vdGhlciBtZXRob2Q/IElzIGl0IGJhc2VkIG9uIHBlcmZvcm1hbmNlIHRlc3RzPyBPciBpcyBpdCBhIG1vcmUgc3ViamVjdGl2ZSBtZWFzdXJlIG9mIHRoZSBjb2RlJ3MgY2xhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5PyBGdXJ0aGVyIGludmVzdGlnYXRpb24gaXMgY2VydGFpbmx5IHdhcnJhbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU0MjAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ4OjU5LjA3NDYyOTI1NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxMDcwMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGFwcmlvX2RlcXVldWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTcwMz1zdGF0aWMgaW50IHRhcHJpb191cGRhdGVfYnVkZ2V0cyhzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBzaXplX3QgbGVuLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03MjUtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3MjY6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZV9mcm9tX3R4cShzdHJ1Y3QgUWRpc2MgKnNjaCwgaW50IHR4cSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTcyNy1cXHRcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9NzgzPXN0YXRpYyB2b2lkIHRhcHJpb19uZXh0X3RjX3R4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgdGMsIGludCAqdHhxKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03OTUtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3OTY6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZV90Y19wcmlvcml0eShzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc5Ny1cXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTgxMi1cXHRcXHRkbyB7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4MTM6XFx0XFx0XFx0c2tiID0gdGFwcmlvX2RlcXVldWVfZnJvbV90eHEoc2NoLCBxLVxcdTAwM2VjdXJfdHhxW3RjXSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTgxNC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBlbnRyeSwgZ2F0ZV9tYXNrKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODMxLSAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODMyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdGFwcmlvX2RlcXVldWVfdHhxX3ByaW9yaXR5KHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODMzLVxcdFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg0MC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZGV2LVxcdTAwM2VudW1fdHhfcXVldWVzOyBpKyspIHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg0MTpcXHRcXHRza2IgPSB0YXByaW9fZGVxdWV1ZV9mcm9tX3R4cShzY2gsIGksIGVudHJ5LCBnYXRlX21hc2spO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODQyLVxcdFxcdGlmIChza2IpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg1MS0gKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg1MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRhcHJpb19kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODUzLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODcyLVxcdFxcdC8qIFNpbmdsZSBOSUMga2luZCB3aGljaCBpcyBicm9rZW4gKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg3MzpcXHRcXHRza2IgPSB0YXByaW9fZGVxdWV1ZV90eHFfcHJpb3JpdHkoc2NoLCBlbnRyeSwgZ2F0ZV9tYXNrKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg3NC1cXHR9IGVsc2UgaWYgKHN0YXRpY19icmFuY2hfbGlrZWx5KFxcdTAwMjZ0YXByaW9faGF2ZV93b3JraW5nX21xcHJpbykgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODc2LVxcdFxcdC8qIFNpbmdsZSBOSUMga2luZCB3aGljaCBwcmlvcml0aXplcyBwcm9wZXJseSAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODc3OlxcdFxcdHNrYiA9IHRhcHJpb19kZXF1ZXVlX3RjX3ByaW9yaXR5KHNjaCwgZW50cnksIGdhdGVfbWFzayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NzgtXFx0fSBlbHNlIHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODgwLVxcdFxcdGlmIChxLVxcdTAwM2Vicm9rZW5fbXFwcmlvKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODgxOlxcdFxcdFxcdHNrYiA9IHRhcHJpb19kZXF1ZXVlX3R4cV9wcmlvcml0eShzY2gsIGVudHJ5LCBnYXRlX21hc2spO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODgyLVxcdFxcdGVsc2VcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg4MzpcXHRcXHRcXHRza2IgPSB0YXByaW9fZGVxdWV1ZV90Y19wcmlvcml0eShzY2gsIGVudHJ5LCBnYXRlX21hc2spO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODg0LVxcdH1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjYxMT1zdGF0aWMgc3RydWN0IFFkaXNjX29wcyB0YXByaW9fcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MjAtXFx0LnBlZWtcXHRcXHQ9IHRhcHJpb19wZWVrLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjYyMTpcXHQuZGVxdWV1ZVxcdD0gdGFwcmlvX2RlcXVldWUsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjIyLVxcdC5lbnF1ZXVlXFx0PSB0YXByaW9fZW5xdWV1ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMDc6NDg6NTkuMTE5NzQxMzAzWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwNDkwMTY1NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVGFwcmlvIFNjaGVkdWxlciBDaGFuZ2VzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgSSd2ZSB6ZXJvZWQgaW4gb24gdGhlIGB0YXByaW9fZGVxdWV1ZWAgZnVuY3Rpb24gYXMgYSBrZXkgZm9jdXMuIEFsb25nIHdpdGggdGhhdCwgaXQncyBjbGVhciB0aGF0IHRoZSBwcmltYXJ5IHN5bWJvbHMgb2YgaW50ZXJlc3QgaGVyZSBhcmUgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYC5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgdGhhdCBgTkVUX1NDSF9UQVBSSU9gIGlzIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZyBoZXJlLiBZdXAsIGl0IHNlbGVjdHMgYE5FVF9TQ0hfTVFQUklPX0xJQmAgYXMgZXhwZWN0ZWQsIGJ1dCBteSBmb2N1cyBpcyBzb2xlbHkgb24gcHJvdmlkaW5nIGBORVRfU0NIX1RBUFJJT2AuXG5cbk5vdywgbGV0J3MgcmUtZXhhbWluZSB0aGlzIGNvZGUgc25pcHBldDpcblxuYGBgY1xuc3RhdGljIHM2NCB0YXByaW9fbWluX2ludGVydmFsKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG57XG5cdHM2NCBtaW5faW50ZXJ2YWwgPSBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pO1xuXG5cdC8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi9cblx0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcblx0ICAgICFUWFRJTUVfQVNTSVNUX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykpXG5cdFx0bWluX2ludGVydmFsID0gbWF4X3QoczY0LCBtaW5faW50ZXJ2YWwsXG5cdFx0XHRcdCAgICAgVEFQUklPX01JTl9TV19JTlRFUlZBTF9OUyk7XG5cblx0cmV0dXJuIG1pbl9pbnRlcnZhbDtcbn1cbmBgYFxuXG5UaGlzIGB0YXByaW9fbWluX2ludGVydmFsYCBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBgZmlsbF9zY2hlZF9lbnRyeWAgYW5kIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgLiBBbmQgdGhlbiB3ZSBoYXZlIGB0YXByaW9fY2F0Y2hfdXBgIHdoaWNoIGlzIGNhbGxlZCBmcm9tIGBhZHZhbmNlX3NjaGVkYC4gVGhhdCdzIHdoZXJlIGl0IGFsbCBjb25uZWN0cy5cblxuVGhpcyBwYXRjaCBtYWtlcyBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIFRpbWUgQXdhcmUgUHJpb3JpdHkgU2NoZWR1bGVyIChgbmV0L3NjaGVkL3NjaF90YXByaW8uY2ApLiBJdCBmaXhlcyBhIGJ1ZyB0aGF0IHdhcyBjYXVzaW5nIHRpbWVycyB0byBleHBpcmUgaW4gdGhlIHBhc3QsIGxlYWRpbmcgdG8gQ1BVIHN0b3Jtcy4gSXQgYWxzbyBhZGRzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciB3aGVuIHRoZSBzY2hlZHVsZSBpcyBiZWhpbmQuIFRoaXMgc3R1ZmYgaXMgYWxsIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBuZXRsaW5rIHZpYSBgdGMgcWRpc2MgYWRkIC4uLiB0YXByaW9gLlxuXG5UaGVyZWZvcmUsIEknbSBnb2luZyB0byBzZXQgdGhlc2UgcGFyYW1ldGVyczpcblxuKiAgICoqV29ydGhGdXp6aW5nOiB0cnVlKiogKEFic29sdXRlbHksIHRoZXNlIGFyZSBzdWJzdGFudGlhbCBjaGFuZ2VzLilcbiogICAqKkZvY3VzU3ltYm9sczogW1widGFwcmlvX2NoYW5nZVwiLCBcInRhcHJpb19lbnF1ZXVlXCIsIFwidGFwcmlvX2RlcXVldWVcIl0qKiAoVGhlc2UgZnVuY3Rpb25zIGFyZSB0aGUgY29yZSBvZiB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkuKVxuKiAgICoqRW5hYmxlQ29uZmlnczogW1wiTkVUX1NDSF9UQVBSSU9cIl0qKiAoVGhpcyBpcyBhbGwgd2UgbmVlZCB0byBlbmFibGUgdGhlIGZlYXR1cmUuKVxuKiAgICoqUmVhc29uaW5nOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgdGFwcmlvIHFkaXNjLCBzcGVjaWZpY2FsbHkgZW5mb3JjaW5nIGEgbWluaW11bSBpbnRlcnZhbCBmb3Igc29mdHdhcmUgc2NoZWR1bGVzIGFuZCBhZGRpbmcgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgdGltZXJzLiBUaGVzZSBjaGFuZ2VzIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKHRjIHFkaXNjKSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIioqIChUaGlzIHN1bW1hcml6ZXMgdGhlIHJhdGlvbmFsZSBhbmQgdGhlIGF0dGFjayBzdXJmYWNlLilcblxuXG4iLCJJbnB1dFRva2VucyI6MTY3OTQsIk91dHB1dFRva2VucyI6MTEyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ5OjA4LjE2ODc2MDAzMloiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NDcxNjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIX1RBUFJJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRhcHJpb19jaGFuZ2VcIixcbiAgICBcInRhcHJpb19lbnF1ZXVlXCIsXG4gICAgXCJ0YXByaW9fZGVxdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSB0YXByaW8gcWRpc2MsIHNwZWNpZmljYWxseSBlbmZvcmNpbmcgYSBtaW5pbXVtIGludGVydmFsIGZvciBzb2Z0d2FyZSBzY2hlZHVsZXMgYW5kIGFkZGluZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCB0aW1lcnMuIFRoZXNlIGNoYW5nZXMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAodGMgcWRpc2MpIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hfVEFQUklPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGFwcmlvX2NoYW5nZVwiLFxuICAgIFwidGFwcmlvX2VucXVldWVcIixcbiAgICBcInRhcHJpb19kZXF1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIHRhcHJpbyBxZGlzYywgc3BlY2lmaWNhbGx5IGVuZm9yY2luZyBhIG1pbmltdW0gaW50ZXJ2YWwgZm9yIHNvZnR3YXJlIHNjaGVkdWxlcyBhbmQgYWRkaW5nIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIHRpbWVycy4gVGhlc2UgY2hhbmdlcyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rICh0YyBxZGlzYykgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ5OjA4LjI0NzIzOTMxWiIsIlNlcSI6MzMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzI3MTk3ODY5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDA3OjQ5OjA4LjI0Nzc2ODI1OVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMzI3MTQ0NTE4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgQ1BVIHN0b3JtIGlzc3VlIGluIHRoZSB0YXByaW8gc2NoZWR1bGVyIGJ5IGVuZm9yY2luZyBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjaW5nIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIGhydGltZXJzLiBJdCBvbmx5IG1vZGlmaWVzIHRpbWUgY2FsY3VsYXRpb25zLCBsaXN0IHRyYXZlcnNhbHMsIGFuZCBzY2hlZHVsaW5nIGxvZ2ljLiBObyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBpbnRyb2R1Y2VkLCBhbmQgbm8gc3RydWN0dXJlcyBhcmUgY29waWVkIHRvIHVzZXIgc3BhY2UuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmM2NjY0ODMyY2I1YTQwOWEwZTc0NDE3MTY1NWM4NzFmYzlkOTI5NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDA3OjQ3OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF90YXByaW8uYyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcbmluZGV4IDI5OTIzNGE1ZjBmZTYuLjc1MTliYzVjMWFmZjMgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5AQCAtMjU5LDYgKzI1OSwyNiBAQCBzdGF0aWMgaW50IGxlbmd0aF90b19kdXJhdGlvbihzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBpbnQgbGVuKVxuIFx0cmV0dXJuIGRpdl91NjQobGVuICogYXRvbWljNjRfcmVhZChcdTAwMjZxLVx1MDAzZXBpY29zX3Blcl9ieXRlKSwgUFNFQ19QRVJfTlNFQyk7XG4gfVxuIFxuKy8qIFNvZnR3YXJlIHNjaGVkdWxlcyBzZXJ2aWNlIG9uZSBocnRpbWVyIGV4cGlyeSBwZXIgZW50cnk7IGludGVydmFsc1xuKyAqIHNob3J0ZXIgdGhhbiB0aGUgZXhwaXJ5IHNlcnZpY2UgY29zdCByZWFybSB0aGUgdGltZXIgd2l0aCBhbiBleHBpcnlcbisgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZVxuKyAqIG1lYXN1cmVkIGNvc3Qgb24gZGVidWcgY29uZmlndXJhdGlvbnMuXG4rICovXG4rI2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TXHQoMTAwICogTlNFQ19QRVJfVVNFQylcbitcbitzdGF0aWMgczY0IHRhcHJpb19taW5faW50ZXJ2YWwoc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcbit7XG4rXHRzNjQgbWluX2ludGVydmFsID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcbitcbitcdC8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi9cbitcdGlmICghRlVMTF9PRkZMT0FEX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG4rXHQgICAgIVRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRChxLVx1MDAzZWZsYWdzKSlcbitcdFx0bWluX2ludGVydmFsID0gbWF4X3QoczY0LCBtaW5faW50ZXJ2YWwsXG4rXHRcdFx0XHQgICAgIFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlMpO1xuK1xuK1x0cmV0dXJuIG1pbl9pbnRlcnZhbDtcbit9XG4rXG4gc3RhdGljIGludCBkdXJhdGlvbl90b19sZW5ndGgoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgdTY0IGR1cmF0aW9uKVxuIHtcbiBcdHJldHVybiBkaXZfdTY0KGR1cmF0aW9uICogUFNFQ19QRVJfTlNFQywgYXRvbWljNjRfcmVhZChcdTAwMjZxLVx1MDAzZXBpY29zX3Blcl9ieXRlKSk7XG5AQCAtOTE1LDYgKzkzNSw1MSBAQCBzdGF0aWMgYm9vbCBzaG91bGRfY2hhbmdlX3NjaGVkdWxlcyhjb25zdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1pbixcbiBcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4rLyogVGhlIG9wZXJhdGlvbmFsIHNjaGVkdWxlIGZlbGwgYmVoaW5kLCBlLmcuIGJlY2F1c2UgdGhlIHRpbWVyIHdhcyBkZWxheWVkXG4rICogb3IgdGhlIHJlZmVyZW5jZSBjbG9jayBzdGVwcGVkIGZvcndhcmQuIEFkdmFuY2luZyBvbmUgZW50cnkgcGVyIHRpbWVyXG4rICogZXhwaXJ5IHdvdWxkIHJlcGxheSB0aGUgd2hvbGUgYmFja2xvZyBmcm9tIGhydGltZXIgY29udGV4dCwgc28gc2tpcFxuKyAqIGNvbXBsZXRlIGN5Y2xlcyBhcml0aG1ldGljYWxseSBhbmQgd2FsayB0aGUgcmVtYWluaW5nIGVudHJpZXMgdG8gbGFuZCBvblxuKyAqIHRoZSBlbnRyeSBjb3ZlcmluZyB0aGUgY3VycmVudCB0aW1lLlxuKyAqL1xuK3N0YXRpYyB2b2lkIHRhcHJpb19jYXRjaF91cChzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpvcGVyLFxuK1x0XHRcdCAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKipuZXh0LCBrdGltZV90ICpuZXh0X3N0YXJ0LFxuK1x0XHRcdCAgICBrdGltZV90ICplbmRfdGltZSwga3RpbWVfdCBub3cpXG4re1xuK1x0aW50IGJ1ZGdldCA9IDIgKiBvcGVyLVx1MDAzZW51bV9lbnRyaWVzICsgMTtcbitcdHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnkgPSAqbmV4dDtcbitcdGt0aW1lX3Qgc3RhcnQgPSAqbmV4dF9zdGFydDtcbitcdGt0aW1lX3QgZW5kID0gKmVuZF90aW1lO1xuK1x0czY0IGJlaGluZCA9IGt0aW1lX3N1Yihub3csIGVuZCk7XG4rXG4rXHRpZiAob3Blci1cdTAwM2VjeWNsZV90aW1lIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiBiZWhpbmQgXHUwMDNlPSBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpIHtcbitcdFx0czY0IGp1bXAgPSBkaXY2NF9zNjQoYmVoaW5kLCBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpICogb3Blci1cdTAwM2VjeWNsZV90aW1lO1xuK1xuK1x0XHRzdGFydCA9IGt0aW1lX2FkZF9ucyhzdGFydCwganVtcCk7XG4rXHRcdGVuZCA9IGt0aW1lX2FkZF9ucyhlbmQsIGp1bXApO1xuK1x0XHRvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUsIGp1bXApO1xuK1x0fVxuK1xuK1x0d2hpbGUgKGt0aW1lX2JlZm9yZShlbmQsIG5vdykgXHUwMDI2XHUwMDI2IC0tYnVkZ2V0KSB7XG4rXHRcdGlmIChsaXN0X2lzX2xhc3QoXHUwMDI2ZW50cnktXHUwMDNlbGlzdCwgXHUwMDI2b3Blci1cdTAwM2VlbnRyaWVzKSB8fFxuK1x0XHQgICAga3RpbWVfY29tcGFyZShlbmQsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpID09IDApIHtcbitcdFx0XHRlbnRyeSA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2b3Blci1cdTAwM2VlbnRyaWVzLFxuK1x0XHRcdFx0XHRcdCBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpO1xuK1x0XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSxcbitcdFx0XHRcdFx0XHRcdCAgICBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdGVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTtcbitcdFx0fVxuK1xuK1x0XHRzdGFydCA9IGVuZDtcbitcdFx0ZW5kID0ga3RpbWVfYWRkX25zKGVuZCwgZW50cnktXHUwMDNlaW50ZXJ2YWwpO1xuK1x0XHRlbmQgPSBtaW5fdChrdGltZV90LCBlbmQsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xuK1x0fVxuK1xuK1x0Km5leHQgPSBlbnRyeTtcbitcdCpuZXh0X3N0YXJ0ID0gc3RhcnQ7XG4rXHQqZW5kX3RpbWUgPSBlbmQ7XG4rfVxuK1xuIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbiB7XG4gXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgdGFwcmlvX3NjaGVkLFxuQEAgLTkyNCw3ICs5ODksNyBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4gXHRpbnQgbnVtX3RjID0gbmV0ZGV2X2dldF9udW1fdGMoZGV2KTtcbiBcdHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksICpuZXh0O1xuIFx0c3RydWN0IFFkaXNjICpzY2ggPSBxLVx1MDAzZXJvb3Q7XG4tXHRrdGltZV90IGVuZF90aW1lO1xuK1x0a3RpbWVfdCBlbmRfdGltZSwgbmV4dF9zdGFydCwgbm93O1xuIFx0aW50IHRjO1xuIFxuIFx0c3Bpbl9sb2NrKFx1MDAyNnEtXHUwMDNlY3VycmVudF9lbnRyeV9sb2NrKTtcbkBAIC05NjAsMTQgKzEwMjUsMTkgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0XHRuZXh0ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTtcbiBcdH1cbiBcbi1cdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKGVudHJ5LVx1MDAzZWVuZF90aW1lLCBuZXh0LVx1MDAzZWludGVydmFsKTtcbitcdG5leHRfc3RhcnQgPSBlbnRyeS1cdTAwM2VlbmRfdGltZTtcbitcdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKG5leHRfc3RhcnQsIG5leHQtXHUwMDNlaW50ZXJ2YWwpO1xuIFx0ZW5kX3RpbWUgPSBtaW5fdChrdGltZV90LCBlbmRfdGltZSwgb3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSk7XG4gXG4rXHRub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7XG4rXHRpZiAodW5saWtlbHkoa3RpbWVfYmVmb3JlKGVuZF90aW1lLCBub3cpKSlcbitcdFx0dGFwcmlvX2NhdGNoX3VwKG9wZXIsIFx1MDAyNm5leHQsIFx1MDAyNm5leHRfc3RhcnQsIFx1MDAyNmVuZF90aW1lLCBub3cpO1xuK1xuIFx0Zm9yICh0YyA9IDA7IHRjIFx1MDAzYyBudW1fdGM7IHRjKyspIHtcbiBcdFx0aWYgKG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci1cdTAwM2VjeWNsZV90aW1lKVxuIFx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDtcbiBcdFx0ZWxzZVxuLVx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSxcbitcdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCxcbiBcdFx0XHRcdFx0XHRcdFx0IG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10pO1xuIFx0fVxuIFxuQEAgLTEwMzgsNyArMTEwOCw3IEBAIHN0YXRpYyBpbnQgZmlsbF9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG4gXHRcdFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXG4gXHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4tXHRpbnQgbWluX2R1cmF0aW9uID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcbitcdHM2NCBtaW5fZHVyYXRpb24gPSB0YXByaW9fbWluX2ludGVydmFsKHEpO1xuIFx0dTMyIGludGVydmFsID0gMDtcbiBcbiBcdGlmICh0YltUQ0FfVEFQUklPX1NDSEVEX0VOVFJZX0NNRF0pXG5AQCAtMTE2Niw3ICsxMjM2LDcgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxuIFx0XHRuZXctXHUwMDNlY3ljbGVfdGltZSA9IGN5Y2xlO1xuIFx0fVxuIFxuLVx0aWYgKG5ldy1cdTAwM2VjeWNsZV90aW1lIFx1MDAzYyBuZXctXHUwMDNlbnVtX2VudHJpZXMgKiBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pKSB7XG4rXHRpZiAobmV3LVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNjIChzNjQpbmV3LVx1MDAzZW51bV9lbnRyaWVzICogdGFwcmlvX21pbl9pbnRlcnZhbChxKSkge1xuIFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiJ2N5Y2xlX3RpbWUnIGlzIHRvbyBzbWFsbFwiKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuaW5kZXggY2QxOWQwNTkyNWU0MC4uM2ZlNjY4MzlmOGFlZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuQEAgLTE1NCw2ICsxNTQsMjggQEBcbiAgICAgICAgICAgICBcImVjaG8gXFxcIjFcXFwiIFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZVwiXG4gICAgICAgICBdXG4gICAgIH0sXG4rICAgIHtcbisgICAgICAgIFwiaWRcIjogXCJmNGIyXCIsXG4rICAgICAgICBcIm5hbWVcIjogXCJBZGQgdGFwcmlvIFFkaXNjIHdpdGggc29mdHdhcmUgaW50ZXJ2YWwgYmVsb3cgdGhlIG1pbmltdW1cIixcbisgICAgICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgICAgICAgIFwicWRpc2NcIixcbisgICAgICAgICAgICBcInRhcHJpb1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFwibnNQbHVnaW5cIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwic2V0dXBcIjogW1xuKyAgICAgICAgICAgIFwiZWNobyBcXFwiMSAxIDhcXFwiIFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vbmV3X2RldmljZVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgcWRpc2MgYWRkIGRldiAkRVRIIHJvb3QgaGFuZGxlIDE6IHRhcHJpbyBudW1fdGMgMiBxdWV1ZXMgMUAwIDFAMSBzY2hlZC1lbnRyeSBTIDAxIDUwMDAwIHNjaGVkLWVudHJ5IFMgMDIgNTAwMDAgY2xvY2tpZCBDTE9DS19UQUlcIixcbisgICAgICAgIFwiZXhwRXhpdENvZGVcIjogXCIyXCIsXG4rICAgICAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBxZGlzYyBzaG93IGRldiAkRVRIXCIsXG4rICAgICAgICBcIm1hdGNoUGF0dGVyblwiOiBcInFkaXNjIHRhcHJpbyAxOiByb290IHJlZmNudFwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiMFwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCJlY2hvIFxcXCIxXFxcIiBcdTAwM2UgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2VcIlxuKyAgICAgICAgXVxuKyAgICB9LFxuICAgICB7XG4gICAgICAgICBcImlkXCI6IFwiODMxZlwiLFxuICAgICAgICAgXCJuYW1lXCI6IFwiQWRkIHRhcHJpbyBRZGlzYyB3aXRoIHRvbyBzaG9ydCBjeWNsZS10aW1lXCIsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0OTowOC4yNDc3NjkzNTlaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMyNzE0MjE0NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUYXByaW8gU2NoZWR1bGVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNgLiBTZWVtcyBsaWtlIHRoZXkncmUgYWRkaW5nIGEgbWluaW11bSBpbnRlcnZhbCBmb3Igc29mdHdhcmUgc2NoZWR1bGVzIHdpdGggYHRhcHJpb19taW5faW50ZXJ2YWxgLCBhbmQgYSBjYXRjaC11cCBtZWNoYW5pc20gKGB0YXByaW9fY2F0Y2hfdXBgKSB0byBoYW5kbGUgc2l0dWF0aW9ucyB3aGVyZSB0aGUgc2NoZWR1bGUgZmFsbHMgYmVoaW5kLiBQbHVzLCB0aGVyZSdzIGEgbmV3IHRlc3QgY2FzZSBpbiBgdGFwcmlvLmpzb25gIGZvciB2YWxpZGF0aW9uLlxuXG5MZXQncyBicmVhayBkb3duIHRoZXNlIGNoYW5nZXMgc3RlcC1ieS1zdGVwLiBgdGFwcmlvX21pbl9pbnRlcnZhbGAgYXBwZWFycyB0byBiZSBjYWxjdWxhdGluZyBhIHNlbnNpYmxlIG1pbmltdW0gaW50ZXJ2YWwuIEl0IGxldmVyYWdlcyBgbGVuZ3RoX3RvX2R1cmF0aW9uYCB3aXRoIGBFVEhfWkxFTmAgYW5kIGBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TYC4gVGhlIGB0YXByaW9fY2F0Y2hfdXBgIGZ1bmN0aW9uIGlzIHRoZSBpbnRlcmVzdGluZyBiaXQuIEl0J3MgZGVzaWduZWQgdG8gdXBkYXRlIHRoZSBgbmV4dGAsIGBuZXh0X3N0YXJ0YCwgYW5kIGBlbmRfdGltZWAgcG9pbnRlcnMgdG8gc2tpcCB3aG9sZSBjeWNsZXMgYW5kIHRoZW4gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjdXJyZW50IGVudHJ5LiBUaGUgYGFkdmFuY2Vfc2NoZWRgIGZ1bmN0aW9uIHRoZW4gdXNlcyB0aGlzIGB0YXByaW9fY2F0Y2hfdXBgIGxvZ2ljIGlmIHRoZSBgZW5kX3RpbWVgIGlzIGJlZm9yZSB0aGUgY3VycmVudCB0aW1lIChgbm93YCkuIEkgc2VlIHRoYXQgdGhleSdyZSBhbHNvIHVzaW5nIGB0YXByaW9fbWluX2ludGVydmFsKHEpYCBub3cgaW4gYGZpbGxfc2NoZWRfZW50cnlgIGFuZCBgcGFyc2VfdGFwcmlvX3NjaGVkdWxlYCBpbnN0ZWFkIG9mIHRoZSBvbGQgYGxlbmd0aF90b19kdXJhdGlvbmAgY2FsY3VsYXRpb25zLlxuXG5Ob3csIG15IHByaW1hcnkgY29uY2VybiB3aXRoIGFueSBzY2hlZHVsZXIgY2hhbmdlIGlzLCBuYXR1cmFsbHksIG1lbW9yeSBzYWZldHkuIERvZXMgdGhpcyBwYXRjaCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzPyBJIG5lZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSBjaGFuZ2VzIGRvbid0IGFsbG93IHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIGJlIGFjY2Vzc2VkIG9yIGV4cG9zZWQuIEkgc2VlIG5vIG5ldyBzdHJ1Y3R1cmVzIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBhbGxvY2F0ZWQsIGFuZCB0aGUgbG9naWMgaXMgcHJpbWFyaWx5IGRlYWxpbmcgd2l0aCB0aW1lIGNhbGN1bGF0aW9ucyDigJMgYGt0aW1lX3RgIGFuZCBgczY0YCDigJMgYW5kIHN0cmFpZ2h0Zm9yd2FyZCBsaXN0IHRyYXZlcnNhbC4gVGhlIHZhcmlhYmxlcyBzZWVtIHRvIGJlIGluaXRpYWxpemVkIHByb3Blcmx5LiBUaGUgcm9vdCBjYXVzZSBhcHBlYXJzIHRvIGJlIHRoYXQgdGhlIGhydGltZXIga2VlcHMgZXhwaXJpbmcgaW4gdGhlIHBhc3QsIGxlYWRpbmcgdG8gYSBDUFUgc3Rvcm0sIGFuZCB0aGUgY2F0Y2gtdXAgbWVjaGFuaXNtIGlzIGEgZml4IHRvIHNraXAgdGhlc2UgbWlzc2VkIGludGVydmFscy5cblxuU28sIHRoaXMgbG9va3MgbGlrZSBhIGxvZ2ljIGJ1ZyBmaXggYW5kIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4gSXQgc2hvdWxkbid0IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnksIGluZm8gbGVha3MsIG9yIGNvbXBsZXggbWVtb3J5IGFsbG9jYXRpb25zIHRoYXQgY291bGQgYmUgcGFydGlhbGx5IGluaXRpYWxpemVkLlxuXG5MZXQgbWUgZG91YmxlIGNoZWNrIHRoZSBgdGFwcmlvX2NhdGNoX3VwYCBmdW5jdGlvbiwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIE9rYXksIGFsbCBpbnB1dHMgYXBwZWFyIGluaXRpYWxpemVkLiBUaGUgdmFyaWFibGVzIHVzZWQgd2l0aGluIHRoZSBmdW5jdGlvbiBpdHNlbGYsIHN1Y2ggYXMgdGhlIGBuZXh0X3N0YXJ0YCBhbmQgYGVuZF90aW1lYCBwYXJhbWV0ZXJzIGZvciB0aGUgcmVjdXJzaXZlIGNhbGxzLCBsb29rIGNvcnJlY3RseSBoYW5kbGVkIGFuZCBpbml0aWFsaXplZCB0b28uXG5cblRoZXJlZm9yZSwgSSdtIGNvbmNsdWRpbmcgdGhhdCBLTVNBTiBpc24ndCBuZWVkZWQgaGVyZS4gS0FTQU4sIExPQ0tERVAsIGFuZCB0aGUgc3RhbmRhcmQgYnVnIGRldGVjdG9ycyBzaG91bGQgYmUgc3VmZmljaWVudC4gSW4gZmFjdCwgdGhpcyBwYXRjaCBkb2Vzbid0IGludHJvZHVjZSAqYW55KiBtZW1vcnkgc2FmZXR5IGlzc3Vlcywgbm90IGp1c3QgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLlxuXG5JbiBzdW1tYXJ5LCB0aGlzIHBhdGNoIGlzIGEgZ29vZCBmaXggZm9yIHRoZSB0YXByaW8gc2NoZWR1bGVyLiBJdCBhZGRyZXNzZXMgYSBDUFUgc3Rvcm0gaXNzdWUgYnkgaW50cm9kdWNpbmcgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBhIGNhdGNoLXVwIG1lY2hhbmlzbS4gVGhlIGNoYW5nZXMgaW52b2x2ZSBvbmx5IHRpbWUgY2FsY3VsYXRpb25zLCBsaXN0IHRyYXZlcnNhbHMsIGFuZCBzY2hlZHVsaW5nIGxvZ2ljLiBUaGVyZSdzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mb3JtYXRpb24gbGVha3MsIGFuZCBzbyBpdCBzaG91bGQgYmUgc2FmZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE4MSwiT3V0cHV0VG9rZW5zIjoxMTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQwNzo0OToyMS41MTkxOTQ2MjJaIiwiU2VxIjozNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzMxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIENQVSBzdG9ybSBpc3N1ZSBpbiB0aGUgdGFwcmlvIHNjaGVkdWxlciBieSBlbmZvcmNpbmcgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2luZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBocnRpbWVycy4gSXQgb25seSBtb2RpZmllcyB0aW1lIGNhbGN1bGF0aW9ucywgbGlzdCB0cmF2ZXJzYWxzLCBhbmQgc2NoZWR1bGluZyBsb2dpYy4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaW50cm9kdWNlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBhIENQVSBzdG9ybSBpc3N1ZSBpbiB0aGUgdGFwcmlvIHNjaGVkdWxlciBieSBlbmZvcmNpbmcgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2luZyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBocnRpbWVycy4gSXQgb25seSBtb2RpZmllcyB0aW1lIGNhbGN1bGF0aW9ucywgbGlzdCB0cmF2ZXJzYWxzLCBhbmQgc2NoZWR1bGluZyBsb2dpYy4gTm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaW50cm9kdWNlZCwgYW5kIG5vIHN0cnVjdHVyZXMgYXJlIGNvcGllZCB0byB1c2VyIHNwYWNlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowx6h2l[1] Phase: Succeeded StartedAt: 2026-08-18 07:49:33 +0000 UTC FinishedAt: 2026-08-18 07:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-18 07:49:33 +0000 UTC FinishedAt: 2026-08-18 07:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2] Phase: Succeeded StartedAt: 2026-08-18 07:49:33 +0000 UTC FinishedAt: 2026-08-18 11:28:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-18 07:49:33 +0000 UTC FinishedAt: 2026-08-18 11:28:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-18 07:49:33 +0000 UTC FinishedAt: 2026-08-18 07:49:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-18 07:49:33 +0000 UTC FinishedAt: 2026-08-18 07:49:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowx6h2l/series-workflowx6h2l-convert-artifact-483237408/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-18 07:49:43 +0000 UTC FinishedAt: 2026-08-18 08:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-18 07:49:43 +0000 UTC FinishedAt: 2026-08-18 08:06:16 +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:*bfbeda1c-8329-4c99-8d7e-57c72d875a7a,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-workflowx6h2l/series-workflowx6h2l-convert-artifact-483237408/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": "f9d212e8-4285-4c83-9458-88fe55fe6299", "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-workflowx6h2l/series-workflowx6h2l-build-action-876510438/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-18 07:49:43 +0000 UTC FinishedAt: 2026-08-18 08:06: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:*bfbeda1c-8329-4c99-8d7e-57c72d875a7a,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-workflowx6h2l/series-workflowx6h2l-convert-artifact-483237408/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": "f9d212e8-4285-4c83-9458-88fe55fe6299", "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-workflowx6h2l/series-workflowx6h2l-build-action-876510438/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-18 08:06:16 +0000 UTC FinishedAt: 2026-08-18 08:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-18 08:06:16 +0000 UTC FinishedAt: 2026-08-18 08:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-18 08:06:16 +0000 UTC FinishedAt: 2026-08-18 08:06:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-18 08:06:16 +0000 UTC FinishedAt: 2026-08-18 08:06:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowx6h2l/series-workflowx6h2l-convert-artifact-3545623111/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-18 08:06:26 +0000 UTC FinishedAt: 2026-08-18 08:08:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-18 08:06:26 +0000 UTC FinishedAt: 2026-08-18 08:08:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f9d212e8-4285-4c83-9458-88fe55fe6299,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-workflowx6h2l/series-workflowx6h2l-build-action-876510438/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-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-18 08:08:35 +0000 UTC FinishedAt: 2026-08-18 08:08:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-18 08:08:35 +0000 UTC FinishedAt: 2026-08-18 08:08:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-18 08:08:35 +0000 UTC FinishedAt: 2026-08-18 08:25:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-18 08:08:35 +0000 UTC FinishedAt: 2026-08-18 08:25:11 +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:*bfbeda1c-8329-4c99-8d7e-57c72d875a7a,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-workflowx6h2l/series-workflowx6h2l-convert-artifact-3545623111/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": "61ee7998-21d1-488e-a02e-5220bd302a6e", "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-workflowx6h2l/series-workflowx6h2l-build-action-3023186379/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-18 08:08:35 +0000 UTC FinishedAt: 2026-08-18 08:25:01 +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:*bfbeda1c-8329-4c99-8d7e-57c72d875a7a,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-workflowx6h2l/series-workflowx6h2l-convert-artifact-3545623111/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": "61ee7998-21d1-488e-a02e-5220bd302a6e", "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-workflowx6h2l/series-workflowx6h2l-build-action-3023186379/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-18 08:25:11 +0000 UTC FinishedAt: 2026-08-18 08:25:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-18 08:25:11 +0000 UTC FinishedAt: 2026-08-18 08:25:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-18 08:25:11 +0000 UTC FinishedAt: 2026-08-18 08:27:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-18 08:25:11 +0000 UTC FinishedAt: 2026-08-18 08:26:52 +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:*61ee7998-21d1-488e-a02e-5220bd302a6e,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-workflowx6h2l/series-workflowx6h2l-build-action-3023186379/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-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-18 08:27:02 +0000 UTC FinishedAt: 2026-08-18 11:28:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-18 08:27:02 +0000 UTC FinishedAt: 2026-08-18 11:28:51 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"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:*f9d212e8-4285-4c83-9458-88fe55fe6299,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*61ee7998-21d1-488e-a02e-5220bd302a6e,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-workflowx6h2l/series-workflowx6h2l-build-action-876510438/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-workflowx6h2l/series-workflowx6h2l-build-action-3023186379/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-18 08:27:02 +0000 UTC FinishedAt: 2026-08-18 08:27:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-18 08:27:02 +0000 UTC FinishedAt: 2026-08-18 08:27:09 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"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-workflowx6h2l/series-workflowx6h2l-convert-artifact-1296704800/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-18 08:27:02 +0000 UTC FinishedAt: 2026-08-18 08:27:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-18 08:27:02 +0000 UTC FinishedAt: 2026-08-18 08:27:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-18 08:27:02 +0000 UTC FinishedAt: 2026-08-18 08:27:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-18 08:27:12 +0000 UTC FinishedAt: 2026-08-18 11:28:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx6h2l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d09c98a6da215bce2173a292e4b95c8de6ea5d51","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCH_TAPRIO"],"series_id":"2b5d2635-579e-4c7f-bf05-64bb8d35aa41","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-18 08:27:12 +0000 UTC FinishedAt: 2026-08-18 11:28:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f9d212e8-4285-4c83-9458-88fe55fe6299,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*61ee7998-21d1-488e-a02e-5220bd302a6e,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-workflowx6h2l/series-workflowx6h2l-build-action-876510438/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-workflowx6h2l/series-workflowx6h2l-build-action-3023186379/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-workflowx6h2l/series-workflowx6h2l-convert-artifact-1296704800/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,}