Name: series-workflowrs8bf Phase: Succeeded StartedAt: 2026-07-24 21:15:28 +0000 UTC FinishedAt: 2026-07-25 02:26:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[0] Phase: Succeeded StartedAt: 2026-07-24 21:15:28 +0000 UTC FinishedAt: 2026-07-24 21:40:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[0].run-triage Phase: Succeeded StartedAt: 2026-07-24 21:15:28 +0000 UTC FinishedAt: 2026-07-24 21:40:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "9eef63a7-e701-4129-be03-5cee36b6a453" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "advance_sched", "taprio_change", "taprio_enqueue", "taprio_dequeue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1RBUFJJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FkdmFuY2Vfc2NoZWQmIzM0OywKICAgICYjMzQ7dGFwcmlvX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZW5xdWV1ZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZGVxdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGFkdmFuY2Vfc2NoZWRgIGhydGltZXIgY2FsbGJhY2sgaW4gdGhlIHRhcHJpbyBuZXR3b3JrIHNjaGVkdWxlciAoVGltZS1Bd2FyZSBQcmlvcml0eSBTaGFwZXIpIHRvIHByZXZlbnQgc29mdGlycSBzdGFsbHMgYnkgYm91bmRpbmcgdGhlIHJldHJ5IGxvb3AgYW5kIGNvcnJlY3RseSBjYWxjdWxhdGluZyBgZ2F0ZV9jbG9zZV90aW1lYC4gVGhpcyBpcyBjb3JlIHJlYWNoYWJsZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNvbmZpZ3VyaW5nIHRoZSB0YXByaW8gcWRpc2MgYW5kIHNlbmRpbmcgdHJhZmZpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDhiMGUzMzM2OWY3MWQxMWUyZjg5YTYwZDJiYjY0NWZiYzkwNGUwMzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAyMTozOToxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuaW5kZXggMjk5MjM0YTVmMGZlNjAuLjhlOGJlNTY4ZGQyYTcwIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuQEAgLTkyMCwxMSAmIzQzOzkyMCwxNiBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4gXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgdGFwcmlvX3NjaGVkLFxuIFx0XHRcdFx0XHQgICAgICBhZHZhbmNlX3RpbWVyKTtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYocS1cdTAwM2Vyb290KTtcbiYjNDM7XHRib29sIGdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gZmFsc2U7XG4gXHRzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpvcGVyLCAqYWRtaW47XG4gXHRpbnQgbnVtX3RjID0gbmV0ZGV2X2dldF9udW1fdGMoZGV2KTtcbiYjNDM7XHRrdGltZV90IG5vdyA9IHRhcHJpb19nZXRfdGltZShxKTtcbiBcdHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksICpuZXh0O1xuIFx0c3RydWN0IFFkaXNjICpzY2ggPSBxLVx1MDAzZXJvb3Q7XG4mIzQzO1x0LyogU21hbGwgcmV0cnkgYm91bmQgdG8gYXZvaWQgc29mdGlycSBzdGFsbCAqL1xuJiM0MztcdGludCBtYXhfaXRlciA9IDMyO1xuIFx0a3RpbWVfdCBlbmRfdGltZTtcbiYjNDM7XHRrdGltZV90IGV4cGlyZXM7XG4gXHRpbnQgdGM7XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2cS1cdTAwM2VjdXJyZW50X2VudHJ5X2xvY2spO1xuQEAgLTk0OCw0NiAmIzQzOzk1Myw4NiBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4gXHRcdG5leHQgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNm9wZXItXHUwMDNlZW50cmllcywgc3RydWN0IHNjaGVkX2VudHJ5LFxuIFx0XHRcdFx0XHRsaXN0KTtcbiBcdFx0ZW5kX3RpbWUgPSBuZXh0LVx1MDAzZWVuZF90aW1lO1xuLVx0XHRnb3RvIGZpcnN0X3J1bjtcbiYjNDM7XHRcdGdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gdHJ1ZTtcbiYjNDM7XHRcdGlmIChrdGltZV9hZnRlcihlbmRfdGltZSwgbm93KSlcbiYjNDM7XHRcdFx0Z290byBmaXJzdF9ydW47XG4mIzQzO1x0XHRlbnRyeSA9IG5leHQ7XG4gXHR9XG4gXG4tXHRpZiAoc2hvdWxkX3Jlc3RhcnRfY3ljbGUob3BlciwgZW50cnkpKSB7XG4tXHRcdG5leHQgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNm9wZXItXHUwMDNlZW50cmllcywgc3RydWN0IHNjaGVkX2VudHJ5LFxuLVx0XHRcdFx0XHRsaXN0KTtcbi1cdFx0b3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLFxuLVx0XHRcdFx0XHRcdCAgICBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpO1xuLVx0fSBlbHNlIHtcbi1cdFx0bmV4dCA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4tXHR9XG4mIzQzO1x0ZG8ge1xuJiM0MztcdFx0a3RpbWVfdCBsaW1pdCA9IG5vdztcbiBcbi1cdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKGVudHJ5LVx1MDAzZWVuZF90aW1lLCBuZXh0LVx1MDAzZWludGVydmFsKTtcbi1cdGVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xuJiM0MztcdFx0aWYgKGFkbWluIFx1MDAyNlx1MDAyNiBrdGltZV9iZWZvcmUoYWRtaW4tXHUwMDNlYmFzZV90aW1lLCBsaW1pdCkpXG4mIzQzO1x0XHRcdGxpbWl0ID0gYWRtaW4tXHUwMDNlYmFzZV90aW1lO1xuIFxuLVx0Zm9yICh0YyA9IDA7IHRjIFx1MDAzYyBudW1fdGM7IHRjJiM0MzsmIzQzOykge1xuLVx0XHRpZiAobmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSA9PSBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpXG4tXHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYO1xuLVx0XHRlbHNlXG4tXHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKGVudHJ5LVx1MDAzZWVuZF90aW1lLFxuLVx0XHRcdFx0XHRcdFx0XHQgbmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSk7XG4tXHR9XG4mIzQzO1x0XHRpZiAob3Blci1cdTAwM2VjeWNsZV90aW1lIFx1MDAyNlx1MDAyNiBrdGltZV9hZnRlcihsaW1pdCwgb3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSkpIHtcbiYjNDM7XHRcdFx0czY0IGRpZmYgPSBrdGltZV9zdWIobGltaXQsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xuJiM0MztcdFx0XHRzNjQgY3ljbGVzID0gZGl2NjRfczY0KGRpZmYsIG9wZXItXHUwMDNlY3ljbGVfdGltZSkgJiM0MzsgMTtcbiBcbi1cdGlmIChzaG91bGRfY2hhbmdlX3NjaGVkdWxlcyhhZG1pbiwgb3BlciwgZW5kX3RpbWUpKSB7XG4tXHRcdHN3aXRjaF9zY2hlZHVsZXMocSwgXHUwMDI2YWRtaW4sIFx1MDAyNm9wZXIpO1xuLVx0XHQvKiBBZnRlciBjaGFuZ2luZyBzY2hlZHVsZXMsIHRoZSBuZXh0IGVudHJ5IGlzIHRoZSBmaXJzdCBvbmVcbi1cdFx0ICogaW4gdGhlIG5ldyBzY2hlZHVsZSwgd2l0aCBhIHByZS1jYWxjdWxhdGVkIGVuZF90aW1lLlxuLVx0XHQgKi9cbi1cdFx0bmV4dCA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2b3Blci1cdTAwM2VlbnRyaWVzLCBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpO1xuLVx0XHRlbmRfdGltZSA9IG5leHQtXHUwMDNlZW5kX3RpbWU7XG4mIzQzO1x0XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPVxuJiM0MztcdFx0XHRcdGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLFxuJiM0MztcdFx0XHRcdFx0ICAgICBjeWNsZXMgKiBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpO1xuJiM0MztcdFx0XHRlbnRyeS1cdTAwM2VlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgIGN5Y2xlcyAqIG9wZXItXHUwMDNlY3ljbGVfdGltZSk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWYgKHNob3VsZF9yZXN0YXJ0X2N5Y2xlKG9wZXIsIGVudHJ5KSkge1xuJiM0MztcdFx0XHRuZXh0ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMsXG4mIzQzO1x0XHRcdFx0XHRcdHN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7XG4mIzQzO1x0XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPVxuJiM0MztcdFx0XHRcdGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLFxuJiM0MztcdFx0XHRcdFx0ICAgICBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpO1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0bmV4dCA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW50cnktXHUwMDNlZW5kX3RpbWUsIG5leHQtXHUwMDNlaW50ZXJ2YWwpO1xuJiM0MztcdFx0ZW5kX3RpbWUgPSBtaW5fdChrdGltZV90LCBlbmRfdGltZSwgb3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGFkbWluLCBvcGVyLCBlbmRfdGltZSkpIHtcbiYjNDM7XHRcdFx0c3dpdGNoX3NjaGVkdWxlcyhxLCBcdTAwMjZhZG1pbiwgXHUwMDI2b3Blcik7XG4mIzQzO1x0XHRcdC8qIEFmdGVyIGNoYW5naW5nIHNjaGVkdWxlcywgdGhlIG5leHQgZW50cnkgaXMgdGhlIGZpcnN0IG9uZVxuJiM0MztcdFx0XHQgKiBpbiB0aGUgbmV3IHNjaGVkdWxlLCB3aXRoIGEgcHJlLWNhbGN1bGF0ZWQgZW5kX3RpbWUuXG4mIzQzO1x0XHRcdCAqL1xuJiM0MztcdFx0XHRuZXh0ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMsXG4mIzQzO1x0XHRcdFx0XHRcdHN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7XG4mIzQzO1x0XHRcdGVuZF90aW1lID0gbmV4dC1cdTAwM2VlbmRfdGltZTtcbiYjNDM7XHRcdFx0Z2F0ZV9jbG9zZV90aW1lX2NhbGN1bGF0ZWQgPSB0cnVlO1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0Z2F0ZV9jbG9zZV90aW1lX2NhbGN1bGF0ZWQgPSBmYWxzZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRuZXh0LVx1MDAzZWVuZF90aW1lID0gZW5kX3RpbWU7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGt0aW1lX2FmdGVyKGVuZF90aW1lLCBub3cpKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRlbnRyeSA9IG5leHQ7XG4mIzQzO1x0fSB3aGlsZSAoLS1tYXhfaXRlciBcdTAwM2UgMCk7XG4mIzQzO1xuJiM0MztcdGlmICghZ2F0ZV9jbG9zZV90aW1lX2NhbGN1bGF0ZWQpIHtcbiYjNDM7XHRcdGZvciAodGMgPSAwOyB0YyBcdTAwM2MgbnVtX3RjOyB0YyYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdFx0aWYgKG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci1cdTAwM2VjeWNsZV90aW1lKSB7XG4mIzQzO1x0XHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9XG4mIzQzO1x0XHRcdFx0XHRrdGltZV9hZGRfbnMoZW50cnktXHUwMDNlZW5kX3RpbWUsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgbmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSk7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH1cbiBcdH1cbiBcbi1cdG5leHQtXHUwMDNlZW5kX3RpbWUgPSBlbmRfdGltZTtcbiBcdHRhcHJpb19zZXRfYnVkZ2V0cyhxLCBvcGVyLCBuZXh0KTtcbiBcbiBmaXJzdF9ydW46XG4gXHRyY3VfYXNzaWduX3BvaW50ZXIocS1cdTAwM2VjdXJyZW50X2VudHJ5LCBuZXh0KTtcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNnEtXHUwMDNlY3VycmVudF9lbnRyeV9sb2NrKTtcbiBcbi1cdGhydGltZXJfc2V0X2V4cGlyZXMoXHUwMDI2cS1cdTAwM2VhZHZhbmNlX3RpbWVyLCBlbmRfdGltZSk7XG4mIzQzO1x0ZXhwaXJlcyA9IGVuZF90aW1lO1xuJiM0MztcdGlmICh1bmxpa2VseShtYXhfaXRlciA9PSAwIFx1MDAyNlx1MDAyNiBrdGltZV9iZWZvcmUoZXhwaXJlcywgbm93KSkpXG4mIzQzO1x0XHRleHBpcmVzID0ga3RpbWVfYWRkX25zKG5vdywgTlNFQ19QRVJfVVNFQyk7XG4mIzQzO1xuJiM0MztcdGhydGltZXJfc2V0X2V4cGlyZXMoXHUwMDI2cS1cdTAwM2VhZHZhbmNlX3RpbWVyLCBleHBpcmVzKTtcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdF9fbmV0aWZfc2NoZWR1bGUoc2NoKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfVEFQUklPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWR2YW5jZV9zY2hlZCYjMzQ7LAogICAgJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgICAmIzM0O3RhcHJpb19lbnF1ZXVlJiMzNDssCiAgICAmIzM0O3RhcHJpb19kZXF1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYWR2YW5jZV9zY2hlZGAgaHJ0aW1lciBjYWxsYmFjayBpbiB0aGUgdGFwcmlvIG5ldHdvcmsgc2NoZWR1bGVyIChUaW1lLUF3YXJlIFByaW9yaXR5IFNoYXBlcikgdG8gcHJldmVudCBzb2Z0aXJxIHN0YWxscyBieSBib3VuZGluZyB0aGUgcmV0cnkgbG9vcCBhbmQgY29ycmVjdGx5IGNhbGN1bGF0aW5nIGBnYXRlX2Nsb3NlX3RpbWVgLiBUaGlzIGlzIGNvcmUgcmVhY2hhYmxlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY29uZmlndXJpbmcgdGhlIHRhcHJpbyBxZGlzYyBhbmQgc2VuZGluZyB0cmFmZmljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGIwZTMzMzY5ZjcxZDExZTJmODlhNjBkMmJiNjQ1ZmJjOTA0ZTAzNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDI0IDIxOjM5OjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF90YXByaW8uYyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMKaW5kZXggMjk5MjM0YTVmMGZlNjAuLjhlOGJlNTY4ZGQyYTcwIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMKQEAgLTkyMCwxMSAmIzQzOzkyMCwxNiBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCiAJc3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCwKIAkJCQkJICAgICAgYWR2YW5jZV90aW1lcik7CiAJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHFkaXNjX2RldihxLSZndDtyb290KTsKJiM0MzsJYm9vbCBnYXRlX2Nsb3NlX3RpbWVfY2FsY3VsYXRlZCA9IGZhbHNlOwogCXN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm9wZXIsICphZG1pbjsKIAlpbnQgbnVtX3RjID0gbmV0ZGV2X2dldF9udW1fdGMoZGV2KTsKJiM0MzsJa3RpbWVfdCBub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7CiAJc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7CiAJc3RydWN0IFFkaXNjICpzY2ggPSBxLSZndDtyb290OwomIzQzOwkvKiBTbWFsbCByZXRyeSBib3VuZCB0byBhdm9pZCBzb2Z0aXJxIHN0YWxsICovCiYjNDM7CWludCBtYXhfaXRlciA9IDMyOwogCWt0aW1lX3QgZW5kX3RpbWU7CiYjNDM7CWt0aW1lX3QgZXhwaXJlczsKIAlpbnQgdGM7CiAKIAlzcGluX2xvY2soJmFtcDtxLSZndDtjdXJyZW50X2VudHJ5X2xvY2spOwpAQCAtOTQ4LDQ2ICYjNDM7OTUzLDg2IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcikKIAkJbmV4dCA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtvcGVyLSZndDtlbnRyaWVzLCBzdHJ1Y3Qgc2NoZWRfZW50cnksCiAJCQkJCWxpc3QpOwogCQllbmRfdGltZSA9IG5leHQtJmd0O2VuZF90aW1lOwotCQlnb3RvIGZpcnN0X3J1bjsKJiM0MzsJCWdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gdHJ1ZTsKJiM0MzsJCWlmIChrdGltZV9hZnRlcihlbmRfdGltZSwgbm93KSkKJiM0MzsJCQlnb3RvIGZpcnN0X3J1bjsKJiM0MzsJCWVudHJ5ID0gbmV4dDsKIAl9CiAKLQlpZiAoc2hvdWxkX3Jlc3RhcnRfY3ljbGUob3BlciwgZW50cnkpKSB7Ci0JCW5leHQgPSBsaXN0X2ZpcnN0X2VudHJ5KCZhbXA7b3Blci0mZ3Q7ZW50cmllcywgc3RydWN0IHNjaGVkX2VudHJ5LAotCQkJCQlsaXN0KTsKLQkJb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUsCi0JCQkJCQkgICAgb3Blci0mZ3Q7Y3ljbGVfdGltZSk7Ci0JfSBlbHNlIHsKLQkJbmV4dCA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7Ci0JfQomIzQzOwlkbyB7CiYjNDM7CQlrdGltZV90IGxpbWl0ID0gbm93OwogCi0JZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW50cnktJmd0O2VuZF90aW1lLCBuZXh0LSZndDtpbnRlcnZhbCk7Ci0JZW5kX3RpbWUgPSBtaW5fdChrdGltZV90LCBlbmRfdGltZSwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpOwomIzQzOwkJaWYgKGFkbWluICZhbXA7JmFtcDsga3RpbWVfYmVmb3JlKGFkbWluLSZndDtiYXNlX3RpbWUsIGxpbWl0KSkKJiM0MzsJCQlsaW1pdCA9IGFkbWluLSZndDtiYXNlX3RpbWU7CiAKLQlmb3IgKHRjID0gMDsgdGMgJmx0OyBudW1fdGM7IHRjJiM0MzsmIzQzOykgewotCQlpZiAobmV4dC0mZ3Q7Z2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci0mZ3Q7Y3ljbGVfdGltZSkKLQkJCW5leHQtJmd0O2dhdGVfY2xvc2VfdGltZVt0Y10gPSBLVElNRV9NQVg7Ci0JCWVsc2UKLQkJCW5leHQtJmd0O2dhdGVfY2xvc2VfdGltZVt0Y10gPSBrdGltZV9hZGRfbnMoZW50cnktJmd0O2VuZF90aW1lLAotCQkJCQkJCQkgbmV4dC0mZ3Q7Z2F0ZV9kdXJhdGlvblt0Y10pOwotCX0KJiM0MzsJCWlmIChvcGVyLSZndDtjeWNsZV90aW1lICZhbXA7JmFtcDsga3RpbWVfYWZ0ZXIobGltaXQsIG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lKSkgewomIzQzOwkJCXM2NCBkaWZmID0ga3RpbWVfc3ViKGxpbWl0LCBvcGVyLSZndDtjeWNsZV9lbmRfdGltZSk7CiYjNDM7CQkJczY0IGN5Y2xlcyA9IGRpdjY0X3M2NChkaWZmLCBvcGVyLSZndDtjeWNsZV90aW1lKSAmIzQzOyAxOwogCi0JaWYgKHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGFkbWluLCBvcGVyLCBlbmRfdGltZSkpIHsKLQkJc3dpdGNoX3NjaGVkdWxlcyhxLCAmYW1wO2FkbWluLCAmYW1wO29wZXIpOwotCQkvKiBBZnRlciBjaGFuZ2luZyBzY2hlZHVsZXMsIHRoZSBuZXh0IGVudHJ5IGlzIHRoZSBmaXJzdCBvbmUKLQkJICogaW4gdGhlIG5ldyBzY2hlZHVsZSwgd2l0aCBhIHByZS1jYWxjdWxhdGVkIGVuZF90aW1lLgotCQkgKi8KLQkJbmV4dCA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtvcGVyLSZndDtlbnRyaWVzLCBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpOwotCQllbmRfdGltZSA9IG5leHQtJmd0O2VuZF90aW1lOwomIzQzOwkJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0KJiM0MzsJCQkJa3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLAomIzQzOwkJCQkJICAgICBjeWNsZXMgKiBvcGVyLSZndDtjeWNsZV90aW1lKTsKJiM0MzsJCQllbnRyeS0mZ3Q7ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW50cnktJmd0O2VuZF90aW1lLAomIzQzOwkJCQkJCSAgICAgICBjeWNsZXMgKiBvcGVyLSZndDtjeWNsZV90aW1lKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWlmIChzaG91bGRfcmVzdGFydF9jeWNsZShvcGVyLCBlbnRyeSkpIHsKJiM0MzsJCQluZXh0ID0gbGlzdF9maXJzdF9lbnRyeSgmYW1wO29wZXItJmd0O2VudHJpZXMsCiYjNDM7CQkJCQkJc3RydWN0IHNjaGVkX2VudHJ5LCBsaXN0KTsKJiM0MzsJCQlvcGVyLSZndDtjeWNsZV9lbmRfdGltZSA9CiYjNDM7CQkJCWt0aW1lX2FkZF9ucyhvcGVyLSZndDtjeWNsZV9lbmRfdGltZSwKJiM0MzsJCQkJCSAgICAgb3Blci0mZ3Q7Y3ljbGVfdGltZSk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCW5leHQgPSBsaXN0X25leHRfZW50cnkoZW50cnksIGxpc3QpOwomIzQzOwkJfQomIzQzOwomIzQzOwkJZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW50cnktJmd0O2VuZF90aW1lLCBuZXh0LSZndDtpbnRlcnZhbCk7CiYjNDM7CQllbmRfdGltZSA9IG1pbl90KGt0aW1lX3QsIGVuZF90aW1lLCBvcGVyLSZndDtjeWNsZV9lbmRfdGltZSk7CiYjNDM7CiYjNDM7CQlpZiAoc2hvdWxkX2NoYW5nZV9zY2hlZHVsZXMoYWRtaW4sIG9wZXIsIGVuZF90aW1lKSkgewomIzQzOwkJCXN3aXRjaF9zY2hlZHVsZXMocSwgJmFtcDthZG1pbiwgJmFtcDtvcGVyKTsKJiM0MzsJCQkvKiBBZnRlciBjaGFuZ2luZyBzY2hlZHVsZXMsIHRoZSBuZXh0IGVudHJ5IGlzIHRoZSBmaXJzdCBvbmUKJiM0MzsJCQkgKiBpbiB0aGUgbmV3IHNjaGVkdWxlLCB3aXRoIGEgcHJlLWNhbGN1bGF0ZWQgZW5kX3RpbWUuCiYjNDM7CQkJICovCiYjNDM7CQkJbmV4dCA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtvcGVyLSZndDtlbnRyaWVzLAomIzQzOwkJCQkJCXN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7CiYjNDM7CQkJZW5kX3RpbWUgPSBuZXh0LSZndDtlbmRfdGltZTsKJiM0MzsJCQlnYXRlX2Nsb3NlX3RpbWVfY2FsY3VsYXRlZCA9IHRydWU7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gZmFsc2U7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQluZXh0LSZndDtlbmRfdGltZSA9IGVuZF90aW1lOwomIzQzOwomIzQzOwkJaWYgKGt0aW1lX2FmdGVyKGVuZF90aW1lLCBub3cpKQomIzQzOwkJCWJyZWFrOwomIzQzOwomIzQzOwkJZW50cnkgPSBuZXh0OwomIzQzOwl9IHdoaWxlICgtLW1heF9pdGVyICZndDsgMCk7CiYjNDM7CiYjNDM7CWlmICghZ2F0ZV9jbG9zZV90aW1lX2NhbGN1bGF0ZWQpIHsKJiM0MzsJCWZvciAodGMgPSAwOyB0YyAmbHQ7IG51bV90YzsgdGMmIzQzOyYjNDM7KSB7CiYjNDM7CQkJaWYgKG5leHQtJmd0O2dhdGVfZHVyYXRpb25bdGNdID09IG9wZXItJmd0O2N5Y2xlX3RpbWUpIHsKJiM0MzsJCQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0KJiM0MzsJCQkJCWt0aW1lX2FkZF9ucyhlbnRyeS0mZ3Q7ZW5kX3RpbWUsCiYjNDM7CQkJCQkJICAgICBuZXh0LSZndDtnYXRlX2R1cmF0aW9uW3RjXSk7CiYjNDM7CQkJfQomIzQzOwkJfQogCX0KIAotCW5leHQtJmd0O2VuZF90aW1lID0gZW5kX3RpbWU7CiAJdGFwcmlvX3NldF9idWRnZXRzKHEsIG9wZXIsIG5leHQpOwogCiBmaXJzdF9ydW46CiAJcmN1X2Fzc2lnbl9wb2ludGVyKHEtJmd0O2N1cnJlbnRfZW50cnksIG5leHQpOwogCXNwaW5fdW5sb2NrKCZhbXA7cS0mZ3Q7Y3VycmVudF9lbnRyeV9sb2NrKTsKIAotCWhydGltZXJfc2V0X2V4cGlyZXMoJmFtcDtxLSZndDthZHZhbmNlX3RpbWVyLCBlbmRfdGltZSk7CiYjNDM7CWV4cGlyZXMgPSBlbmRfdGltZTsKJiM0MzsJaWYgKHVubGlrZWx5KG1heF9pdGVyID09IDAgJmFtcDsmYW1wOyBrdGltZV9iZWZvcmUoZXhwaXJlcywgbm93KSkpCiYjNDM7CQlleHBpcmVzID0ga3RpbWVfYWRkX25zKG5vdywgTlNFQ19QRVJfVVNFQyk7CiYjNDM7CiYjNDM7CWhydGltZXJfc2V0X2V4cGlyZXMoJmFtcDtxLSZndDthZHZhbmNlX3RpbWVyLCBleHBpcmVzKTsKIAogCXJjdV9yZWFkX2xvY2soKTsKIAlfX25ldGlmX3NjaGVkdWxlKHNjaCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1ODYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB0YXByaW8gcWRpc2MgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gdGhlIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgdGhlIGBhZHZhbmNlX3NjaGVkYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgVGltZS1Bd2FyZSBQcmlvcml0eSBTaGFwZXIsIHRoZSBgdGFwcmlvYCBxZGlzYyDigJMgYSBjcml0aWNhbCBjb21wb25lbnQgZm9yIHRpbWUtc2Vuc2l0aXZlIG5ldHdvcmtpbmcuIFRoZSBtYWluIHRoaW5nIHRoZXkmIzM5O3JlIGFkZHJlc3NpbmcgaGVyZSBpcyBwb3RlbnRpYWwgc29mdGlycSBzdGFsbHMgd2hlbiBhZHZhbmNpbmcgdGhlIHNjaGVkdWxlLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLCBlc3BlY2lhbGx5IHVuZGVyIGxvYWQuIFRoaXMgcmV0cnkgbG9vcCwgd2l0aCB0aGUgYGRvLi4ud2hpbGVgIGNvbnN0cnVjdCBhbmQgYG1heF9pdGVyYCwgaXMgZGVmaW5pdGVseSB0aGUgaW50ZW5kZWQgZml4LiBNYWtlcyBzZW5zZSB0byBpdGVyYXRlIGEgZmV3IHRpbWVzIGlmIHRoZSB0aW1lciBmaXJlcyB1bmV4cGVjdGVkbHksIHdoaWNoIEkgb2Z0ZW4gc2VlIHdpdGggdGhlc2UgdHlwZXMgb2YgaW1wbGVtZW50YXRpb25zLiBFbnN1cmluZyBwcm9wZXIgY2FsY3VsYXRpb24gb2YgYGdhdGVfY2xvc2VfdGltZWAgaXMgYWxzbyBrZXkgdG8gYXZvaWRpbmcgc3luY2hyb25pemF0aW9uIGlzc3Vlcy4gVGhlIHBhdGNoIGFsc28gdGFja2xlcyB0aGUgc2NlbmFyaW8gd2hlcmUgdGhlIHRpbWVyIGdvZXMgb2ZmIGxhdGUsIHBvdGVudGlhbGx5IHNraXBwaW5nIG92ZXIgc2NoZWR1bGUgZW50cmllcy4KCkZ1bmN0aW9uYWxpdHktd2lzZSwgaXQgc291bmRzIHNvbGlkLiBJdCBhZGRyZXNzZXMgYSBrbm93biBpc3N1ZSB3aXRoaW4gdGhlIHRpbWUtc2Vuc2l0aXZlIG5ldHdvcmtpbmcgZG9tYWluLCBhbmQgdGhlIHRlY2huaXF1ZXMgc2VlbSBjb3JyZWN0IGZvciBmaXhpbmcgaXQuIEFuZCwgeWVzLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpbiBRRU1VLiBgdGFwcmlvYCBpcyBhIHN0YW5kYXJkIHFkaXNjIGluIHRoZSBMaW51eCBrZXJuZWwgbmV0d29yayBzY2hlZHVsZXIsIHNvIHNpbXVsYXRpbmcgaXQgaXMgbm8gcHJvYmxlbS4KCk5leHQsIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaW1lIHRvIGNoZWNrIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGFuZCBgS2NvbmZpZ2AgZm9yIHRoZSBgc2NoX3RhcHJpb2Agc3ltYm9sLiBUaGlzIHdpbGwgYWxsb3cgbWUgdG8gcHJvcGVybHkgc2V0IGl0IHVwIGluIG15IHRlc3QgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoX3RhcHJpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MTcyPWNvbmZpZyBORVRfU0NIX1RBUFJJT1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTE3OC1cbm5ldC9zY2hlZC9LY29uZmlnOjE3OTpcdCAgU2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXG5uZXQvc2NoZWQvS2NvbmZpZy0xODAtXG5uZXQvc2NoZWQvS2NvbmZpZy0xODEtXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbm5ldC9zY2hlZC9LY29uZmlnOjE4MjpcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF90YXByaW8uXG5uZXQvc2NoZWQvS2NvbmZpZy0xODMtXG4tLVxubmV0L3NjaGVkL01ha2VmaWxlPTYzPW9iai0kKENPTkZJR19ORVRfU0NIX0VURilcdCYjNDM7PSBzY2hfZXRmLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfTkVUX1NDSF9UQVBSSU8pXHQmIzQzOz0gc2NoX3RhcHJpby5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjUtb2JqLSQoQ09ORklHX05FVF9TQ0hfQlBGKVx0JiM0Mzs9IGJwZl9xZGlzYy5vXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzozOi8qIG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcdCBUaW1lIEF3YXJlIFByaW9yaXR5IFNjaGVkdWxlclxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00LSAqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQxMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczoKCioqRGVwZW5kZW5jaWVzLCBEZXBlbmRlbmNpZXMsIERlcGVuZGVuY2llcyEqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGBORVRfU0NIX1RBUFJJT2AgY29uZmlndXJhdGlvbiBvcHRpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBJIG5lZWQgdG8ga25vdyAqZXZlcnl0aGluZyogdGhpcyBoaW5nZXMgdXBvbi4gU28sIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIHRoaW5raW5nIGlzLCAmIzM0O1doYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBpbiBwbGFjZSBmb3IgdGhpcyB0byBldmVuICpiZSogYSB2YWxpZCBvcHRpb24sIGxldCBhbG9uZSBmdW5jdGlvbmFsPyYjMzQ7IEkmIzM5O20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSB0eXBpY2FsIGtlcm5lbCBjb25maWd1cmF0aW9uIGNoZWNrcyDigJMgbG9va2luZyBmb3IgYW55IG9idmlvdXMgcHJlLXJlcXVpc2l0ZXMgbGlrZSBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLCBvdGhlciBuZXR3b3JraW5nIGZlYXR1cmVzLCBvciBldmVuIGNvcmUga2VybmVsIGZ1bmN0aW9uYWxpdGllcyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZCBmaXJzdC4gSSB3YW50IHRvIGJ1aWxkIGEgY29tcGxldGUgcGljdHVyZSBvZiBpdHMgcGxhY2UgaW4gdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NDSF9UQVBSSU8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz0xNjc9Y29uZmlnIE5FVF9TQ0hfTVFQUklPX0xJQlxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTE3MS1cbm5ldC9zY2hlZC9LY29uZmlnOjE3Mjpjb25maWcgTkVUX1NDSF9UQVBSSU9cbm5ldC9zY2hlZC9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O1RpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcxNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHJlYWRpbmcgYW5kIHByb2Nlc3NpbmcgdGhlIHByb3ZpZGVkIHRleHQ6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwmIzM5O3MgVHJhZmZpYyBTaGFwaW5nIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGtlcm5lbCYjMzk7cyB0cmFmZmljIHNoYXBpbmcgZmVhdHVyZXMgYXJlIGNvbmZpZ3VyZWQuIEdpdmVuIG15IGJhY2tncm91bmQsIEkgYWxyZWFkeSBoYXZlIGEgZ29vZCBncmFzcCBvZiB0aGUgdW5kZXJseWluZyBjb25jZXB0cywgc28gSSBmaWd1cmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBLY29uZmlnIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgb25lIHJlbGF0ZWQgdG8gdGhlIG5ldHdvcmtpbmcgc2NoZWR1bGVyLiBJJiMzOTtsbCB6ZXJvIGluIG9uIGBuZXQvc2NoZWQvS2NvbmZpZ2AsIGFuZCBsZXQmIzM5O3Mgc3RhcnQgYXJvdW5kIGxpbmUgMTcyLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBlbnRyeSBwb2ludCB0byBzZWUgd2hhdCBvcHRpb25zIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyIGFuZCBob3cgdGhleSYjMzk7cmUgc3RydWN0dXJlZCwgYW5kIGZyb20gdGhlcmUgSSBjYW4gc3RhcnQgdG8gbWFwIG91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIHNjaGVkdWxpbmcgbG9naWMuIEkmIzM5O20gaG9waW5nIEkgY2FuIGdldCBhIGNsZWFyIG92ZXJ2aWV3IG9mIHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZSBhbmQgcGVyaGFwcyBpZGVudGlmeSBzb21lIGFyZWFzIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gb3Igb3B0aW1pemF0aW9uLCBtYXliZSBzcG90IGEgbm92ZWwgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCBJIGhhZG4mIzM5O3QgY29tZSBhY3Jvc3MgYmVmb3JlLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbiBhbmQgZ2V0IGEgZmVlbCBmb3IgdGhlIGRlc2lnbiBjaG9pY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2NTpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX2V0Zi5cbiAxNjY6XHRcbiAxNjc6XHRjb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXG4gMTY4Olx0XHR0cmlzdGF0ZVxuIDE2OTpcdFx0aGVscFxuIDE3MDpcdFx0ICBDb21tb24gbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIG1xcHJpbyBxdWV1ZSBjb25maWd1cmF0aW9ucy5cbiAxNzE6XHRcbiAxNzI6XHRjb25maWcgTkVUX1NDSF9UQVBSSU9cbiAxNzM6XHRcdHRyaXN0YXRlIFwmIzM0O1RpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXCYjMzQ7XG4gMTc0Olx0XHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXG4gMTc1Olx0XHRoZWxwXG4gMTc2Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxuIDE3NzpcdFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cbiAxNzg6XHRcbiAxNzk6XHRcdCAgU2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXG4gMTgwOlx0XG4gMTgxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAxODI6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF90YXByaW8uXG4gMTgzOlx0XG4gMTg0Olx0Y29uZmlnIE5FVF9TQ0hfR1JFRFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyODkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgRnV6emluZyBPcHBvcnR1bml0aWVzKioKCk9rYXksIHNvIHRoZSBwYXRjaCBpcyBmb2N1c2luZyBzb2xlbHkgb24gYE5FVF9TQ0hfTVFQUklPX0xJQmAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtXaHkgbm90IGNvbnNpZGVyIGBORVRfU0NIRURgPyYjMzQ7IEEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdCBgbmV0L3NjaGVkL0tjb25maWdgIGlzIGluY2x1ZGVkIHVuZGVyIGBORVRfU0NIRURgLCBzbyB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IGlzIGFsc28gZW5hYmxlZCB3aGVuIHNldHRpbmcgdXAgdGhlIGZ1enppbmcgdGFyZ2V0cy4gTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgYXJlIHJlbGV2YW50IHRvIHRoaXMgcGF0Y2ggYW5kIGFyZSBnb29kIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcuCgpUaGUgcGF0Y2ggbWVudGlvbnMgbW9kaWZpY2F0aW9ucyB0byBgYWR2YW5jZV9zY2hlZGAuIEdpdmVuIHRoYXQgaXQmIzM5O3MgcmVsYXRlZCB0byBzY2hlZHVsaW5nLCBteSBndXQgdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgYSB0aW1lciBjYWxsYmFjay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgdGltZXIgaXMgc2V0IHVwLCB3aGF0IHRyaWdnZXJzIGl0LiBMb29raW5nIGF0IHRoZSBjb2RlIGluIGBzY2hfdGFwcmlvLmNgLCBteSBtYWluIGZvY3VzIHdpbGwgYmUgdG8gZmluZCBhbmQgdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb25zIHRoYXQgY29uZmlndXJlIHRoZSBxZGlzYywgaG93IHRoZSBkYXRhIGZsb3dzIHdpdGhpbiB0aGUgZnVuY3Rpb25zIGFuZCB0aGUgY2FsbGJhY2tzIHRvIGJ1aWxkIGEgZ29vZCBmdXp6ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkdmFuY2Vfc2NoZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmM9ODg0PXN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTE3LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo5MTg6c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05MTkte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTg2Mj1zdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5OTYtXHQgICAgIWhydGltZXJfYWN0aXZlKFx1MDAyNnEtXHUwMDNlYWR2YW5jZV90aW1lcikpIHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTk5NzpcdFx0aHJ0aW1lcl9zZXR1cChcdTAwMjZxLVx1MDAzZWFkdmFuY2VfdGltZXIsIGFkdmFuY2Vfc2NoZWQsIHEtXHUwMDNlY2xvY2tpZCwgSFJUSU1FUl9NT0RFX0FCUyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5OTgtXHR9XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDE1LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDE2Olx0XHQvKiBOb3QgZ29pbmcgdG8gcmFjZSBhZ2FpbnN0IGFkdmFuY2Vfc2NoZWQoKSwgYnV0IHN0aWxsICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwMTctXHRcdGFkbWluID0gcmN1X3JlcGxhY2VfcG9pbnRlcihxLVx1MDAzZWFkbWluX3NjaGVkLCBuZXdfYWRtaW4sXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDIzLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDI0Olx0XHQvKiBQcm90ZWN0cyBhZ2FpbnN0IGFkdmFuY2Vfc2NoZWQoKSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDI1LVx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZxLVx1MDAzZWN1cnJlbnRfZW50cnlfbG9jaywgZmxhZ3MpO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjExMT1zdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTE5LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTIwOlx0aHJ0aW1lcl9zZXR1cChcdTAwMjZxLVx1MDAzZWFkdmFuY2VfdGltZXIsIGFkdmFuY2Vfc2NoZWQsIENMT0NLX1RBSSwgSFJUSU1FUl9NT0RFX0FCUyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxMjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMTIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGZ1bmN0aW9ucywgdGhpbmtpbmcgdGhlbSB0aHJvdWdoIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlLgoKKipEaXZpbmcgaW50byB0aGUgVEFQUklPIEFQSSoqCgpBbHJpZ2h0LCBzbyBpZiBJJiMzOTttIGJ1aWxkaW5nIHdpdGggdGhpcyBUQVBSSU8gbGlicmFyeSwgdGhlIGNvcmUgZnVuY3Rpb25zIEkmIzM5O2xsIG5lZWQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgYXJlIHVuZG91YnRlZGx5IGB0YXByaW9fY2hhbmdlYCwgYHRhcHJpb19pbml0YCwgYHRhcHJpb19lbnF1ZXVlYCwgYW5kIGB0YXByaW9fZGVxdWV1ZWAuIFRoZXNlIGFyZSB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludHMsIHRoZSBnZWFycyB0aGF0JiMzOTtsbCBkcml2ZSB0aGUgd2hvbGUgc2NoZWR1bGluZyBtZWNoYW5pc20uIEkgbmVlZCB0byBiZSAqaW50aW1hdGVseSogZmFtaWxpYXIgd2l0aCB0aGVpciBzaWduYXR1cmVzLCB0aGVpciBleHBlY3RlZCBiZWhhdmlvcnMsIGFuZCBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSBuZWVkIHRvIGRyaWxsIGludG8gdGhlIGRldGFpbHMuCgpMZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBBUEkgZW50cnkgcG9pbnRzIGZvciBUQVBSSU8uIFVuZGVyc3RhbmRpbmcgdGhlc2UgZm91ciBmdW5jdGlvbnMgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBUQVBSSU8gc3Vic3lzdGVtLiBJJiMzOTtsbCBuZWVkIHRvIGtub3c6CiogICBIb3cgZG9lcyBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gd29yaz8KKiAgIEhvdyBkbyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc2NoZWR1bGVyPwoqICAgSG93IGRvIEkgc2lnbmFsIGVycm9ycz8KKiAgIEhvdyBkb2VzIHRoZSBjaGFuZ2UgZnVuY3Rpb24gYmVoYXZlPyBEb2VzIGl0IGhhdmUgYW55IGltcGxpY2F0aW9ucyBvbiB0aGUgY3VycmVudGx5IHNjaGVkdWxlZCBkYXRhPwoqICAgSG93IGRvZXMgZW5xdWV1ZSBiZWhhdmUgYW5kIGhvdyBkbyBkaWZmZXJlbnQgZW5xdWV1ZXMgaW50ZXJhY3Q/CiogICBXaGF0IHBhcmFtZXRlcnMgYXJlIGludm9sdmVkLCBhbmQgd2hhdCBkb2VzIGVhY2ggb25lIHNpZ25pZnk/IEFyZSB0aGVyZSBhbnkgaW1wbGljaXQgZGVwZW5kZW5jaWVzPwoqICAgV2hhdCBzb3J0IG9mIGNvbnRleHQgaXMgcmVxdWlyZWQgZm9yIGVhY2ggY2FsbD8gVGhyZWFkcywgbG9ja3MsIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcz8KKiAgIEFuZCBmaW5hbGx5LCBhcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IGhpZGRlbiBhc3N1bXB0aW9ucyBhYm91dCB0aGUgZW52aXJvbm1lbnQgdGhpcyBjb2RlIHJ1bnMgaW4/IEkgbmVlZCB0byBhbmFseXplIHRob3NlIGRldGFpbHMsIHRoZXkgY291bGQgc2F2ZSBtZSBob3VycyBvZiBkZWJ1Z2dpbmcgbGF0ZXIgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RhcHJpb18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3ODIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMzQtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjM1OnN0YXRpYyBMSVNUX0hFQUQodGFwcmlvX2xpc3QpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzozNjpzdGF0aWMgc3RydWN0IHN0YXRpY19rZXlfZmFsc2UgdGFwcmlvX2hhdmVfYnJva2VuX21xcHJpbztcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6Mzc6c3RhdGljIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIHRhcHJpb19oYXZlX3dvcmtpbmdfbXFwcmlvO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0zOC1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTcyPXN0cnVjdCBzY2hlZF9nYXRlX2xpc3Qge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODctXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg4OnN0cnVjdCB0YXByaW9fc2NoZWQge1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy04OS1cdHN0cnVjdCBRZGlzYyAqKnFkaXNjcztcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNi1cdHN0cnVjdCBocnRpbWVyIGFkdmFuY2VfdGltZXI7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEwNzpcdHN0cnVjdCBsaXN0X2hlYWQgdGFwcmlvX2xpc3Q7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwOC1cdGludCBjdXJfdHhxW1RDX01BWF9RVUVVRV07XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTMtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExNDpzdHJ1Y3QgX190Y190YXByaW9fcW9wdF9vZmZsb2FkIHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTE1LVx0cmVmY291bnRfdCB1c2Vycztcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTE2Olx0c3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgb2ZmbG9hZDtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTE3LX07XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTE5OnN0YXRpYyB2b2lkIHRhcHJpb19jYWxjdWxhdGVfZ2F0ZV9kdXJhdGlvbnMoc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTIwLVx0XHRcdFx0XHQgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjMtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2NDpzdGF0aWMgYm9vbCB0YXByaW9fZW50cnlfYWxsb3dzX3R4KGt0aW1lX3Qgc2tiX2VuZF90aW1lLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjUtXHRcdFx0XHQgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBpbnQgdGMpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0xNzA9c3RhdGljIGt0aW1lX3Qgc2NoZWRfYmFzZV90aW1lKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc3LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzg6c3RhdGljIGt0aW1lX3QgdGFwcmlvX21vbm9fdG9fYW55KGNvbnN0IHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIGt0aW1lX3QgbW9ubylcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc5LXtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTgwOlx0LyogVGhpcyBwYWlycyB3aXRoIFdSSVRFX09OQ0UoKSBpbiB0YXByaW9fcGFyc2VfY2xvY2tpZCgpICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4MS1cdGVudW0gdGtfb2Zmc2V0cyB0a19vZmZzZXQgPSBSRUFEX09OQ0UocS1cdTAwM2V0a19vZmZzZXQpO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTkwLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxOTE6c3RhdGljIGt0aW1lX3QgdGFwcmlvX2dldF90aW1lKGNvbnN0IHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5Mi17XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5MzpcdHJldHVybiB0YXByaW9fbW9ub190b19hbnkocSwga3RpbWVfZ2V0KCkpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTQtfVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTUtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5NjpzdGF0aWMgdm9pZCB0YXByaW9fZnJlZV9zY2hlZF9jYihzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5Ny17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDgtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIwOTpzdGF0aWMgdm9pZCBzd2l0Y2hfc2NoZWR1bGVzKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxMC1cdFx0XHQgICAgIHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKiphZG1pbixcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxNi1cdGlmICgqb3Blcilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjE3Olx0XHRjYWxsX3JjdShcdTAwMjYoKm9wZXIpLVx1MDAzZXJjdSwgdGFwcmlvX2ZyZWVfc2NoZWRfY2IpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTgtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yMzU9c3RhdGljIGt0aW1lX3QgZ2V0X2ludGVydmFsX2VuZF90aW1lKHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU2LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNTc6c3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU4LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjYyOnN0YXRpYyBpbnQgZHVyYXRpb25fdG9fbGVuZ3RoKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHU2NCBkdXJhdGlvbilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYzLXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI3MC0gKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjcxOnN0YXRpYyB2b2lkIHRhcHJpb191cGRhdGVfcXVldWVfbWF4X3NkdShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNzItXHRcdFx0XHRcdHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MzIzPXN0YXRpYyBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmZpbmRfZW50cnlfdG9fdHJhbnNtaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTMzNC1cdHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnkgPSBOVUxMLCAqZW50cnlfZm91bmQgPSBOVUxMO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzozMzU6XHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0zMzYtXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHNjaCk7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz00MDA9c3RhdGljIGJvb2wgaXNfdmFsaWRfaW50ZXJ2YWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQwMS17XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjQwMjpcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQwMy1cdHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLCAqYWRtaW47XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00MTgtLyogVGhpcyByZXR1cm5zIHRoZSB0c3RhbXAgdmFsdWUgc2V0IGJ5IFRDUCBpbiB0ZXJtcyBvZiB0aGUgc2V0IGNsb2NrLiAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo0MTk6c3RhdGljIGt0aW1lX3QgZ2V0X3RjcF90c3RhbXAoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNDIwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQ0OS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NDUwOlx0cmV0dXJuIHRhcHJpb19tb25vX3RvX2FueShxLCBza2ItXHUwMDNlc2tiX21zdGFtcF9ucyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQ1MS19XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz00Njg9c3RhdGljIGxvbmcgZ2V0X3BhY2tldF90eHRpbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00NzAtXHRrdGltZV90IHRyYW5zbWl0X2VuZF90aW1lLCBpbnRlcnZhbF9lbmQsIGludGVydmFsX3N0YXJ0LCB0Y3BfdHN0YW1wO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo0NzE6XHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy00NzItXHRzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCwgKmFkbWluO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNDc3LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo0Nzg6XHRub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQ3OS1cdG1pbmltdW1fdGltZSA9IGt0aW1lX2FkZF9ucyhub3csIHEtXHUwMDNldHh0aW1lX2RlbGF5KTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTUzOS0vKiBEZXZpY2VzIHdpdGggZnVsbCBvZmZsb2FkIGFyZSBleHBlY3RlZCB0byBob25vciB0aGlzIGluIGhhcmR3YXJlICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjU0MDpzdGF0aWMgYm9vbCB0YXByaW9fc2tiX2V4Y2VlZHNfcXVldWVfbWF4X3NkdShzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNTQxLVx0XHRcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU0Mi17XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjU0MzpcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU0NC1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU2MC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NTYxOnN0YXRpYyBpbnQgdGFwcmlvX2VucXVldWVfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01NjItXHRcdFx0ICAgICAgc3RydWN0IFFkaXNjICpjaGlsZCwgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01NjMte1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo1NjQ6XHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy01NjUtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01ODEtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjU4MjpzdGF0aWMgaW50IHRhcHJpb19lbnF1ZXVlX3NlZ21lbnRlZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNTgzLVx0XHRcdFx0ICAgIHN0cnVjdCBRZGlzYyAqY2hpbGQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MDMtXHRcdCAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2MDQ6XHRcdGlmICh0YXByaW9fc2tiX2V4Y2VlZHNfcXVldWVfbWF4X3NkdShzY2gsIHNlZ3MpKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MDUtXHRcdFx0cmV0ID0gcWRpc2NfZHJvcChzZWdzLCBzY2gsIHRvX2ZyZWUpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MDYtXHRcdGVsc2Vcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjA3Olx0XHRcdHJldCA9IHRhcHJpb19lbnF1ZXVlX29uZShzZWdzLCBzY2gsIGNoaWxkLCB0b19mcmVlKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjA4LVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjI2LSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2Mjc6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjI4LVx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02Mjkte1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2MzA6XHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MzEtXHRzdHJ1Y3QgUWRpc2MgKmNoaWxkO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjM5LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2NDA6XHRpZiAodGFwcmlvX3NrYl9leGNlZWRzX3F1ZXVlX21heF9zZHUoc2NoLCBza2IpKSB7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY0MS1cdFx0LyogTGFyZ2UgcGFja2V0cyBtaWdodCBub3QgYmUgdHJhbnNtaXR0ZWQgd2hlbiB0aGUgdHJhbnNtaXNzaW9uXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NDYtXHRcdGlmIChza2JfaXNfZ3NvKHNrYikpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY0NzpcdFx0XHRyZXR1cm4gdGFwcmlvX2VucXVldWVfc2VnbWVudGVkKHNrYiwgc2NoLCBjaGlsZCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjQ4LVx0XHRcdFx0XHRcdFx0dG9fZnJlZSk7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NTItXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY1MzpcdHJldHVybiB0YXByaW9fZW5xdWV1ZV9vbmUoc2tiLCBzY2gsIGNoaWxkLCB0b19mcmVlKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjU0LX1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjU1LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2NTY6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fcGVlayhzdHJ1Y3QgUWRpc2MgKnNjaClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjU3LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY2MS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjYyOnN0YXRpYyB2b2lkIHRhcHJpb19zZXRfYnVkZ2V0cyhzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NjMtXHRcdFx0ICAgICAgIHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjgyLS8qIFdoZW4gYW4gc2tiIGlzIHNlbnQsIGl0IGNvbnN1bWVzIGZyb20gdGhlIGJ1ZGdldCBvZiBhbGwgdHJhZmZpYyBjbGFzc2VzICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY4MzpzdGF0aWMgaW50IHRhcHJpb191cGRhdGVfYnVkZ2V0cyhzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBzaXplX3QgbGVuLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02ODQtXHRcdFx0XHQgaW50IHRjX2NvbnN1bWVkLCBpbnQgbnVtX3RjKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzA1LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3MDY6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZV9mcm9tX3R4cShzdHJ1Y3QgUWRpc2MgKnNjaCwgaW50IHR4cSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzA3LVx0XHRcdFx0XHQgICAgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTcwOS17XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjcxMDpcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTcxMS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTczNi1cdGxlbiA9IHFkaXNjX3BrdF9sZW4oc2tiKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NzM3Olx0Z3VhcmQgPSBrdGltZV9hZGRfbnModGFwcmlvX2dldF90aW1lKHEpLCBsZW5ndGhfdG9fZHVyYXRpb24ocSwgbGVuKSk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTczOC1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc0Mi1cdGlmIChnYXRlX21hc2sgIT0gVEFQUklPX0FMTF9HQVRFU19PUEVOIFx1MDAyNlx1MDAyNlxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3NDM6XHQgICAgIXRhcHJpb19lbnRyeV9hbGxvd3NfdHgoZ3VhcmQsIGVudHJ5LCB0YykpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc0NC1cdFx0cmV0dXJuIE5VTEw7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03NDctXHRpZiAoZ2F0ZV9tYXNrICE9IFRBUFJJT19BTExfR0FURVNfT1BFTiBcdTAwMjZcdTAwMjZcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NzQ4Olx0ICAgIHRhcHJpb191cGRhdGVfYnVkZ2V0cyhlbnRyeSwgbGVuLCB0YywgbnVtX3RjKSBcdTAwM2MgMClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzQ5LVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc2Mi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NzYzOnN0YXRpYyB2b2lkIHRhcHJpb19uZXh0X3RjX3R4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgdGMsIGludCAqdHhxKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03NjQte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzc1LSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3NzY6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZV90Y19wcmlvcml0eShzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzc3LVx0XHRcdFx0XHRcdCAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc3OS17XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjc4MDpcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc4MS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc5Mi1cdFx0ZG8ge1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3OTM6XHRcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfZnJvbV90eHEoc2NoLCBxLVx1MDAzZWN1cl90eHFbdGNdLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03OTQtXHRcdFx0XHRcdFx0ICAgICAgZW50cnksIGdhdGVfbWFzayk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc5NS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6Nzk2Olx0XHRcdHRhcHJpb19uZXh0X3RjX3R4cShkZXYsIHRjLCBcdTAwMjZxLVx1MDAzZWN1cl90eHFbdGNdKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzk3LVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODExLSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4MTI6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZV90eHFfcHJpb3JpdHkoc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTgxMy1cdFx0XHRcdFx0XHQgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODIwLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZGV2LVx1MDAzZW51bV90eF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjgyMTpcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfZnJvbV90eHEoc2NoLCBpLCBlbnRyeSwgZ2F0ZV9tYXNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODIyLVx0XHRpZiAoc2tiKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODMxLSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4MzI6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODMzLXtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODM0Olx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODM1LVx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NDktXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg1MDpcdGlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KFx1MDAyNnRhcHJpb19oYXZlX2Jyb2tlbl9tcXByaW8pIFx1MDAyNlx1MDAyNlxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NTE6XHQgICAgIXN0YXRpY19icmFuY2hfbGlrZWx5KFx1MDAyNnRhcHJpb19oYXZlX3dvcmtpbmdfbXFwcmlvKSkge1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NTItXHRcdC8qIFNpbmdsZSBOSUMga2luZCB3aGljaCBpcyBicm9rZW4gKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODUzOlx0XHRza2IgPSB0YXByaW9fZGVxdWV1ZV90eHFfcHJpb3JpdHkoc2NoLCBlbnRyeSwgZ2F0ZV9tYXNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODU0Olx0fSBlbHNlIGlmIChzdGF0aWNfYnJhbmNoX2xpa2VseShcdTAwMjZ0YXByaW9faGF2ZV93b3JraW5nX21xcHJpbykgXHUwMDI2XHUwMDI2XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg1NTpcdFx0ICAgIXN0YXRpY19icmFuY2hfdW5saWtlbHkoXHUwMDI2dGFwcmlvX2hhdmVfYnJva2VuX21xcHJpbykpIHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODU2LVx0XHQvKiBTaW5nbGUgTklDIGtpbmQgd2hpY2ggcHJpb3JpdGl6ZXMgcHJvcGVybHkgKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODU3Olx0XHRza2IgPSB0YXByaW9fZGVxdWV1ZV90Y19wcmlvcml0eShzY2gsIGVudHJ5LCBnYXRlX21hc2spO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NTgtXHR9IGVsc2Uge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODYwLVx0XHRpZiAocS1cdTAwM2Vicm9rZW5fbXFwcmlvKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NjE6XHRcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdHhxX3ByaW9yaXR5KHNjaCwgZW50cnksIGdhdGVfbWFzayk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg2Mi1cdFx0ZWxzZVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NjM6XHRcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdGNfcHJpb3JpdHkoc2NoLCBlbnRyeSwgZ2F0ZV9tYXNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODY0LVx0fVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9OTE4PXN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTE5LXtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6OTIwOlx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTIxLVx0XHRcdFx0XHQgICAgICBhZHZhbmNlX3RpbWVyKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTkyNS1cdGludCBudW1fdGMgPSBuZXRkZXZfZ2V0X251bV90YyhkZXYpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo5MjY6XHRrdGltZV90IG5vdyA9IHRhcHJpb19nZXRfdGltZShxKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTI3LVx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMDI0LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMDI1Olx0dGFwcmlvX3NldF9idWRnZXRzKHEsIG9wZXIsIG5leHQpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMDI2LVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTA0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZW50cnlfcG9saWN5W1RDQV9UQVBSSU9fU0NIRURfRU5UUllfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA1MC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTA1MTpzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdGFwcmlvX3RjX3BvbGljeVtUQ0FfVEFQUklPX1RDX0VOVFJZX01BWCAmIzQzOyAxXSA9IHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA1Mi1cdFtUQ0FfVEFQUklPX1RDX0VOVFJZX0lOREVYXVx0ICAgPSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA1OS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTA2MDpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbl9zaWduZWQgdGFwcmlvX2N5Y2xlX3RpbWVfcmFuZ2UgPSB7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNjEtXHQubWluID0gMCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNjQtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEwNjU6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHRhcHJpb19wb2xpY3lbVENBX1RBUFJJT19BVFRSX01BWCAmIzQzOyAxXSA9IHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA2Ni1cdFtUQ0FfVEFQUklPX0FUVFJfUFJJT01BUF1cdCAgICAgICA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNzMtXHRbVENBX1RBUFJJT19BVFRSX1NDSEVEX0NZQ0xFX1RJTUVdICAgICAgICAgICA9XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEwNzQ6XHRcdE5MQV9QT0xJQ1lfRlVMTF9SQU5HRV9TSUdORUQoTkxBX1M2NCwgXHUwMDI2dGFwcmlvX2N5Y2xlX3RpbWVfcmFuZ2UpLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMDc1LVx0W1RDQV9UQVBSSU9fQVRUUl9TQ0hFRF9DWUNMRV9USU1FX0VYVEVOU0lPTl0gPSB7IC50eXBlID0gTkxBX1M2NCB9LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA4MS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTA4MjpzdGF0aWMgaW50IGZpbGxfc2NoZWRfZW50cnkoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMDgzLVx0XHRcdCAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTExMy1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTExNDpzdGF0aWMgaW50IHBhcnNlX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKm4sXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExMTUtXHRcdFx0ICAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBpbnQgaW5kZXgsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTMyLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTMzOnN0YXRpYyBpbnQgcGFyc2Vfc2NoZWRfbGlzdChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICpsaXN0LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTM0LVx0XHRcdCAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNzItXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExNzM6c3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTc0LVx0XHRcdFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm5ldyxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyMTgtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEyMTk6XHR0YXByaW9fY2FsY3VsYXRlX2dhdGVfZHVyYXRpb25zKHEsIG5ldyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyMjAtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjIzLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMjI0OnN0YXRpYyBpbnQgdGFwcmlvX3BhcnNlX21xcHJpb19vcHQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTIyNS1cdFx0XHRcdCAgIHN0cnVjdCB0Y19tcXByaW9fcW9wdCAqcW9wdCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTIyNi1cdFx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTIyNzpcdFx0XHRcdCAgIHUzMiB0YXByaW9fZmxhZ3MpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyMjgte1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMjI5Olx0Ym9vbCBhbGxvd19vdmVybGFwcGluZ190eHFzID0gVFhUSU1FX0FTU0lTVF9JU19FTkFCTEVEKHRhcHJpb19mbGFncyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyMzAtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjUxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMjUyOnN0YXRpYyBpbnQgdGFwcmlvX2dldF9zdGFydF90aW1lKHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjUzLVx0XHRcdFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI1NS17XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEyNTY6XHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjU3LVx0a3RpbWVfdCBub3csIGJhc2UsIGN5Y2xlO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI2MC1cdGJhc2UgPSBzY2hlZF9iYXNlX3RpbWUoc2NoZWQpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMjYxOlx0bm93ID0gdGFwcmlvX2dldF90aW1lKHEpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjYyLVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI4NS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTI4NjpzdGF0aWMgdm9pZCBzZXR1cF9maXJzdF9lbmRfdGltZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjg3LVx0XHRcdFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLCBrdGltZV90IGJhc2UpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzAzLVx0Zmlyc3QtXHUwMDNlZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoYmFzZSwgZmlyc3QtXHUwMDNlaW50ZXJ2YWwpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzA0Olx0dGFwcmlvX3NldF9idWRnZXRzKHEsIHNjaGVkLCBmaXJzdCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzMDUtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzE1LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzE2OnN0YXRpYyB2b2lkIHRhcHJpb19zdGFydF9zY2hlZChzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTMxNy1cdFx0XHQgICAgICAga3RpbWVfdCBzdGFydCwgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqbmV3KVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzE4LXtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTMxOTpcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzMjAtXHRrdGltZV90IGV4cGlyZXM7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzM3LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzM4OnN0YXRpYyB2b2lkIHRhcHJpb19zZXRfcGljb3NfcGVyX2J5dGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTMzOTpcdFx0XHRcdCAgICAgIHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzNDAtXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzcxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzcyOnN0YXRpYyBpbnQgdGFwcmlvX2Rldl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzczLVx0XHRcdCAgICAgICB2b2lkICpwdHIpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzc3LVx0c3RydWN0IHFkaXNjX3NpemVfdGFibGUgKnN0YWI7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzNzg6XHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzc5LVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTM4NC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTM4NTpcdGxpc3RfZm9yX2VhY2hfZW50cnkocSwgXHUwMDI2dGFwcmlvX2xpc3QsIHRhcHJpb19saXN0KSB7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzODYtXHRcdGlmIChkZXYgIT0gcWRpc2NfZGV2KHEtXHUwMDNlcm9vdCkpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzg4LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzg5Olx0XHR0YXByaW9fc2V0X3BpY29zX3Blcl9ieXRlKGRldiwgcSwgTlVMTCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzOTAtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzk1LVx0XHRpZiAob3Blcilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTM5NjpcdFx0XHR0YXByaW9fdXBkYXRlX3F1ZXVlX21heF9zZHUocSwgb3Blciwgc3RhYik7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzOTctXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzk5LVx0XHRpZiAoYWRtaW4pXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0MDA6XHRcdFx0dGFwcmlvX3VwZGF0ZV9xdWV1ZV9tYXhfc2R1KHEsIGFkbWluLCBzdGFiKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQwMS1cdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDA4LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDA5OnN0YXRpYyB2b2lkIHNldHVwX3R4dGltZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDEwLVx0XHRcdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCwga3RpbWVfdCBiYXNlKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQyMC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQyMTpzdGF0aWMgc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKnRhcHJpb19vZmZsb2FkX2FsbG9jKGludCBudW1fZW50cmllcylcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQyMi17XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0MjM6XHRzdHJ1Y3QgX190Y190YXByaW9fcW9wdF9vZmZsb2FkICpfX29mZmxvYWQ7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0MjQtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDMzLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDM0OnN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICp0YXByaW9fb2ZmbG9hZF9nZXQoc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWRcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQzNS1cdFx0XHRcdFx0XHQgICpvZmZsb2FkKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDM2LXtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQzNzpcdHN0cnVjdCBfX3RjX3RhcHJpb19xb3B0X29mZmxvYWQgKl9fb2ZmbG9hZDtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQzOC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQzOTpcdF9fb2ZmbG9hZCA9IGNvbnRhaW5lcl9vZihvZmZsb2FkLCBzdHJ1Y3QgX190Y190YXByaW9fcW9wdF9vZmZsb2FkLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDQwLVx0XHRcdFx0IG9mZmxvYWQpO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ0NS19XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0NDY6RVhQT1JUX1NZTUJPTF9HUEwodGFwcmlvX29mZmxvYWRfZ2V0KTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ0Ny1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQ0ODp2b2lkIHRhcHJpb19vZmZsb2FkX2ZyZWUoc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKm9mZmxvYWQpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NDkte1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDUwOlx0c3RydWN0IF9fdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqX19vZmZsb2FkO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDUxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDUyOlx0X19vZmZsb2FkID0gY29udGFpbmVyX29mKG9mZmxvYWQsIHN0cnVjdCBfX3RjX3RhcHJpb19xb3B0X29mZmxvYWQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NTMtXHRcdFx0XHQgb2ZmbG9hZCk7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDU5LX1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQ2MDpFWFBPUlRfU1lNQk9MX0dQTCh0YXByaW9fb2ZmbG9hZF9mcmVlKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ2MS1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NzMtICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0NzQ6c3RhdGljIHZvaWQgdGFwcmlvX29mZmxvYWRfY29uZmlnX2NoYW5nZWQoc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ3NS17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0xNDg0PXN0YXRpYyB1MzIgdGNfbWFwX3RvX3F1ZXVlX21hc2soc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHRjX21hc2spXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTAyLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTAzOnN0YXRpYyB2b2lkIHRhcHJpb19zY2hlZF90b19vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MDQtXHRcdFx0XHQgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1MDU6XHRcdFx0XHQgICAgc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKm9mZmxvYWQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1MDY6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHRjX3RhcHJpb19jYXBzICpjYXBzKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTA3LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MTUtXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGVudHJ5LCBcdTAwMjZzY2hlZC1cdTAwM2VlbnRyaWVzLCBsaXN0KSB7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1MTY6XHRcdHN0cnVjdCB0Y190YXByaW9fc2NoZWRfZW50cnkgKmUgPSBcdTAwMjZvZmZsb2FkLVx1MDAzZWVudHJpZXNbaV07XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MTctXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTMxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTMyOnN0YXRpYyB2b2lkIHRhcHJpb19kZXRlY3RfYnJva2VuX21xcHJpbyhzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTMzLXtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTUzNC1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYocS1cdTAwM2Vyb290KTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTUzNTpcdHN0cnVjdCB0Y190YXByaW9fY2FwcyBjYXBzO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTM2LVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU0MS1cdGlmIChxLVx1MDAzZWJyb2tlbl9tcXByaW8pXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1NDI6XHRcdHN0YXRpY19icmFuY2hfaW5jKFx1MDAyNnRhcHJpb19oYXZlX2Jyb2tlbl9tcXByaW8pO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTQzLVx0ZWxzZVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTQ0Olx0XHRzdGF0aWNfYnJhbmNoX2luYyhcdTAwMjZ0YXByaW9faGF2ZV93b3JraW5nX21xcHJpbyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NDUtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTQ4LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTQ5OnN0YXRpYyB2b2lkIHRhcHJpb19jbGVhbnVwX2Jyb2tlbl9tcXByaW8oc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU1MC17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTU0LVx0aWYgKHEtXHUwMDNlYnJva2VuX21xcHJpbylcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU1NTpcdFx0c3RhdGljX2JyYW5jaF9kZWMoXHUwMDI2dGFwcmlvX2hhdmVfYnJva2VuX21xcHJpbyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NTYtXHRlbHNlXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1NTc6XHRcdHN0YXRpY19icmFuY2hfZGVjKFx1MDAyNnRhcHJpb19oYXZlX3dvcmtpbmdfbXFwcmlvKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU1OC19XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NTktXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1NjA6c3RhdGljIGludCB0YXByaW9fZW5hYmxlX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU2MTpcdFx0XHRcdCBzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTYyLVx0XHRcdFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU2NS1cdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyAqb3BzID0gZGV2LVx1MDAzZW5ldGRldl9vcHM7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1NjY6XHRzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqb2ZmbG9hZDtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU2NzpcdHN0cnVjdCB0Y190YXByaW9fY2FwcyBjYXBzO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTY4LVx0aW50IHRjLCBlcnIgPSAwO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU4OC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU4OTpcdG9mZmxvYWQgPSB0YXByaW9fb2ZmbG9hZF9hbGxvYyhzY2hlZC1cdTAwM2VudW1fZW50cmllcyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1OTAtXHRpZiAoIW9mZmxvYWQpIHtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1OTgtXHRvZmZsb2FkLVx1MDAzZW1xcHJpby5leHRhY2sgPSBleHRhY2s7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1OTk6XHR0YXByaW9fc2NoZWRfdG9fb2ZmbG9hZChkZXYsIHNjaGVkLCBvZmZsb2FkLCBcdTAwMjZjYXBzKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYwMC1cdG1xcHJpb19mcF90b19vZmZsb2FkKHEtXHUwMDNlZnAsIFx1MDAyNm9mZmxvYWQtXHUwMDNlbXFwcmlvKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MjAtXHRvZmZsb2FkLVx1MDAzZW1xcHJpby5leHRhY2sgPSBOVUxMO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjIxOlx0dGFwcmlvX29mZmxvYWRfZnJlZShvZmZsb2FkKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYyMi1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MjUtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2MjY6c3RhdGljIGludCB0YXByaW9fZGlzYWJsZV9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2Mjc6XHRcdFx0XHQgIHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MjgtXHRcdFx0XHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MzAtXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgKm9wcyA9IGRldi1cdTAwM2VuZXRkZXZfb3BzO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjMxOlx0c3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKm9mZmxvYWQ7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MzItXHRpbnQgZXJyO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYzNi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTYzNzpcdG9mZmxvYWQgPSB0YXByaW9fb2ZmbG9hZF9hbGxvYygwKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYzOC1cdGlmICghb2ZmbG9hZCkge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY1NC1vdXQ6XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2NTU6XHR0YXByaW9fb2ZmbG9hZF9mcmVlKG9mZmxvYWQpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjU2LVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY2Ni0gKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTY2NzpzdGF0aWMgaW50IHRhcHJpb19wYXJzZV9jbG9ja2lkKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2NjgtXHRcdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2Njkte1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjcwOlx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY3MS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3MjgtXHRcdH1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTcyOTpcdFx0LyogVGhpcyBwYWlycyB3aXRoIFJFQURfT05DRSgpIGluIHRhcHJpb19tb25vX3RvX2FueSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzMwLVx0XHRXUklURV9PTkNFKHEtXHUwMDNldGtfb2Zmc2V0LCB0a19vZmZzZXQpO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc0NC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTc0NTpzdGF0aWMgaW50IHRhcHJpb19wYXJzZV90Y19lbnRyeShzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc0Ni1cdFx0XHRcdCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzU3LVx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZCh0YiwgVENBX1RBUFJJT19UQ19FTlRSWV9NQVgsIG9wdCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTc1ODpcdFx0XHQgICAgICAgdGFwcmlvX3RjX3BvbGljeSwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc1OS1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzkxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzkyOnN0YXRpYyBpbnQgdGFwcmlvX3BhcnNlX3RjX2VudHJpZXMoc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3OTMtXHRcdFx0XHQgICBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzk1LXtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTc5NjpcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3OTctXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHNjaCk7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODExLVx0bmxhX2Zvcl9lYWNoX25lc3RlZF90eXBlKG4sIFRDQV9UQVBSSU9fQVRUUl9UQ19FTlRSWSwgb3B0LCByZW0pIHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTgxMjpcdFx0ZXJyID0gdGFwcmlvX3BhcnNlX3RjX2VudHJ5KHNjaCwgbiwgbWF4X3NkdSwgZnAsIFx1MDAyNnNlZW5fdGNzLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODEzLVx0XHRcdFx0XHQgICAgZXh0YWNrKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NDEtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4NDI6c3RhdGljIGludCB0YXByaW9fbXFwcmlvX2NtcChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODQzLVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IHRjX21xcHJpb19xb3B0ICptcXByaW8pXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODYxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODYyOnN0YXRpYyBpbnQgdGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODYzLVx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODY3LVx0c3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlciwgKmFkbWluLCAqbmV3X2FkbWluO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODY4Olx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg2OS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NzEtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODcyOlx0dTMyIHRhcHJpb19mbGFncztcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg3My1cdGt0aW1lX3Qgc3RhcnQ7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODc2LVx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKHRiLCBUQ0FfVEFQUklPX0FUVFJfTUFYLCBvcHQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4Nzc6XHRcdFx0XHRcdCAgdGFwcmlvX3BvbGljeSwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg3OC1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NjYwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIFRBUFJJTyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoaXMgVEFQUklPIGltcGxlbWVudGF0aW9uLiBUaGUgY29yZSBlbnRyeSBwb2ludHMsIHRoZSBvbmVzIEkgbmVlZCB0byBmb2N1cyBvbiwgYXJlIGRlZmluaXRlbHkgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2luaXRgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYC4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGB0YXByaW9fY2hhbmdlYCBhbmQgYHRhcHJpb19pbml0YCBhcmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIHNjaGVkdWxlLCBhbmQgaXQgbG9va3MgbGlrZSBJJiMzOTttIHJpZ2h0LiBgdGFwcmlvX2NoYW5nZWAgZG9lcyB0aGUgcGFyc2luZyBvZiB0aGUgc2NoZWR1bGUgYW5kIHNldHMgdGhlIHRpbWVyLCBhbmQgSSBzZWUgbm93IHRoYXQgYHRhcHJpb19lbnF1ZXVlYCBhbmQgYHRhcHJpb19kZXF1ZXVlYCBoYW5kbGUgcGFja2V0IHByb2Nlc3NpbmcuCgpUaGUgcGF0Y2ggbWVudGlvbnMgYSBtb2RpZmljYXRpb24gdG8gYGFkdmFuY2Vfc2NoZWRgLCB3aGljaCBpcyB0aGUgaHJ0aW1lciBjYWxsYmFjay4gVGhhdCBjb25maXJtcyBteSBpbml0aWFsIHRob3VnaHQ6IGZ1enppbmcgYHRhcHJpb19jaGFuZ2VgIGlzIGdvaW5nIHRvIGJlICpjcml0aWNhbCosIGJlY2F1c2UgdGhhdCYjMzk7cyB3aGVyZSB0aGUgcWRpc2MgZ2V0cyBjb25maWd1cmVkIGFuZCB0aGUgdGltZXIgc3RhcnRzLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHNjaGVkdWxlIGFuZCBgdGFwcmlvX2VucXVldWVgIGFuZCBgdGFwcmlvX2RlcXVldWVgLCBhcyB0aG9zZSBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aCBpdC4gU28sIHRvIGNvdmVyIGFsbCB0aGUgaW1wb3J0YW50IHBhcnRzLCBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2luaXRgLCBgdGFwcmlvX2VucXVldWVgLCBgdGFwcmlvX2RlcXVldWVgLCBhbmQgYGFkdmFuY2Vfc2NoZWRgIGluIG15IGZ1enppbmcgdGFyZ2V0LgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYGFkdmFuY2Vfc2NoZWRgIGlzbiYjMzk7dCBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24sIGp1c3QgdG8gYmUgc3VyZS4gQSBxdWljayBsb29rIGF0IGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYCBjb25maXJtcyB0aGF0IGl0JiMzOTtzIGBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpYCwgc28gaXQmIzM5O3Mgbm90IGlubGluZS4KCkFscmlnaHQsIHRoZSBuZXh0IHRoaW5nIGlzIHRvIG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSBjb25maWcgZGVwZW5kZW5jaWVzIGNvcnJlY3QuIGBORVRfU0NIX1RBUFJJT2AgaXMgdGhlIG9idmlvdXMgb25lLiBOb3csIGFyZSB0aGVyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzIEkgbmVlZD8gTG9va2luZyBpbiBgbmV0L3NjaGVkL0tjb25maWdgLCBJIHNlZSB0aGF0IGBORVRfU0NIX01RUFJJT19MSUJgIGlzIHNlbGVjdGVkIGJ5IGBORVRfU0NIX1RBUFJJT2AsIHdoaWNoIGlzIGltcG9ydGFudCB0byBjb25zaWRlci4gSSBzaG91bGQgY29uZmlybSB0aGF0IGBORVRfU0NIRURgIGlzIHJlcXVpcmVkIGFzIGEgcGFyZW50LiBZdXAsIGl0JiMzOTtzIHRoZSBwYXJlbnQsIGFzIGV4cGVjdGVkLiBJJiMzOTtsbCBuZWVkIHRvIGtlZXAgdGhpcyBpbiBtaW5kIHdoZW4gSSBzZXQgdXAgbXkgZnV6emluZyBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnLTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXG5uZXQvc2NoZWQvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg1OTMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgVEFQUklPKioKCk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgYE5FVF9TQ0hFRGAgaXMgZW5hYmxlZCBmb3IgdGhpcyBmdXp6aW5nIGVmZm9ydC4gQW5kLCB3YWl0LCB3aGF0IGFib3V0IGBORVRfU0NIX1RBUFJJT2A/IEl0JiMzOTtzIHRyaXN0YXRlLCB3aGljaCBpcyBnb29kLgoKTGV0JiMzOTtzIHB1bGwgdG9nZXRoZXIgdGhlIGtleSBlbGVtZW50czogSSYjMzk7dmUgZGV0ZXJtaW5lZCB0aGF0IHRoaXMgaXMgd29ydGggZnV6emluZy4gTXkgbWFpbiBmb2N1cyBzaG91bGQgYmUgb24gdGhlc2Ugc3ltYm9sczogYGFkdmFuY2Vfc2NoZWRgLCBgdGFwcmlvX2NoYW5nZWAsIGB0YXByaW9faW5pdGAsIGB0YXByaW9fZW5xdWV1ZWAsIGFuZCBgdGFwcmlvX2RlcXVldWVgLiBUbyBtYWtlIHRoaXMgd29yaywgSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgdGhlIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gIGNvbmZpZ3VyYXRpb25zLgoKTm93LCBhIHF1aWNrIHRob3VnaHQgYWJvdXQgYGFkdmFuY2Vfc2NoZWRgLiBUaGUgZnV6emluZyBndWlkZWxpbmVzIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhlIGRvY3VtZW50IGVtcGhhc2l6ZWQgbm90IHVzaW5nIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBidXQgbG9va2luZyBhdCBgYWR2YW5jZV9zY2hlZGAgbW9yZSBjbG9zZWx5LCBpdCYjMzk7cyBhY3R1YWxseSBhIHRpbWVyIGNhbGxiYWNrLiBJdHMgYWRkcmVzcyAqaXMqIHRha2VuIGFuZCBwYXNzZWQgdG8gYGhydGltZXJfc2V0dXBgLCBzbyBpdCBsaWtlbHkgd29uJiMzOTt0IGJlIGlubGluZWQsIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIHN0YXRpYy4gSXQmIzM5O3MgYSBiaXQgb2YgYW4gZWRnZSBjYXNlLCBzbyBJJiMzOTtsbCBpbmNsdWRlIGl0LiBCdXQgSSBzaG91bGQgZGVmaW5pdGVseSBwcmlvcml0aXplIHRoZSBtYWluIEFQSSBlbnRyeSBwb2ludHM6IGB0YXByaW9fY2hhbmdlYCwgYHRhcHJpb19pbml0YCwgYHRhcHJpb19lbnF1ZXVlYCwgYW5kIGB0YXByaW9fZGVxdWV1ZWAuCgpKdXN0IHRvIGJlIHNhZmUsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGB0YXByaW9fY2hhbmdlYCBhbmQgYHRhcHJpb19pbml0YCB0byBjb25maXJtIG15IHN0cmF0ZWd5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4NDI9c3RhdGljIGludCB0YXByaW9fbXFwcmlvX2NtcChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg2MS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTg2MjpzdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg2My1cdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjExMT1zdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTI0LVx0LyogV2Ugb25seSBzdXBwb3J0IHN0YXRpYyBjbG9ja2lkcy4gVXNlIGFuIGludmFsaWQgdmFsdWUgYXMgZGVmYXVsdFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTI1Olx0ICogYW5kIGdldCB0aGUgdmFsaWQgb25lIG9uIHRhcHJpb19jaGFuZ2UoKS5cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjEyNi1cdCAqL1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE3Mi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjE3MzpcdHJldHVybiB0YXByaW9fY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTc0LX1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI1ODY9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU5MC1cdC5pbml0XHRcdD0gdGFwcmlvX2luaXQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1OTE6XHQuY2hhbmdlXHRcdD0gdGFwcmlvX2NoYW5nZSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU5Mi1cdC5kZXN0cm95XHQ9IHRhcHJpb19kZXN0cm95LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTYzNAoJCQkJCQkJb3V0cHV0OiAxNDIKCQkJCQkJCXRob3VnaHRzOiAyNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFRBUFJJTyBTY2hlZHVsZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBUQVBSSU8gc2NoZWR1bGVyIHBhdGNoLiBJdCBsb29rcyBsaWtlIHRoZSBrZXkgUWRpc2Mgb3BlcmF0aW9uIGNhbGxiYWNrcyDigJMgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2luaXRgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYCDigJMgYXJlIG91ciBwcmltYXJ5IGVudHJ5IHBvaW50cywgZXZlbiB0aG91Z2ggdGhleSYjMzk7cmUgc3RhdGljIHdpdGhpbiB0aGUgUWRpc2Mgc3RydWN0dXJlLiBJJiMzOTttIGFsc28gZ29pbmcgdG8gYWRkIGBhZHZhbmNlX3NjaGVkYCB0byB0aGUgbGlzdCwgc2luY2UgdGhhdCYjMzk7cyB0aGUgdGltZXIgY2FsbGJhY2sgdGhhdCYjMzk7cyBiZWVuIGRpcmVjdGx5IG1vZGlmaWVkLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gaW5jbHVkZSBpdCBiZWNhdXNlIGl0JiMzOTtzIG5vdCBpbmxpbmVkLCB3aGljaCBtYWtlcyBpdCBhIGNydWNpYWwgZnVuY3Rpb24gdG8gY29uc2lkZXIuCgpMZXQgbWUganVzdCBxdWlja2x5IHJlLWV4YW1pbmUgdGhlIHBhdGNoIHRvIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgb3RoZXIgbW9kaWZpZWQgZnVuY3Rpb25zLiBOb3BlLCBsb29rcyBsaWtlIGBhZHZhbmNlX3NjaGVkYCBpcyB0aGUgb25seSBvdGhlciBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlZW4gdG91Y2hlZC4KClNvLCB0byBzdW1tYXJpemUsIHRoZSBlc3NlbnRpYWwgZm9jdXMgc3ltYm9scyBoZXJlIGFyZToKCiogICBgYWR2YW5jZV9zY2hlZGAKKiAgIGB0YXByaW9fY2hhbmdlYAoqICAgYHRhcHJpb19lbnF1ZXVlYAoqICAgYHRhcHJpb19kZXF1ZXVlYAoKRm9yIHRoZSBjb3JyZXNwb25kaW5nIGNvbmZpZ3VyYXRpb25zLCB3ZSBuZWVkIHRvIGhhdmU6CgoqICAgYE5FVF9TQ0hfVEFQUklPYAoqICAgYE5FVF9TQ0hFRGAKCkVzc2VudGlhbGx5LCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgc29mdGlycSBzdGFsbCBwcm9ibGVtIGluIHRoZSBUQVBSSU8gbmV0d29yayBzY2hlZHVsZXIuIEl0IGJvdW5kcyB0aGUgcmV0cnkgbG9vcCBhbmQgZml4ZXMgdGhlIGBnYXRlX2Nsb3NlX3RpbWVgIGNhbGN1bGF0aW9uIGluIHRoZSBgYWR2YW5jZV9zY2hlZGAgaHJ0aW1lciBjYWxsYmFjay4gVGhpcyBpcyBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYywgZGlyZWN0bHkgcmVhY2hhYmxlIHRocm91Z2ggY29uZmlndXJpbmcgdGhlIHRhcHJpbyBRZGlzYyBhbmQgc2VuZGluZyB0cmFmZmljLiBJdCYjMzk7cyBhIGNyaXRpY2FsIGZpeCBhZmZlY3RpbmcgaG93IFRBUFJJTyBzaGFwZXMgYW5kIHByaW9yaXRpemVzIHRyYWZmaWMsIHNvIGl0JiMzOTtzIHdvcnRoIG1ha2luZyBzdXJlIHdlJiMzOTtyZSBnZXR0aW5nIHRoaXMgaW1wbGVtZW50ZWQuCgpJJiMzOTttIHJlYWR5IHRvIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZHZhbmNlX3NjaGVkJiMzNDssCiAgICAmIzM0O3RhcHJpb19jaGFuZ2UmIzM0OywKICAgICYjMzQ7dGFwcmlvX2VucXVldWUmIzM0OywKICAgICYjMzQ7dGFwcmlvX2RlcXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhZHZhbmNlX3NjaGVkYCBocnRpbWVyIGNhbGxiYWNrIGluIHRoZSB0YXByaW8gbmV0d29yayBzY2hlZHVsZXIgKFRpbWUtQXdhcmUgUHJpb3JpdHkgU2hhcGVyKSB0byBwcmV2ZW50IHNvZnRpcnEgc3RhbGxzIGJ5IGJvdW5kaW5nIHRoZSByZXRyeSBsb29wIGFuZCBjb3JyZWN0bHkgY2FsY3VsYXRpbmcgYGdhdGVfY2xvc2VfdGltZWAuIFRoaXMgaXMgY29yZSByZWFjaGFibGUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjb25maWd1cmluZyB0aGUgdGFwcmlvIHFkaXNjIGFuZCBzZW5kaW5nIHRyYWZmaWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1RBUFJJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FkdmFuY2Vfc2NoZWQmIzM0OywKICAgICYjMzQ7dGFwcmlvX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZW5xdWV1ZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZGVxdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGFkdmFuY2Vfc2NoZWRgIGhydGltZXIgY2FsbGJhY2sgaW4gdGhlIHRhcHJpbyBuZXR3b3JrIHNjaGVkdWxlciAoVGltZS1Bd2FyZSBQcmlvcml0eSBTaGFwZXIpIHRvIHByZXZlbnQgc29mdGlycSBzdGFsbHMgYnkgYm91bmRpbmcgdGhlIHJldHJ5IGxvb3AgYW5kIGNvcnJlY3RseSBjYWxjdWxhdGluZyBgZ2F0ZV9jbG9zZV90aW1lYC4gVGhpcyBpcyBjb3JlIHJlYWNoYWJsZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNvbmZpZ3VyaW5nIHRoZSB0YXByaW8gcWRpc2MgYW5kIHNlbmRpbmcgdHJhZmZpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjM5OjE2LjUwMDExNjg0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MjA5MzQzOTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhZHZhbmNlX3NjaGVkXCIsXG4gICAgXCJ0YXByaW9fY2hhbmdlXCIsXG4gICAgXCJ0YXByaW9fZW5xdWV1ZVwiLFxuICAgIFwidGFwcmlvX2RlcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGFkdmFuY2Vfc2NoZWRgIGhydGltZXIgY2FsbGJhY2sgaW4gdGhlIHRhcHJpbyBuZXR3b3JrIHNjaGVkdWxlciAoVGltZS1Bd2FyZSBQcmlvcml0eSBTaGFwZXIpIHRvIHByZXZlbnQgc29mdGlycSBzdGFsbHMgYnkgYm91bmRpbmcgdGhlIHJldHJ5IGxvb3AgYW5kIGNvcnJlY3RseSBjYWxjdWxhdGluZyBgZ2F0ZV9jbG9zZV90aW1lYC4gVGhpcyBpcyBjb3JlIHJlYWNoYWJsZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNvbmZpZ3VyaW5nIHRoZSB0YXByaW8gcWRpc2MgYW5kIHNlbmRpbmcgdHJhZmZpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6MTYuNTAwMTIzNTMzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTA4MTY0NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4YjBlMzMzNjlmNzFkMTFlMmY4OWE2MGQyYmI2NDVmYmM5MDRlMDM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDI0IDIxOjM5OjE1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXFxuaW5kZXggMjk5MjM0YTVmMGZlNjAuLjhlOGJlNTY4ZGQyYTcwIDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcXG4rKysgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXFxuQEAgLTkyMCwxMSArOTIwLDE2IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4gXFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgYWR2YW5jZV90aW1lcik7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYocS1cXHUwMDNlcm9vdCk7XFxuK1xcdGJvb2wgZ2F0ZV9jbG9zZV90aW1lX2NhbGN1bGF0ZWQgPSBmYWxzZTtcXG4gXFx0c3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlciwgKmFkbWluO1xcbiBcXHRpbnQgbnVtX3RjID0gbmV0ZGV2X2dldF9udW1fdGMoZGV2KTtcXG4rXFx0a3RpbWVfdCBub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7XFxuIFxcdHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksICpuZXh0O1xcbiBcXHRzdHJ1Y3QgUWRpc2MgKnNjaCA9IHEtXFx1MDAzZXJvb3Q7XFxuK1xcdC8qIFNtYWxsIHJldHJ5IGJvdW5kIHRvIGF2b2lkIHNvZnRpcnEgc3RhbGwgKi9cXG4rXFx0aW50IG1heF9pdGVyID0gMzI7XFxuIFxcdGt0aW1lX3QgZW5kX3RpbWU7XFxuK1xcdGt0aW1lX3QgZXhwaXJlcztcXG4gXFx0aW50IHRjO1xcbiBcXG4gXFx0c3Bpbl9sb2NrKFxcdTAwMjZxLVxcdTAwM2VjdXJyZW50X2VudHJ5X2xvY2spO1xcbkBAIC05NDgsNDYgKzk1Myw4NiBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuIFxcdFxcdG5leHQgPSBsaXN0X2ZpcnN0X2VudHJ5KFxcdTAwMjZvcGVyLVxcdTAwM2VlbnRyaWVzLCBzdHJ1Y3Qgc2NoZWRfZW50cnksXFxuIFxcdFxcdFxcdFxcdFxcdGxpc3QpO1xcbiBcXHRcXHRlbmRfdGltZSA9IG5leHQtXFx1MDAzZWVuZF90aW1lO1xcbi1cXHRcXHRnb3RvIGZpcnN0X3J1bjtcXG4rXFx0XFx0Z2F0ZV9jbG9zZV90aW1lX2NhbGN1bGF0ZWQgPSB0cnVlO1xcbitcXHRcXHRpZiAoa3RpbWVfYWZ0ZXIoZW5kX3RpbWUsIG5vdykpXFxuK1xcdFxcdFxcdGdvdG8gZmlyc3RfcnVuO1xcbitcXHRcXHRlbnRyeSA9IG5leHQ7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChzaG91bGRfcmVzdGFydF9jeWNsZShvcGVyLCBlbnRyeSkpIHtcXG4tXFx0XFx0bmV4dCA9IGxpc3RfZmlyc3RfZW50cnkoXFx1MDAyNm9wZXItXFx1MDAzZWVudHJpZXMsIHN0cnVjdCBzY2hlZF9lbnRyeSxcXG4tXFx0XFx0XFx0XFx0XFx0bGlzdCk7XFxuLVxcdFxcdG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgb3Blci1cXHUwMDNlY3ljbGVfdGltZSk7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdG5leHQgPSBsaXN0X25leHRfZW50cnkoZW50cnksIGxpc3QpO1xcbi1cXHR9XFxuK1xcdGRvIHtcXG4rXFx0XFx0a3RpbWVfdCBsaW1pdCA9IG5vdztcXG4gXFxuLVxcdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKGVudHJ5LVxcdTAwM2VlbmRfdGltZSwgbmV4dC1cXHUwMDNlaW50ZXJ2YWwpO1xcbi1cXHRlbmRfdGltZSA9IG1pbl90KGt0aW1lX3QsIGVuZF90aW1lLCBvcGVyLVxcdTAwM2VjeWNsZV9lbmRfdGltZSk7XFxuK1xcdFxcdGlmIChhZG1pbiBcXHUwMDI2XFx1MDAyNiBrdGltZV9iZWZvcmUoYWRtaW4tXFx1MDAzZWJhc2VfdGltZSwgbGltaXQpKVxcbitcXHRcXHRcXHRsaW1pdCA9IGFkbWluLVxcdTAwM2ViYXNlX3RpbWU7XFxuIFxcbi1cXHRmb3IgKHRjID0gMDsgdGMgXFx1MDAzYyBudW1fdGM7IHRjKyspIHtcXG4tXFx0XFx0aWYgKG5leHQtXFx1MDAzZWdhdGVfZHVyYXRpb25bdGNdID09IG9wZXItXFx1MDAzZWN5Y2xlX3RpbWUpXFxuLVxcdFxcdFxcdG5leHQtXFx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBLVElNRV9NQVg7XFxuLVxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0bmV4dC1cXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cXHUwMDNlZW5kX3RpbWUsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBuZXh0LVxcdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSk7XFxuLVxcdH1cXG4rXFx0XFx0aWYgKG9wZXItXFx1MDAzZWN5Y2xlX3RpbWUgXFx1MDAyNlxcdTAwMjYga3RpbWVfYWZ0ZXIobGltaXQsIG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lKSkge1xcbitcXHRcXHRcXHRzNjQgZGlmZiA9IGt0aW1lX3N1YihsaW1pdCwgb3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xcbitcXHRcXHRcXHRzNjQgY3ljbGVzID0gZGl2NjRfczY0KGRpZmYsIG9wZXItXFx1MDAzZWN5Y2xlX3RpbWUpICsgMTtcXG4gXFxuLVxcdGlmIChzaG91bGRfY2hhbmdlX3NjaGVkdWxlcyhhZG1pbiwgb3BlciwgZW5kX3RpbWUpKSB7XFxuLVxcdFxcdHN3aXRjaF9zY2hlZHVsZXMocSwgXFx1MDAyNmFkbWluLCBcXHUwMDI2b3Blcik7XFxuLVxcdFxcdC8qIEFmdGVyIGNoYW5naW5nIHNjaGVkdWxlcywgdGhlIG5leHQgZW50cnkgaXMgdGhlIGZpcnN0IG9uZVxcbi1cXHRcXHQgKiBpbiB0aGUgbmV3IHNjaGVkdWxlLCB3aXRoIGEgcHJlLWNhbGN1bGF0ZWQgZW5kX3RpbWUuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRuZXh0ID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2b3Blci1cXHUwMDNlZW50cmllcywgc3RydWN0IHNjaGVkX2VudHJ5LCBsaXN0KTtcXG4tXFx0XFx0ZW5kX3RpbWUgPSBuZXh0LVxcdTAwM2VlbmRfdGltZTtcXG4rXFx0XFx0XFx0b3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUgPVxcbitcXHRcXHRcXHRcXHRrdGltZV9hZGRfbnMob3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgY3ljbGVzICogb3Blci1cXHUwMDNlY3ljbGVfdGltZSk7XFxuK1xcdFxcdFxcdGVudHJ5LVxcdTAwM2VlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cXHUwMDNlZW5kX3RpbWUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBjeWNsZXMgKiBvcGVyLVxcdTAwM2VjeWNsZV90aW1lKTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0aWYgKHNob3VsZF9yZXN0YXJ0X2N5Y2xlKG9wZXIsIGVudHJ5KSkge1xcbitcXHRcXHRcXHRuZXh0ID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2b3Blci1cXHUwMDNlZW50cmllcyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IHNjaGVkX2VudHJ5LCBsaXN0KTtcXG4rXFx0XFx0XFx0b3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUgPVxcbitcXHRcXHRcXHRcXHRrdGltZV9hZGRfbnMob3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgb3Blci1cXHUwMDNlY3ljbGVfdGltZSk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdG5leHQgPSBsaXN0X25leHRfZW50cnkoZW50cnksIGxpc3QpO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cXHUwMDNlZW5kX3RpbWUsIG5leHQtXFx1MDAzZWludGVydmFsKTtcXG4rXFx0XFx0ZW5kX3RpbWUgPSBtaW5fdChrdGltZV90LCBlbmRfdGltZSwgb3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xcbitcXG4rXFx0XFx0aWYgKHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGFkbWluLCBvcGVyLCBlbmRfdGltZSkpIHtcXG4rXFx0XFx0XFx0c3dpdGNoX3NjaGVkdWxlcyhxLCBcXHUwMDI2YWRtaW4sIFxcdTAwMjZvcGVyKTtcXG4rXFx0XFx0XFx0LyogQWZ0ZXIgY2hhbmdpbmcgc2NoZWR1bGVzLCB0aGUgbmV4dCBlbnRyeSBpcyB0aGUgZmlyc3Qgb25lXFxuK1xcdFxcdFxcdCAqIGluIHRoZSBuZXcgc2NoZWR1bGUsIHdpdGggYSBwcmUtY2FsY3VsYXRlZCBlbmRfdGltZS5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdG5leHQgPSBsaXN0X2ZpcnN0X2VudHJ5KFxcdTAwMjZvcGVyLVxcdTAwM2VlbnRyaWVzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpO1xcbitcXHRcXHRcXHRlbmRfdGltZSA9IG5leHQtXFx1MDAzZWVuZF90aW1lO1xcbitcXHRcXHRcXHRnYXRlX2Nsb3NlX3RpbWVfY2FsY3VsYXRlZCA9IHRydWU7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gZmFsc2U7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdG5leHQtXFx1MDAzZWVuZF90aW1lID0gZW5kX3RpbWU7XFxuK1xcbitcXHRcXHRpZiAoa3RpbWVfYWZ0ZXIoZW5kX3RpbWUsIG5vdykpXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0ZW50cnkgPSBuZXh0O1xcbitcXHR9IHdoaWxlICgtLW1heF9pdGVyIFxcdTAwM2UgMCk7XFxuK1xcbitcXHRpZiAoIWdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkKSB7XFxuK1xcdFxcdGZvciAodGMgPSAwOyB0YyBcXHUwMDNjIG51bV90YzsgdGMrKykge1xcbitcXHRcXHRcXHRpZiAobmV4dC1cXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci1cXHUwMDNlY3ljbGVfdGltZSkge1xcbitcXHRcXHRcXHRcXHRuZXh0LVxcdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYO1xcbitcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRuZXh0LVxcdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID1cXG4rXFx0XFx0XFx0XFx0XFx0a3RpbWVfYWRkX25zKGVudHJ5LVxcdTAwM2VlbmRfdGltZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBuZXh0LVxcdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSk7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHRuZXh0LVxcdTAwM2VlbmRfdGltZSA9IGVuZF90aW1lO1xcbiBcXHR0YXByaW9fc2V0X2J1ZGdldHMocSwgb3BlciwgbmV4dCk7XFxuIFxcbiBmaXJzdF9ydW46XFxuIFxcdHJjdV9hc3NpZ25fcG9pbnRlcihxLVxcdTAwM2VjdXJyZW50X2VudHJ5LCBuZXh0KTtcXG4gXFx0c3Bpbl91bmxvY2soXFx1MDAyNnEtXFx1MDAzZWN1cnJlbnRfZW50cnlfbG9jayk7XFxuIFxcbi1cXHRocnRpbWVyX3NldF9leHBpcmVzKFxcdTAwMjZxLVxcdTAwM2VhZHZhbmNlX3RpbWVyLCBlbmRfdGltZSk7XFxuK1xcdGV4cGlyZXMgPSBlbmRfdGltZTtcXG4rXFx0aWYgKHVubGlrZWx5KG1heF9pdGVyID09IDAgXFx1MDAyNlxcdTAwMjYga3RpbWVfYmVmb3JlKGV4cGlyZXMsIG5vdykpKVxcbitcXHRcXHRleHBpcmVzID0ga3RpbWVfYWRkX25zKG5vdywgTlNFQ19QRVJfVVNFQyk7XFxuK1xcbitcXHRocnRpbWVyX3NldF9leHBpcmVzKFxcdTAwMjZxLVxcdTAwM2VhZHZhbmNlX3RpbWVyLCBleHBpcmVzKTtcXG4gXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gXFx0X19uZXRpZl9zY2hlZHVsZShzY2gpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTozOToxNy4wNTE1ODU1NDhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNzY1Nzg2NjQ2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfVEFQUklPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWR2YW5jZV9zY2hlZFwiLFxuICAgIFwidGFwcmlvX2NoYW5nZVwiLFxuICAgIFwidGFwcmlvX2VucXVldWVcIixcbiAgICBcInRhcHJpb19kZXF1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhZHZhbmNlX3NjaGVkYCBocnRpbWVyIGNhbGxiYWNrIGluIHRoZSB0YXByaW8gbmV0d29yayBzY2hlZHVsZXIgKFRpbWUtQXdhcmUgUHJpb3JpdHkgU2hhcGVyKSB0byBwcmV2ZW50IHNvZnRpcnEgc3RhbGxzIGJ5IGJvdW5kaW5nIHRoZSByZXRyeSBsb29wIGFuZCBjb3JyZWN0bHkgY2FsY3VsYXRpbmcgYGdhdGVfY2xvc2VfdGltZWAuIFRoaXMgaXMgY29yZSByZWFjaGFibGUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjb25maWd1cmluZyB0aGUgdGFwcmlvIHFkaXNjIGFuZCBzZW5kaW5nIHRyYWZmaWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDhiMGUzMzM2OWY3MWQxMWUyZjg5YTYwZDJiYjY0NWZiYzkwNGUwMzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAyMTozOToxNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5pbmRleCAyOTkyMzRhNWYwZmU2MC4uOGU4YmU1NjhkZDJhNzAgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5AQCAtOTIwLDExICs5MjAsMTYgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCxcbiBcdFx0XHRcdFx0ICAgICAgYWR2YW5jZV90aW1lcik7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHEtXHUwMDNlcm9vdCk7XG4rXHRib29sIGdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gZmFsc2U7XG4gXHRzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpvcGVyLCAqYWRtaW47XG4gXHRpbnQgbnVtX3RjID0gbmV0ZGV2X2dldF9udW1fdGMoZGV2KTtcbitcdGt0aW1lX3Qgbm93ID0gdGFwcmlvX2dldF90aW1lKHEpO1xuIFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7XG4gXHRzdHJ1Y3QgUWRpc2MgKnNjaCA9IHEtXHUwMDNlcm9vdDtcbitcdC8qIFNtYWxsIHJldHJ5IGJvdW5kIHRvIGF2b2lkIHNvZnRpcnEgc3RhbGwgKi9cbitcdGludCBtYXhfaXRlciA9IDMyO1xuIFx0a3RpbWVfdCBlbmRfdGltZTtcbitcdGt0aW1lX3QgZXhwaXJlcztcbiBcdGludCB0YztcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZxLVx1MDAzZWN1cnJlbnRfZW50cnlfbG9jayk7XG5AQCAtOTQ4LDQ2ICs5NTMsODYgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0XHRuZXh0ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMsIHN0cnVjdCBzY2hlZF9lbnRyeSxcbiBcdFx0XHRcdFx0bGlzdCk7XG4gXHRcdGVuZF90aW1lID0gbmV4dC1cdTAwM2VlbmRfdGltZTtcbi1cdFx0Z290byBmaXJzdF9ydW47XG4rXHRcdGdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gdHJ1ZTtcbitcdFx0aWYgKGt0aW1lX2FmdGVyKGVuZF90aW1lLCBub3cpKVxuK1x0XHRcdGdvdG8gZmlyc3RfcnVuO1xuK1x0XHRlbnRyeSA9IG5leHQ7XG4gXHR9XG4gXG4tXHRpZiAoc2hvdWxkX3Jlc3RhcnRfY3ljbGUob3BlciwgZW50cnkpKSB7XG4tXHRcdG5leHQgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNm9wZXItXHUwMDNlZW50cmllcywgc3RydWN0IHNjaGVkX2VudHJ5LFxuLVx0XHRcdFx0XHRsaXN0KTtcbi1cdFx0b3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLFxuLVx0XHRcdFx0XHRcdCAgICBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpO1xuLVx0fSBlbHNlIHtcbi1cdFx0bmV4dCA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4tXHR9XG4rXHRkbyB7XG4rXHRcdGt0aW1lX3QgbGltaXQgPSBub3c7XG4gXG4tXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSwgbmV4dC1cdTAwM2VpbnRlcnZhbCk7XG4tXHRlbmRfdGltZSA9IG1pbl90KGt0aW1lX3QsIGVuZF90aW1lLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKTtcbitcdFx0aWYgKGFkbWluIFx1MDAyNlx1MDAyNiBrdGltZV9iZWZvcmUoYWRtaW4tXHUwMDNlYmFzZV90aW1lLCBsaW1pdCkpXG4rXHRcdFx0bGltaXQgPSBhZG1pbi1cdTAwM2ViYXNlX3RpbWU7XG4gXG4tXHRmb3IgKHRjID0gMDsgdGMgXHUwMDNjIG51bV90YzsgdGMrKykge1xuLVx0XHRpZiAobmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSA9PSBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpXG4tXHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYO1xuLVx0XHRlbHNlXG4tXHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKGVudHJ5LVx1MDAzZWVuZF90aW1lLFxuLVx0XHRcdFx0XHRcdFx0XHQgbmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSk7XG4tXHR9XG4rXHRcdGlmIChvcGVyLVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDI2XHUwMDI2IGt0aW1lX2FmdGVyKGxpbWl0LCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKSkge1xuK1x0XHRcdHM2NCBkaWZmID0ga3RpbWVfc3ViKGxpbWl0LCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKTtcbitcdFx0XHRzNjQgY3ljbGVzID0gZGl2NjRfczY0KGRpZmYsIG9wZXItXHUwMDNlY3ljbGVfdGltZSkgKyAxO1xuIFxuLVx0aWYgKHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGFkbWluLCBvcGVyLCBlbmRfdGltZSkpIHtcbi1cdFx0c3dpdGNoX3NjaGVkdWxlcyhxLCBcdTAwMjZhZG1pbiwgXHUwMDI2b3Blcik7XG4tXHRcdC8qIEFmdGVyIGNoYW5naW5nIHNjaGVkdWxlcywgdGhlIG5leHQgZW50cnkgaXMgdGhlIGZpcnN0IG9uZVxuLVx0XHQgKiBpbiB0aGUgbmV3IHNjaGVkdWxlLCB3aXRoIGEgcHJlLWNhbGN1bGF0ZWQgZW5kX3RpbWUuXG4tXHRcdCAqL1xuLVx0XHRuZXh0ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMsIHN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7XG4tXHRcdGVuZF90aW1lID0gbmV4dC1cdTAwM2VlbmRfdGltZTtcbitcdFx0XHRvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lID1cbitcdFx0XHRcdGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLFxuK1x0XHRcdFx0XHQgICAgIGN5Y2xlcyAqIG9wZXItXHUwMDNlY3ljbGVfdGltZSk7XG4rXHRcdFx0ZW50cnktXHUwMDNlZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW50cnktXHUwMDNlZW5kX3RpbWUsXG4rXHRcdFx0XHRcdFx0ICAgICAgIGN5Y2xlcyAqIG9wZXItXHUwMDNlY3ljbGVfdGltZSk7XG4rXHRcdH1cbitcbitcdFx0aWYgKHNob3VsZF9yZXN0YXJ0X2N5Y2xlKG9wZXIsIGVudHJ5KSkge1xuK1x0XHRcdG5leHQgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNm9wZXItXHUwMDNlZW50cmllcyxcbitcdFx0XHRcdFx0XHRzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpO1xuK1x0XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPVxuK1x0XHRcdFx0a3RpbWVfYWRkX25zKG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUsXG4rXHRcdFx0XHRcdCAgICAgb3Blci1cdTAwM2VjeWNsZV90aW1lKTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRuZXh0ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTtcbitcdFx0fVxuK1xuK1x0XHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSwgbmV4dC1cdTAwM2VpbnRlcnZhbCk7XG4rXHRcdGVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xuK1xuK1x0XHRpZiAoc2hvdWxkX2NoYW5nZV9zY2hlZHVsZXMoYWRtaW4sIG9wZXIsIGVuZF90aW1lKSkge1xuK1x0XHRcdHN3aXRjaF9zY2hlZHVsZXMocSwgXHUwMDI2YWRtaW4sIFx1MDAyNm9wZXIpO1xuK1x0XHRcdC8qIEFmdGVyIGNoYW5naW5nIHNjaGVkdWxlcywgdGhlIG5leHQgZW50cnkgaXMgdGhlIGZpcnN0IG9uZVxuK1x0XHRcdCAqIGluIHRoZSBuZXcgc2NoZWR1bGUsIHdpdGggYSBwcmUtY2FsY3VsYXRlZCBlbmRfdGltZS5cbitcdFx0XHQgKi9cbitcdFx0XHRuZXh0ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMsXG4rXHRcdFx0XHRcdFx0c3RydWN0IHNjaGVkX2VudHJ5LCBsaXN0KTtcbitcdFx0XHRlbmRfdGltZSA9IG5leHQtXHUwMDNlZW5kX3RpbWU7XG4rXHRcdFx0Z2F0ZV9jbG9zZV90aW1lX2NhbGN1bGF0ZWQgPSB0cnVlO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdGdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gZmFsc2U7XG4rXHRcdH1cbitcbitcdFx0bmV4dC1cdTAwM2VlbmRfdGltZSA9IGVuZF90aW1lO1xuK1xuK1x0XHRpZiAoa3RpbWVfYWZ0ZXIoZW5kX3RpbWUsIG5vdykpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdGVudHJ5ID0gbmV4dDtcbitcdH0gd2hpbGUgKC0tbWF4X2l0ZXIgXHUwMDNlIDApO1xuK1xuK1x0aWYgKCFnYXRlX2Nsb3NlX3RpbWVfY2FsY3VsYXRlZCkge1xuK1x0XHRmb3IgKHRjID0gMDsgdGMgXHUwMDNjIG51bV90YzsgdGMrKykge1xuK1x0XHRcdGlmIChuZXh0LVx1MDAzZWdhdGVfZHVyYXRpb25bdGNdID09IG9wZXItXHUwMDNlY3ljbGVfdGltZSkge1xuK1x0XHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPVxuK1x0XHRcdFx0XHRrdGltZV9hZGRfbnMoZW50cnktXHUwMDNlZW5kX3RpbWUsXG4rXHRcdFx0XHRcdFx0ICAgICBuZXh0LVx1MDAzZWdhdGVfZHVyYXRpb25bdGNdKTtcbitcdFx0XHR9XG4rXHRcdH1cbiBcdH1cbiBcbi1cdG5leHQtXHUwMDNlZW5kX3RpbWUgPSBlbmRfdGltZTtcbiBcdHRhcHJpb19zZXRfYnVkZ2V0cyhxLCBvcGVyLCBuZXh0KTtcbiBcbiBmaXJzdF9ydW46XG4gXHRyY3VfYXNzaWduX3BvaW50ZXIocS1cdTAwM2VjdXJyZW50X2VudHJ5LCBuZXh0KTtcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNnEtXHUwMDNlY3VycmVudF9lbnRyeV9sb2NrKTtcbiBcbi1cdGhydGltZXJfc2V0X2V4cGlyZXMoXHUwMDI2cS1cdTAwM2VhZHZhbmNlX3RpbWVyLCBlbmRfdGltZSk7XG4rXHRleHBpcmVzID0gZW5kX3RpbWU7XG4rXHRpZiAodW5saWtlbHkobWF4X2l0ZXIgPT0gMCBcdTAwMjZcdTAwMjYga3RpbWVfYmVmb3JlKGV4cGlyZXMsIG5vdykpKVxuK1x0XHRleHBpcmVzID0ga3RpbWVfYWRkX25zKG5vdywgTlNFQ19QRVJfVVNFQyk7XG4rXG4rXHRocnRpbWVyX3NldF9leHBpcmVzKFx1MDAyNnEtXHUwMDNlYWR2YW5jZV90aW1lciwgZXhwaXJlcyk7XG4gXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRfX25ldGlmX3NjaGVkdWxlKHNjaCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTozOToxNy4wNTE1ODY2OTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQzMjM1NzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgdGFwcmlvIHFkaXNjIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gdGhlIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgdGhlIGBhZHZhbmNlX3NjaGVkYCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBUaW1lLUF3YXJlIFByaW9yaXR5IFNoYXBlciwgdGhlIGB0YXByaW9gIHFkaXNjIOKAkyBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3IgdGltZS1zZW5zaXRpdmUgbmV0d29ya2luZy4gVGhlIG1haW4gdGhpbmcgdGhleSdyZSBhZGRyZXNzaW5nIGhlcmUgaXMgcG90ZW50aWFsIHNvZnRpcnEgc3RhbGxzIHdoZW4gYWR2YW5jaW5nIHRoZSBzY2hlZHVsZS4gVGhhdCdzIGEgY2xhc3NpYyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLCBlc3BlY2lhbGx5IHVuZGVyIGxvYWQuIFRoaXMgcmV0cnkgbG9vcCwgd2l0aCB0aGUgYGRvLi4ud2hpbGVgIGNvbnN0cnVjdCBhbmQgYG1heF9pdGVyYCwgaXMgZGVmaW5pdGVseSB0aGUgaW50ZW5kZWQgZml4LiBNYWtlcyBzZW5zZSB0byBpdGVyYXRlIGEgZmV3IHRpbWVzIGlmIHRoZSB0aW1lciBmaXJlcyB1bmV4cGVjdGVkbHksIHdoaWNoIEkgb2Z0ZW4gc2VlIHdpdGggdGhlc2UgdHlwZXMgb2YgaW1wbGVtZW50YXRpb25zLiBFbnN1cmluZyBwcm9wZXIgY2FsY3VsYXRpb24gb2YgYGdhdGVfY2xvc2VfdGltZWAgaXMgYWxzbyBrZXkgdG8gYXZvaWRpbmcgc3luY2hyb25pemF0aW9uIGlzc3Vlcy4gVGhlIHBhdGNoIGFsc28gdGFja2xlcyB0aGUgc2NlbmFyaW8gd2hlcmUgdGhlIHRpbWVyIGdvZXMgb2ZmIGxhdGUsIHBvdGVudGlhbGx5IHNraXBwaW5nIG92ZXIgc2NoZWR1bGUgZW50cmllcy5cblxuRnVuY3Rpb25hbGl0eS13aXNlLCBpdCBzb3VuZHMgc29saWQuIEl0IGFkZHJlc3NlcyBhIGtub3duIGlzc3VlIHdpdGhpbiB0aGUgdGltZS1zZW5zaXRpdmUgbmV0d29ya2luZyBkb21haW4sIGFuZCB0aGUgdGVjaG5pcXVlcyBzZWVtIGNvcnJlY3QgZm9yIGZpeGluZyBpdC4gQW5kLCB5ZXMsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUgaW4gUUVNVS4gYHRhcHJpb2AgaXMgYSBzdGFuZGFyZCBxZGlzYyBpbiB0aGUgTGludXgga2VybmVsIG5ldHdvcmsgc2NoZWR1bGVyLCBzbyBzaW11bGF0aW5nIGl0IGlzIG5vIHByb2JsZW0uXG5cbk5leHQsIEknbGwgbmVlZCB0byBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gY2hlY2sgYG5ldC9zY2hlZC9NYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmb3IgdGhlIGBzY2hfdGFwcmlvYCBzeW1ib2wuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBwcm9wZXJseSBzZXQgaXQgdXAgaW4gbXkgdGVzdCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU4NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjM5OjIxLjg5NDgyNDQzOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzcxNjcxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2hfdGFwcmlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MTcyPWNvbmZpZyBORVRfU0NIX1RBUFJJT1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTc4LVxcbm5ldC9zY2hlZC9LY29uZmlnOjE3OTpcXHQgIFNlZSB0aGUgdG9wIG9mIFxcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXFxubmV0L3NjaGVkL0tjb25maWctMTgwLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE4MS1cXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG5uZXQvc2NoZWQvS2NvbmZpZzoxODI6XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RhcHJpby5cXG5uZXQvc2NoZWQvS2NvbmZpZy0xODMtXFxuLS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU9NjM9b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRGKVxcdCs9IHNjaF9ldGYub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfTkVUX1NDSF9UQVBSSU8pXFx0Kz0gc2NoX3RhcHJpby5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTY1LW9iai0kKENPTkZJR19ORVRfU0NIX0JQRilcXHQrPSBicGZfcWRpc2Mub1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MzovKiBuZXQvc2NoZWQvc2NoX3RhcHJpby5jXFx0IFRpbWUgQXdhcmUgUHJpb3JpdHkgU2NoZWR1bGVyXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00LSAqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjM5OjIxLjk1ODU0NTQ3N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDk2ODYxNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6XG5cbioqRGVwZW5kZW5jaWVzLCBEZXBlbmRlbmNpZXMsIERlcGVuZGVuY2llcyEqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZSBgTkVUX1NDSF9UQVBSSU9gIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gSSBuZWVkIHRvIGtub3cgKmV2ZXJ5dGhpbmcqIHRoaXMgaGluZ2VzIHVwb24uIFNvLCB0aGUgZmlyc3QgdGhpbmcgSSdtIHRoaW5raW5nIGlzLCBcIldoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBpbiBwbGFjZSBmb3IgdGhpcyB0byBldmVuICpiZSogYSB2YWxpZCBvcHRpb24sIGxldCBhbG9uZSBmdW5jdGlvbmFsP1wiIEknbSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIHR5cGljYWwga2VybmVsIGNvbmZpZ3VyYXRpb24gY2hlY2tzIOKAkyBsb29raW5nIGZvciBhbnkgb2J2aW91cyBwcmUtcmVxdWlzaXRlcyBsaWtlIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMsIG90aGVyIG5ldHdvcmtpbmcgZmVhdHVyZXMsIG9yIGV2ZW4gY29yZSBrZXJuZWwgZnVuY3Rpb25hbGl0aWVzIHRoYXQgbmVlZCB0byBiZSBlbmFibGVkIGZpcnN0LiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGl0cyBwbGFjZSBpbiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDEwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6MjQuODY4MjMzNjk0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NjQ0NzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIX1RBUFJJT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz0xNjc9Y29uZmlnIE5FVF9TQ0hfTVFQUklPX0xJQlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTcxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjE3Mjpjb25maWcgTkVUX1NDSF9UQVBSSU9cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIlRpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTozOToyNC45MjY4ODgzMzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQyMTQxNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCBwcm9jZXNzaW5nIHRoZSBwcm92aWRlZCB0ZXh0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwncyBUcmFmZmljIFNoYXBpbmcgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGtlcm5lbCdzIHRyYWZmaWMgc2hhcGluZyBmZWF0dXJlcyBhcmUgY29uZmlndXJlZC4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSBhbHJlYWR5IGhhdmUgYSBnb29kIGdyYXNwIG9mIHRoZSB1bmRlcmx5aW5nIGNvbmNlcHRzLCBzbyBJIGZpZ3VyZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIEtjb25maWcgZmlsZSwgc3BlY2lmaWNhbGx5IHRoZSBvbmUgcmVsYXRlZCB0byB0aGUgbmV0d29ya2luZyBzY2hlZHVsZXIuIEknbGwgemVybyBpbiBvbiBgbmV0L3NjaGVkL0tjb25maWdgLCBhbmQgbGV0J3Mgc3RhcnQgYXJvdW5kIGxpbmUgMTcyLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBlbnRyeSBwb2ludCB0byBzZWUgd2hhdCBvcHRpb25zIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyIGFuZCBob3cgdGhleSdyZSBzdHJ1Y3R1cmVkLCBhbmQgZnJvbSB0aGVyZSBJIGNhbiBzdGFydCB0byBtYXAgb3V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgd2l0aGluIHRoZSBrZXJuZWwncyBzY2hlZHVsaW5nIGxvZ2ljLiBJJ20gaG9waW5nIEkgY2FuIGdldCBhIGNsZWFyIG92ZXJ2aWV3IG9mIHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZSBhbmQgcGVyaGFwcyBpZGVudGlmeSBzb21lIGFyZWFzIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gb3Igb3B0aW1pemF0aW9uLCBtYXliZSBzcG90IGEgbm92ZWwgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCBJIGhhZG4ndCBjb21lIGFjcm9zcyBiZWZvcmUuIEl0J3MgdGltZSB0byBkaWcgaW4gYW5kIGdldCBhIGZlZWwgZm9yIHRoZSBkZXNpZ24gY2hvaWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcxNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjM5OjI4LjM2OTAzMTY0NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2NTpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfZXRmLlxcbiAxNjY6XFx0XFxuIDE2NzpcXHRjb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXFxuIDE2ODpcXHRcXHR0cmlzdGF0ZVxcbiAxNjk6XFx0XFx0aGVscFxcbiAxNzA6XFx0XFx0ICBDb21tb24gbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIG1xcHJpbyBxdWV1ZSBjb25maWd1cmF0aW9ucy5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxuIDE3MzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcXFwiXFxuIDE3NDpcXHRcXHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXFxuIDE3NTpcXHRcXHRoZWxwXFxuIDE3NjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxcbiAxNzc6XFx0XFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0XFx0ICBTZWUgdGhlIHRvcCBvZiBcXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXFx1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAxODA6XFx0XFxuIDE4MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gMTgyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF90YXByaW8uXFxuIDE4MzpcXHRcXG4gMTg0OlxcdGNvbmZpZyBORVRfU0NIX0dSRURcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6MjguMzY5MTE5NTQ0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk3NDk4NDk1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKlxuXG5Pa2F5LCBzbyB0aGUgcGF0Y2ggaXMgZm9jdXNpbmcgc29sZWx5IG9uIGBORVRfU0NIX01RUFJJT19MSUJgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiV2h5IG5vdCBjb25zaWRlciBgTkVUX1NDSEVEYD9cIiBBIHF1aWNrIGNoZWNrIGNvbmZpcm1zIHRoYXQgYG5ldC9zY2hlZC9LY29uZmlnYCBpcyBpbmNsdWRlZCB1bmRlciBgTkVUX1NDSEVEYCwgc28gd2UgbmVlZCB0byBlbnN1cmUgdGhhdCBpcyBhbHNvIGVuYWJsZWQgd2hlbiBzZXR0aW5nIHVwIHRoZSBmdXp6aW5nIHRhcmdldHMuIE5vdywgbGV0J3MgZGl2ZSBpbnRvIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgYXJlIHJlbGV2YW50IHRvIHRoaXMgcGF0Y2ggYW5kIGFyZSBnb29kIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcuXG5cblRoZSBwYXRjaCBtZW50aW9ucyBtb2RpZmljYXRpb25zIHRvIGBhZHZhbmNlX3NjaGVkYC4gR2l2ZW4gdGhhdCBpdCdzIHJlbGF0ZWQgdG8gc2NoZWR1bGluZywgbXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgbGlrZWx5IGEgdGltZXIgY2FsbGJhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHRpbWVyIGlzIHNldCB1cCwgd2hhdCB0cmlnZ2VycyBpdC4gTG9va2luZyBhdCB0aGUgY29kZSBpbiBgc2NoX3RhcHJpby5jYCwgbXkgbWFpbiBmb2N1cyB3aWxsIGJlIHRvIGZpbmQgYW5kIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNvbmZpZ3VyZSB0aGUgcWRpc2MsIGhvdyB0aGUgZGF0YSBmbG93cyB3aXRoaW4gdGhlIGZ1bmN0aW9ucyBhbmQgdGhlIGNhbGxiYWNrcyB0byBidWlsZCBhIGdvb2QgZnV6emVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mjg5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6MzIuMzQ0MTA2NDVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxOTY5OTYwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZHZhbmNlX3NjaGVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uYz04ODQ9c3RhdGljIGJvb2wgc2hvdWxkX2NoYW5nZV9zY2hlZHVsZXMoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqYWRtaW4sXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTkxNy1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjkxODpzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05MTkte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0xODYyPXN0YXRpYyBpbnQgdGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTk2LVxcdCAgICAhaHJ0aW1lcl9hY3RpdmUoXFx1MDAyNnEtXFx1MDAzZWFkdmFuY2VfdGltZXIpKSB7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxOTk3OlxcdFxcdGhydGltZXJfc2V0dXAoXFx1MDAyNnEtXFx1MDAzZWFkdmFuY2VfdGltZXIsIGFkdmFuY2Vfc2NoZWQsIHEtXFx1MDAzZWNsb2NraWQsIEhSVElNRVJfTU9ERV9BQlMpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTk5OC1cXHR9XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwMTUtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDE2OlxcdFxcdC8qIE5vdCBnb2luZyB0byByYWNlIGFnYWluc3QgYWR2YW5jZV9zY2hlZCgpLCBidXQgc3RpbGwgKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwMTctXFx0XFx0YWRtaW4gPSByY3VfcmVwbGFjZV9wb2ludGVyKHEtXFx1MDAzZWFkbWluX3NjaGVkLCBuZXdfYWRtaW4sXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwMjMtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDI0OlxcdFxcdC8qIFByb3RlY3RzIGFnYWluc3QgYWR2YW5jZV9zY2hlZCgpICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDI1LVxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZxLVxcdTAwM2VjdXJyZW50X2VudHJ5X2xvY2ssIGZsYWdzKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjExMT1zdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxMTktXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTIwOlxcdGhydGltZXJfc2V0dXAoXFx1MDAyNnEtXFx1MDAzZWFkdmFuY2VfdGltZXIsIGFkdmFuY2Vfc2NoZWQsIENMT0NLX1RBSSwgSFJUSU1FUl9NT0RFX0FCUyk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTIxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTozOTozMi42NjM4MTI4MjFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5NTg5MDE5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgZnVuY3Rpb25zLCB0aGlua2luZyB0aGVtIHRocm91Z2ggZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmUuXG5cbioqRGl2aW5nIGludG8gdGhlIFRBUFJJTyBBUEkqKlxuXG5BbHJpZ2h0LCBzbyBpZiBJJ20gYnVpbGRpbmcgd2l0aCB0aGlzIFRBUFJJTyBsaWJyYXJ5LCB0aGUgY29yZSBmdW5jdGlvbnMgSSdsbCBuZWVkIHRvIHJlYWxseSB1bmRlcnN0YW5kIGFyZSB1bmRvdWJ0ZWRseSBgdGFwcmlvX2NoYW5nZWAsIGB0YXByaW9faW5pdGAsIGB0YXByaW9fZW5xdWV1ZWAsIGFuZCBgdGFwcmlvX2RlcXVldWVgLiBUaGVzZSBhcmUgdGhlIGNydWNpYWwgZW50cnkgcG9pbnRzLCB0aGUgZ2VhcnMgdGhhdCdsbCBkcml2ZSB0aGUgd2hvbGUgc2NoZWR1bGluZyBtZWNoYW5pc20uIEkgbmVlZCB0byBiZSAqaW50aW1hdGVseSogZmFtaWxpYXIgd2l0aCB0aGVpciBzaWduYXR1cmVzLCB0aGVpciBleHBlY3RlZCBiZWhhdmlvcnMsIGFuZCBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSBuZWVkIHRvIGRyaWxsIGludG8gdGhlIGRldGFpbHMuXG5cbkxldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aGUgQVBJIGVudHJ5IHBvaW50cyBmb3IgVEFQUklPLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGZvdXIgZnVuY3Rpb25zIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgVEFQUklPIHN1YnN5c3RlbS4gSSdsbCBuZWVkIHRvIGtub3c6XG4qICAgSG93IGRvZXMgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIHdvcms/XG4qICAgSG93IGRvIHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIHRoZSByZXN0IG9mIHRoZSBzY2hlZHVsZXI/XG4qICAgSG93IGRvIEkgc2lnbmFsIGVycm9ycz9cbiogICBIb3cgZG9lcyB0aGUgY2hhbmdlIGZ1bmN0aW9uIGJlaGF2ZT8gRG9lcyBpdCBoYXZlIGFueSBpbXBsaWNhdGlvbnMgb24gdGhlIGN1cnJlbnRseSBzY2hlZHVsZWQgZGF0YT9cbiogICBIb3cgZG9lcyBlbnF1ZXVlIGJlaGF2ZSBhbmQgaG93IGRvIGRpZmZlcmVudCBlbnF1ZXVlcyBpbnRlcmFjdD9cbiogICBXaGF0IHBhcmFtZXRlcnMgYXJlIGludm9sdmVkLCBhbmQgd2hhdCBkb2VzIGVhY2ggb25lIHNpZ25pZnk/IEFyZSB0aGVyZSBhbnkgaW1wbGljaXQgZGVwZW5kZW5jaWVzP1xuKiAgIFdoYXQgc29ydCBvZiBjb250ZXh0IGlzIHJlcXVpcmVkIGZvciBlYWNoIGNhbGw/IFRocmVhZHMsIGxvY2tzLCBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXM/XG4qICAgQW5kIGZpbmFsbHksIGFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgaGlkZGVuIGFzc3VtcHRpb25zIGFib3V0IHRoZSBlbnZpcm9ubWVudCB0aGlzIGNvZGUgcnVucyBpbj8gSSBuZWVkIHRvIGFuYWx5emUgdGhvc2UgZGV0YWlscywgdGhleSBjb3VsZCBzYXZlIG1lIGhvdXJzIG9mIGRlYnVnZ2luZyBsYXRlciBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIxMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjM5OjM2LjU1OTcwNTU5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDExMzIwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0YXByaW9fXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3ODIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMzQtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzozNTpzdGF0aWMgTElTVF9IRUFEKHRhcHJpb19saXN0KTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjM2OnN0YXRpYyBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSB0YXByaW9faGF2ZV9icm9rZW5fbXFwcmlvO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6Mzc6c3RhdGljIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIHRhcHJpb19oYXZlX3dvcmtpbmdfbXFwcmlvO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMzgtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTcyPXN0cnVjdCBzY2hlZF9nYXRlX2xpc3Qge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04Ny1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg4OnN0cnVjdCB0YXByaW9fc2NoZWQge1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODktXFx0c3RydWN0IFFkaXNjICoqcWRpc2NzO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMDYtXFx0c3RydWN0IGhydGltZXIgYWR2YW5jZV90aW1lcjtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEwNzpcXHRzdHJ1Y3QgbGlzdF9oZWFkIHRhcHJpb19saXN0O1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA4LVxcdGludCBjdXJfdHhxW1RDX01BWF9RVUVVRV07XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExMy1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExNDpzdHJ1Y3QgX190Y190YXByaW9fcW9wdF9vZmZsb2FkIHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNS1cXHRyZWZjb3VudF90IHVzZXJzO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTE2OlxcdHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkIG9mZmxvYWQ7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTctfTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExOTpzdGF0aWMgdm9pZCB0YXByaW9fY2FsY3VsYXRlX2dhdGVfZHVyYXRpb25zKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjAtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjMtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjQ6c3RhdGljIGJvb2wgdGFwcmlvX2VudHJ5X2FsbG93c190eChrdGltZV90IHNrYl9lbmRfdGltZSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2NS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBpbnQgdGMpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE3MD1zdGF0aWMga3RpbWVfdCBzY2hlZF9iYXNlX3RpbWUoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3Ny1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE3ODpzdGF0aWMga3RpbWVfdCB0YXByaW9fbW9ub190b19hbnkoY29uc3Qgc3RydWN0IHRhcHJpb19zY2hlZCAqcSwga3RpbWVfdCBtb25vKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc5LXtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4MDpcXHQvKiBUaGlzIHBhaXJzIHdpdGggV1JJVEVfT05DRSgpIGluIHRhcHJpb19wYXJzZV9jbG9ja2lkKCkgKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4MS1cXHRlbnVtIHRrX29mZnNldHMgdGtfb2Zmc2V0ID0gUkVBRF9PTkNFKHEtXFx1MDAzZXRrX29mZnNldCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5MC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5MTpzdGF0aWMga3RpbWVfdCB0YXByaW9fZ2V0X3RpbWUoY29uc3Qgc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5Mi17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxOTM6XFx0cmV0dXJuIHRhcHJpb19tb25vX3RvX2FueShxLCBrdGltZV9nZXQoKSk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTQtfVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTk1LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTk2OnN0YXRpYyB2b2lkIHRhcHJpb19mcmVlX3NjaGVkX2NiKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5Ny17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwOC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIwOTpzdGF0aWMgdm9pZCBzd2l0Y2hfc2NoZWR1bGVzKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTAtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICoqYWRtaW4sXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxNi1cXHRpZiAoKm9wZXIpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTc6XFx0XFx0Y2FsbF9yY3UoXFx1MDAyNigqb3BlciktXFx1MDAzZXJjdSwgdGFwcmlvX2ZyZWVfc2NoZWRfY2IpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE4LVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yMzU9c3RhdGljIGt0aW1lX3QgZ2V0X2ludGVydmFsX2VuZF90aW1lKHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTYtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNTc6c3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbilcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1OC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI2MjpzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNzAtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNzE6c3RhdGljIHZvaWQgdGFwcmlvX3VwZGF0ZV9xdWV1ZV9tYXhfc2R1KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNzItXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTMyMz1zdGF0aWMgc3RydWN0IHNjaGVkX2VudHJ5ICpmaW5kX2VudHJ5X3RvX3RyYW5zbWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTMzNC1cXHRzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gTlVMTCwgKmVudHJ5X2ZvdW5kID0gTlVMTDtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjMzNTpcXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMzM2LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9NDAwPXN0YXRpYyBib29sIGlzX3ZhbGlkX2ludGVydmFsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNDAxLXtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjQwMjpcXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNDAzLVxcdHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLCAqYWRtaW47XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQxOC0vKiBUaGlzIHJldHVybnMgdGhlIHRzdGFtcCB2YWx1ZSBzZXQgYnkgVENQIGluIHRlcm1zIG9mIHRoZSBzZXQgY2xvY2suICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo0MTk6c3RhdGljIGt0aW1lX3QgZ2V0X3RjcF90c3RhbXAoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQyMC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQ0OS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjQ1MDpcXHRyZXR1cm4gdGFwcmlvX21vbm9fdG9fYW55KHEsIHNrYi1cXHUwMDNlc2tiX21zdGFtcF9ucyk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00NTEtfVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz00Njg9c3RhdGljIGxvbmcgZ2V0X3BhY2tldF90eHRpbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQ3MC1cXHRrdGltZV90IHRyYW5zbWl0X2VuZF90aW1lLCBpbnRlcnZhbF9lbmQsIGludGVydmFsX3N0YXJ0LCB0Y3BfdHN0YW1wO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NDcxOlxcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00NzItXFx0c3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsICphZG1pbjtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNDc3LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NDc4OlxcdG5vdyA9IHRhcHJpb19nZXRfdGltZShxKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQ3OS1cXHRtaW5pbXVtX3RpbWUgPSBrdGltZV9hZGRfbnMobm93LCBxLVxcdTAwM2V0eHRpbWVfZGVsYXkpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01MzktLyogRGV2aWNlcyB3aXRoIGZ1bGwgb2ZmbG9hZCBhcmUgZXhwZWN0ZWQgdG8gaG9ub3IgdGhpcyBpbiBoYXJkd2FyZSAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NTQwOnN0YXRpYyBib29sIHRhcHJpb19za2JfZXhjZWVkc19xdWV1ZV9tYXhfc2R1KHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNTQxLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU0Mi17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo1NDM6XFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU0NC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHNjaCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU2MC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjU2MTpzdGF0aWMgaW50IHRhcHJpb19lbnF1ZXVlX29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU2Mi1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgUWRpc2MgKmNoaWxkLCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01NjMte1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NTY0OlxcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01NjUtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU4MS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjU4MjpzdGF0aWMgaW50IHRhcHJpb19lbnF1ZXVlX3NlZ21lbnRlZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU4My1cXHRcXHRcXHRcXHQgICAgc3RydWN0IFFkaXNjICpjaGlsZCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjAzLVxcdFxcdCAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjA0OlxcdFxcdGlmICh0YXByaW9fc2tiX2V4Y2VlZHNfcXVldWVfbWF4X3NkdShzY2gsIHNlZ3MpKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjA1LVxcdFxcdFxcdHJldCA9IHFkaXNjX2Ryb3Aoc2Vncywgc2NoLCB0b19mcmVlKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTYwNi1cXHRcXHRlbHNlXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2MDc6XFx0XFx0XFx0cmV0ID0gdGFwcmlvX2VucXVldWVfb25lKHNlZ3MsIHNjaCwgY2hpbGQsIHRvX2ZyZWUpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjA4LVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MjYtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2Mjc6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTYyOC1cXHRcXHRcXHQgIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTYyOS17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2MzA6XFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTYzMS1cXHRzdHJ1Y3QgUWRpc2MgKmNoaWxkO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MzktXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2NDA6XFx0aWYgKHRhcHJpb19za2JfZXhjZWVkc19xdWV1ZV9tYXhfc2R1KHNjaCwgc2tiKSkge1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjQxLVxcdFxcdC8qIExhcmdlIHBhY2tldHMgbWlnaHQgbm90IGJlIHRyYW5zbWl0dGVkIHdoZW4gdGhlIHRyYW5zbWlzc2lvblxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NDYtXFx0XFx0aWYgKHNrYl9pc19nc28oc2tiKSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY0NzpcXHRcXHRcXHRyZXR1cm4gdGFwcmlvX2VucXVldWVfc2VnbWVudGVkKHNrYiwgc2NoLCBjaGlsZCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY0OC1cXHRcXHRcXHRcXHRcXHRcXHRcXHR0b19mcmVlKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjUyLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjUzOlxcdHJldHVybiB0YXByaW9fZW5xdWV1ZV9vbmUoc2tiLCBzY2gsIGNoaWxkLCB0b19mcmVlKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY1NC19XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NTUtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2NTY6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fcGVlayhzdHJ1Y3QgUWRpc2MgKnNjaClcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY1Ny17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY2MS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY2MjpzdGF0aWMgdm9pZCB0YXByaW9fc2V0X2J1ZGdldHMoc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY2My1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY4Mi0vKiBXaGVuIGFuIHNrYiBpcyBzZW50LCBpdCBjb25zdW1lcyBmcm9tIHRoZSBidWRnZXQgb2YgYWxsIHRyYWZmaWMgY2xhc3NlcyAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjgzOnN0YXRpYyBpbnQgdGFwcmlvX3VwZGF0ZV9idWRnZXRzKHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksIHNpemVfdCBsZW4sXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02ODQtXFx0XFx0XFx0XFx0IGludCB0Y19jb25zdW1lZCwgaW50IG51bV90YylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzA1LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NzA2OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdGFwcmlvX2RlcXVldWVfZnJvbV90eHEoc3RydWN0IFFkaXNjICpzY2gsIGludCB0eHEsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03MDctXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTcwOS17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3MTA6XFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTcxMS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHNjaCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTczNi1cXHRsZW4gPSBxZGlzY19wa3RfbGVuKHNrYik7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3Mzc6XFx0Z3VhcmQgPSBrdGltZV9hZGRfbnModGFwcmlvX2dldF90aW1lKHEpLCBsZW5ndGhfdG9fZHVyYXRpb24ocSwgbGVuKSk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03MzgtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc0Mi1cXHRpZiAoZ2F0ZV9tYXNrICE9IFRBUFJJT19BTExfR0FURVNfT1BFTiBcXHUwMDI2XFx1MDAyNlxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NzQzOlxcdCAgICAhdGFwcmlvX2VudHJ5X2FsbG93c190eChndWFyZCwgZW50cnksIHRjKSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc0NC1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzQ3LVxcdGlmIChnYXRlX21hc2sgIT0gVEFQUklPX0FMTF9HQVRFU19PUEVOIFxcdTAwMjZcXHUwMDI2XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3NDg6XFx0ICAgIHRhcHJpb191cGRhdGVfYnVkZ2V0cyhlbnRyeSwgbGVuLCB0YywgbnVtX3RjKSBcXHUwMDNjIDApXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03NDktXFx0XFx0cmV0dXJuIE5VTEw7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc2Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjc2MzpzdGF0aWMgdm9pZCB0YXByaW9fbmV4dF90Y190eHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHRjLCBpbnQgKnR4cSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc2NC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc3NS0gKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjc3NjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRhcHJpb19kZXF1ZXVlX3RjX3ByaW9yaXR5KHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzc3LVxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzc5LXtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjc4MDpcXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzgxLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzkyLVxcdFxcdGRvIHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjc5MzpcXHRcXHRcXHRza2IgPSB0YXByaW9fZGVxdWV1ZV9mcm9tX3R4cShzY2gsIHEtXFx1MDAzZWN1cl90eHFbdGNdLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzk0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGVudHJ5LCBnYXRlX21hc2spO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzk1LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6Nzk2OlxcdFxcdFxcdHRhcHJpb19uZXh0X3RjX3R4cShkZXYsIHRjLCBcXHUwMDI2cS1cXHUwMDNlY3VyX3R4cVt0Y10pO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzk3LVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04MTEtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4MTI6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZV90eHFfcHJpb3JpdHkoc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04MTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODIwLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkZXYtXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKykge1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODIxOlxcdFxcdHNrYiA9IHRhcHJpb19kZXF1ZXVlX2Zyb21fdHhxKHNjaCwgaSwgZW50cnksIGdhdGVfbWFzayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04MjItXFx0XFx0aWYgKHNrYilcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODMxLSAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODMyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdGFwcmlvX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04MzMte1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODM0OlxcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04MzUtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg0OS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg1MDpcXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcXHUwMDI2dGFwcmlvX2hhdmVfYnJva2VuX21xcHJpbykgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg1MTpcXHQgICAgIXN0YXRpY19icmFuY2hfbGlrZWx5KFxcdTAwMjZ0YXByaW9faGF2ZV93b3JraW5nX21xcHJpbykpIHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg1Mi1cXHRcXHQvKiBTaW5nbGUgTklDIGtpbmQgd2hpY2ggaXMgYnJva2VuICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NTM6XFx0XFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdHhxX3ByaW9yaXR5KHNjaCwgZW50cnksIGdhdGVfbWFzayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NTQ6XFx0fSBlbHNlIGlmIChzdGF0aWNfYnJhbmNoX2xpa2VseShcXHUwMDI2dGFwcmlvX2hhdmVfd29ya2luZ19tcXByaW8pIFxcdTAwMjZcXHUwMDI2XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NTU6XFx0XFx0ICAgIXN0YXRpY19icmFuY2hfdW5saWtlbHkoXFx1MDAyNnRhcHJpb19oYXZlX2Jyb2tlbl9tcXByaW8pKSB7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NTYtXFx0XFx0LyogU2luZ2xlIE5JQyBraW5kIHdoaWNoIHByaW9yaXRpemVzIHByb3Blcmx5ICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NTc6XFx0XFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdGNfcHJpb3JpdHkoc2NoLCBlbnRyeSwgZ2F0ZV9tYXNrKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg1OC1cXHR9IGVsc2Uge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NjAtXFx0XFx0aWYgKHEtXFx1MDAzZWJyb2tlbl9tcXByaW8pXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NjE6XFx0XFx0XFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdHhxX3ByaW9yaXR5KHNjaCwgZW50cnksIGdhdGVfbWFzayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NjItXFx0XFx0ZWxzZVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODYzOlxcdFxcdFxcdHNrYiA9IHRhcHJpb19kZXF1ZXVlX3RjX3ByaW9yaXR5KHNjaCwgZW50cnksIGdhdGVfbWFzayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NjQtXFx0fVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz05MTg9c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTE5LXtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjkyMDpcXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgdGFwcmlvX3NjaGVkLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTIxLVxcdFxcdFxcdFxcdFxcdCAgICAgIGFkdmFuY2VfdGltZXIpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05MjUtXFx0aW50IG51bV90YyA9IG5ldGRldl9nZXRfbnVtX3RjKGRldik7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo5MjY6XFx0a3RpbWVfdCBub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05MjctXFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwMjQtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMDI1OlxcdHRhcHJpb19zZXRfYnVkZ2V0cyhxLCBvcGVyLCBuZXh0KTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwMjYtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTEwNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGVudHJ5X3BvbGljeVtUQ0FfVEFQUklPX1NDSEVEX0VOVFJZX01BWCArIDFdID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMDUwLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTA1MTpzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdGFwcmlvX3RjX3BvbGljeVtUQ0FfVEFQUklPX1RDX0VOVFJZX01BWCArIDFdID0ge1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA1Mi1cXHRbVENBX1RBUFJJT19UQ19FTlRSWV9JTkRFWF1cXHQgICA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VMzIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNTktXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMDYwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uX3NpZ25lZCB0YXByaW9fY3ljbGVfdGltZV9yYW5nZSA9IHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNjEtXFx0Lm1pbiA9IDAsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNjQtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMDY1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB0YXByaW9fcG9saWN5W1RDQV9UQVBSSU9fQVRUUl9NQVggKyAxXSA9IHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNjYtXFx0W1RDQV9UQVBSSU9fQVRUUl9QUklPTUFQXVxcdCAgICAgICA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA3My1cXHRbVENBX1RBUFJJT19BVFRSX1NDSEVEX0NZQ0xFX1RJTUVdICAgICAgICAgICA9XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMDc0OlxcdFxcdE5MQV9QT0xJQ1lfRlVMTF9SQU5HRV9TSUdORUQoTkxBX1M2NCwgXFx1MDAyNnRhcHJpb19jeWNsZV90aW1lX3JhbmdlKSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNzUtXFx0W1RDQV9UQVBSSU9fQVRUUl9TQ0hFRF9DWUNMRV9USU1FX0VYVEVOU0lPTl0gPSB7IC50eXBlID0gTkxBX1M2NCB9LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMDgxLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTA4MjpzdGF0aWMgaW50IGZpbGxfc2NoZWRfZW50cnkoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA4My1cXHRcXHRcXHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTExMy1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExMTQ6c3RhdGljIGludCBwYXJzZV9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICpuLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTExNS1cXHRcXHRcXHQgICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksIGludCBpbmRleCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTEzMi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExMzM6c3RhdGljIGludCBwYXJzZV9zY2hlZF9saXN0KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKmxpc3QsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTM0LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTE3Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExNzM6c3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTE3NC1cXHRcXHRcXHRcXHQgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqbmV3LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjE4LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTIxOTpcXHR0YXByaW9fY2FsY3VsYXRlX2dhdGVfZHVyYXRpb25zKHEsIG5ldyk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjIwLVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjIzLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTIyNDpzdGF0aWMgaW50IHRhcHJpb19wYXJzZV9tcXByaW9fb3B0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjI1LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCB0Y19tcXByaW9fcW9wdCAqcW9wdCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyMjYtXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTIyNzpcXHRcXHRcXHRcXHQgICB1MzIgdGFwcmlvX2ZsYWdzKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTIyOC17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMjI5OlxcdGJvb2wgYWxsb3dfb3ZlcmxhcHBpbmdfdHhxcyA9IFRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRCh0YXByaW9fZmxhZ3MpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTIzMC1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI1MS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEyNTI6c3RhdGljIGludCB0YXByaW9fZ2V0X3N0YXJ0X3RpbWUoc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjUzLVxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI1NS17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMjU2OlxcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjU3LVxcdGt0aW1lX3Qgbm93LCBiYXNlLCBjeWNsZTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI2MC1cXHRiYXNlID0gc2NoZWRfYmFzZV90aW1lKHNjaGVkKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEyNjE6XFx0bm93ID0gdGFwcmlvX2dldF90aW1lKHEpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI2Mi1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI4NS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEyODY6c3RhdGljIHZvaWQgc2V0dXBfZmlyc3RfZW5kX3RpbWUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyODctXFx0XFx0XFx0XFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLCBrdGltZV90IGJhc2UpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzMDMtXFx0Zmlyc3QtXFx1MDAzZWVuZF90aW1lID0ga3RpbWVfYWRkX25zKGJhc2UsIGZpcnN0LVxcdTAwM2VpbnRlcnZhbCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzA0OlxcdHRhcHJpb19zZXRfYnVkZ2V0cyhxLCBzY2hlZCwgZmlyc3QpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTMwNS1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTMxNS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzMTY6c3RhdGljIHZvaWQgdGFwcmlvX3N0YXJ0X3NjaGVkKHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTMxNy1cXHRcXHRcXHQgICAgICAga3RpbWVfdCBzdGFydCwgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqbmV3KVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTMxOC17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzE5OlxcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzIwLVxcdGt0aW1lX3QgZXhwaXJlcztcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTMzNy1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzMzg6c3RhdGljIHZvaWQgdGFwcmlvX3NldF9waWNvc19wZXJfYnl0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTMzOTpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTM0MC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzNzEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzcyOnN0YXRpYyBpbnQgdGFwcmlvX2Rldl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTM3My1cXHRcXHRcXHQgICAgICAgdm9pZCAqcHRyKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzc3LVxcdHN0cnVjdCBxZGlzY19zaXplX3RhYmxlICpzdGFiO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTM3ODpcXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTM3OS1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTM4NC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzODU6XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShxLCBcXHUwMDI2dGFwcmlvX2xpc3QsIHRhcHJpb19saXN0KSB7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzg2LVxcdFxcdGlmIChkZXYgIT0gcWRpc2NfZGV2KHEtXFx1MDAzZXJvb3QpKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzg4LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTM4OTpcXHRcXHR0YXByaW9fc2V0X3BpY29zX3Blcl9ieXRlKGRldiwgcSwgTlVMTCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzkwLVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzk1LVxcdFxcdGlmIChvcGVyKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTM5NjpcXHRcXHRcXHR0YXByaW9fdXBkYXRlX3F1ZXVlX21heF9zZHUocSwgb3Blciwgc3RhYik7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzk3LVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzk5LVxcdFxcdGlmIChhZG1pbilcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0MDA6XFx0XFx0XFx0dGFwcmlvX3VwZGF0ZV9xdWV1ZV9tYXhfc2R1KHEsIGFkbWluLCBzdGFiKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0MDEtXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0MDgtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDA5OnN0YXRpYyB2b2lkIHNldHVwX3R4dGltZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQxMC1cXHRcXHRcXHQgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsIGt0aW1lX3QgYmFzZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQyMC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0MjE6c3RhdGljIHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICp0YXByaW9fb2ZmbG9hZF9hbGxvYyhpbnQgbnVtX2VudHJpZXMpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDIyLXtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0MjM6XFx0c3RydWN0IF9fdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqX19vZmZsb2FkO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQyNC1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQzMy1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0MzQ6c3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKnRhcHJpb19vZmZsb2FkX2dldChzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQzNS1cXHRcXHRcXHRcXHRcXHRcXHQgICpvZmZsb2FkKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQzNi17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDM3OlxcdHN0cnVjdCBfX3RjX3RhcHJpb19xb3B0X29mZmxvYWQgKl9fb2ZmbG9hZDtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0MzgtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDM5OlxcdF9fb2ZmbG9hZCA9IGNvbnRhaW5lcl9vZihvZmZsb2FkLCBzdHJ1Y3QgX190Y190YXByaW9fcW9wdF9vZmZsb2FkLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ0MC1cXHRcXHRcXHRcXHQgb2ZmbG9hZCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NDUtfVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQ0NjpFWFBPUlRfU1lNQk9MX0dQTCh0YXByaW9fb2ZmbG9hZF9nZXQpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ0Ny1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0NDg6dm9pZCB0YXByaW9fb2ZmbG9hZF9mcmVlKHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICpvZmZsb2FkKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ0OS17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDUwOlxcdHN0cnVjdCBfX3RjX3RhcHJpb19xb3B0X29mZmxvYWQgKl9fb2ZmbG9hZDtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NTEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDUyOlxcdF9fb2ZmbG9hZCA9IGNvbnRhaW5lcl9vZihvZmZsb2FkLCBzdHJ1Y3QgX190Y190YXByaW9fcW9wdF9vZmZsb2FkLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ1My1cXHRcXHRcXHRcXHQgb2ZmbG9hZCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NTktfVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQ2MDpFWFBPUlRfU1lNQk9MX0dQTCh0YXByaW9fb2ZmbG9hZF9mcmVlKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NjEtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NzMtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDc0OnN0YXRpYyB2b2lkIHRhcHJpb19vZmZsb2FkX2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDc1LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTQ4ND1zdGF0aWMgdTMyIHRjX21hcF90b19xdWV1ZV9tYXNrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiB0Y19tYXNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTAyLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTUwMzpzdGF0aWMgdm9pZCB0YXByaW9fc2NoZWRfdG9fb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTUwNC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTA1OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqb2ZmbG9hZCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1MDY6XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB0Y190YXByaW9fY2FwcyAqY2FwcylcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MDcte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTE1LVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZW50cnksIFxcdTAwMjZzY2hlZC1cXHUwMDNlZW50cmllcywgbGlzdCkge1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTUxNjpcXHRcXHRzdHJ1Y3QgdGNfdGFwcmlvX3NjaGVkX2VudHJ5ICplID0gXFx1MDAyNm9mZmxvYWQtXFx1MDAzZWVudHJpZXNbaV07XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTE3LVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTMxLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTUzMjpzdGF0aWMgdm9pZCB0YXByaW9fZGV0ZWN0X2Jyb2tlbl9tcXByaW8oc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MzMte1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTUzNC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHEtXFx1MDAzZXJvb3QpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTUzNTpcXHRzdHJ1Y3QgdGNfdGFwcmlvX2NhcHMgY2FwcztcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MzYtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NDEtXFx0aWYgKHEtXFx1MDAzZWJyb2tlbl9tcXByaW8pXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTQyOlxcdFxcdHN0YXRpY19icmFuY2hfaW5jKFxcdTAwMjZ0YXByaW9faGF2ZV9icm9rZW5fbXFwcmlvKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NDMtXFx0ZWxzZVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU0NDpcXHRcXHRzdGF0aWNfYnJhbmNoX2luYyhcXHUwMDI2dGFwcmlvX2hhdmVfd29ya2luZ19tcXByaW8pO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU0NS1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU0OC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1NDk6c3RhdGljIHZvaWQgdGFwcmlvX2NsZWFudXBfYnJva2VuX21xcHJpbyhzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU1MC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NTQtXFx0aWYgKHEtXFx1MDAzZWJyb2tlbl9tcXByaW8pXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTU1OlxcdFxcdHN0YXRpY19icmFuY2hfZGVjKFxcdTAwMjZ0YXByaW9faGF2ZV9icm9rZW5fbXFwcmlvKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NTYtXFx0ZWxzZVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU1NzpcXHRcXHRzdGF0aWNfYnJhbmNoX2RlYyhcXHUwMDI2dGFwcmlvX2hhdmVfd29ya2luZ19tcXByaW8pO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU1OC19XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTU5LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU2MDpzdGF0aWMgaW50IHRhcHJpb19lbmFibGVfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU2MTpcXHRcXHRcXHRcXHQgc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NjItXFx0XFx0XFx0XFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTY1LVxcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyAqb3BzID0gZGV2LVxcdTAwM2VuZXRkZXZfb3BzO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU2NjpcXHRzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqb2ZmbG9hZDtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1Njc6XFx0c3RydWN0IHRjX3RhcHJpb19jYXBzIGNhcHM7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTY4LVxcdGludCB0YywgZXJyID0gMDtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU4OC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1ODk6XFx0b2ZmbG9hZCA9IHRhcHJpb19vZmZsb2FkX2FsbG9jKHNjaGVkLVxcdTAwM2VudW1fZW50cmllcyk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTkwLVxcdGlmICghb2ZmbG9hZCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTk4LVxcdG9mZmxvYWQtXFx1MDAzZW1xcHJpby5leHRhY2sgPSBleHRhY2s7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTk5OlxcdHRhcHJpb19zY2hlZF90b19vZmZsb2FkKGRldiwgc2NoZWQsIG9mZmxvYWQsIFxcdTAwMjZjYXBzKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MDAtXFx0bXFwcmlvX2ZwX3RvX29mZmxvYWQocS1cXHUwMDNlZnAsIFxcdTAwMjZvZmZsb2FkLVxcdTAwM2VtcXByaW8pO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjIwLVxcdG9mZmxvYWQtXFx1MDAzZW1xcHJpby5leHRhY2sgPSBOVUxMO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTYyMTpcXHR0YXByaW9fb2ZmbG9hZF9mcmVlKG9mZmxvYWQpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYyMi1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYyNS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2MjY6c3RhdGljIGludCB0YXByaW9fZGlzYWJsZV9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjI3OlxcdFxcdFxcdFxcdCAgc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MjgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MzAtXFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzICpvcHMgPSBkZXYtXFx1MDAzZW5ldGRldl9vcHM7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjMxOlxcdHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICpvZmZsb2FkO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYzMi1cXHRpbnQgZXJyO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjM2LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTYzNzpcXHRvZmZsb2FkID0gdGFwcmlvX29mZmxvYWRfYWxsb2MoMCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjM4LVxcdGlmICghb2ZmbG9hZCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjU0LW91dDpcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2NTU6XFx0dGFwcmlvX29mZmxvYWRfZnJlZShvZmZsb2FkKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2NTYtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2NjYtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjY3OnN0YXRpYyBpbnQgdGFwcmlvX3BhcnNlX2Nsb2NraWQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKip0YixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2NjgtXFx0XFx0XFx0XFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY2OS17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjcwOlxcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjcxLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTcyOC1cXHRcXHR9XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzI5OlxcdFxcdC8qIFRoaXMgcGFpcnMgd2l0aCBSRUFEX09OQ0UoKSBpbiB0YXByaW9fbW9ub190b19hbnkgKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3MzAtXFx0XFx0V1JJVEVfT05DRShxLVxcdTAwM2V0a19vZmZzZXQsIHRrX29mZnNldCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3NDQtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzQ1OnN0YXRpYyBpbnQgdGFwcmlvX3BhcnNlX3RjX2VudHJ5KHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc0Ni1cXHRcXHRcXHRcXHQgc3RydWN0IG5sYXR0ciAqb3B0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzU3LVxcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIFRDQV9UQVBSSU9fVENfRU5UUllfTUFYLCBvcHQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzU4OlxcdFxcdFxcdCAgICAgICB0YXByaW9fdGNfcG9saWN5LCBleHRhY2spO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc1OS1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc5MS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE3OTI6c3RhdGljIGludCB0YXByaW9fcGFyc2VfdGNfZW50cmllcyhzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3OTMtXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5sYXR0ciAqb3B0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzk1LXtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE3OTY6XFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3OTctXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHFkaXNjX2RldihzY2gpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODExLVxcdG5sYV9mb3JfZWFjaF9uZXN0ZWRfdHlwZShuLCBUQ0FfVEFQUklPX0FUVFJfVENfRU5UUlksIG9wdCwgcmVtKSB7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODEyOlxcdFxcdGVyciA9IHRhcHJpb19wYXJzZV90Y19lbnRyeShzY2gsIG4sIG1heF9zZHUsIGZwLCBcXHUwMDI2c2Vlbl90Y3MsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODEzLVxcdFxcdFxcdFxcdFxcdCAgICBleHRhY2spO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODQxLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTg0MjpzdGF0aWMgaW50IHRhcHJpb19tcXByaW9fY21wKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODQzLVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IHRjX21xcHJpb19xb3B0ICptcXByaW8pXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NjEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODYyOnN0YXRpYyBpbnQgdGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg2My1cXHRcXHRcXHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODY3LVxcdHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm9wZXIsICphZG1pbiwgKm5ld19hZG1pbjtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4Njg6XFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NjktXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHFkaXNjX2RldihzY2gpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODcxLVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODcyOlxcdHUzMiB0YXByaW9fZmxhZ3M7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODczLVxcdGt0aW1lX3Qgc3RhcnQ7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NzYtXFx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKHRiLCBUQ0FfVEFQUklPX0FUVFJfTUFYLCBvcHQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODc3OlxcdFxcdFxcdFxcdFxcdCAgdGFwcmlvX3BvbGljeSwgZXh0YWNrKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NzgtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6MzYuNjIzODI1OTQ4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NDg4NTcwNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgVEFQUklPKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoaXMgVEFQUklPIGltcGxlbWVudGF0aW9uLiBUaGUgY29yZSBlbnRyeSBwb2ludHMsIHRoZSBvbmVzIEkgbmVlZCB0byBmb2N1cyBvbiwgYXJlIGRlZmluaXRlbHkgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2luaXRgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYC4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGB0YXByaW9fY2hhbmdlYCBhbmQgYHRhcHJpb19pbml0YCBhcmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIHNjaGVkdWxlLCBhbmQgaXQgbG9va3MgbGlrZSBJJ20gcmlnaHQuIGB0YXByaW9fY2hhbmdlYCBkb2VzIHRoZSBwYXJzaW5nIG9mIHRoZSBzY2hlZHVsZSBhbmQgc2V0cyB0aGUgdGltZXIsIGFuZCBJIHNlZSBub3cgdGhhdCBgdGFwcmlvX2VucXVldWVgIGFuZCBgdGFwcmlvX2RlcXVldWVgIGhhbmRsZSBwYWNrZXQgcHJvY2Vzc2luZy5cblxuVGhlIHBhdGNoIG1lbnRpb25zIGEgbW9kaWZpY2F0aW9uIHRvIGBhZHZhbmNlX3NjaGVkYCwgd2hpY2ggaXMgdGhlIGhydGltZXIgY2FsbGJhY2suIFRoYXQgY29uZmlybXMgbXkgaW5pdGlhbCB0aG91Z2h0OiBmdXp6aW5nIGB0YXByaW9fY2hhbmdlYCBpcyBnb2luZyB0byBiZSAqY3JpdGljYWwqLCBiZWNhdXNlIHRoYXQncyB3aGVyZSB0aGUgcWRpc2MgZ2V0cyBjb25maWd1cmVkIGFuZCB0aGUgdGltZXIgc3RhcnRzLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgc2NoZWR1bGUgYW5kIGB0YXByaW9fZW5xdWV1ZWAgYW5kIGB0YXByaW9fZGVxdWV1ZWAsIGFzIHRob3NlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIGl0LiBTbywgdG8gY292ZXIgYWxsIHRoZSBpbXBvcnRhbnQgcGFydHMsIEknbSBnb2luZyB0byBpbmNsdWRlIGB0YXByaW9fY2hhbmdlYCwgYHRhcHJpb19pbml0YCwgYHRhcHJpb19lbnF1ZXVlYCwgYHRhcHJpb19kZXF1ZXVlYCwgYW5kIGBhZHZhbmNlX3NjaGVkYCBpbiBteSBmdXp6aW5nIHRhcmdldC5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYGFkdmFuY2Vfc2NoZWRgIGlzbid0IGEgc3RhdGljIGlubGluZSBmdW5jdGlvbiwganVzdCB0byBiZSBzdXJlLiBBIHF1aWNrIGxvb2sgYXQgYG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNgIGNvbmZpcm1zIHRoYXQgaXQncyBgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKWAsIHNvIGl0J3Mgbm90IGlubGluZS5cblxuQWxyaWdodCwgdGhlIG5leHQgdGhpbmcgaXMgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMgY29ycmVjdC4gYE5FVF9TQ0hfVEFQUklPYCBpcyB0aGUgb2J2aW91cyBvbmUuIE5vdywgYXJlIHRoZXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgSSBuZWVkPyBMb29raW5nIGluIGBuZXQvc2NoZWQvS2NvbmZpZ2AsIEkgc2VlIHRoYXQgYE5FVF9TQ0hfTVFQUklPX0xJQmAgaXMgc2VsZWN0ZWQgYnkgYE5FVF9TQ0hfVEFQUklPYCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGNvbnNpZGVyLiBJIHNob3VsZCBjb25maXJtIHRoYXQgYE5FVF9TQ0hFRGAgaXMgcmVxdWlyZWQgYXMgYSBwYXJlbnQuIFl1cCwgaXQncyB0aGUgcGFyZW50LCBhcyBleHBlY3RlZC4gSSdsbCBuZWVkIHRvIGtlZXAgdGhpcyBpbiBtaW5kIHdoZW4gSSBzZXQgdXAgbXkgZnV6emluZyBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc2NjAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6NDMuMTcyNjg1MjAxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODIxMDI3ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZy01LVxcbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6NDMuMzU0NzkzMzE1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNDUzMDY0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgVEFQUklPKipcblxuT2theSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgTkVUX1NDSEVEYCBpcyBlbmFibGVkIGZvciB0aGlzIGZ1enppbmcgZWZmb3J0LiBBbmQsIHdhaXQsIHdoYXQgYWJvdXQgYE5FVF9TQ0hfVEFQUklPYD8gSXQncyB0cmlzdGF0ZSwgd2hpY2ggaXMgZ29vZC5cblxuTGV0J3MgcHVsbCB0b2dldGhlciB0aGUga2V5IGVsZW1lbnRzOiBJJ3ZlIGRldGVybWluZWQgdGhhdCB0aGlzIGlzIHdvcnRoIGZ1enppbmcuIE15IG1haW4gZm9jdXMgc2hvdWxkIGJlIG9uIHRoZXNlIHN5bWJvbHM6IGBhZHZhbmNlX3NjaGVkYCwgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2luaXRgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYC4gVG8gbWFrZSB0aGlzIHdvcmssIEknbGwgbmVlZCB0byBlbmFibGUgdGhlIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gIGNvbmZpZ3VyYXRpb25zLlxuXG5Ob3csIGEgcXVpY2sgdGhvdWdodCBhYm91dCBgYWR2YW5jZV9zY2hlZGAuIFRoZSBmdXp6aW5nIGd1aWRlbGluZXMgZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGUgZG9jdW1lbnQgZW1waGFzaXplZCBub3QgdXNpbmcgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMsIGJ1dCBsb29raW5nIGF0IGBhZHZhbmNlX3NjaGVkYCBtb3JlIGNsb3NlbHksIGl0J3MgYWN0dWFsbHkgYSB0aW1lciBjYWxsYmFjay4gSXRzIGFkZHJlc3MgKmlzKiB0YWtlbiBhbmQgcGFzc2VkIHRvIGBocnRpbWVyX3NldHVwYCwgc28gaXQgbGlrZWx5IHdvbid0IGJlIGlubGluZWQsIGV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLiBJdCdzIGEgYml0IG9mIGFuIGVkZ2UgY2FzZSwgc28gSSdsbCBpbmNsdWRlIGl0LiBCdXQgSSBzaG91bGQgZGVmaW5pdGVseSBwcmlvcml0aXplIHRoZSBtYWluIEFQSSBlbnRyeSBwb2ludHM6IGB0YXByaW9fY2hhbmdlYCwgYHRhcHJpb19pbml0YCwgYHRhcHJpb19lbnF1ZXVlYCwgYW5kIGB0YXByaW9fZGVxdWV1ZWAuXG5cbkp1c3QgdG8gYmUgc2FmZSwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgYHRhcHJpb19jaGFuZ2VgIGFuZCBgdGFwcmlvX2luaXRgIHRvIGNvbmZpcm0gbXkgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NTkzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjM5OjQ4LjYwMDEwMjQ1NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAxOTg2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGFwcmlvX2NoYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTg0Mj1zdGF0aWMgaW50IHRhcHJpb19tcXByaW9fY21wKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NjEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODYyOnN0YXRpYyBpbnQgdGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg2My1cXHRcXHRcXHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yMTExPXN0YXRpYyBpbnQgdGFwcmlvX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjEyNC1cXHQvKiBXZSBvbmx5IHN1cHBvcnQgc3RhdGljIGNsb2NraWRzLiBVc2UgYW4gaW52YWxpZCB2YWx1ZSBhcyBkZWZhdWx0XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTI1OlxcdCAqIGFuZCBnZXQgdGhlIHZhbGlkIG9uZSBvbiB0YXByaW9fY2hhbmdlKCkuXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTI2LVxcdCAqL1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTcyLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjE3MzpcXHRyZXR1cm4gdGFwcmlvX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxNzQtfVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNTg2PXN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHRhcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU5MC1cXHQuaW5pdFxcdFxcdD0gdGFwcmlvX2luaXQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNTkxOlxcdC5jaGFuZ2VcXHRcXHQ9IHRhcHJpb19jaGFuZ2UsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTkyLVxcdC5kZXN0cm95XFx0PSB0YXByaW9fZGVzdHJveSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6NDguNjYwMzA2NDA0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NjgzNzE2OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFRBUFJJTyBTY2hlZHVsZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgVEFQUklPIHNjaGVkdWxlciBwYXRjaC4gSXQgbG9va3MgbGlrZSB0aGUga2V5IFFkaXNjIG9wZXJhdGlvbiBjYWxsYmFja3Mg4oCTIGB0YXByaW9fY2hhbmdlYCwgYHRhcHJpb19pbml0YCwgYHRhcHJpb19lbnF1ZXVlYCwgYW5kIGB0YXByaW9fZGVxdWV1ZWAg4oCTIGFyZSBvdXIgcHJpbWFyeSBlbnRyeSBwb2ludHMsIGV2ZW4gdGhvdWdoIHRoZXkncmUgc3RhdGljIHdpdGhpbiB0aGUgUWRpc2Mgc3RydWN0dXJlLiBJJ20gYWxzbyBnb2luZyB0byBhZGQgYGFkdmFuY2Vfc2NoZWRgIHRvIHRoZSBsaXN0LCBzaW5jZSB0aGF0J3MgdGhlIHRpbWVyIGNhbGxiYWNrIHRoYXQncyBiZWVuIGRpcmVjdGx5IG1vZGlmaWVkLiBJdCdzIGltcG9ydGFudCB0byBpbmNsdWRlIGl0IGJlY2F1c2UgaXQncyBub3QgaW5saW5lZCwgd2hpY2ggbWFrZXMgaXQgYSBjcnVjaWFsIGZ1bmN0aW9uIHRvIGNvbnNpZGVyLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IHJlLWV4YW1pbmUgdGhlIHBhdGNoIHRvIGVuc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciBtb2RpZmllZCBmdW5jdGlvbnMuIE5vcGUsIGxvb2tzIGxpa2UgYGFkdmFuY2Vfc2NoZWRgIGlzIHRoZSBvbmx5IG90aGVyIGZ1bmN0aW9uIHRoYXQncyBiZWVuIHRvdWNoZWQuXG5cblNvLCB0byBzdW1tYXJpemUsIHRoZSBlc3NlbnRpYWwgZm9jdXMgc3ltYm9scyBoZXJlIGFyZTpcblxuKiAgIGBhZHZhbmNlX3NjaGVkYFxuKiAgIGB0YXByaW9fY2hhbmdlYFxuKiAgIGB0YXByaW9fZW5xdWV1ZWBcbiogICBgdGFwcmlvX2RlcXVldWVgXG5cbkZvciB0aGUgY29ycmVzcG9uZGluZyBjb25maWd1cmF0aW9ucywgd2UgbmVlZCB0byBoYXZlOlxuXG4qICAgYE5FVF9TQ0hfVEFQUklPYFxuKiAgIGBORVRfU0NIRURgXG5cbkVzc2VudGlhbGx5LCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgc29mdGlycSBzdGFsbCBwcm9ibGVtIGluIHRoZSBUQVBSSU8gbmV0d29yayBzY2hlZHVsZXIuIEl0IGJvdW5kcyB0aGUgcmV0cnkgbG9vcCBhbmQgZml4ZXMgdGhlIGBnYXRlX2Nsb3NlX3RpbWVgIGNhbGN1bGF0aW9uIGluIHRoZSBgYWR2YW5jZV9zY2hlZGAgaHJ0aW1lciBjYWxsYmFjay4gVGhpcyBpcyBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYywgZGlyZWN0bHkgcmVhY2hhYmxlIHRocm91Z2ggY29uZmlndXJpbmcgdGhlIHRhcHJpbyBRZGlzYyBhbmQgc2VuZGluZyB0cmFmZmljLiBJdCdzIGEgY3JpdGljYWwgZml4IGFmZmVjdGluZyBob3cgVEFQUklPIHNoYXBlcyBhbmQgcHJpb3JpdGl6ZXMgdHJhZmZpYywgc28gaXQncyB3b3J0aCBtYWtpbmcgc3VyZSB3ZSdyZSBnZXR0aW5nIHRoaXMgaW1wbGVtZW50ZWQuXG5cbkknbSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTYzNCwiT3V0cHV0VG9rZW5zIjoxNDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6NTQuNjI4NjgwMDYzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA3Njc3NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhZHZhbmNlX3NjaGVkXCIsXG4gICAgXCJ0YXByaW9fY2hhbmdlXCIsXG4gICAgXCJ0YXByaW9fZW5xdWV1ZVwiLFxuICAgIFwidGFwcmlvX2RlcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGFkdmFuY2Vfc2NoZWRgIGhydGltZXIgY2FsbGJhY2sgaW4gdGhlIHRhcHJpbyBuZXR3b3JrIHNjaGVkdWxlciAoVGltZS1Bd2FyZSBQcmlvcml0eSBTaGFwZXIpIHRvIHByZXZlbnQgc29mdGlycSBzdGFsbHMgYnkgYm91bmRpbmcgdGhlIHJldHJ5IGxvb3AgYW5kIGNvcnJlY3RseSBjYWxjdWxhdGluZyBgZ2F0ZV9jbG9zZV90aW1lYC4gVGhpcyBpcyBjb3JlIHJlYWNoYWJsZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNvbmZpZ3VyaW5nIHRoZSB0YXByaW8gcWRpc2MgYW5kIHNlbmRpbmcgdHJhZmZpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfVEFQUklPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWR2YW5jZV9zY2hlZFwiLFxuICAgIFwidGFwcmlvX2NoYW5nZVwiLFxuICAgIFwidGFwcmlvX2VucXVldWVcIixcbiAgICBcInRhcHJpb19kZXF1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhZHZhbmNlX3NjaGVkYCBocnRpbWVyIGNhbGxiYWNrIGluIHRoZSB0YXByaW8gbmV0d29yayBzY2hlZHVsZXIgKFRpbWUtQXdhcmUgUHJpb3JpdHkgU2hhcGVyKSB0byBwcmV2ZW50IHNvZnRpcnEgc3RhbGxzIGJ5IGJvdW5kaW5nIHRoZSByZXRyeSBsb29wIGFuZCBjb3JyZWN0bHkgY2FsY3VsYXRpbmcgYGdhdGVfY2xvc2VfdGltZWAuIFRoaXMgaXMgY29yZSByZWFjaGFibGUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjb25maWd1cmluZyB0aGUgdGFwcmlvIHFkaXNjIGFuZCBzZW5kaW5nIHRyYWZmaWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowrs8bf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-24 21:15:28 +0000 UTC FinishedAt: 2026-07-24 21:39:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "9eef63a7-e701-4129-be03-5cee36b6a453" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "advance_sched", "taprio_change", "taprio_enqueue", "taprio_dequeue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1RBUFJJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FkdmFuY2Vfc2NoZWQmIzM0OywKICAgICYjMzQ7dGFwcmlvX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZW5xdWV1ZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZGVxdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGFkdmFuY2Vfc2NoZWRgIGhydGltZXIgY2FsbGJhY2sgaW4gdGhlIHRhcHJpbyBuZXR3b3JrIHNjaGVkdWxlciAoVGltZS1Bd2FyZSBQcmlvcml0eSBTaGFwZXIpIHRvIHByZXZlbnQgc29mdGlycSBzdGFsbHMgYnkgYm91bmRpbmcgdGhlIHJldHJ5IGxvb3AgYW5kIGNvcnJlY3RseSBjYWxjdWxhdGluZyBgZ2F0ZV9jbG9zZV90aW1lYC4gVGhpcyBpcyBjb3JlIHJlYWNoYWJsZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNvbmZpZ3VyaW5nIHRoZSB0YXByaW8gcWRpc2MgYW5kIHNlbmRpbmcgdHJhZmZpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDhiMGUzMzM2OWY3MWQxMWUyZjg5YTYwZDJiYjY0NWZiYzkwNGUwMzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAyMTozOToxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuaW5kZXggMjk5MjM0YTVmMGZlNjAuLjhlOGJlNTY4ZGQyYTcwIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuQEAgLTkyMCwxMSAmIzQzOzkyMCwxNiBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4gXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgdGFwcmlvX3NjaGVkLFxuIFx0XHRcdFx0XHQgICAgICBhZHZhbmNlX3RpbWVyKTtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYocS1cdTAwM2Vyb290KTtcbiYjNDM7XHRib29sIGdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gZmFsc2U7XG4gXHRzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpvcGVyLCAqYWRtaW47XG4gXHRpbnQgbnVtX3RjID0gbmV0ZGV2X2dldF9udW1fdGMoZGV2KTtcbiYjNDM7XHRrdGltZV90IG5vdyA9IHRhcHJpb19nZXRfdGltZShxKTtcbiBcdHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksICpuZXh0O1xuIFx0c3RydWN0IFFkaXNjICpzY2ggPSBxLVx1MDAzZXJvb3Q7XG4mIzQzO1x0LyogU21hbGwgcmV0cnkgYm91bmQgdG8gYXZvaWQgc29mdGlycSBzdGFsbCAqL1xuJiM0MztcdGludCBtYXhfaXRlciA9IDMyO1xuIFx0a3RpbWVfdCBlbmRfdGltZTtcbiYjNDM7XHRrdGltZV90IGV4cGlyZXM7XG4gXHRpbnQgdGM7XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2cS1cdTAwM2VjdXJyZW50X2VudHJ5X2xvY2spO1xuQEAgLTk0OCw0NiAmIzQzOzk1Myw4NiBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4gXHRcdG5leHQgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNm9wZXItXHUwMDNlZW50cmllcywgc3RydWN0IHNjaGVkX2VudHJ5LFxuIFx0XHRcdFx0XHRsaXN0KTtcbiBcdFx0ZW5kX3RpbWUgPSBuZXh0LVx1MDAzZWVuZF90aW1lO1xuLVx0XHRnb3RvIGZpcnN0X3J1bjtcbiYjNDM7XHRcdGdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gdHJ1ZTtcbiYjNDM7XHRcdGlmIChrdGltZV9hZnRlcihlbmRfdGltZSwgbm93KSlcbiYjNDM7XHRcdFx0Z290byBmaXJzdF9ydW47XG4mIzQzO1x0XHRlbnRyeSA9IG5leHQ7XG4gXHR9XG4gXG4tXHRpZiAoc2hvdWxkX3Jlc3RhcnRfY3ljbGUob3BlciwgZW50cnkpKSB7XG4tXHRcdG5leHQgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNm9wZXItXHUwMDNlZW50cmllcywgc3RydWN0IHNjaGVkX2VudHJ5LFxuLVx0XHRcdFx0XHRsaXN0KTtcbi1cdFx0b3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLFxuLVx0XHRcdFx0XHRcdCAgICBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpO1xuLVx0fSBlbHNlIHtcbi1cdFx0bmV4dCA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4tXHR9XG4mIzQzO1x0ZG8ge1xuJiM0MztcdFx0a3RpbWVfdCBsaW1pdCA9IG5vdztcbiBcbi1cdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKGVudHJ5LVx1MDAzZWVuZF90aW1lLCBuZXh0LVx1MDAzZWludGVydmFsKTtcbi1cdGVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xuJiM0MztcdFx0aWYgKGFkbWluIFx1MDAyNlx1MDAyNiBrdGltZV9iZWZvcmUoYWRtaW4tXHUwMDNlYmFzZV90aW1lLCBsaW1pdCkpXG4mIzQzO1x0XHRcdGxpbWl0ID0gYWRtaW4tXHUwMDNlYmFzZV90aW1lO1xuIFxuLVx0Zm9yICh0YyA9IDA7IHRjIFx1MDAzYyBudW1fdGM7IHRjJiM0MzsmIzQzOykge1xuLVx0XHRpZiAobmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSA9PSBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpXG4tXHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYO1xuLVx0XHRlbHNlXG4tXHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKGVudHJ5LVx1MDAzZWVuZF90aW1lLFxuLVx0XHRcdFx0XHRcdFx0XHQgbmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSk7XG4tXHR9XG4mIzQzO1x0XHRpZiAob3Blci1cdTAwM2VjeWNsZV90aW1lIFx1MDAyNlx1MDAyNiBrdGltZV9hZnRlcihsaW1pdCwgb3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSkpIHtcbiYjNDM7XHRcdFx0czY0IGRpZmYgPSBrdGltZV9zdWIobGltaXQsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xuJiM0MztcdFx0XHRzNjQgY3ljbGVzID0gZGl2NjRfczY0KGRpZmYsIG9wZXItXHUwMDNlY3ljbGVfdGltZSkgJiM0MzsgMTtcbiBcbi1cdGlmIChzaG91bGRfY2hhbmdlX3NjaGVkdWxlcyhhZG1pbiwgb3BlciwgZW5kX3RpbWUpKSB7XG4tXHRcdHN3aXRjaF9zY2hlZHVsZXMocSwgXHUwMDI2YWRtaW4sIFx1MDAyNm9wZXIpO1xuLVx0XHQvKiBBZnRlciBjaGFuZ2luZyBzY2hlZHVsZXMsIHRoZSBuZXh0IGVudHJ5IGlzIHRoZSBmaXJzdCBvbmVcbi1cdFx0ICogaW4gdGhlIG5ldyBzY2hlZHVsZSwgd2l0aCBhIHByZS1jYWxjdWxhdGVkIGVuZF90aW1lLlxuLVx0XHQgKi9cbi1cdFx0bmV4dCA9IGxpc3RfZmlyc3RfZW50cnkoXHUwMDI2b3Blci1cdTAwM2VlbnRyaWVzLCBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpO1xuLVx0XHRlbmRfdGltZSA9IG5leHQtXHUwMDNlZW5kX3RpbWU7XG4mIzQzO1x0XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPVxuJiM0MztcdFx0XHRcdGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLFxuJiM0MztcdFx0XHRcdFx0ICAgICBjeWNsZXMgKiBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpO1xuJiM0MztcdFx0XHRlbnRyeS1cdTAwM2VlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgIGN5Y2xlcyAqIG9wZXItXHUwMDNlY3ljbGVfdGltZSk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aWYgKHNob3VsZF9yZXN0YXJ0X2N5Y2xlKG9wZXIsIGVudHJ5KSkge1xuJiM0MztcdFx0XHRuZXh0ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMsXG4mIzQzO1x0XHRcdFx0XHRcdHN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7XG4mIzQzO1x0XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPVxuJiM0MztcdFx0XHRcdGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLFxuJiM0MztcdFx0XHRcdFx0ICAgICBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpO1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0bmV4dCA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW50cnktXHUwMDNlZW5kX3RpbWUsIG5leHQtXHUwMDNlaW50ZXJ2YWwpO1xuJiM0MztcdFx0ZW5kX3RpbWUgPSBtaW5fdChrdGltZV90LCBlbmRfdGltZSwgb3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGFkbWluLCBvcGVyLCBlbmRfdGltZSkpIHtcbiYjNDM7XHRcdFx0c3dpdGNoX3NjaGVkdWxlcyhxLCBcdTAwMjZhZG1pbiwgXHUwMDI2b3Blcik7XG4mIzQzO1x0XHRcdC8qIEFmdGVyIGNoYW5naW5nIHNjaGVkdWxlcywgdGhlIG5leHQgZW50cnkgaXMgdGhlIGZpcnN0IG9uZVxuJiM0MztcdFx0XHQgKiBpbiB0aGUgbmV3IHNjaGVkdWxlLCB3aXRoIGEgcHJlLWNhbGN1bGF0ZWQgZW5kX3RpbWUuXG4mIzQzO1x0XHRcdCAqL1xuJiM0MztcdFx0XHRuZXh0ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMsXG4mIzQzO1x0XHRcdFx0XHRcdHN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7XG4mIzQzO1x0XHRcdGVuZF90aW1lID0gbmV4dC1cdTAwM2VlbmRfdGltZTtcbiYjNDM7XHRcdFx0Z2F0ZV9jbG9zZV90aW1lX2NhbGN1bGF0ZWQgPSB0cnVlO1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0Z2F0ZV9jbG9zZV90aW1lX2NhbGN1bGF0ZWQgPSBmYWxzZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRuZXh0LVx1MDAzZWVuZF90aW1lID0gZW5kX3RpbWU7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGt0aW1lX2FmdGVyKGVuZF90aW1lLCBub3cpKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRlbnRyeSA9IG5leHQ7XG4mIzQzO1x0fSB3aGlsZSAoLS1tYXhfaXRlciBcdTAwM2UgMCk7XG4mIzQzO1xuJiM0MztcdGlmICghZ2F0ZV9jbG9zZV90aW1lX2NhbGN1bGF0ZWQpIHtcbiYjNDM7XHRcdGZvciAodGMgPSAwOyB0YyBcdTAwM2MgbnVtX3RjOyB0YyYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdFx0aWYgKG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci1cdTAwM2VjeWNsZV90aW1lKSB7XG4mIzQzO1x0XHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYO1xuJiM0MztcdFx0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9XG4mIzQzO1x0XHRcdFx0XHRrdGltZV9hZGRfbnMoZW50cnktXHUwMDNlZW5kX3RpbWUsXG4mIzQzO1x0XHRcdFx0XHRcdCAgICAgbmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSk7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH1cbiBcdH1cbiBcbi1cdG5leHQtXHUwMDNlZW5kX3RpbWUgPSBlbmRfdGltZTtcbiBcdHRhcHJpb19zZXRfYnVkZ2V0cyhxLCBvcGVyLCBuZXh0KTtcbiBcbiBmaXJzdF9ydW46XG4gXHRyY3VfYXNzaWduX3BvaW50ZXIocS1cdTAwM2VjdXJyZW50X2VudHJ5LCBuZXh0KTtcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNnEtXHUwMDNlY3VycmVudF9lbnRyeV9sb2NrKTtcbiBcbi1cdGhydGltZXJfc2V0X2V4cGlyZXMoXHUwMDI2cS1cdTAwM2VhZHZhbmNlX3RpbWVyLCBlbmRfdGltZSk7XG4mIzQzO1x0ZXhwaXJlcyA9IGVuZF90aW1lO1xuJiM0MztcdGlmICh1bmxpa2VseShtYXhfaXRlciA9PSAwIFx1MDAyNlx1MDAyNiBrdGltZV9iZWZvcmUoZXhwaXJlcywgbm93KSkpXG4mIzQzO1x0XHRleHBpcmVzID0ga3RpbWVfYWRkX25zKG5vdywgTlNFQ19QRVJfVVNFQyk7XG4mIzQzO1xuJiM0MztcdGhydGltZXJfc2V0X2V4cGlyZXMoXHUwMDI2cS1cdTAwM2VhZHZhbmNlX3RpbWVyLCBleHBpcmVzKTtcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdF9fbmV0aWZfc2NoZWR1bGUoc2NoKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfVEFQUklPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWR2YW5jZV9zY2hlZCYjMzQ7LAogICAgJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgICAmIzM0O3RhcHJpb19lbnF1ZXVlJiMzNDssCiAgICAmIzM0O3RhcHJpb19kZXF1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgYWR2YW5jZV9zY2hlZGAgaHJ0aW1lciBjYWxsYmFjayBpbiB0aGUgdGFwcmlvIG5ldHdvcmsgc2NoZWR1bGVyIChUaW1lLUF3YXJlIFByaW9yaXR5IFNoYXBlcikgdG8gcHJldmVudCBzb2Z0aXJxIHN0YWxscyBieSBib3VuZGluZyB0aGUgcmV0cnkgbG9vcCBhbmQgY29ycmVjdGx5IGNhbGN1bGF0aW5nIGBnYXRlX2Nsb3NlX3RpbWVgLiBUaGlzIGlzIGNvcmUgcmVhY2hhYmxlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY29uZmlndXJpbmcgdGhlIHRhcHJpbyBxZGlzYyBhbmQgc2VuZGluZyB0cmFmZmljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOGIwZTMzMzY5ZjcxZDExZTJmODlhNjBkMmJiNjQ1ZmJjOTA0ZTAzNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDI0IDIxOjM5OjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF90YXByaW8uYyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMKaW5kZXggMjk5MjM0YTVmMGZlNjAuLjhlOGJlNTY4ZGQyYTcwIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMKQEAgLTkyMCwxMSAmIzQzOzkyMCwxNiBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCiAJc3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCwKIAkJCQkJICAgICAgYWR2YW5jZV90aW1lcik7CiAJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHFkaXNjX2RldihxLSZndDtyb290KTsKJiM0MzsJYm9vbCBnYXRlX2Nsb3NlX3RpbWVfY2FsY3VsYXRlZCA9IGZhbHNlOwogCXN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm9wZXIsICphZG1pbjsKIAlpbnQgbnVtX3RjID0gbmV0ZGV2X2dldF9udW1fdGMoZGV2KTsKJiM0MzsJa3RpbWVfdCBub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7CiAJc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7CiAJc3RydWN0IFFkaXNjICpzY2ggPSBxLSZndDtyb290OwomIzQzOwkvKiBTbWFsbCByZXRyeSBib3VuZCB0byBhdm9pZCBzb2Z0aXJxIHN0YWxsICovCiYjNDM7CWludCBtYXhfaXRlciA9IDMyOwogCWt0aW1lX3QgZW5kX3RpbWU7CiYjNDM7CWt0aW1lX3QgZXhwaXJlczsKIAlpbnQgdGM7CiAKIAlzcGluX2xvY2soJmFtcDtxLSZndDtjdXJyZW50X2VudHJ5X2xvY2spOwpAQCAtOTQ4LDQ2ICYjNDM7OTUzLDg2IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcikKIAkJbmV4dCA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtvcGVyLSZndDtlbnRyaWVzLCBzdHJ1Y3Qgc2NoZWRfZW50cnksCiAJCQkJCWxpc3QpOwogCQllbmRfdGltZSA9IG5leHQtJmd0O2VuZF90aW1lOwotCQlnb3RvIGZpcnN0X3J1bjsKJiM0MzsJCWdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gdHJ1ZTsKJiM0MzsJCWlmIChrdGltZV9hZnRlcihlbmRfdGltZSwgbm93KSkKJiM0MzsJCQlnb3RvIGZpcnN0X3J1bjsKJiM0MzsJCWVudHJ5ID0gbmV4dDsKIAl9CiAKLQlpZiAoc2hvdWxkX3Jlc3RhcnRfY3ljbGUob3BlciwgZW50cnkpKSB7Ci0JCW5leHQgPSBsaXN0X2ZpcnN0X2VudHJ5KCZhbXA7b3Blci0mZ3Q7ZW50cmllcywgc3RydWN0IHNjaGVkX2VudHJ5LAotCQkJCQlsaXN0KTsKLQkJb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUsCi0JCQkJCQkgICAgb3Blci0mZ3Q7Y3ljbGVfdGltZSk7Ci0JfSBlbHNlIHsKLQkJbmV4dCA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7Ci0JfQomIzQzOwlkbyB7CiYjNDM7CQlrdGltZV90IGxpbWl0ID0gbm93OwogCi0JZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW50cnktJmd0O2VuZF90aW1lLCBuZXh0LSZndDtpbnRlcnZhbCk7Ci0JZW5kX3RpbWUgPSBtaW5fdChrdGltZV90LCBlbmRfdGltZSwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpOwomIzQzOwkJaWYgKGFkbWluICZhbXA7JmFtcDsga3RpbWVfYmVmb3JlKGFkbWluLSZndDtiYXNlX3RpbWUsIGxpbWl0KSkKJiM0MzsJCQlsaW1pdCA9IGFkbWluLSZndDtiYXNlX3RpbWU7CiAKLQlmb3IgKHRjID0gMDsgdGMgJmx0OyBudW1fdGM7IHRjJiM0MzsmIzQzOykgewotCQlpZiAobmV4dC0mZ3Q7Z2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci0mZ3Q7Y3ljbGVfdGltZSkKLQkJCW5leHQtJmd0O2dhdGVfY2xvc2VfdGltZVt0Y10gPSBLVElNRV9NQVg7Ci0JCWVsc2UKLQkJCW5leHQtJmd0O2dhdGVfY2xvc2VfdGltZVt0Y10gPSBrdGltZV9hZGRfbnMoZW50cnktJmd0O2VuZF90aW1lLAotCQkJCQkJCQkgbmV4dC0mZ3Q7Z2F0ZV9kdXJhdGlvblt0Y10pOwotCX0KJiM0MzsJCWlmIChvcGVyLSZndDtjeWNsZV90aW1lICZhbXA7JmFtcDsga3RpbWVfYWZ0ZXIobGltaXQsIG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lKSkgewomIzQzOwkJCXM2NCBkaWZmID0ga3RpbWVfc3ViKGxpbWl0LCBvcGVyLSZndDtjeWNsZV9lbmRfdGltZSk7CiYjNDM7CQkJczY0IGN5Y2xlcyA9IGRpdjY0X3M2NChkaWZmLCBvcGVyLSZndDtjeWNsZV90aW1lKSAmIzQzOyAxOwogCi0JaWYgKHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGFkbWluLCBvcGVyLCBlbmRfdGltZSkpIHsKLQkJc3dpdGNoX3NjaGVkdWxlcyhxLCAmYW1wO2FkbWluLCAmYW1wO29wZXIpOwotCQkvKiBBZnRlciBjaGFuZ2luZyBzY2hlZHVsZXMsIHRoZSBuZXh0IGVudHJ5IGlzIHRoZSBmaXJzdCBvbmUKLQkJICogaW4gdGhlIG5ldyBzY2hlZHVsZSwgd2l0aCBhIHByZS1jYWxjdWxhdGVkIGVuZF90aW1lLgotCQkgKi8KLQkJbmV4dCA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtvcGVyLSZndDtlbnRyaWVzLCBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpOwotCQllbmRfdGltZSA9IG5leHQtJmd0O2VuZF90aW1lOwomIzQzOwkJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0KJiM0MzsJCQkJa3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLAomIzQzOwkJCQkJICAgICBjeWNsZXMgKiBvcGVyLSZndDtjeWNsZV90aW1lKTsKJiM0MzsJCQllbnRyeS0mZ3Q7ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW50cnktJmd0O2VuZF90aW1lLAomIzQzOwkJCQkJCSAgICAgICBjeWNsZXMgKiBvcGVyLSZndDtjeWNsZV90aW1lKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWlmIChzaG91bGRfcmVzdGFydF9jeWNsZShvcGVyLCBlbnRyeSkpIHsKJiM0MzsJCQluZXh0ID0gbGlzdF9maXJzdF9lbnRyeSgmYW1wO29wZXItJmd0O2VudHJpZXMsCiYjNDM7CQkJCQkJc3RydWN0IHNjaGVkX2VudHJ5LCBsaXN0KTsKJiM0MzsJCQlvcGVyLSZndDtjeWNsZV9lbmRfdGltZSA9CiYjNDM7CQkJCWt0aW1lX2FkZF9ucyhvcGVyLSZndDtjeWNsZV9lbmRfdGltZSwKJiM0MzsJCQkJCSAgICAgb3Blci0mZ3Q7Y3ljbGVfdGltZSk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCW5leHQgPSBsaXN0X25leHRfZW50cnkoZW50cnksIGxpc3QpOwomIzQzOwkJfQomIzQzOwomIzQzOwkJZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW50cnktJmd0O2VuZF90aW1lLCBuZXh0LSZndDtpbnRlcnZhbCk7CiYjNDM7CQllbmRfdGltZSA9IG1pbl90KGt0aW1lX3QsIGVuZF90aW1lLCBvcGVyLSZndDtjeWNsZV9lbmRfdGltZSk7CiYjNDM7CiYjNDM7CQlpZiAoc2hvdWxkX2NoYW5nZV9zY2hlZHVsZXMoYWRtaW4sIG9wZXIsIGVuZF90aW1lKSkgewomIzQzOwkJCXN3aXRjaF9zY2hlZHVsZXMocSwgJmFtcDthZG1pbiwgJmFtcDtvcGVyKTsKJiM0MzsJCQkvKiBBZnRlciBjaGFuZ2luZyBzY2hlZHVsZXMsIHRoZSBuZXh0IGVudHJ5IGlzIHRoZSBmaXJzdCBvbmUKJiM0MzsJCQkgKiBpbiB0aGUgbmV3IHNjaGVkdWxlLCB3aXRoIGEgcHJlLWNhbGN1bGF0ZWQgZW5kX3RpbWUuCiYjNDM7CQkJICovCiYjNDM7CQkJbmV4dCA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtvcGVyLSZndDtlbnRyaWVzLAomIzQzOwkJCQkJCXN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7CiYjNDM7CQkJZW5kX3RpbWUgPSBuZXh0LSZndDtlbmRfdGltZTsKJiM0MzsJCQlnYXRlX2Nsb3NlX3RpbWVfY2FsY3VsYXRlZCA9IHRydWU7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gZmFsc2U7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQluZXh0LSZndDtlbmRfdGltZSA9IGVuZF90aW1lOwomIzQzOwomIzQzOwkJaWYgKGt0aW1lX2FmdGVyKGVuZF90aW1lLCBub3cpKQomIzQzOwkJCWJyZWFrOwomIzQzOwomIzQzOwkJZW50cnkgPSBuZXh0OwomIzQzOwl9IHdoaWxlICgtLW1heF9pdGVyICZndDsgMCk7CiYjNDM7CiYjNDM7CWlmICghZ2F0ZV9jbG9zZV90aW1lX2NhbGN1bGF0ZWQpIHsKJiM0MzsJCWZvciAodGMgPSAwOyB0YyAmbHQ7IG51bV90YzsgdGMmIzQzOyYjNDM7KSB7CiYjNDM7CQkJaWYgKG5leHQtJmd0O2dhdGVfZHVyYXRpb25bdGNdID09IG9wZXItJmd0O2N5Y2xlX3RpbWUpIHsKJiM0MzsJCQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDsKJiM0MzsJCQl9IGVsc2UgewomIzQzOwkJCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0KJiM0MzsJCQkJCWt0aW1lX2FkZF9ucyhlbnRyeS0mZ3Q7ZW5kX3RpbWUsCiYjNDM7CQkJCQkJICAgICBuZXh0LSZndDtnYXRlX2R1cmF0aW9uW3RjXSk7CiYjNDM7CQkJfQomIzQzOwkJfQogCX0KIAotCW5leHQtJmd0O2VuZF90aW1lID0gZW5kX3RpbWU7CiAJdGFwcmlvX3NldF9idWRnZXRzKHEsIG9wZXIsIG5leHQpOwogCiBmaXJzdF9ydW46CiAJcmN1X2Fzc2lnbl9wb2ludGVyKHEtJmd0O2N1cnJlbnRfZW50cnksIG5leHQpOwogCXNwaW5fdW5sb2NrKCZhbXA7cS0mZ3Q7Y3VycmVudF9lbnRyeV9sb2NrKTsKIAotCWhydGltZXJfc2V0X2V4cGlyZXMoJmFtcDtxLSZndDthZHZhbmNlX3RpbWVyLCBlbmRfdGltZSk7CiYjNDM7CWV4cGlyZXMgPSBlbmRfdGltZTsKJiM0MzsJaWYgKHVubGlrZWx5KG1heF9pdGVyID09IDAgJmFtcDsmYW1wOyBrdGltZV9iZWZvcmUoZXhwaXJlcywgbm93KSkpCiYjNDM7CQlleHBpcmVzID0ga3RpbWVfYWRkX25zKG5vdywgTlNFQ19QRVJfVVNFQyk7CiYjNDM7CiYjNDM7CWhydGltZXJfc2V0X2V4cGlyZXMoJmFtcDtxLSZndDthZHZhbmNlX3RpbWVyLCBleHBpcmVzKTsKIAogCXJjdV9yZWFkX2xvY2soKTsKIAlfX25ldGlmX3NjaGVkdWxlKHNjaCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1ODYKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB0YXByaW8gcWRpc2MgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gdGhlIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgdGhlIGBhZHZhbmNlX3NjaGVkYCBmdW5jdGlvbi4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgVGltZS1Bd2FyZSBQcmlvcml0eSBTaGFwZXIsIHRoZSBgdGFwcmlvYCBxZGlzYyDigJMgYSBjcml0aWNhbCBjb21wb25lbnQgZm9yIHRpbWUtc2Vuc2l0aXZlIG5ldHdvcmtpbmcuIFRoZSBtYWluIHRoaW5nIHRoZXkmIzM5O3JlIGFkZHJlc3NpbmcgaGVyZSBpcyBwb3RlbnRpYWwgc29mdGlycSBzdGFsbHMgd2hlbiBhZHZhbmNpbmcgdGhlIHNjaGVkdWxlLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLCBlc3BlY2lhbGx5IHVuZGVyIGxvYWQuIFRoaXMgcmV0cnkgbG9vcCwgd2l0aCB0aGUgYGRvLi4ud2hpbGVgIGNvbnN0cnVjdCBhbmQgYG1heF9pdGVyYCwgaXMgZGVmaW5pdGVseSB0aGUgaW50ZW5kZWQgZml4LiBNYWtlcyBzZW5zZSB0byBpdGVyYXRlIGEgZmV3IHRpbWVzIGlmIHRoZSB0aW1lciBmaXJlcyB1bmV4cGVjdGVkbHksIHdoaWNoIEkgb2Z0ZW4gc2VlIHdpdGggdGhlc2UgdHlwZXMgb2YgaW1wbGVtZW50YXRpb25zLiBFbnN1cmluZyBwcm9wZXIgY2FsY3VsYXRpb24gb2YgYGdhdGVfY2xvc2VfdGltZWAgaXMgYWxzbyBrZXkgdG8gYXZvaWRpbmcgc3luY2hyb25pemF0aW9uIGlzc3Vlcy4gVGhlIHBhdGNoIGFsc28gdGFja2xlcyB0aGUgc2NlbmFyaW8gd2hlcmUgdGhlIHRpbWVyIGdvZXMgb2ZmIGxhdGUsIHBvdGVudGlhbGx5IHNraXBwaW5nIG92ZXIgc2NoZWR1bGUgZW50cmllcy4KCkZ1bmN0aW9uYWxpdHktd2lzZSwgaXQgc291bmRzIHNvbGlkLiBJdCBhZGRyZXNzZXMgYSBrbm93biBpc3N1ZSB3aXRoaW4gdGhlIHRpbWUtc2Vuc2l0aXZlIG5ldHdvcmtpbmcgZG9tYWluLCBhbmQgdGhlIHRlY2huaXF1ZXMgc2VlbSBjb3JyZWN0IGZvciBmaXhpbmcgaXQuIEFuZCwgeWVzLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpbiBRRU1VLiBgdGFwcmlvYCBpcyBhIHN0YW5kYXJkIHFkaXNjIGluIHRoZSBMaW51eCBrZXJuZWwgbmV0d29yayBzY2hlZHVsZXIsIHNvIHNpbXVsYXRpbmcgaXQgaXMgbm8gcHJvYmxlbS4KCk5leHQsIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaW1lIHRvIGNoZWNrIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGFuZCBgS2NvbmZpZ2AgZm9yIHRoZSBgc2NoX3RhcHJpb2Agc3ltYm9sLiBUaGlzIHdpbGwgYWxsb3cgbWUgdG8gcHJvcGVybHkgc2V0IGl0IHVwIGluIG15IHRlc3QgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoX3RhcHJpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MTcyPWNvbmZpZyBORVRfU0NIX1RBUFJJT1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTE3OC1cbm5ldC9zY2hlZC9LY29uZmlnOjE3OTpcdCAgU2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXG5uZXQvc2NoZWQvS2NvbmZpZy0xODAtXG5uZXQvc2NoZWQvS2NvbmZpZy0xODEtXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbm5ldC9zY2hlZC9LY29uZmlnOjE4MjpcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF90YXByaW8uXG5uZXQvc2NoZWQvS2NvbmZpZy0xODMtXG4tLVxubmV0L3NjaGVkL01ha2VmaWxlPTYzPW9iai0kKENPTkZJR19ORVRfU0NIX0VURilcdCYjNDM7PSBzY2hfZXRmLm9cbm5ldC9zY2hlZC9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfTkVUX1NDSF9UQVBSSU8pXHQmIzQzOz0gc2NoX3RhcHJpby5vXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjUtb2JqLSQoQ09ORklHX05FVF9TQ0hfQlBGKVx0JiM0Mzs9IGJwZl9xZGlzYy5vXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzozOi8qIG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcdCBUaW1lIEF3YXJlIFByaW9yaXR5IFNjaGVkdWxlclxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00LSAqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQxMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczoKCioqRGVwZW5kZW5jaWVzLCBEZXBlbmRlbmNpZXMsIERlcGVuZGVuY2llcyEqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGBORVRfU0NIX1RBUFJJT2AgY29uZmlndXJhdGlvbiBvcHRpb24uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBJIG5lZWQgdG8ga25vdyAqZXZlcnl0aGluZyogdGhpcyBoaW5nZXMgdXBvbi4gU28sIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIHRoaW5raW5nIGlzLCAmIzM0O1doYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBpbiBwbGFjZSBmb3IgdGhpcyB0byBldmVuICpiZSogYSB2YWxpZCBvcHRpb24sIGxldCBhbG9uZSBmdW5jdGlvbmFsPyYjMzQ7IEkmIzM5O20gbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSB0eXBpY2FsIGtlcm5lbCBjb25maWd1cmF0aW9uIGNoZWNrcyDigJMgbG9va2luZyBmb3IgYW55IG9idmlvdXMgcHJlLXJlcXVpc2l0ZXMgbGlrZSBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXJzLCBvdGhlciBuZXR3b3JraW5nIGZlYXR1cmVzLCBvciBldmVuIGNvcmUga2VybmVsIGZ1bmN0aW9uYWxpdGllcyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZCBmaXJzdC4gSSB3YW50IHRvIGJ1aWxkIGEgY29tcGxldGUgcGljdHVyZSBvZiBpdHMgcGxhY2UgaW4gdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NDSF9UQVBSSU8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZz0xNjc9Y29uZmlnIE5FVF9TQ0hfTVFQUklPX0xJQlxuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTE3MS1cbm5ldC9zY2hlZC9LY29uZmlnOjE3Mjpjb25maWcgTkVUX1NDSF9UQVBSSU9cbm5ldC9zY2hlZC9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O1RpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcxNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHJlYWRpbmcgYW5kIHByb2Nlc3NpbmcgdGhlIHByb3ZpZGVkIHRleHQ6CgoqKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwmIzM5O3MgVHJhZmZpYyBTaGFwaW5nIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGtlcm5lbCYjMzk7cyB0cmFmZmljIHNoYXBpbmcgZmVhdHVyZXMgYXJlIGNvbmZpZ3VyZWQuIEdpdmVuIG15IGJhY2tncm91bmQsIEkgYWxyZWFkeSBoYXZlIGEgZ29vZCBncmFzcCBvZiB0aGUgdW5kZXJseWluZyBjb25jZXB0cywgc28gSSBmaWd1cmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBLY29uZmlnIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgb25lIHJlbGF0ZWQgdG8gdGhlIG5ldHdvcmtpbmcgc2NoZWR1bGVyLiBJJiMzOTtsbCB6ZXJvIGluIG9uIGBuZXQvc2NoZWQvS2NvbmZpZ2AsIGFuZCBsZXQmIzM5O3Mgc3RhcnQgYXJvdW5kIGxpbmUgMTcyLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBlbnRyeSBwb2ludCB0byBzZWUgd2hhdCBvcHRpb25zIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyIGFuZCBob3cgdGhleSYjMzk7cmUgc3RydWN0dXJlZCwgYW5kIGZyb20gdGhlcmUgSSBjYW4gc3RhcnQgdG8gbWFwIG91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIHNjaGVkdWxpbmcgbG9naWMuIEkmIzM5O20gaG9waW5nIEkgY2FuIGdldCBhIGNsZWFyIG92ZXJ2aWV3IG9mIHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZSBhbmQgcGVyaGFwcyBpZGVudGlmeSBzb21lIGFyZWFzIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gb3Igb3B0aW1pemF0aW9uLCBtYXliZSBzcG90IGEgbm92ZWwgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCBJIGhhZG4mIzM5O3QgY29tZSBhY3Jvc3MgYmVmb3JlLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbiBhbmQgZ2V0IGEgZmVlbCBmb3IgdGhlIGRlc2lnbiBjaG9pY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2NTpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX2V0Zi5cbiAxNjY6XHRcbiAxNjc6XHRjb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXG4gMTY4Olx0XHR0cmlzdGF0ZVxuIDE2OTpcdFx0aGVscFxuIDE3MDpcdFx0ICBDb21tb24gbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIG1xcHJpbyBxdWV1ZSBjb25maWd1cmF0aW9ucy5cbiAxNzE6XHRcbiAxNzI6XHRjb25maWcgTkVUX1NDSF9UQVBSSU9cbiAxNzM6XHRcdHRyaXN0YXRlIFwmIzM0O1RpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXCYjMzQ7XG4gMTc0Olx0XHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXG4gMTc1Olx0XHRoZWxwXG4gMTc2Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxuIDE3NzpcdFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cbiAxNzg6XHRcbiAxNzk6XHRcdCAgU2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXG4gMTgwOlx0XG4gMTgxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAxODI6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF90YXByaW8uXG4gMTgzOlx0XG4gMTg0Olx0Y29uZmlnIE5FVF9TQ0hfR1JFRFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyODkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgRnV6emluZyBPcHBvcnR1bml0aWVzKioKCk9rYXksIHNvIHRoZSBwYXRjaCBpcyBmb2N1c2luZyBzb2xlbHkgb24gYE5FVF9TQ0hfTVFQUklPX0xJQmAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtXaHkgbm90IGNvbnNpZGVyIGBORVRfU0NIRURgPyYjMzQ7IEEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdCBgbmV0L3NjaGVkL0tjb25maWdgIGlzIGluY2x1ZGVkIHVuZGVyIGBORVRfU0NIRURgLCBzbyB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IGlzIGFsc28gZW5hYmxlZCB3aGVuIHNldHRpbmcgdXAgdGhlIGZ1enppbmcgdGFyZ2V0cy4gTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgYXJlIHJlbGV2YW50IHRvIHRoaXMgcGF0Y2ggYW5kIGFyZSBnb29kIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcuCgpUaGUgcGF0Y2ggbWVudGlvbnMgbW9kaWZpY2F0aW9ucyB0byBgYWR2YW5jZV9zY2hlZGAuIEdpdmVuIHRoYXQgaXQmIzM5O3MgcmVsYXRlZCB0byBzY2hlZHVsaW5nLCBteSBndXQgdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgYSB0aW1lciBjYWxsYmFjay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgdGltZXIgaXMgc2V0IHVwLCB3aGF0IHRyaWdnZXJzIGl0LiBMb29raW5nIGF0IHRoZSBjb2RlIGluIGBzY2hfdGFwcmlvLmNgLCBteSBtYWluIGZvY3VzIHdpbGwgYmUgdG8gZmluZCBhbmQgdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb25zIHRoYXQgY29uZmlndXJlIHRoZSBxZGlzYywgaG93IHRoZSBkYXRhIGZsb3dzIHdpdGhpbiB0aGUgZnVuY3Rpb25zIGFuZCB0aGUgY2FsbGJhY2tzIHRvIGJ1aWxkIGEgZ29vZCBmdXp6ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkdmFuY2Vfc2NoZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmM9ODg0PXN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTE3LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo5MTg6c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05MTkte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTg2Mj1zdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5OTYtXHQgICAgIWhydGltZXJfYWN0aXZlKFx1MDAyNnEtXHUwMDNlYWR2YW5jZV90aW1lcikpIHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTk5NzpcdFx0aHJ0aW1lcl9zZXR1cChcdTAwMjZxLVx1MDAzZWFkdmFuY2VfdGltZXIsIGFkdmFuY2Vfc2NoZWQsIHEtXHUwMDNlY2xvY2tpZCwgSFJUSU1FUl9NT0RFX0FCUyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5OTgtXHR9XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDE1LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDE2Olx0XHQvKiBOb3QgZ29pbmcgdG8gcmFjZSBhZ2FpbnN0IGFkdmFuY2Vfc2NoZWQoKSwgYnV0IHN0aWxsICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwMTctXHRcdGFkbWluID0gcmN1X3JlcGxhY2VfcG9pbnRlcihxLVx1MDAzZWFkbWluX3NjaGVkLCBuZXdfYWRtaW4sXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDIzLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDI0Olx0XHQvKiBQcm90ZWN0cyBhZ2FpbnN0IGFkdmFuY2Vfc2NoZWQoKSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDI1LVx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZxLVx1MDAzZWN1cnJlbnRfZW50cnlfbG9jaywgZmxhZ3MpO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjExMT1zdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTE5LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTIwOlx0aHJ0aW1lcl9zZXR1cChcdTAwMjZxLVx1MDAzZWFkdmFuY2VfdGltZXIsIGFkdmFuY2Vfc2NoZWQsIENMT0NLX1RBSSwgSFJUSU1FUl9NT0RFX0FCUyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxMjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMTIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGZ1bmN0aW9ucywgdGhpbmtpbmcgdGhlbSB0aHJvdWdoIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlLgoKKipEaXZpbmcgaW50byB0aGUgVEFQUklPIEFQSSoqCgpBbHJpZ2h0LCBzbyBpZiBJJiMzOTttIGJ1aWxkaW5nIHdpdGggdGhpcyBUQVBSSU8gbGlicmFyeSwgdGhlIGNvcmUgZnVuY3Rpb25zIEkmIzM5O2xsIG5lZWQgdG8gcmVhbGx5IHVuZGVyc3RhbmQgYXJlIHVuZG91YnRlZGx5IGB0YXByaW9fY2hhbmdlYCwgYHRhcHJpb19pbml0YCwgYHRhcHJpb19lbnF1ZXVlYCwgYW5kIGB0YXByaW9fZGVxdWV1ZWAuIFRoZXNlIGFyZSB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludHMsIHRoZSBnZWFycyB0aGF0JiMzOTtsbCBkcml2ZSB0aGUgd2hvbGUgc2NoZWR1bGluZyBtZWNoYW5pc20uIEkgbmVlZCB0byBiZSAqaW50aW1hdGVseSogZmFtaWxpYXIgd2l0aCB0aGVpciBzaWduYXR1cmVzLCB0aGVpciBleHBlY3RlZCBiZWhhdmlvcnMsIGFuZCBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSBuZWVkIHRvIGRyaWxsIGludG8gdGhlIGRldGFpbHMuCgpMZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBBUEkgZW50cnkgcG9pbnRzIGZvciBUQVBSSU8uIFVuZGVyc3RhbmRpbmcgdGhlc2UgZm91ciBmdW5jdGlvbnMgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBUQVBSSU8gc3Vic3lzdGVtLiBJJiMzOTtsbCBuZWVkIHRvIGtub3c6CiogICBIb3cgZG9lcyBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gd29yaz8KKiAgIEhvdyBkbyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc2NoZWR1bGVyPwoqICAgSG93IGRvIEkgc2lnbmFsIGVycm9ycz8KKiAgIEhvdyBkb2VzIHRoZSBjaGFuZ2UgZnVuY3Rpb24gYmVoYXZlPyBEb2VzIGl0IGhhdmUgYW55IGltcGxpY2F0aW9ucyBvbiB0aGUgY3VycmVudGx5IHNjaGVkdWxlZCBkYXRhPwoqICAgSG93IGRvZXMgZW5xdWV1ZSBiZWhhdmUgYW5kIGhvdyBkbyBkaWZmZXJlbnQgZW5xdWV1ZXMgaW50ZXJhY3Q/CiogICBXaGF0IHBhcmFtZXRlcnMgYXJlIGludm9sdmVkLCBhbmQgd2hhdCBkb2VzIGVhY2ggb25lIHNpZ25pZnk/IEFyZSB0aGVyZSBhbnkgaW1wbGljaXQgZGVwZW5kZW5jaWVzPwoqICAgV2hhdCBzb3J0IG9mIGNvbnRleHQgaXMgcmVxdWlyZWQgZm9yIGVhY2ggY2FsbD8gVGhyZWFkcywgbG9ja3MsIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcz8KKiAgIEFuZCBmaW5hbGx5LCBhcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IGhpZGRlbiBhc3N1bXB0aW9ucyBhYm91dCB0aGUgZW52aXJvbm1lbnQgdGhpcyBjb2RlIHJ1bnMgaW4/IEkgbmVlZCB0byBhbmFseXplIHRob3NlIGRldGFpbHMsIHRoZXkgY291bGQgc2F2ZSBtZSBob3VycyBvZiBkZWJ1Z2dpbmcgbGF0ZXIgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RhcHJpb18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3ODIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMzQtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjM1OnN0YXRpYyBMSVNUX0hFQUQodGFwcmlvX2xpc3QpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzozNjpzdGF0aWMgc3RydWN0IHN0YXRpY19rZXlfZmFsc2UgdGFwcmlvX2hhdmVfYnJva2VuX21xcHJpbztcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6Mzc6c3RhdGljIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIHRhcHJpb19oYXZlX3dvcmtpbmdfbXFwcmlvO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0zOC1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTcyPXN0cnVjdCBzY2hlZF9nYXRlX2xpc3Qge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODctXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg4OnN0cnVjdCB0YXByaW9fc2NoZWQge1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy04OS1cdHN0cnVjdCBRZGlzYyAqKnFkaXNjcztcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNi1cdHN0cnVjdCBocnRpbWVyIGFkdmFuY2VfdGltZXI7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEwNzpcdHN0cnVjdCBsaXN0X2hlYWQgdGFwcmlvX2xpc3Q7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwOC1cdGludCBjdXJfdHhxW1RDX01BWF9RVUVVRV07XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTMtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExNDpzdHJ1Y3QgX190Y190YXByaW9fcW9wdF9vZmZsb2FkIHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTE1LVx0cmVmY291bnRfdCB1c2Vycztcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTE2Olx0c3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgb2ZmbG9hZDtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTE3LX07XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTE5OnN0YXRpYyB2b2lkIHRhcHJpb19jYWxjdWxhdGVfZ2F0ZV9kdXJhdGlvbnMoc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTIwLVx0XHRcdFx0XHQgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjMtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2NDpzdGF0aWMgYm9vbCB0YXByaW9fZW50cnlfYWxsb3dzX3R4KGt0aW1lX3Qgc2tiX2VuZF90aW1lLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjUtXHRcdFx0XHQgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBpbnQgdGMpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0xNzA9c3RhdGljIGt0aW1lX3Qgc2NoZWRfYmFzZV90aW1lKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc3LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzg6c3RhdGljIGt0aW1lX3QgdGFwcmlvX21vbm9fdG9fYW55KGNvbnN0IHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIGt0aW1lX3QgbW9ubylcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc5LXtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTgwOlx0LyogVGhpcyBwYWlycyB3aXRoIFdSSVRFX09OQ0UoKSBpbiB0YXByaW9fcGFyc2VfY2xvY2tpZCgpICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4MS1cdGVudW0gdGtfb2Zmc2V0cyB0a19vZmZzZXQgPSBSRUFEX09OQ0UocS1cdTAwM2V0a19vZmZzZXQpO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTkwLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxOTE6c3RhdGljIGt0aW1lX3QgdGFwcmlvX2dldF90aW1lKGNvbnN0IHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5Mi17XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5MzpcdHJldHVybiB0YXByaW9fbW9ub190b19hbnkocSwga3RpbWVfZ2V0KCkpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTQtfVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTUtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5NjpzdGF0aWMgdm9pZCB0YXByaW9fZnJlZV9zY2hlZF9jYihzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5Ny17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDgtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIwOTpzdGF0aWMgdm9pZCBzd2l0Y2hfc2NoZWR1bGVzKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxMC1cdFx0XHQgICAgIHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKiphZG1pbixcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxNi1cdGlmICgqb3Blcilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjE3Olx0XHRjYWxsX3JjdShcdTAwMjYoKm9wZXIpLVx1MDAzZXJjdSwgdGFwcmlvX2ZyZWVfc2NoZWRfY2IpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTgtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yMzU9c3RhdGljIGt0aW1lX3QgZ2V0X2ludGVydmFsX2VuZF90aW1lKHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU2LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNTc6c3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU4LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjYyOnN0YXRpYyBpbnQgZHVyYXRpb25fdG9fbGVuZ3RoKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHU2NCBkdXJhdGlvbilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYzLXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI3MC0gKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjcxOnN0YXRpYyB2b2lkIHRhcHJpb191cGRhdGVfcXVldWVfbWF4X3NkdShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNzItXHRcdFx0XHRcdHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MzIzPXN0YXRpYyBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmZpbmRfZW50cnlfdG9fdHJhbnNtaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTMzNC1cdHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnkgPSBOVUxMLCAqZW50cnlfZm91bmQgPSBOVUxMO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzozMzU6XHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0zMzYtXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHNjaCk7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz00MDA9c3RhdGljIGJvb2wgaXNfdmFsaWRfaW50ZXJ2YWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQwMS17XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjQwMjpcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQwMy1cdHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLCAqYWRtaW47XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00MTgtLyogVGhpcyByZXR1cm5zIHRoZSB0c3RhbXAgdmFsdWUgc2V0IGJ5IFRDUCBpbiB0ZXJtcyBvZiB0aGUgc2V0IGNsb2NrLiAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo0MTk6c3RhdGljIGt0aW1lX3QgZ2V0X3RjcF90c3RhbXAoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNDIwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQ0OS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NDUwOlx0cmV0dXJuIHRhcHJpb19tb25vX3RvX2FueShxLCBza2ItXHUwMDNlc2tiX21zdGFtcF9ucyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQ1MS19XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz00Njg9c3RhdGljIGxvbmcgZ2V0X3BhY2tldF90eHRpbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00NzAtXHRrdGltZV90IHRyYW5zbWl0X2VuZF90aW1lLCBpbnRlcnZhbF9lbmQsIGludGVydmFsX3N0YXJ0LCB0Y3BfdHN0YW1wO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo0NzE6XHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy00NzItXHRzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCwgKmFkbWluO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNDc3LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo0Nzg6XHRub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQ3OS1cdG1pbmltdW1fdGltZSA9IGt0aW1lX2FkZF9ucyhub3csIHEtXHUwMDNldHh0aW1lX2RlbGF5KTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTUzOS0vKiBEZXZpY2VzIHdpdGggZnVsbCBvZmZsb2FkIGFyZSBleHBlY3RlZCB0byBob25vciB0aGlzIGluIGhhcmR3YXJlICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjU0MDpzdGF0aWMgYm9vbCB0YXByaW9fc2tiX2V4Y2VlZHNfcXVldWVfbWF4X3NkdShzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNTQxLVx0XHRcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU0Mi17XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjU0MzpcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU0NC1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU2MC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NTYxOnN0YXRpYyBpbnQgdGFwcmlvX2VucXVldWVfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01NjItXHRcdFx0ICAgICAgc3RydWN0IFFkaXNjICpjaGlsZCwgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01NjMte1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo1NjQ6XHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy01NjUtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01ODEtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjU4MjpzdGF0aWMgaW50IHRhcHJpb19lbnF1ZXVlX3NlZ21lbnRlZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNTgzLVx0XHRcdFx0ICAgIHN0cnVjdCBRZGlzYyAqY2hpbGQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MDMtXHRcdCAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2MDQ6XHRcdGlmICh0YXByaW9fc2tiX2V4Y2VlZHNfcXVldWVfbWF4X3NkdShzY2gsIHNlZ3MpKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MDUtXHRcdFx0cmV0ID0gcWRpc2NfZHJvcChzZWdzLCBzY2gsIHRvX2ZyZWUpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MDYtXHRcdGVsc2Vcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjA3Olx0XHRcdHJldCA9IHRhcHJpb19lbnF1ZXVlX29uZShzZWdzLCBzY2gsIGNoaWxkLCB0b19mcmVlKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjA4LVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjI2LSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2Mjc6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjI4LVx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKip0b19mcmVlKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02Mjkte1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2MzA6XHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MzEtXHRzdHJ1Y3QgUWRpc2MgKmNoaWxkO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjM5LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2NDA6XHRpZiAodGFwcmlvX3NrYl9leGNlZWRzX3F1ZXVlX21heF9zZHUoc2NoLCBza2IpKSB7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY0MS1cdFx0LyogTGFyZ2UgcGFja2V0cyBtaWdodCBub3QgYmUgdHJhbnNtaXR0ZWQgd2hlbiB0aGUgdHJhbnNtaXNzaW9uXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NDYtXHRcdGlmIChza2JfaXNfZ3NvKHNrYikpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY0NzpcdFx0XHRyZXR1cm4gdGFwcmlvX2VucXVldWVfc2VnbWVudGVkKHNrYiwgc2NoLCBjaGlsZCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjQ4LVx0XHRcdFx0XHRcdFx0dG9fZnJlZSk7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NTItXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY1MzpcdHJldHVybiB0YXByaW9fZW5xdWV1ZV9vbmUoc2tiLCBzY2gsIGNoaWxkLCB0b19mcmVlKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjU0LX1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjU1LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2NTY6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fcGVlayhzdHJ1Y3QgUWRpc2MgKnNjaClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjU3LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY2MS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjYyOnN0YXRpYyB2b2lkIHRhcHJpb19zZXRfYnVkZ2V0cyhzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NjMtXHRcdFx0ICAgICAgIHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjgyLS8qIFdoZW4gYW4gc2tiIGlzIHNlbnQsIGl0IGNvbnN1bWVzIGZyb20gdGhlIGJ1ZGdldCBvZiBhbGwgdHJhZmZpYyBjbGFzc2VzICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY4MzpzdGF0aWMgaW50IHRhcHJpb191cGRhdGVfYnVkZ2V0cyhzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBzaXplX3QgbGVuLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02ODQtXHRcdFx0XHQgaW50IHRjX2NvbnN1bWVkLCBpbnQgbnVtX3RjKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzA1LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3MDY6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZV9mcm9tX3R4cShzdHJ1Y3QgUWRpc2MgKnNjaCwgaW50IHR4cSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzA3LVx0XHRcdFx0XHQgICAgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTcwOS17XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjcxMDpcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTcxMS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTczNi1cdGxlbiA9IHFkaXNjX3BrdF9sZW4oc2tiKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NzM3Olx0Z3VhcmQgPSBrdGltZV9hZGRfbnModGFwcmlvX2dldF90aW1lKHEpLCBsZW5ndGhfdG9fZHVyYXRpb24ocSwgbGVuKSk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTczOC1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc0Mi1cdGlmIChnYXRlX21hc2sgIT0gVEFQUklPX0FMTF9HQVRFU19PUEVOIFx1MDAyNlx1MDAyNlxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3NDM6XHQgICAgIXRhcHJpb19lbnRyeV9hbGxvd3NfdHgoZ3VhcmQsIGVudHJ5LCB0YykpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc0NC1cdFx0cmV0dXJuIE5VTEw7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03NDctXHRpZiAoZ2F0ZV9tYXNrICE9IFRBUFJJT19BTExfR0FURVNfT1BFTiBcdTAwMjZcdTAwMjZcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NzQ4Olx0ICAgIHRhcHJpb191cGRhdGVfYnVkZ2V0cyhlbnRyeSwgbGVuLCB0YywgbnVtX3RjKSBcdTAwM2MgMClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzQ5LVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc2Mi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NzYzOnN0YXRpYyB2b2lkIHRhcHJpb19uZXh0X3RjX3R4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgdGMsIGludCAqdHhxKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03NjQte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzc1LSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3NzY6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZV90Y19wcmlvcml0eShzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzc3LVx0XHRcdFx0XHRcdCAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc3OS17XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjc4MDpcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc4MS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc5Mi1cdFx0ZG8ge1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3OTM6XHRcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfZnJvbV90eHEoc2NoLCBxLVx1MDAzZWN1cl90eHFbdGNdLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03OTQtXHRcdFx0XHRcdFx0ICAgICAgZW50cnksIGdhdGVfbWFzayk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc5NS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6Nzk2Olx0XHRcdHRhcHJpb19uZXh0X3RjX3R4cShkZXYsIHRjLCBcdTAwMjZxLVx1MDAzZWN1cl90eHFbdGNdKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzk3LVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODExLSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4MTI6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZV90eHFfcHJpb3JpdHkoc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTgxMy1cdFx0XHRcdFx0XHQgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODIwLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZGV2LVx1MDAzZW51bV90eF9xdWV1ZXM7IGkmIzQzOyYjNDM7KSB7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjgyMTpcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfZnJvbV90eHEoc2NoLCBpLCBlbnRyeSwgZ2F0ZV9tYXNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODIyLVx0XHRpZiAoc2tiKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODMxLSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4MzI6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZShzdHJ1Y3QgUWRpc2MgKnNjaClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODMzLXtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODM0Olx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODM1LVx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NDktXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg1MDpcdGlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KFx1MDAyNnRhcHJpb19oYXZlX2Jyb2tlbl9tcXByaW8pIFx1MDAyNlx1MDAyNlxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NTE6XHQgICAgIXN0YXRpY19icmFuY2hfbGlrZWx5KFx1MDAyNnRhcHJpb19oYXZlX3dvcmtpbmdfbXFwcmlvKSkge1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NTItXHRcdC8qIFNpbmdsZSBOSUMga2luZCB3aGljaCBpcyBicm9rZW4gKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODUzOlx0XHRza2IgPSB0YXByaW9fZGVxdWV1ZV90eHFfcHJpb3JpdHkoc2NoLCBlbnRyeSwgZ2F0ZV9tYXNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODU0Olx0fSBlbHNlIGlmIChzdGF0aWNfYnJhbmNoX2xpa2VseShcdTAwMjZ0YXByaW9faGF2ZV93b3JraW5nX21xcHJpbykgXHUwMDI2XHUwMDI2XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg1NTpcdFx0ICAgIXN0YXRpY19icmFuY2hfdW5saWtlbHkoXHUwMDI2dGFwcmlvX2hhdmVfYnJva2VuX21xcHJpbykpIHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODU2LVx0XHQvKiBTaW5nbGUgTklDIGtpbmQgd2hpY2ggcHJpb3JpdGl6ZXMgcHJvcGVybHkgKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODU3Olx0XHRza2IgPSB0YXByaW9fZGVxdWV1ZV90Y19wcmlvcml0eShzY2gsIGVudHJ5LCBnYXRlX21hc2spO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NTgtXHR9IGVsc2Uge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODYwLVx0XHRpZiAocS1cdTAwM2Vicm9rZW5fbXFwcmlvKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NjE6XHRcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdHhxX3ByaW9yaXR5KHNjaCwgZW50cnksIGdhdGVfbWFzayk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg2Mi1cdFx0ZWxzZVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NjM6XHRcdFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdGNfcHJpb3JpdHkoc2NoLCBlbnRyeSwgZ2F0ZV9tYXNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODY0LVx0fVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9OTE4PXN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTE5LXtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6OTIwOlx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTIxLVx0XHRcdFx0XHQgICAgICBhZHZhbmNlX3RpbWVyKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTkyNS1cdGludCBudW1fdGMgPSBuZXRkZXZfZ2V0X251bV90YyhkZXYpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo5MjY6XHRrdGltZV90IG5vdyA9IHRhcHJpb19nZXRfdGltZShxKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTI3LVx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMDI0LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMDI1Olx0dGFwcmlvX3NldF9idWRnZXRzKHEsIG9wZXIsIG5leHQpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMDI2LVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTA0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgZW50cnlfcG9saWN5W1RDQV9UQVBSSU9fU0NIRURfRU5UUllfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA1MC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTA1MTpzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdGFwcmlvX3RjX3BvbGljeVtUQ0FfVEFQUklPX1RDX0VOVFJZX01BWCAmIzQzOyAxXSA9IHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA1Mi1cdFtUQ0FfVEFQUklPX1RDX0VOVFJZX0lOREVYXVx0ICAgPSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA1OS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTA2MDpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGxpbmtfcmFuZ2VfdmFsaWRhdGlvbl9zaWduZWQgdGFwcmlvX2N5Y2xlX3RpbWVfcmFuZ2UgPSB7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNjEtXHQubWluID0gMCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNjQtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEwNjU6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHRhcHJpb19wb2xpY3lbVENBX1RBUFJJT19BVFRSX01BWCAmIzQzOyAxXSA9IHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA2Ni1cdFtUQ0FfVEFQUklPX0FUVFJfUFJJT01BUF1cdCAgICAgICA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNzMtXHRbVENBX1RBUFJJT19BVFRSX1NDSEVEX0NZQ0xFX1RJTUVdICAgICAgICAgICA9XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEwNzQ6XHRcdE5MQV9QT0xJQ1lfRlVMTF9SQU5HRV9TSUdORUQoTkxBX1M2NCwgXHUwMDI2dGFwcmlvX2N5Y2xlX3RpbWVfcmFuZ2UpLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMDc1LVx0W1RDQV9UQVBSSU9fQVRUUl9TQ0hFRF9DWUNMRV9USU1FX0VYVEVOU0lPTl0gPSB7IC50eXBlID0gTkxBX1M2NCB9LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA4MS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTA4MjpzdGF0aWMgaW50IGZpbGxfc2NoZWRfZW50cnkoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMDgzLVx0XHRcdCAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTExMy1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTExNDpzdGF0aWMgaW50IHBhcnNlX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKm4sXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExMTUtXHRcdFx0ICAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBpbnQgaW5kZXgsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTMyLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTMzOnN0YXRpYyBpbnQgcGFyc2Vfc2NoZWRfbGlzdChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICpsaXN0LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTM0LVx0XHRcdCAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNzItXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExNzM6c3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTc0LVx0XHRcdFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm5ldyxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyMTgtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEyMTk6XHR0YXByaW9fY2FsY3VsYXRlX2dhdGVfZHVyYXRpb25zKHEsIG5ldyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyMjAtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjIzLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMjI0OnN0YXRpYyBpbnQgdGFwcmlvX3BhcnNlX21xcHJpb19vcHQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTIyNS1cdFx0XHRcdCAgIHN0cnVjdCB0Y19tcXByaW9fcW9wdCAqcW9wdCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTIyNi1cdFx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTIyNzpcdFx0XHRcdCAgIHUzMiB0YXByaW9fZmxhZ3MpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyMjgte1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMjI5Olx0Ym9vbCBhbGxvd19vdmVybGFwcGluZ190eHFzID0gVFhUSU1FX0FTU0lTVF9JU19FTkFCTEVEKHRhcHJpb19mbGFncyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyMzAtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjUxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMjUyOnN0YXRpYyBpbnQgdGFwcmlvX2dldF9zdGFydF90aW1lKHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjUzLVx0XHRcdFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI1NS17XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEyNTY6XHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjU3LVx0a3RpbWVfdCBub3csIGJhc2UsIGN5Y2xlO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI2MC1cdGJhc2UgPSBzY2hlZF9iYXNlX3RpbWUoc2NoZWQpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMjYxOlx0bm93ID0gdGFwcmlvX2dldF90aW1lKHEpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjYyLVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI4NS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTI4NjpzdGF0aWMgdm9pZCBzZXR1cF9maXJzdF9lbmRfdGltZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjg3LVx0XHRcdFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLCBrdGltZV90IGJhc2UpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzAzLVx0Zmlyc3QtXHUwMDNlZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoYmFzZSwgZmlyc3QtXHUwMDNlaW50ZXJ2YWwpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzA0Olx0dGFwcmlvX3NldF9idWRnZXRzKHEsIHNjaGVkLCBmaXJzdCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzMDUtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzE1LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzE2OnN0YXRpYyB2b2lkIHRhcHJpb19zdGFydF9zY2hlZChzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTMxNy1cdFx0XHQgICAgICAga3RpbWVfdCBzdGFydCwgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqbmV3KVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzE4LXtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTMxOTpcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzMjAtXHRrdGltZV90IGV4cGlyZXM7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzM3LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzM4OnN0YXRpYyB2b2lkIHRhcHJpb19zZXRfcGljb3NfcGVyX2J5dGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTMzOTpcdFx0XHRcdCAgICAgIHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzNDAtXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzcxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzcyOnN0YXRpYyBpbnQgdGFwcmlvX2Rldl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzczLVx0XHRcdCAgICAgICB2b2lkICpwdHIpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzc3LVx0c3RydWN0IHFkaXNjX3NpemVfdGFibGUgKnN0YWI7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzNzg6XHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzc5LVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTM4NC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTM4NTpcdGxpc3RfZm9yX2VhY2hfZW50cnkocSwgXHUwMDI2dGFwcmlvX2xpc3QsIHRhcHJpb19saXN0KSB7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzODYtXHRcdGlmIChkZXYgIT0gcWRpc2NfZGV2KHEtXHUwMDNlcm9vdCkpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzg4LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzg5Olx0XHR0YXByaW9fc2V0X3BpY29zX3Blcl9ieXRlKGRldiwgcSwgTlVMTCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzOTAtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzk1LVx0XHRpZiAob3Blcilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTM5NjpcdFx0XHR0YXByaW9fdXBkYXRlX3F1ZXVlX21heF9zZHUocSwgb3Blciwgc3RhYik7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzOTctXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzk5LVx0XHRpZiAoYWRtaW4pXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0MDA6XHRcdFx0dGFwcmlvX3VwZGF0ZV9xdWV1ZV9tYXhfc2R1KHEsIGFkbWluLCBzdGFiKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQwMS1cdFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDA4LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDA5OnN0YXRpYyB2b2lkIHNldHVwX3R4dGltZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDEwLVx0XHRcdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCwga3RpbWVfdCBiYXNlKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQyMC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQyMTpzdGF0aWMgc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKnRhcHJpb19vZmZsb2FkX2FsbG9jKGludCBudW1fZW50cmllcylcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQyMi17XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0MjM6XHRzdHJ1Y3QgX190Y190YXByaW9fcW9wdF9vZmZsb2FkICpfX29mZmxvYWQ7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0MjQtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDMzLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDM0OnN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICp0YXByaW9fb2ZmbG9hZF9nZXQoc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWRcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQzNS1cdFx0XHRcdFx0XHQgICpvZmZsb2FkKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDM2LXtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQzNzpcdHN0cnVjdCBfX3RjX3RhcHJpb19xb3B0X29mZmxvYWQgKl9fb2ZmbG9hZDtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQzOC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQzOTpcdF9fb2ZmbG9hZCA9IGNvbnRhaW5lcl9vZihvZmZsb2FkLCBzdHJ1Y3QgX190Y190YXByaW9fcW9wdF9vZmZsb2FkLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDQwLVx0XHRcdFx0IG9mZmxvYWQpO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ0NS19XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0NDY6RVhQT1JUX1NZTUJPTF9HUEwodGFwcmlvX29mZmxvYWRfZ2V0KTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ0Ny1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQ0ODp2b2lkIHRhcHJpb19vZmZsb2FkX2ZyZWUoc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKm9mZmxvYWQpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NDkte1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDUwOlx0c3RydWN0IF9fdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqX19vZmZsb2FkO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDUxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDUyOlx0X19vZmZsb2FkID0gY29udGFpbmVyX29mKG9mZmxvYWQsIHN0cnVjdCBfX3RjX3RhcHJpb19xb3B0X29mZmxvYWQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NTMtXHRcdFx0XHQgb2ZmbG9hZCk7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDU5LX1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQ2MDpFWFBPUlRfU1lNQk9MX0dQTCh0YXByaW9fb2ZmbG9hZF9mcmVlKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ2MS1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NzMtICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0NzQ6c3RhdGljIHZvaWQgdGFwcmlvX29mZmxvYWRfY29uZmlnX2NoYW5nZWQoc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ3NS17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0xNDg0PXN0YXRpYyB1MzIgdGNfbWFwX3RvX3F1ZXVlX21hc2soc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHRjX21hc2spXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTAyLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTAzOnN0YXRpYyB2b2lkIHRhcHJpb19zY2hlZF90b19vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MDQtXHRcdFx0XHQgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1MDU6XHRcdFx0XHQgICAgc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKm9mZmxvYWQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1MDY6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHRjX3RhcHJpb19jYXBzICpjYXBzKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTA3LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MTUtXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGVudHJ5LCBcdTAwMjZzY2hlZC1cdTAwM2VlbnRyaWVzLCBsaXN0KSB7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1MTY6XHRcdHN0cnVjdCB0Y190YXByaW9fc2NoZWRfZW50cnkgKmUgPSBcdTAwMjZvZmZsb2FkLVx1MDAzZWVudHJpZXNbaV07XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MTctXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTMxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTMyOnN0YXRpYyB2b2lkIHRhcHJpb19kZXRlY3RfYnJva2VuX21xcHJpbyhzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTMzLXtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTUzNC1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYocS1cdTAwM2Vyb290KTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTUzNTpcdHN0cnVjdCB0Y190YXByaW9fY2FwcyBjYXBzO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTM2LVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU0MS1cdGlmIChxLVx1MDAzZWJyb2tlbl9tcXByaW8pXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1NDI6XHRcdHN0YXRpY19icmFuY2hfaW5jKFx1MDAyNnRhcHJpb19oYXZlX2Jyb2tlbl9tcXByaW8pO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTQzLVx0ZWxzZVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTQ0Olx0XHRzdGF0aWNfYnJhbmNoX2luYyhcdTAwMjZ0YXByaW9faGF2ZV93b3JraW5nX21xcHJpbyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NDUtXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTQ4LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTQ5OnN0YXRpYyB2b2lkIHRhcHJpb19jbGVhbnVwX2Jyb2tlbl9tcXByaW8oc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU1MC17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTU0LVx0aWYgKHEtXHUwMDNlYnJva2VuX21xcHJpbylcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU1NTpcdFx0c3RhdGljX2JyYW5jaF9kZWMoXHUwMDI2dGFwcmlvX2hhdmVfYnJva2VuX21xcHJpbyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NTYtXHRlbHNlXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1NTc6XHRcdHN0YXRpY19icmFuY2hfZGVjKFx1MDAyNnRhcHJpb19oYXZlX3dvcmtpbmdfbXFwcmlvKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU1OC19XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NTktXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1NjA6c3RhdGljIGludCB0YXByaW9fZW5hYmxlX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU2MTpcdFx0XHRcdCBzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTYyLVx0XHRcdFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU2NS1cdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyAqb3BzID0gZGV2LVx1MDAzZW5ldGRldl9vcHM7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1NjY6XHRzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqb2ZmbG9hZDtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU2NzpcdHN0cnVjdCB0Y190YXByaW9fY2FwcyBjYXBzO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTY4LVx0aW50IHRjLCBlcnIgPSAwO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU4OC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU4OTpcdG9mZmxvYWQgPSB0YXByaW9fb2ZmbG9hZF9hbGxvYyhzY2hlZC1cdTAwM2VudW1fZW50cmllcyk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1OTAtXHRpZiAoIW9mZmxvYWQpIHtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1OTgtXHRvZmZsb2FkLVx1MDAzZW1xcHJpby5leHRhY2sgPSBleHRhY2s7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1OTk6XHR0YXByaW9fc2NoZWRfdG9fb2ZmbG9hZChkZXYsIHNjaGVkLCBvZmZsb2FkLCBcdTAwMjZjYXBzKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYwMC1cdG1xcHJpb19mcF90b19vZmZsb2FkKHEtXHUwMDNlZnAsIFx1MDAyNm9mZmxvYWQtXHUwMDNlbXFwcmlvKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MjAtXHRvZmZsb2FkLVx1MDAzZW1xcHJpby5leHRhY2sgPSBOVUxMO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjIxOlx0dGFwcmlvX29mZmxvYWRfZnJlZShvZmZsb2FkKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYyMi1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MjUtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2MjY6c3RhdGljIGludCB0YXByaW9fZGlzYWJsZV9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2Mjc6XHRcdFx0XHQgIHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MjgtXHRcdFx0XHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MzAtXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgKm9wcyA9IGRldi1cdTAwM2VuZXRkZXZfb3BzO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjMxOlx0c3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKm9mZmxvYWQ7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MzItXHRpbnQgZXJyO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYzNi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTYzNzpcdG9mZmxvYWQgPSB0YXByaW9fb2ZmbG9hZF9hbGxvYygwKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYzOC1cdGlmICghb2ZmbG9hZCkge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY1NC1vdXQ6XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2NTU6XHR0YXByaW9fb2ZmbG9hZF9mcmVlKG9mZmxvYWQpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjU2LVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY2Ni0gKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTY2NzpzdGF0aWMgaW50IHRhcHJpb19wYXJzZV9jbG9ja2lkKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2NjgtXHRcdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2Njkte1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjcwOlx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY3MS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3MjgtXHRcdH1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTcyOTpcdFx0LyogVGhpcyBwYWlycyB3aXRoIFJFQURfT05DRSgpIGluIHRhcHJpb19tb25vX3RvX2FueSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzMwLVx0XHRXUklURV9PTkNFKHEtXHUwMDNldGtfb2Zmc2V0LCB0a19vZmZzZXQpO1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc0NC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTc0NTpzdGF0aWMgaW50IHRhcHJpb19wYXJzZV90Y19lbnRyeShzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc0Ni1cdFx0XHRcdCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzU3LVx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZCh0YiwgVENBX1RBUFJJT19UQ19FTlRSWV9NQVgsIG9wdCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTc1ODpcdFx0XHQgICAgICAgdGFwcmlvX3RjX3BvbGljeSwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc1OS1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzkxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzkyOnN0YXRpYyBpbnQgdGFwcmlvX3BhcnNlX3RjX2VudHJpZXMoc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3OTMtXHRcdFx0XHQgICBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzk1LXtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTc5NjpcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3OTctXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHNjaCk7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODExLVx0bmxhX2Zvcl9lYWNoX25lc3RlZF90eXBlKG4sIFRDQV9UQVBSSU9fQVRUUl9UQ19FTlRSWSwgb3B0LCByZW0pIHtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTgxMjpcdFx0ZXJyID0gdGFwcmlvX3BhcnNlX3RjX2VudHJ5KHNjaCwgbiwgbWF4X3NkdSwgZnAsIFx1MDAyNnNlZW5fdGNzLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODEzLVx0XHRcdFx0XHQgICAgZXh0YWNrKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NDEtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4NDI6c3RhdGljIGludCB0YXByaW9fbXFwcmlvX2NtcChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODQzLVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IHRjX21xcHJpb19xb3B0ICptcXByaW8pXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODYxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODYyOnN0YXRpYyBpbnQgdGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODYzLVx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODY3LVx0c3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlciwgKmFkbWluLCAqbmV3X2FkbWluO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODY4Olx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg2OS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NzEtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODcyOlx0dTMyIHRhcHJpb19mbGFncztcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg3My1cdGt0aW1lX3Qgc3RhcnQ7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODc2LVx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKHRiLCBUQ0FfVEFQUklPX0FUVFJfTUFYLCBvcHQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4Nzc6XHRcdFx0XHRcdCAgdGFwcmlvX3BvbGljeSwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg3OC1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NjYwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIFRBUFJJTyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoaXMgVEFQUklPIGltcGxlbWVudGF0aW9uLiBUaGUgY29yZSBlbnRyeSBwb2ludHMsIHRoZSBvbmVzIEkgbmVlZCB0byBmb2N1cyBvbiwgYXJlIGRlZmluaXRlbHkgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2luaXRgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYC4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGB0YXByaW9fY2hhbmdlYCBhbmQgYHRhcHJpb19pbml0YCBhcmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIHNjaGVkdWxlLCBhbmQgaXQgbG9va3MgbGlrZSBJJiMzOTttIHJpZ2h0LiBgdGFwcmlvX2NoYW5nZWAgZG9lcyB0aGUgcGFyc2luZyBvZiB0aGUgc2NoZWR1bGUgYW5kIHNldHMgdGhlIHRpbWVyLCBhbmQgSSBzZWUgbm93IHRoYXQgYHRhcHJpb19lbnF1ZXVlYCBhbmQgYHRhcHJpb19kZXF1ZXVlYCBoYW5kbGUgcGFja2V0IHByb2Nlc3NpbmcuCgpUaGUgcGF0Y2ggbWVudGlvbnMgYSBtb2RpZmljYXRpb24gdG8gYGFkdmFuY2Vfc2NoZWRgLCB3aGljaCBpcyB0aGUgaHJ0aW1lciBjYWxsYmFjay4gVGhhdCBjb25maXJtcyBteSBpbml0aWFsIHRob3VnaHQ6IGZ1enppbmcgYHRhcHJpb19jaGFuZ2VgIGlzIGdvaW5nIHRvIGJlICpjcml0aWNhbCosIGJlY2F1c2UgdGhhdCYjMzk7cyB3aGVyZSB0aGUgcWRpc2MgZ2V0cyBjb25maWd1cmVkIGFuZCB0aGUgdGltZXIgc3RhcnRzLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHNjaGVkdWxlIGFuZCBgdGFwcmlvX2VucXVldWVgIGFuZCBgdGFwcmlvX2RlcXVldWVgLCBhcyB0aG9zZSBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aCBpdC4gU28sIHRvIGNvdmVyIGFsbCB0aGUgaW1wb3J0YW50IHBhcnRzLCBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2luaXRgLCBgdGFwcmlvX2VucXVldWVgLCBgdGFwcmlvX2RlcXVldWVgLCBhbmQgYGFkdmFuY2Vfc2NoZWRgIGluIG15IGZ1enppbmcgdGFyZ2V0LgoKTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYGFkdmFuY2Vfc2NoZWRgIGlzbiYjMzk7dCBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24sIGp1c3QgdG8gYmUgc3VyZS4gQSBxdWljayBsb29rIGF0IGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYCBjb25maXJtcyB0aGF0IGl0JiMzOTtzIGBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpYCwgc28gaXQmIzM5O3Mgbm90IGlubGluZS4KCkFscmlnaHQsIHRoZSBuZXh0IHRoaW5nIGlzIHRvIG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSBjb25maWcgZGVwZW5kZW5jaWVzIGNvcnJlY3QuIGBORVRfU0NIX1RBUFJJT2AgaXMgdGhlIG9idmlvdXMgb25lLiBOb3csIGFyZSB0aGVyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzIEkgbmVlZD8gTG9va2luZyBpbiBgbmV0L3NjaGVkL0tjb25maWdgLCBJIHNlZSB0aGF0IGBORVRfU0NIX01RUFJJT19MSUJgIGlzIHNlbGVjdGVkIGJ5IGBORVRfU0NIX1RBUFJJT2AsIHdoaWNoIGlzIGltcG9ydGFudCB0byBjb25zaWRlci4gSSBzaG91bGQgY29uZmlybSB0aGF0IGBORVRfU0NIRURgIGlzIHJlcXVpcmVkIGFzIGEgcGFyZW50LiBZdXAsIGl0JiMzOTtzIHRoZSBwYXJlbnQsIGFzIGV4cGVjdGVkLiBJJiMzOTtsbCBuZWVkIHRvIGtlZXAgdGhpcyBpbiBtaW5kIHdoZW4gSSBzZXQgdXAgbXkgZnV6emluZyBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hFRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnLTUtXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXG5uZXQvc2NoZWQvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg1OTMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgVEFQUklPKioKCk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgYE5FVF9TQ0hFRGAgaXMgZW5hYmxlZCBmb3IgdGhpcyBmdXp6aW5nIGVmZm9ydC4gQW5kLCB3YWl0LCB3aGF0IGFib3V0IGBORVRfU0NIX1RBUFJJT2A/IEl0JiMzOTtzIHRyaXN0YXRlLCB3aGljaCBpcyBnb29kLgoKTGV0JiMzOTtzIHB1bGwgdG9nZXRoZXIgdGhlIGtleSBlbGVtZW50czogSSYjMzk7dmUgZGV0ZXJtaW5lZCB0aGF0IHRoaXMgaXMgd29ydGggZnV6emluZy4gTXkgbWFpbiBmb2N1cyBzaG91bGQgYmUgb24gdGhlc2Ugc3ltYm9sczogYGFkdmFuY2Vfc2NoZWRgLCBgdGFwcmlvX2NoYW5nZWAsIGB0YXByaW9faW5pdGAsIGB0YXByaW9fZW5xdWV1ZWAsIGFuZCBgdGFwcmlvX2RlcXVldWVgLiBUbyBtYWtlIHRoaXMgd29yaywgSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgdGhlIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gIGNvbmZpZ3VyYXRpb25zLgoKTm93LCBhIHF1aWNrIHRob3VnaHQgYWJvdXQgYGFkdmFuY2Vfc2NoZWRgLiBUaGUgZnV6emluZyBndWlkZWxpbmVzIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gVGhlIGRvY3VtZW50IGVtcGhhc2l6ZWQgbm90IHVzaW5nIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBidXQgbG9va2luZyBhdCBgYWR2YW5jZV9zY2hlZGAgbW9yZSBjbG9zZWx5LCBpdCYjMzk7cyBhY3R1YWxseSBhIHRpbWVyIGNhbGxiYWNrLiBJdHMgYWRkcmVzcyAqaXMqIHRha2VuIGFuZCBwYXNzZWQgdG8gYGhydGltZXJfc2V0dXBgLCBzbyBpdCBsaWtlbHkgd29uJiMzOTt0IGJlIGlubGluZWQsIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIHN0YXRpYy4gSXQmIzM5O3MgYSBiaXQgb2YgYW4gZWRnZSBjYXNlLCBzbyBJJiMzOTtsbCBpbmNsdWRlIGl0LiBCdXQgSSBzaG91bGQgZGVmaW5pdGVseSBwcmlvcml0aXplIHRoZSBtYWluIEFQSSBlbnRyeSBwb2ludHM6IGB0YXByaW9fY2hhbmdlYCwgYHRhcHJpb19pbml0YCwgYHRhcHJpb19lbnF1ZXVlYCwgYW5kIGB0YXByaW9fZGVxdWV1ZWAuCgpKdXN0IHRvIGJlIHNhZmUsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGB0YXByaW9fY2hhbmdlYCBhbmQgYHRhcHJpb19pbml0YCB0byBjb25maXJtIG15IHN0cmF0ZWd5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4NDI9c3RhdGljIGludCB0YXByaW9fbXFwcmlvX2NtcChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg2MS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTg2MjpzdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg2My1cdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjExMT1zdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTI0LVx0LyogV2Ugb25seSBzdXBwb3J0IHN0YXRpYyBjbG9ja2lkcy4gVXNlIGFuIGludmFsaWQgdmFsdWUgYXMgZGVmYXVsdFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTI1Olx0ICogYW5kIGdldCB0aGUgdmFsaWQgb25lIG9uIHRhcHJpb19jaGFuZ2UoKS5cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjEyNi1cdCAqL1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE3Mi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjE3MzpcdHJldHVybiB0YXByaW9fY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTc0LX1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI1ODY9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU5MC1cdC5pbml0XHRcdD0gdGFwcmlvX2luaXQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1OTE6XHQuY2hhbmdlXHRcdD0gdGFwcmlvX2NoYW5nZSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU5Mi1cdC5kZXN0cm95XHQ9IHRhcHJpb19kZXN0cm95LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTYzNAoJCQkJCQkJb3V0cHV0OiAxNDIKCQkJCQkJCXRob3VnaHRzOiAyNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFRBUFJJTyBTY2hlZHVsZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBkaWdnaW5nIGludG8gdGhpcyBUQVBSSU8gc2NoZWR1bGVyIHBhdGNoLiBJdCBsb29rcyBsaWtlIHRoZSBrZXkgUWRpc2Mgb3BlcmF0aW9uIGNhbGxiYWNrcyDigJMgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2luaXRgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYCDigJMgYXJlIG91ciBwcmltYXJ5IGVudHJ5IHBvaW50cywgZXZlbiB0aG91Z2ggdGhleSYjMzk7cmUgc3RhdGljIHdpdGhpbiB0aGUgUWRpc2Mgc3RydWN0dXJlLiBJJiMzOTttIGFsc28gZ29pbmcgdG8gYWRkIGBhZHZhbmNlX3NjaGVkYCB0byB0aGUgbGlzdCwgc2luY2UgdGhhdCYjMzk7cyB0aGUgdGltZXIgY2FsbGJhY2sgdGhhdCYjMzk7cyBiZWVuIGRpcmVjdGx5IG1vZGlmaWVkLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gaW5jbHVkZSBpdCBiZWNhdXNlIGl0JiMzOTtzIG5vdCBpbmxpbmVkLCB3aGljaCBtYWtlcyBpdCBhIGNydWNpYWwgZnVuY3Rpb24gdG8gY29uc2lkZXIuCgpMZXQgbWUganVzdCBxdWlja2x5IHJlLWV4YW1pbmUgdGhlIHBhdGNoIHRvIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgb3RoZXIgbW9kaWZpZWQgZnVuY3Rpb25zLiBOb3BlLCBsb29rcyBsaWtlIGBhZHZhbmNlX3NjaGVkYCBpcyB0aGUgb25seSBvdGhlciBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlZW4gdG91Y2hlZC4KClNvLCB0byBzdW1tYXJpemUsIHRoZSBlc3NlbnRpYWwgZm9jdXMgc3ltYm9scyBoZXJlIGFyZToKCiogICBgYWR2YW5jZV9zY2hlZGAKKiAgIGB0YXByaW9fY2hhbmdlYAoqICAgYHRhcHJpb19lbnF1ZXVlYAoqICAgYHRhcHJpb19kZXF1ZXVlYAoKRm9yIHRoZSBjb3JyZXNwb25kaW5nIGNvbmZpZ3VyYXRpb25zLCB3ZSBuZWVkIHRvIGhhdmU6CgoqICAgYE5FVF9TQ0hfVEFQUklPYAoqICAgYE5FVF9TQ0hFRGAKCkVzc2VudGlhbGx5LCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgc29mdGlycSBzdGFsbCBwcm9ibGVtIGluIHRoZSBUQVBSSU8gbmV0d29yayBzY2hlZHVsZXIuIEl0IGJvdW5kcyB0aGUgcmV0cnkgbG9vcCBhbmQgZml4ZXMgdGhlIGBnYXRlX2Nsb3NlX3RpbWVgIGNhbGN1bGF0aW9uIGluIHRoZSBgYWR2YW5jZV9zY2hlZGAgaHJ0aW1lciBjYWxsYmFjay4gVGhpcyBpcyBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYywgZGlyZWN0bHkgcmVhY2hhYmxlIHRocm91Z2ggY29uZmlndXJpbmcgdGhlIHRhcHJpbyBRZGlzYyBhbmQgc2VuZGluZyB0cmFmZmljLiBJdCYjMzk7cyBhIGNyaXRpY2FsIGZpeCBhZmZlY3RpbmcgaG93IFRBUFJJTyBzaGFwZXMgYW5kIHByaW9yaXRpemVzIHRyYWZmaWMsIHNvIGl0JiMzOTtzIHdvcnRoIG1ha2luZyBzdXJlIHdlJiMzOTtyZSBnZXR0aW5nIHRoaXMgaW1wbGVtZW50ZWQuCgpJJiMzOTttIHJlYWR5IHRvIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIxOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZHZhbmNlX3NjaGVkJiMzNDssCiAgICAmIzM0O3RhcHJpb19jaGFuZ2UmIzM0OywKICAgICYjMzQ7dGFwcmlvX2VucXVldWUmIzM0OywKICAgICYjMzQ7dGFwcmlvX2RlcXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhZHZhbmNlX3NjaGVkYCBocnRpbWVyIGNhbGxiYWNrIGluIHRoZSB0YXByaW8gbmV0d29yayBzY2hlZHVsZXIgKFRpbWUtQXdhcmUgUHJpb3JpdHkgU2hhcGVyKSB0byBwcmV2ZW50IHNvZnRpcnEgc3RhbGxzIGJ5IGJvdW5kaW5nIHRoZSByZXRyeSBsb29wIGFuZCBjb3JyZWN0bHkgY2FsY3VsYXRpbmcgYGdhdGVfY2xvc2VfdGltZWAuIFRoaXMgaXMgY29yZSByZWFjaGFibGUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjb25maWd1cmluZyB0aGUgdGFwcmlvIHFkaXNjIGFuZCBzZW5kaW5nIHRyYWZmaWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1RBUFJJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FkdmFuY2Vfc2NoZWQmIzM0OywKICAgICYjMzQ7dGFwcmlvX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZW5xdWV1ZSYjMzQ7LAogICAgJiMzNDt0YXByaW9fZGVxdWV1ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGFkdmFuY2Vfc2NoZWRgIGhydGltZXIgY2FsbGJhY2sgaW4gdGhlIHRhcHJpbyBuZXR3b3JrIHNjaGVkdWxlciAoVGltZS1Bd2FyZSBQcmlvcml0eSBTaGFwZXIpIHRvIHByZXZlbnQgc29mdGlycSBzdGFsbHMgYnkgYm91bmRpbmcgdGhlIHJldHJ5IGxvb3AgYW5kIGNvcnJlY3RseSBjYWxjdWxhdGluZyBgZ2F0ZV9jbG9zZV90aW1lYC4gVGhpcyBpcyBjb3JlIHJlYWNoYWJsZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNvbmZpZ3VyaW5nIHRoZSB0YXByaW8gcWRpc2MgYW5kIHNlbmRpbmcgdHJhZmZpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjM5OjE2LjUwMDExNjg0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MjA5MzQzOTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhZHZhbmNlX3NjaGVkXCIsXG4gICAgXCJ0YXByaW9fY2hhbmdlXCIsXG4gICAgXCJ0YXByaW9fZW5xdWV1ZVwiLFxuICAgIFwidGFwcmlvX2RlcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGFkdmFuY2Vfc2NoZWRgIGhydGltZXIgY2FsbGJhY2sgaW4gdGhlIHRhcHJpbyBuZXR3b3JrIHNjaGVkdWxlciAoVGltZS1Bd2FyZSBQcmlvcml0eSBTaGFwZXIpIHRvIHByZXZlbnQgc29mdGlycSBzdGFsbHMgYnkgYm91bmRpbmcgdGhlIHJldHJ5IGxvb3AgYW5kIGNvcnJlY3RseSBjYWxjdWxhdGluZyBgZ2F0ZV9jbG9zZV90aW1lYC4gVGhpcyBpcyBjb3JlIHJlYWNoYWJsZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNvbmZpZ3VyaW5nIHRoZSB0YXByaW8gcWRpc2MgYW5kIHNlbmRpbmcgdHJhZmZpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6MTYuNTAwMTIzNTMzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTA4MTY0NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4YjBlMzMzNjlmNzFkMTFlMmY4OWE2MGQyYmI2NDVmYmM5MDRlMDM0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDI0IDIxOjM5OjE1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXFxuaW5kZXggMjk5MjM0YTVmMGZlNjAuLjhlOGJlNTY4ZGQyYTcwIDEwMDY0NFxcbi0tLSBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcXG4rKysgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXFxuQEAgLTkyMCwxMSArOTIwLDE2IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4gXFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgYWR2YW5jZV90aW1lcik7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYocS1cXHUwMDNlcm9vdCk7XFxuK1xcdGJvb2wgZ2F0ZV9jbG9zZV90aW1lX2NhbGN1bGF0ZWQgPSBmYWxzZTtcXG4gXFx0c3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlciwgKmFkbWluO1xcbiBcXHRpbnQgbnVtX3RjID0gbmV0ZGV2X2dldF9udW1fdGMoZGV2KTtcXG4rXFx0a3RpbWVfdCBub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7XFxuIFxcdHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksICpuZXh0O1xcbiBcXHRzdHJ1Y3QgUWRpc2MgKnNjaCA9IHEtXFx1MDAzZXJvb3Q7XFxuK1xcdC8qIFNtYWxsIHJldHJ5IGJvdW5kIHRvIGF2b2lkIHNvZnRpcnEgc3RhbGwgKi9cXG4rXFx0aW50IG1heF9pdGVyID0gMzI7XFxuIFxcdGt0aW1lX3QgZW5kX3RpbWU7XFxuK1xcdGt0aW1lX3QgZXhwaXJlcztcXG4gXFx0aW50IHRjO1xcbiBcXG4gXFx0c3Bpbl9sb2NrKFxcdTAwMjZxLVxcdTAwM2VjdXJyZW50X2VudHJ5X2xvY2spO1xcbkBAIC05NDgsNDYgKzk1Myw4NiBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuIFxcdFxcdG5leHQgPSBsaXN0X2ZpcnN0X2VudHJ5KFxcdTAwMjZvcGVyLVxcdTAwM2VlbnRyaWVzLCBzdHJ1Y3Qgc2NoZWRfZW50cnksXFxuIFxcdFxcdFxcdFxcdFxcdGxpc3QpO1xcbiBcXHRcXHRlbmRfdGltZSA9IG5leHQtXFx1MDAzZWVuZF90aW1lO1xcbi1cXHRcXHRnb3RvIGZpcnN0X3J1bjtcXG4rXFx0XFx0Z2F0ZV9jbG9zZV90aW1lX2NhbGN1bGF0ZWQgPSB0cnVlO1xcbitcXHRcXHRpZiAoa3RpbWVfYWZ0ZXIoZW5kX3RpbWUsIG5vdykpXFxuK1xcdFxcdFxcdGdvdG8gZmlyc3RfcnVuO1xcbitcXHRcXHRlbnRyeSA9IG5leHQ7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChzaG91bGRfcmVzdGFydF9jeWNsZShvcGVyLCBlbnRyeSkpIHtcXG4tXFx0XFx0bmV4dCA9IGxpc3RfZmlyc3RfZW50cnkoXFx1MDAyNm9wZXItXFx1MDAzZWVudHJpZXMsIHN0cnVjdCBzY2hlZF9lbnRyeSxcXG4tXFx0XFx0XFx0XFx0XFx0bGlzdCk7XFxuLVxcdFxcdG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgb3Blci1cXHUwMDNlY3ljbGVfdGltZSk7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdG5leHQgPSBsaXN0X25leHRfZW50cnkoZW50cnksIGxpc3QpO1xcbi1cXHR9XFxuK1xcdGRvIHtcXG4rXFx0XFx0a3RpbWVfdCBsaW1pdCA9IG5vdztcXG4gXFxuLVxcdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKGVudHJ5LVxcdTAwM2VlbmRfdGltZSwgbmV4dC1cXHUwMDNlaW50ZXJ2YWwpO1xcbi1cXHRlbmRfdGltZSA9IG1pbl90KGt0aW1lX3QsIGVuZF90aW1lLCBvcGVyLVxcdTAwM2VjeWNsZV9lbmRfdGltZSk7XFxuK1xcdFxcdGlmIChhZG1pbiBcXHUwMDI2XFx1MDAyNiBrdGltZV9iZWZvcmUoYWRtaW4tXFx1MDAzZWJhc2VfdGltZSwgbGltaXQpKVxcbitcXHRcXHRcXHRsaW1pdCA9IGFkbWluLVxcdTAwM2ViYXNlX3RpbWU7XFxuIFxcbi1cXHRmb3IgKHRjID0gMDsgdGMgXFx1MDAzYyBudW1fdGM7IHRjKyspIHtcXG4tXFx0XFx0aWYgKG5leHQtXFx1MDAzZWdhdGVfZHVyYXRpb25bdGNdID09IG9wZXItXFx1MDAzZWN5Y2xlX3RpbWUpXFxuLVxcdFxcdFxcdG5leHQtXFx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBLVElNRV9NQVg7XFxuLVxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0bmV4dC1cXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cXHUwMDNlZW5kX3RpbWUsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBuZXh0LVxcdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSk7XFxuLVxcdH1cXG4rXFx0XFx0aWYgKG9wZXItXFx1MDAzZWN5Y2xlX3RpbWUgXFx1MDAyNlxcdTAwMjYga3RpbWVfYWZ0ZXIobGltaXQsIG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lKSkge1xcbitcXHRcXHRcXHRzNjQgZGlmZiA9IGt0aW1lX3N1YihsaW1pdCwgb3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xcbitcXHRcXHRcXHRzNjQgY3ljbGVzID0gZGl2NjRfczY0KGRpZmYsIG9wZXItXFx1MDAzZWN5Y2xlX3RpbWUpICsgMTtcXG4gXFxuLVxcdGlmIChzaG91bGRfY2hhbmdlX3NjaGVkdWxlcyhhZG1pbiwgb3BlciwgZW5kX3RpbWUpKSB7XFxuLVxcdFxcdHN3aXRjaF9zY2hlZHVsZXMocSwgXFx1MDAyNmFkbWluLCBcXHUwMDI2b3Blcik7XFxuLVxcdFxcdC8qIEFmdGVyIGNoYW5naW5nIHNjaGVkdWxlcywgdGhlIG5leHQgZW50cnkgaXMgdGhlIGZpcnN0IG9uZVxcbi1cXHRcXHQgKiBpbiB0aGUgbmV3IHNjaGVkdWxlLCB3aXRoIGEgcHJlLWNhbGN1bGF0ZWQgZW5kX3RpbWUuXFxuLVxcdFxcdCAqL1xcbi1cXHRcXHRuZXh0ID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2b3Blci1cXHUwMDNlZW50cmllcywgc3RydWN0IHNjaGVkX2VudHJ5LCBsaXN0KTtcXG4tXFx0XFx0ZW5kX3RpbWUgPSBuZXh0LVxcdTAwM2VlbmRfdGltZTtcXG4rXFx0XFx0XFx0b3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUgPVxcbitcXHRcXHRcXHRcXHRrdGltZV9hZGRfbnMob3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgY3ljbGVzICogb3Blci1cXHUwMDNlY3ljbGVfdGltZSk7XFxuK1xcdFxcdFxcdGVudHJ5LVxcdTAwM2VlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cXHUwMDNlZW5kX3RpbWUsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBjeWNsZXMgKiBvcGVyLVxcdTAwM2VjeWNsZV90aW1lKTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0aWYgKHNob3VsZF9yZXN0YXJ0X2N5Y2xlKG9wZXIsIGVudHJ5KSkge1xcbitcXHRcXHRcXHRuZXh0ID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2b3Blci1cXHUwMDNlZW50cmllcyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IHNjaGVkX2VudHJ5LCBsaXN0KTtcXG4rXFx0XFx0XFx0b3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUgPVxcbitcXHRcXHRcXHRcXHRrdGltZV9hZGRfbnMob3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgb3Blci1cXHUwMDNlY3ljbGVfdGltZSk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdG5leHQgPSBsaXN0X25leHRfZW50cnkoZW50cnksIGxpc3QpO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cXHUwMDNlZW5kX3RpbWUsIG5leHQtXFx1MDAzZWludGVydmFsKTtcXG4rXFx0XFx0ZW5kX3RpbWUgPSBtaW5fdChrdGltZV90LCBlbmRfdGltZSwgb3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xcbitcXG4rXFx0XFx0aWYgKHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGFkbWluLCBvcGVyLCBlbmRfdGltZSkpIHtcXG4rXFx0XFx0XFx0c3dpdGNoX3NjaGVkdWxlcyhxLCBcXHUwMDI2YWRtaW4sIFxcdTAwMjZvcGVyKTtcXG4rXFx0XFx0XFx0LyogQWZ0ZXIgY2hhbmdpbmcgc2NoZWR1bGVzLCB0aGUgbmV4dCBlbnRyeSBpcyB0aGUgZmlyc3Qgb25lXFxuK1xcdFxcdFxcdCAqIGluIHRoZSBuZXcgc2NoZWR1bGUsIHdpdGggYSBwcmUtY2FsY3VsYXRlZCBlbmRfdGltZS5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdG5leHQgPSBsaXN0X2ZpcnN0X2VudHJ5KFxcdTAwMjZvcGVyLVxcdTAwM2VlbnRyaWVzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpO1xcbitcXHRcXHRcXHRlbmRfdGltZSA9IG5leHQtXFx1MDAzZWVuZF90aW1lO1xcbitcXHRcXHRcXHRnYXRlX2Nsb3NlX3RpbWVfY2FsY3VsYXRlZCA9IHRydWU7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gZmFsc2U7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdG5leHQtXFx1MDAzZWVuZF90aW1lID0gZW5kX3RpbWU7XFxuK1xcbitcXHRcXHRpZiAoa3RpbWVfYWZ0ZXIoZW5kX3RpbWUsIG5vdykpXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0ZW50cnkgPSBuZXh0O1xcbitcXHR9IHdoaWxlICgtLW1heF9pdGVyIFxcdTAwM2UgMCk7XFxuK1xcbitcXHRpZiAoIWdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkKSB7XFxuK1xcdFxcdGZvciAodGMgPSAwOyB0YyBcXHUwMDNjIG51bV90YzsgdGMrKykge1xcbitcXHRcXHRcXHRpZiAobmV4dC1cXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci1cXHUwMDNlY3ljbGVfdGltZSkge1xcbitcXHRcXHRcXHRcXHRuZXh0LVxcdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYO1xcbitcXHRcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRcXHRuZXh0LVxcdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID1cXG4rXFx0XFx0XFx0XFx0XFx0a3RpbWVfYWRkX25zKGVudHJ5LVxcdTAwM2VlbmRfdGltZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBuZXh0LVxcdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSk7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbi1cXHRuZXh0LVxcdTAwM2VlbmRfdGltZSA9IGVuZF90aW1lO1xcbiBcXHR0YXByaW9fc2V0X2J1ZGdldHMocSwgb3BlciwgbmV4dCk7XFxuIFxcbiBmaXJzdF9ydW46XFxuIFxcdHJjdV9hc3NpZ25fcG9pbnRlcihxLVxcdTAwM2VjdXJyZW50X2VudHJ5LCBuZXh0KTtcXG4gXFx0c3Bpbl91bmxvY2soXFx1MDAyNnEtXFx1MDAzZWN1cnJlbnRfZW50cnlfbG9jayk7XFxuIFxcbi1cXHRocnRpbWVyX3NldF9leHBpcmVzKFxcdTAwMjZxLVxcdTAwM2VhZHZhbmNlX3RpbWVyLCBlbmRfdGltZSk7XFxuK1xcdGV4cGlyZXMgPSBlbmRfdGltZTtcXG4rXFx0aWYgKHVubGlrZWx5KG1heF9pdGVyID09IDAgXFx1MDAyNlxcdTAwMjYga3RpbWVfYmVmb3JlKGV4cGlyZXMsIG5vdykpKVxcbitcXHRcXHRleHBpcmVzID0ga3RpbWVfYWRkX25zKG5vdywgTlNFQ19QRVJfVVNFQyk7XFxuK1xcbitcXHRocnRpbWVyX3NldF9leHBpcmVzKFxcdTAwMjZxLVxcdTAwM2VhZHZhbmNlX3RpbWVyLCBleHBpcmVzKTtcXG4gXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gXFx0X19uZXRpZl9zY2hlZHVsZShzY2gpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTozOToxNy4wNTE1ODU1NDhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNzY1Nzg2NjQ2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfVEFQUklPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWR2YW5jZV9zY2hlZFwiLFxuICAgIFwidGFwcmlvX2NoYW5nZVwiLFxuICAgIFwidGFwcmlvX2VucXVldWVcIixcbiAgICBcInRhcHJpb19kZXF1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhZHZhbmNlX3NjaGVkYCBocnRpbWVyIGNhbGxiYWNrIGluIHRoZSB0YXByaW8gbmV0d29yayBzY2hlZHVsZXIgKFRpbWUtQXdhcmUgUHJpb3JpdHkgU2hhcGVyKSB0byBwcmV2ZW50IHNvZnRpcnEgc3RhbGxzIGJ5IGJvdW5kaW5nIHRoZSByZXRyeSBsb29wIGFuZCBjb3JyZWN0bHkgY2FsY3VsYXRpbmcgYGdhdGVfY2xvc2VfdGltZWAuIFRoaXMgaXMgY29yZSByZWFjaGFibGUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjb25maWd1cmluZyB0aGUgdGFwcmlvIHFkaXNjIGFuZCBzZW5kaW5nIHRyYWZmaWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDhiMGUzMzM2OWY3MWQxMWUyZjg5YTYwZDJiYjY0NWZiYzkwNGUwMzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAyMTozOToxNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5pbmRleCAyOTkyMzRhNWYwZmU2MC4uOGU4YmU1NjhkZDJhNzAgMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5AQCAtOTIwLDExICs5MjAsMTYgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCxcbiBcdFx0XHRcdFx0ICAgICAgYWR2YW5jZV90aW1lcik7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHEtXHUwMDNlcm9vdCk7XG4rXHRib29sIGdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gZmFsc2U7XG4gXHRzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpvcGVyLCAqYWRtaW47XG4gXHRpbnQgbnVtX3RjID0gbmV0ZGV2X2dldF9udW1fdGMoZGV2KTtcbitcdGt0aW1lX3Qgbm93ID0gdGFwcmlvX2dldF90aW1lKHEpO1xuIFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7XG4gXHRzdHJ1Y3QgUWRpc2MgKnNjaCA9IHEtXHUwMDNlcm9vdDtcbitcdC8qIFNtYWxsIHJldHJ5IGJvdW5kIHRvIGF2b2lkIHNvZnRpcnEgc3RhbGwgKi9cbitcdGludCBtYXhfaXRlciA9IDMyO1xuIFx0a3RpbWVfdCBlbmRfdGltZTtcbitcdGt0aW1lX3QgZXhwaXJlcztcbiBcdGludCB0YztcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZxLVx1MDAzZWN1cnJlbnRfZW50cnlfbG9jayk7XG5AQCAtOTQ4LDQ2ICs5NTMsODYgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0XHRuZXh0ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMsIHN0cnVjdCBzY2hlZF9lbnRyeSxcbiBcdFx0XHRcdFx0bGlzdCk7XG4gXHRcdGVuZF90aW1lID0gbmV4dC1cdTAwM2VlbmRfdGltZTtcbi1cdFx0Z290byBmaXJzdF9ydW47XG4rXHRcdGdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gdHJ1ZTtcbitcdFx0aWYgKGt0aW1lX2FmdGVyKGVuZF90aW1lLCBub3cpKVxuK1x0XHRcdGdvdG8gZmlyc3RfcnVuO1xuK1x0XHRlbnRyeSA9IG5leHQ7XG4gXHR9XG4gXG4tXHRpZiAoc2hvdWxkX3Jlc3RhcnRfY3ljbGUob3BlciwgZW50cnkpKSB7XG4tXHRcdG5leHQgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNm9wZXItXHUwMDNlZW50cmllcywgc3RydWN0IHNjaGVkX2VudHJ5LFxuLVx0XHRcdFx0XHRsaXN0KTtcbi1cdFx0b3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLFxuLVx0XHRcdFx0XHRcdCAgICBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpO1xuLVx0fSBlbHNlIHtcbi1cdFx0bmV4dCA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4tXHR9XG4rXHRkbyB7XG4rXHRcdGt0aW1lX3QgbGltaXQgPSBub3c7XG4gXG4tXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSwgbmV4dC1cdTAwM2VpbnRlcnZhbCk7XG4tXHRlbmRfdGltZSA9IG1pbl90KGt0aW1lX3QsIGVuZF90aW1lLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKTtcbitcdFx0aWYgKGFkbWluIFx1MDAyNlx1MDAyNiBrdGltZV9iZWZvcmUoYWRtaW4tXHUwMDNlYmFzZV90aW1lLCBsaW1pdCkpXG4rXHRcdFx0bGltaXQgPSBhZG1pbi1cdTAwM2ViYXNlX3RpbWU7XG4gXG4tXHRmb3IgKHRjID0gMDsgdGMgXHUwMDNjIG51bV90YzsgdGMrKykge1xuLVx0XHRpZiAobmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSA9PSBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpXG4tXHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYO1xuLVx0XHRlbHNlXG4tXHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKGVudHJ5LVx1MDAzZWVuZF90aW1lLFxuLVx0XHRcdFx0XHRcdFx0XHQgbmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSk7XG4tXHR9XG4rXHRcdGlmIChvcGVyLVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDI2XHUwMDI2IGt0aW1lX2FmdGVyKGxpbWl0LCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKSkge1xuK1x0XHRcdHM2NCBkaWZmID0ga3RpbWVfc3ViKGxpbWl0LCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKTtcbitcdFx0XHRzNjQgY3ljbGVzID0gZGl2NjRfczY0KGRpZmYsIG9wZXItXHUwMDNlY3ljbGVfdGltZSkgKyAxO1xuIFxuLVx0aWYgKHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGFkbWluLCBvcGVyLCBlbmRfdGltZSkpIHtcbi1cdFx0c3dpdGNoX3NjaGVkdWxlcyhxLCBcdTAwMjZhZG1pbiwgXHUwMDI2b3Blcik7XG4tXHRcdC8qIEFmdGVyIGNoYW5naW5nIHNjaGVkdWxlcywgdGhlIG5leHQgZW50cnkgaXMgdGhlIGZpcnN0IG9uZVxuLVx0XHQgKiBpbiB0aGUgbmV3IHNjaGVkdWxlLCB3aXRoIGEgcHJlLWNhbGN1bGF0ZWQgZW5kX3RpbWUuXG4tXHRcdCAqL1xuLVx0XHRuZXh0ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMsIHN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7XG4tXHRcdGVuZF90aW1lID0gbmV4dC1cdTAwM2VlbmRfdGltZTtcbitcdFx0XHRvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lID1cbitcdFx0XHRcdGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLFxuK1x0XHRcdFx0XHQgICAgIGN5Y2xlcyAqIG9wZXItXHUwMDNlY3ljbGVfdGltZSk7XG4rXHRcdFx0ZW50cnktXHUwMDNlZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW50cnktXHUwMDNlZW5kX3RpbWUsXG4rXHRcdFx0XHRcdFx0ICAgICAgIGN5Y2xlcyAqIG9wZXItXHUwMDNlY3ljbGVfdGltZSk7XG4rXHRcdH1cbitcbitcdFx0aWYgKHNob3VsZF9yZXN0YXJ0X2N5Y2xlKG9wZXIsIGVudHJ5KSkge1xuK1x0XHRcdG5leHQgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNm9wZXItXHUwMDNlZW50cmllcyxcbitcdFx0XHRcdFx0XHRzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpO1xuK1x0XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPVxuK1x0XHRcdFx0a3RpbWVfYWRkX25zKG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUsXG4rXHRcdFx0XHRcdCAgICAgb3Blci1cdTAwM2VjeWNsZV90aW1lKTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRuZXh0ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTtcbitcdFx0fVxuK1xuK1x0XHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSwgbmV4dC1cdTAwM2VpbnRlcnZhbCk7XG4rXHRcdGVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xuK1xuK1x0XHRpZiAoc2hvdWxkX2NoYW5nZV9zY2hlZHVsZXMoYWRtaW4sIG9wZXIsIGVuZF90aW1lKSkge1xuK1x0XHRcdHN3aXRjaF9zY2hlZHVsZXMocSwgXHUwMDI2YWRtaW4sIFx1MDAyNm9wZXIpO1xuK1x0XHRcdC8qIEFmdGVyIGNoYW5naW5nIHNjaGVkdWxlcywgdGhlIG5leHQgZW50cnkgaXMgdGhlIGZpcnN0IG9uZVxuK1x0XHRcdCAqIGluIHRoZSBuZXcgc2NoZWR1bGUsIHdpdGggYSBwcmUtY2FsY3VsYXRlZCBlbmRfdGltZS5cbitcdFx0XHQgKi9cbitcdFx0XHRuZXh0ID0gbGlzdF9maXJzdF9lbnRyeShcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMsXG4rXHRcdFx0XHRcdFx0c3RydWN0IHNjaGVkX2VudHJ5LCBsaXN0KTtcbitcdFx0XHRlbmRfdGltZSA9IG5leHQtXHUwMDNlZW5kX3RpbWU7XG4rXHRcdFx0Z2F0ZV9jbG9zZV90aW1lX2NhbGN1bGF0ZWQgPSB0cnVlO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdGdhdGVfY2xvc2VfdGltZV9jYWxjdWxhdGVkID0gZmFsc2U7XG4rXHRcdH1cbitcbitcdFx0bmV4dC1cdTAwM2VlbmRfdGltZSA9IGVuZF90aW1lO1xuK1xuK1x0XHRpZiAoa3RpbWVfYWZ0ZXIoZW5kX3RpbWUsIG5vdykpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdGVudHJ5ID0gbmV4dDtcbitcdH0gd2hpbGUgKC0tbWF4X2l0ZXIgXHUwMDNlIDApO1xuK1xuK1x0aWYgKCFnYXRlX2Nsb3NlX3RpbWVfY2FsY3VsYXRlZCkge1xuK1x0XHRmb3IgKHRjID0gMDsgdGMgXHUwMDNjIG51bV90YzsgdGMrKykge1xuK1x0XHRcdGlmIChuZXh0LVx1MDAzZWdhdGVfZHVyYXRpb25bdGNdID09IG9wZXItXHUwMDNlY3ljbGVfdGltZSkge1xuK1x0XHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYO1xuK1x0XHRcdH0gZWxzZSB7XG4rXHRcdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPVxuK1x0XHRcdFx0XHRrdGltZV9hZGRfbnMoZW50cnktXHUwMDNlZW5kX3RpbWUsXG4rXHRcdFx0XHRcdFx0ICAgICBuZXh0LVx1MDAzZWdhdGVfZHVyYXRpb25bdGNdKTtcbitcdFx0XHR9XG4rXHRcdH1cbiBcdH1cbiBcbi1cdG5leHQtXHUwMDNlZW5kX3RpbWUgPSBlbmRfdGltZTtcbiBcdHRhcHJpb19zZXRfYnVkZ2V0cyhxLCBvcGVyLCBuZXh0KTtcbiBcbiBmaXJzdF9ydW46XG4gXHRyY3VfYXNzaWduX3BvaW50ZXIocS1cdTAwM2VjdXJyZW50X2VudHJ5LCBuZXh0KTtcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNnEtXHUwMDNlY3VycmVudF9lbnRyeV9sb2NrKTtcbiBcbi1cdGhydGltZXJfc2V0X2V4cGlyZXMoXHUwMDI2cS1cdTAwM2VhZHZhbmNlX3RpbWVyLCBlbmRfdGltZSk7XG4rXHRleHBpcmVzID0gZW5kX3RpbWU7XG4rXHRpZiAodW5saWtlbHkobWF4X2l0ZXIgPT0gMCBcdTAwMjZcdTAwMjYga3RpbWVfYmVmb3JlKGV4cGlyZXMsIG5vdykpKVxuK1x0XHRleHBpcmVzID0ga3RpbWVfYWRkX25zKG5vdywgTlNFQ19QRVJfVVNFQyk7XG4rXG4rXHRocnRpbWVyX3NldF9leHBpcmVzKFx1MDAyNnEtXHUwMDNlYWR2YW5jZV90aW1lciwgZXhwaXJlcyk7XG4gXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRfX25ldGlmX3NjaGVkdWxlKHNjaCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTozOToxNy4wNTE1ODY2OTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQzMjM1NzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgdGFwcmlvIHFkaXNjIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gdGhlIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYCBmaWxlLCBzcGVjaWZpY2FsbHkgdGhlIGBhZHZhbmNlX3NjaGVkYCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBjb3JlIG9mIHRoZSBUaW1lLUF3YXJlIFByaW9yaXR5IFNoYXBlciwgdGhlIGB0YXByaW9gIHFkaXNjIOKAkyBhIGNyaXRpY2FsIGNvbXBvbmVudCBmb3IgdGltZS1zZW5zaXRpdmUgbmV0d29ya2luZy4gVGhlIG1haW4gdGhpbmcgdGhleSdyZSBhZGRyZXNzaW5nIGhlcmUgaXMgcG90ZW50aWFsIHNvZnRpcnEgc3RhbGxzIHdoZW4gYWR2YW5jaW5nIHRoZSBzY2hlZHVsZS4gVGhhdCdzIGEgY2xhc3NpYyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrLCBlc3BlY2lhbGx5IHVuZGVyIGxvYWQuIFRoaXMgcmV0cnkgbG9vcCwgd2l0aCB0aGUgYGRvLi4ud2hpbGVgIGNvbnN0cnVjdCBhbmQgYG1heF9pdGVyYCwgaXMgZGVmaW5pdGVseSB0aGUgaW50ZW5kZWQgZml4LiBNYWtlcyBzZW5zZSB0byBpdGVyYXRlIGEgZmV3IHRpbWVzIGlmIHRoZSB0aW1lciBmaXJlcyB1bmV4cGVjdGVkbHksIHdoaWNoIEkgb2Z0ZW4gc2VlIHdpdGggdGhlc2UgdHlwZXMgb2YgaW1wbGVtZW50YXRpb25zLiBFbnN1cmluZyBwcm9wZXIgY2FsY3VsYXRpb24gb2YgYGdhdGVfY2xvc2VfdGltZWAgaXMgYWxzbyBrZXkgdG8gYXZvaWRpbmcgc3luY2hyb25pemF0aW9uIGlzc3Vlcy4gVGhlIHBhdGNoIGFsc28gdGFja2xlcyB0aGUgc2NlbmFyaW8gd2hlcmUgdGhlIHRpbWVyIGdvZXMgb2ZmIGxhdGUsIHBvdGVudGlhbGx5IHNraXBwaW5nIG92ZXIgc2NoZWR1bGUgZW50cmllcy5cblxuRnVuY3Rpb25hbGl0eS13aXNlLCBpdCBzb3VuZHMgc29saWQuIEl0IGFkZHJlc3NlcyBhIGtub3duIGlzc3VlIHdpdGhpbiB0aGUgdGltZS1zZW5zaXRpdmUgbmV0d29ya2luZyBkb21haW4sIGFuZCB0aGUgdGVjaG5pcXVlcyBzZWVtIGNvcnJlY3QgZm9yIGZpeGluZyBpdC4gQW5kLCB5ZXMsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUgaW4gUUVNVS4gYHRhcHJpb2AgaXMgYSBzdGFuZGFyZCBxZGlzYyBpbiB0aGUgTGludXgga2VybmVsIG5ldHdvcmsgc2NoZWR1bGVyLCBzbyBzaW11bGF0aW5nIGl0IGlzIG5vIHByb2JsZW0uXG5cbk5leHQsIEknbGwgbmVlZCB0byBjb25maXJtIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gY2hlY2sgYG5ldC9zY2hlZC9NYWtlZmlsZWAgYW5kIGBLY29uZmlnYCBmb3IgdGhlIGBzY2hfdGFwcmlvYCBzeW1ib2wuIFRoaXMgd2lsbCBhbGxvdyBtZSB0byBwcm9wZXJseSBzZXQgaXQgdXAgaW4gbXkgdGVzdCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU4NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjM5OjIxLjg5NDgyNDQzOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzcxNjcxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2hfdGFwcmlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MTcyPWNvbmZpZyBORVRfU0NIX1RBUFJJT1xcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTc4LVxcbm5ldC9zY2hlZC9LY29uZmlnOjE3OTpcXHQgIFNlZSB0aGUgdG9wIG9mIFxcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXFxubmV0L3NjaGVkL0tjb25maWctMTgwLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE4MS1cXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG5uZXQvc2NoZWQvS2NvbmZpZzoxODI6XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RhcHJpby5cXG5uZXQvc2NoZWQvS2NvbmZpZy0xODMtXFxuLS1cXG5uZXQvc2NoZWQvTWFrZWZpbGU9NjM9b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRGKVxcdCs9IHNjaF9ldGYub1xcbm5ldC9zY2hlZC9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfTkVUX1NDSF9UQVBSSU8pXFx0Kz0gc2NoX3RhcHJpby5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTY1LW9iai0kKENPTkZJR19ORVRfU0NIX0JQRilcXHQrPSBicGZfcWRpc2Mub1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MzovKiBuZXQvc2NoZWQvc2NoX3RhcHJpby5jXFx0IFRpbWUgQXdhcmUgUHJpb3JpdHkgU2NoZWR1bGVyXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00LSAqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjM5OjIxLjk1ODU0NTQ3N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDk2ODYxNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6XG5cbioqRGVwZW5kZW5jaWVzLCBEZXBlbmRlbmNpZXMsIERlcGVuZGVuY2llcyEqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZSBgTkVUX1NDSF9UQVBSSU9gIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gSSBuZWVkIHRvIGtub3cgKmV2ZXJ5dGhpbmcqIHRoaXMgaGluZ2VzIHVwb24uIFNvLCB0aGUgZmlyc3QgdGhpbmcgSSdtIHRoaW5raW5nIGlzLCBcIldoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBpbiBwbGFjZSBmb3IgdGhpcyB0byBldmVuICpiZSogYSB2YWxpZCBvcHRpb24sIGxldCBhbG9uZSBmdW5jdGlvbmFsP1wiIEknbSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIHR5cGljYWwga2VybmVsIGNvbmZpZ3VyYXRpb24gY2hlY2tzIOKAkyBsb29raW5nIGZvciBhbnkgb2J2aW91cyBwcmUtcmVxdWlzaXRlcyBsaWtlIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlcnMsIG90aGVyIG5ldHdvcmtpbmcgZmVhdHVyZXMsIG9yIGV2ZW4gY29yZSBrZXJuZWwgZnVuY3Rpb25hbGl0aWVzIHRoYXQgbmVlZCB0byBiZSBlbmFibGVkIGZpcnN0LiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGl0cyBwbGFjZSBpbiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDEwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6MjQuODY4MjMzNjk0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NjQ0NzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIX1RBUFJJT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz0xNjc9Y29uZmlnIE5FVF9TQ0hfTVFQUklPX0xJQlxcbi0tXFxubmV0L3NjaGVkL0tjb25maWctMTcxLVxcbm5ldC9zY2hlZC9LY29uZmlnOjE3Mjpjb25maWcgTkVUX1NDSF9UQVBSSU9cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzMtXFx0dHJpc3RhdGUgXFxcIlRpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTozOToyNC45MjY4ODgzMzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQyMTQxNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCBwcm9jZXNzaW5nIHRoZSBwcm92aWRlZCB0ZXh0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwncyBUcmFmZmljIFNoYXBpbmcgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGtlcm5lbCdzIHRyYWZmaWMgc2hhcGluZyBmZWF0dXJlcyBhcmUgY29uZmlndXJlZC4gR2l2ZW4gbXkgYmFja2dyb3VuZCwgSSBhbHJlYWR5IGhhdmUgYSBnb29kIGdyYXNwIG9mIHRoZSB1bmRlcmx5aW5nIGNvbmNlcHRzLCBzbyBJIGZpZ3VyZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIEtjb25maWcgZmlsZSwgc3BlY2lmaWNhbGx5IHRoZSBvbmUgcmVsYXRlZCB0byB0aGUgbmV0d29ya2luZyBzY2hlZHVsZXIuIEknbGwgemVybyBpbiBvbiBgbmV0L3NjaGVkL0tjb25maWdgLCBhbmQgbGV0J3Mgc3RhcnQgYXJvdW5kIGxpbmUgMTcyLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBlbnRyeSBwb2ludCB0byBzZWUgd2hhdCBvcHRpb25zIGFyZSBleHBvc2VkIHRvIHRoZSB1c2VyIGFuZCBob3cgdGhleSdyZSBzdHJ1Y3R1cmVkLCBhbmQgZnJvbSB0aGVyZSBJIGNhbiBzdGFydCB0byBtYXAgb3V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgd2l0aGluIHRoZSBrZXJuZWwncyBzY2hlZHVsaW5nIGxvZ2ljLiBJJ20gaG9waW5nIEkgY2FuIGdldCBhIGNsZWFyIG92ZXJ2aWV3IG9mIHRoZSBjb25maWd1cmF0aW9uIGxhbmRzY2FwZSBhbmQgcGVyaGFwcyBpZGVudGlmeSBzb21lIGFyZWFzIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gb3Igb3B0aW1pemF0aW9uLCBtYXliZSBzcG90IGEgbm92ZWwgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCBJIGhhZG4ndCBjb21lIGFjcm9zcyBiZWZvcmUuIEl0J3MgdGltZSB0byBkaWcgaW4gYW5kIGdldCBhIGZlZWwgZm9yIHRoZSBkZXNpZ24gY2hvaWNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcxNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjM5OjI4LjM2OTAzMTY0NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2NTpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfZXRmLlxcbiAxNjY6XFx0XFxuIDE2NzpcXHRjb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXFxuIDE2ODpcXHRcXHR0cmlzdGF0ZVxcbiAxNjk6XFx0XFx0aGVscFxcbiAxNzA6XFx0XFx0ICBDb21tb24gbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIG1xcHJpbyBxdWV1ZSBjb25maWd1cmF0aW9ucy5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxuIDE3MzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcXFwiXFxuIDE3NDpcXHRcXHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXFxuIDE3NTpcXHRcXHRoZWxwXFxuIDE3NjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxcbiAxNzc6XFx0XFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0XFx0ICBTZWUgdGhlIHRvcCBvZiBcXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXFx1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAxODA6XFx0XFxuIDE4MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gMTgyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF90YXByaW8uXFxuIDE4MzpcXHRcXG4gMTg0OlxcdGNvbmZpZyBORVRfU0NIX0dSRURcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6MjguMzY5MTE5NTQ0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk3NDk4NDk1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKlxuXG5Pa2F5LCBzbyB0aGUgcGF0Y2ggaXMgZm9jdXNpbmcgc29sZWx5IG9uIGBORVRfU0NIX01RUFJJT19MSUJgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiV2h5IG5vdCBjb25zaWRlciBgTkVUX1NDSEVEYD9cIiBBIHF1aWNrIGNoZWNrIGNvbmZpcm1zIHRoYXQgYG5ldC9zY2hlZC9LY29uZmlnYCBpcyBpbmNsdWRlZCB1bmRlciBgTkVUX1NDSEVEYCwgc28gd2UgbmVlZCB0byBlbnN1cmUgdGhhdCBpcyBhbHNvIGVuYWJsZWQgd2hlbiBzZXR0aW5nIHVwIHRoZSBmdXp6aW5nIHRhcmdldHMuIE5vdywgbGV0J3MgZGl2ZSBpbnRvIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgYXJlIHJlbGV2YW50IHRvIHRoaXMgcGF0Y2ggYW5kIGFyZSBnb29kIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcuXG5cblRoZSBwYXRjaCBtZW50aW9ucyBtb2RpZmljYXRpb25zIHRvIGBhZHZhbmNlX3NjaGVkYC4gR2l2ZW4gdGhhdCBpdCdzIHJlbGF0ZWQgdG8gc2NoZWR1bGluZywgbXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgbGlrZWx5IGEgdGltZXIgY2FsbGJhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHRpbWVyIGlzIHNldCB1cCwgd2hhdCB0cmlnZ2VycyBpdC4gTG9va2luZyBhdCB0aGUgY29kZSBpbiBgc2NoX3RhcHJpby5jYCwgbXkgbWFpbiBmb2N1cyB3aWxsIGJlIHRvIGZpbmQgYW5kIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9ucyB0aGF0IGNvbmZpZ3VyZSB0aGUgcWRpc2MsIGhvdyB0aGUgZGF0YSBmbG93cyB3aXRoaW4gdGhlIGZ1bmN0aW9ucyBhbmQgdGhlIGNhbGxiYWNrcyB0byBidWlsZCBhIGdvb2QgZnV6emVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mjg5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6MzIuMzQ0MTA2NDVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxOTY5OTYwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZHZhbmNlX3NjaGVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uYz04ODQ9c3RhdGljIGJvb2wgc2hvdWxkX2NoYW5nZV9zY2hlZHVsZXMoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqYWRtaW4sXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTkxNy1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjkxODpzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05MTkte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0xODYyPXN0YXRpYyBpbnQgdGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTk2LVxcdCAgICAhaHJ0aW1lcl9hY3RpdmUoXFx1MDAyNnEtXFx1MDAzZWFkdmFuY2VfdGltZXIpKSB7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxOTk3OlxcdFxcdGhydGltZXJfc2V0dXAoXFx1MDAyNnEtXFx1MDAzZWFkdmFuY2VfdGltZXIsIGFkdmFuY2Vfc2NoZWQsIHEtXFx1MDAzZWNsb2NraWQsIEhSVElNRVJfTU9ERV9BQlMpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTk5OC1cXHR9XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwMTUtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDE2OlxcdFxcdC8qIE5vdCBnb2luZyB0byByYWNlIGFnYWluc3QgYWR2YW5jZV9zY2hlZCgpLCBidXQgc3RpbGwgKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwMTctXFx0XFx0YWRtaW4gPSByY3VfcmVwbGFjZV9wb2ludGVyKHEtXFx1MDAzZWFkbWluX3NjaGVkLCBuZXdfYWRtaW4sXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwMjMtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDI0OlxcdFxcdC8qIFByb3RlY3RzIGFnYWluc3QgYWR2YW5jZV9zY2hlZCgpICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDI1LVxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZxLVxcdTAwM2VjdXJyZW50X2VudHJ5X2xvY2ssIGZsYWdzKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjExMT1zdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxMTktXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTIwOlxcdGhydGltZXJfc2V0dXAoXFx1MDAyNnEtXFx1MDAzZWFkdmFuY2VfdGltZXIsIGFkdmFuY2Vfc2NoZWQsIENMT0NLX1RBSSwgSFJUSU1FUl9NT0RFX0FCUyk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTIxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMTozOTozMi42NjM4MTI4MjFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5NTg5MDE5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgZnVuY3Rpb25zLCB0aGlua2luZyB0aGVtIHRocm91Z2ggZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmUuXG5cbioqRGl2aW5nIGludG8gdGhlIFRBUFJJTyBBUEkqKlxuXG5BbHJpZ2h0LCBzbyBpZiBJJ20gYnVpbGRpbmcgd2l0aCB0aGlzIFRBUFJJTyBsaWJyYXJ5LCB0aGUgY29yZSBmdW5jdGlvbnMgSSdsbCBuZWVkIHRvIHJlYWxseSB1bmRlcnN0YW5kIGFyZSB1bmRvdWJ0ZWRseSBgdGFwcmlvX2NoYW5nZWAsIGB0YXByaW9faW5pdGAsIGB0YXByaW9fZW5xdWV1ZWAsIGFuZCBgdGFwcmlvX2RlcXVldWVgLiBUaGVzZSBhcmUgdGhlIGNydWNpYWwgZW50cnkgcG9pbnRzLCB0aGUgZ2VhcnMgdGhhdCdsbCBkcml2ZSB0aGUgd2hvbGUgc2NoZWR1bGluZyBtZWNoYW5pc20uIEkgbmVlZCB0byBiZSAqaW50aW1hdGVseSogZmFtaWxpYXIgd2l0aCB0aGVpciBzaWduYXR1cmVzLCB0aGVpciBleHBlY3RlZCBiZWhhdmlvcnMsIGFuZCBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSBuZWVkIHRvIGRyaWxsIGludG8gdGhlIGRldGFpbHMuXG5cbkxldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aGUgQVBJIGVudHJ5IHBvaW50cyBmb3IgVEFQUklPLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGZvdXIgZnVuY3Rpb25zIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgVEFQUklPIHN1YnN5c3RlbS4gSSdsbCBuZWVkIHRvIGtub3c6XG4qICAgSG93IGRvZXMgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIHdvcms/XG4qICAgSG93IGRvIHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIHRoZSByZXN0IG9mIHRoZSBzY2hlZHVsZXI/XG4qICAgSG93IGRvIEkgc2lnbmFsIGVycm9ycz9cbiogICBIb3cgZG9lcyB0aGUgY2hhbmdlIGZ1bmN0aW9uIGJlaGF2ZT8gRG9lcyBpdCBoYXZlIGFueSBpbXBsaWNhdGlvbnMgb24gdGhlIGN1cnJlbnRseSBzY2hlZHVsZWQgZGF0YT9cbiogICBIb3cgZG9lcyBlbnF1ZXVlIGJlaGF2ZSBhbmQgaG93IGRvIGRpZmZlcmVudCBlbnF1ZXVlcyBpbnRlcmFjdD9cbiogICBXaGF0IHBhcmFtZXRlcnMgYXJlIGludm9sdmVkLCBhbmQgd2hhdCBkb2VzIGVhY2ggb25lIHNpZ25pZnk/IEFyZSB0aGVyZSBhbnkgaW1wbGljaXQgZGVwZW5kZW5jaWVzP1xuKiAgIFdoYXQgc29ydCBvZiBjb250ZXh0IGlzIHJlcXVpcmVkIGZvciBlYWNoIGNhbGw/IFRocmVhZHMsIGxvY2tzLCBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXM/XG4qICAgQW5kIGZpbmFsbHksIGFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgaGlkZGVuIGFzc3VtcHRpb25zIGFib3V0IHRoZSBlbnZpcm9ubWVudCB0aGlzIGNvZGUgcnVucyBpbj8gSSBuZWVkIHRvIGFuYWx5emUgdGhvc2UgZGV0YWlscywgdGhleSBjb3VsZCBzYXZlIG1lIGhvdXJzIG9mIGRlYnVnZ2luZyBsYXRlciBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIxMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjM5OjM2LjU1OTcwNTU5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDExMzIwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0YXByaW9fXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3ODIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMzQtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzozNTpzdGF0aWMgTElTVF9IRUFEKHRhcHJpb19saXN0KTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjM2OnN0YXRpYyBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSB0YXByaW9faGF2ZV9icm9rZW5fbXFwcmlvO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6Mzc6c3RhdGljIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIHRhcHJpb19oYXZlX3dvcmtpbmdfbXFwcmlvO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMzgtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTcyPXN0cnVjdCBzY2hlZF9nYXRlX2xpc3Qge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04Ny1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg4OnN0cnVjdCB0YXByaW9fc2NoZWQge1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODktXFx0c3RydWN0IFFkaXNjICoqcWRpc2NzO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMDYtXFx0c3RydWN0IGhydGltZXIgYWR2YW5jZV90aW1lcjtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEwNzpcXHRzdHJ1Y3QgbGlzdF9oZWFkIHRhcHJpb19saXN0O1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA4LVxcdGludCBjdXJfdHhxW1RDX01BWF9RVUVVRV07XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExMy1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExNDpzdHJ1Y3QgX190Y190YXByaW9fcW9wdF9vZmZsb2FkIHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNS1cXHRyZWZjb3VudF90IHVzZXJzO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTE2OlxcdHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkIG9mZmxvYWQ7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTctfTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExOTpzdGF0aWMgdm9pZCB0YXByaW9fY2FsY3VsYXRlX2dhdGVfZHVyYXRpb25zKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjAtXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjMtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjQ6c3RhdGljIGJvb2wgdGFwcmlvX2VudHJ5X2FsbG93c190eChrdGltZV90IHNrYl9lbmRfdGltZSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2NS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBpbnQgdGMpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE3MD1zdGF0aWMga3RpbWVfdCBzY2hlZF9iYXNlX3RpbWUoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3Ny1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE3ODpzdGF0aWMga3RpbWVfdCB0YXByaW9fbW9ub190b19hbnkoY29uc3Qgc3RydWN0IHRhcHJpb19zY2hlZCAqcSwga3RpbWVfdCBtb25vKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc5LXtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4MDpcXHQvKiBUaGlzIHBhaXJzIHdpdGggV1JJVEVfT05DRSgpIGluIHRhcHJpb19wYXJzZV9jbG9ja2lkKCkgKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4MS1cXHRlbnVtIHRrX29mZnNldHMgdGtfb2Zmc2V0ID0gUkVBRF9PTkNFKHEtXFx1MDAzZXRrX29mZnNldCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5MC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5MTpzdGF0aWMga3RpbWVfdCB0YXByaW9fZ2V0X3RpbWUoY29uc3Qgc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5Mi17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxOTM6XFx0cmV0dXJuIHRhcHJpb19tb25vX3RvX2FueShxLCBrdGltZV9nZXQoKSk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTQtfVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTk1LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTk2OnN0YXRpYyB2b2lkIHRhcHJpb19mcmVlX3NjaGVkX2NiKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5Ny17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwOC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIwOTpzdGF0aWMgdm9pZCBzd2l0Y2hfc2NoZWR1bGVzKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTAtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICoqYWRtaW4sXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxNi1cXHRpZiAoKm9wZXIpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTc6XFx0XFx0Y2FsbF9yY3UoXFx1MDAyNigqb3BlciktXFx1MDAzZXJjdSwgdGFwcmlvX2ZyZWVfc2NoZWRfY2IpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE4LVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yMzU9c3RhdGljIGt0aW1lX3QgZ2V0X2ludGVydmFsX2VuZF90aW1lKHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTYtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNTc6c3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbilcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1OC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI2MjpzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNzAtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNzE6c3RhdGljIHZvaWQgdGFwcmlvX3VwZGF0ZV9xdWV1ZV9tYXhfc2R1KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNzItXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTMyMz1zdGF0aWMgc3RydWN0IHNjaGVkX2VudHJ5ICpmaW5kX2VudHJ5X3RvX3RyYW5zbWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTMzNC1cXHRzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gTlVMTCwgKmVudHJ5X2ZvdW5kID0gTlVMTDtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjMzNTpcXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMzM2LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9NDAwPXN0YXRpYyBib29sIGlzX3ZhbGlkX2ludGVydmFsKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNDAxLXtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjQwMjpcXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNDAzLVxcdHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLCAqYWRtaW47XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQxOC0vKiBUaGlzIHJldHVybnMgdGhlIHRzdGFtcCB2YWx1ZSBzZXQgYnkgVENQIGluIHRlcm1zIG9mIHRoZSBzZXQgY2xvY2suICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo0MTk6c3RhdGljIGt0aW1lX3QgZ2V0X3RjcF90c3RhbXAoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQyMC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQ0OS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjQ1MDpcXHRyZXR1cm4gdGFwcmlvX21vbm9fdG9fYW55KHEsIHNrYi1cXHUwMDNlc2tiX21zdGFtcF9ucyk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00NTEtfVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz00Njg9c3RhdGljIGxvbmcgZ2V0X3BhY2tldF90eHRpbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQ3MC1cXHRrdGltZV90IHRyYW5zbWl0X2VuZF90aW1lLCBpbnRlcnZhbF9lbmQsIGludGVydmFsX3N0YXJ0LCB0Y3BfdHN0YW1wO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NDcxOlxcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00NzItXFx0c3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsICphZG1pbjtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNDc3LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NDc4OlxcdG5vdyA9IHRhcHJpb19nZXRfdGltZShxKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQ3OS1cXHRtaW5pbXVtX3RpbWUgPSBrdGltZV9hZGRfbnMobm93LCBxLVxcdTAwM2V0eHRpbWVfZGVsYXkpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01MzktLyogRGV2aWNlcyB3aXRoIGZ1bGwgb2ZmbG9hZCBhcmUgZXhwZWN0ZWQgdG8gaG9ub3IgdGhpcyBpbiBoYXJkd2FyZSAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NTQwOnN0YXRpYyBib29sIHRhcHJpb19za2JfZXhjZWVkc19xdWV1ZV9tYXhfc2R1KHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNTQxLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU0Mi17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo1NDM6XFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU0NC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHNjaCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU2MC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjU2MTpzdGF0aWMgaW50IHRhcHJpb19lbnF1ZXVlX29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU2Mi1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgUWRpc2MgKmNoaWxkLCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01NjMte1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NTY0OlxcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01NjUtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU4MS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjU4MjpzdGF0aWMgaW50IHRhcHJpb19lbnF1ZXVlX3NlZ21lbnRlZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU4My1cXHRcXHRcXHRcXHQgICAgc3RydWN0IFFkaXNjICpjaGlsZCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjAzLVxcdFxcdCAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjA0OlxcdFxcdGlmICh0YXByaW9fc2tiX2V4Y2VlZHNfcXVldWVfbWF4X3NkdShzY2gsIHNlZ3MpKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjA1LVxcdFxcdFxcdHJldCA9IHFkaXNjX2Ryb3Aoc2Vncywgc2NoLCB0b19mcmVlKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTYwNi1cXHRcXHRlbHNlXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2MDc6XFx0XFx0XFx0cmV0ID0gdGFwcmlvX2VucXVldWVfb25lKHNlZ3MsIHNjaCwgY2hpbGQsIHRvX2ZyZWUpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjA4LVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MjYtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2Mjc6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTYyOC1cXHRcXHRcXHQgIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTYyOS17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2MzA6XFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTYzMS1cXHRzdHJ1Y3QgUWRpc2MgKmNoaWxkO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MzktXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2NDA6XFx0aWYgKHRhcHJpb19za2JfZXhjZWVkc19xdWV1ZV9tYXhfc2R1KHNjaCwgc2tiKSkge1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjQxLVxcdFxcdC8qIExhcmdlIHBhY2tldHMgbWlnaHQgbm90IGJlIHRyYW5zbWl0dGVkIHdoZW4gdGhlIHRyYW5zbWlzc2lvblxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NDYtXFx0XFx0aWYgKHNrYl9pc19nc28oc2tiKSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY0NzpcXHRcXHRcXHRyZXR1cm4gdGFwcmlvX2VucXVldWVfc2VnbWVudGVkKHNrYiwgc2NoLCBjaGlsZCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY0OC1cXHRcXHRcXHRcXHRcXHRcXHRcXHR0b19mcmVlKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjUyLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjUzOlxcdHJldHVybiB0YXByaW9fZW5xdWV1ZV9vbmUoc2tiLCBzY2gsIGNoaWxkLCB0b19mcmVlKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY1NC19XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NTUtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2NTY6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fcGVlayhzdHJ1Y3QgUWRpc2MgKnNjaClcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY1Ny17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY2MS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY2MjpzdGF0aWMgdm9pZCB0YXByaW9fc2V0X2J1ZGdldHMoc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY2My1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY4Mi0vKiBXaGVuIGFuIHNrYiBpcyBzZW50LCBpdCBjb25zdW1lcyBmcm9tIHRoZSBidWRnZXQgb2YgYWxsIHRyYWZmaWMgY2xhc3NlcyAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjgzOnN0YXRpYyBpbnQgdGFwcmlvX3VwZGF0ZV9idWRnZXRzKHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksIHNpemVfdCBsZW4sXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02ODQtXFx0XFx0XFx0XFx0IGludCB0Y19jb25zdW1lZCwgaW50IG51bV90YylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzA1LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NzA2OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdGFwcmlvX2RlcXVldWVfZnJvbV90eHEoc3RydWN0IFFkaXNjICpzY2gsIGludCB0eHEsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03MDctXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTcwOS17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3MTA6XFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTcxMS1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHNjaCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTczNi1cXHRsZW4gPSBxZGlzY19wa3RfbGVuKHNrYik7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3Mzc6XFx0Z3VhcmQgPSBrdGltZV9hZGRfbnModGFwcmlvX2dldF90aW1lKHEpLCBsZW5ndGhfdG9fZHVyYXRpb24ocSwgbGVuKSk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03MzgtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc0Mi1cXHRpZiAoZ2F0ZV9tYXNrICE9IFRBUFJJT19BTExfR0FURVNfT1BFTiBcXHUwMDI2XFx1MDAyNlxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NzQzOlxcdCAgICAhdGFwcmlvX2VudHJ5X2FsbG93c190eChndWFyZCwgZW50cnksIHRjKSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc0NC1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzQ3LVxcdGlmIChnYXRlX21hc2sgIT0gVEFQUklPX0FMTF9HQVRFU19PUEVOIFxcdTAwMjZcXHUwMDI2XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo3NDg6XFx0ICAgIHRhcHJpb191cGRhdGVfYnVkZ2V0cyhlbnRyeSwgbGVuLCB0YywgbnVtX3RjKSBcXHUwMDNjIDApXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03NDktXFx0XFx0cmV0dXJuIE5VTEw7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc2Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjc2MzpzdGF0aWMgdm9pZCB0YXByaW9fbmV4dF90Y190eHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHRjLCBpbnQgKnR4cSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc2NC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc3NS0gKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjc3NjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRhcHJpb19kZXF1ZXVlX3RjX3ByaW9yaXR5KHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzc3LVxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzc5LXtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjc4MDpcXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gcWRpc2NfcHJpdihzY2gpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzgxLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzkyLVxcdFxcdGRvIHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjc5MzpcXHRcXHRcXHRza2IgPSB0YXByaW9fZGVxdWV1ZV9mcm9tX3R4cShzY2gsIHEtXFx1MDAzZWN1cl90eHFbdGNdLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzk0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGVudHJ5LCBnYXRlX21hc2spO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzk1LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6Nzk2OlxcdFxcdFxcdHRhcHJpb19uZXh0X3RjX3R4cShkZXYsIHRjLCBcXHUwMDI2cS1cXHUwMDNlY3VyX3R4cVt0Y10pO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzk3LVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04MTEtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4MTI6c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fZGVxdWV1ZV90eHFfcHJpb3JpdHkoc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04MTMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODIwLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkZXYtXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKykge1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODIxOlxcdFxcdHNrYiA9IHRhcHJpb19kZXF1ZXVlX2Zyb21fdHhxKHNjaCwgaSwgZW50cnksIGdhdGVfbWFzayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04MjItXFx0XFx0aWYgKHNrYilcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODMxLSAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODMyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdGFwcmlvX2RlcXVldWUoc3RydWN0IFFkaXNjICpzY2gpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04MzMte1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODM0OlxcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04MzUtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg0OS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg1MDpcXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcXHUwMDI2dGFwcmlvX2hhdmVfYnJva2VuX21xcHJpbykgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjg1MTpcXHQgICAgIXN0YXRpY19icmFuY2hfbGlrZWx5KFxcdTAwMjZ0YXByaW9faGF2ZV93b3JraW5nX21xcHJpbykpIHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg1Mi1cXHRcXHQvKiBTaW5nbGUgTklDIGtpbmQgd2hpY2ggaXMgYnJva2VuICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NTM6XFx0XFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdHhxX3ByaW9yaXR5KHNjaCwgZW50cnksIGdhdGVfbWFzayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NTQ6XFx0fSBlbHNlIGlmIChzdGF0aWNfYnJhbmNoX2xpa2VseShcXHUwMDI2dGFwcmlvX2hhdmVfd29ya2luZ19tcXByaW8pIFxcdTAwMjZcXHUwMDI2XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NTU6XFx0XFx0ICAgIXN0YXRpY19icmFuY2hfdW5saWtlbHkoXFx1MDAyNnRhcHJpb19oYXZlX2Jyb2tlbl9tcXByaW8pKSB7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NTYtXFx0XFx0LyogU2luZ2xlIE5JQyBraW5kIHdoaWNoIHByaW9yaXRpemVzIHByb3Blcmx5ICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NTc6XFx0XFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdGNfcHJpb3JpdHkoc2NoLCBlbnRyeSwgZ2F0ZV9tYXNrKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg1OC1cXHR9IGVsc2Uge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NjAtXFx0XFx0aWYgKHEtXFx1MDAzZWJyb2tlbl9tcXByaW8pXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4NjE6XFx0XFx0XFx0c2tiID0gdGFwcmlvX2RlcXVldWVfdHhxX3ByaW9yaXR5KHNjaCwgZW50cnksIGdhdGVfbWFzayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NjItXFx0XFx0ZWxzZVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6ODYzOlxcdFxcdFxcdHNrYiA9IHRhcHJpb19kZXF1ZXVlX3RjX3ByaW9yaXR5KHNjaCwgZW50cnksIGdhdGVfbWFzayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04NjQtXFx0fVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz05MTg9c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTE5LXtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjkyMDpcXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgdGFwcmlvX3NjaGVkLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTIxLVxcdFxcdFxcdFxcdFxcdCAgICAgIGFkdmFuY2VfdGltZXIpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05MjUtXFx0aW50IG51bV90YyA9IG5ldGRldl9nZXRfbnVtX3RjKGRldik7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo5MjY6XFx0a3RpbWVfdCBub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05MjctXFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwMjQtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMDI1OlxcdHRhcHJpb19zZXRfYnVkZ2V0cyhxLCBvcGVyLCBuZXh0KTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwMjYtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTEwNDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGVudHJ5X3BvbGljeVtUQ0FfVEFQUklPX1NDSEVEX0VOVFJZX01BWCArIDFdID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMDUwLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTA1MTpzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdGFwcmlvX3RjX3BvbGljeVtUQ0FfVEFQUklPX1RDX0VOVFJZX01BWCArIDFdID0ge1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA1Mi1cXHRbVENBX1RBUFJJT19UQ19FTlRSWV9JTkRFWF1cXHQgICA9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VMzIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNTktXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMDYwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0bGlua19yYW5nZV92YWxpZGF0aW9uX3NpZ25lZCB0YXByaW9fY3ljbGVfdGltZV9yYW5nZSA9IHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNjEtXFx0Lm1pbiA9IDAsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNjQtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMDY1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB0YXByaW9fcG9saWN5W1RDQV9UQVBSSU9fQVRUUl9NQVggKyAxXSA9IHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNjYtXFx0W1RDQV9UQVBSSU9fQVRUUl9QUklPTUFQXVxcdCAgICAgICA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA3My1cXHRbVENBX1RBUFJJT19BVFRSX1NDSEVEX0NZQ0xFX1RJTUVdICAgICAgICAgICA9XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMDc0OlxcdFxcdE5MQV9QT0xJQ1lfRlVMTF9SQU5HRV9TSUdORUQoTkxBX1M2NCwgXFx1MDAyNnRhcHJpb19jeWNsZV90aW1lX3JhbmdlKSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNzUtXFx0W1RDQV9UQVBSSU9fQVRUUl9TQ0hFRF9DWUNMRV9USU1FX0VYVEVOU0lPTl0gPSB7IC50eXBlID0gTkxBX1M2NCB9LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMDgxLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTA4MjpzdGF0aWMgaW50IGZpbGxfc2NoZWRfZW50cnkoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA4My1cXHRcXHRcXHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTExMy1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExMTQ6c3RhdGljIGludCBwYXJzZV9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICpuLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTExNS1cXHRcXHRcXHQgICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksIGludCBpbmRleCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTEzMi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExMzM6c3RhdGljIGludCBwYXJzZV9zY2hlZF9saXN0KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKmxpc3QsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTM0LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTE3Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExNzM6c3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTE3NC1cXHRcXHRcXHRcXHQgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqbmV3LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjE4LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTIxOTpcXHR0YXByaW9fY2FsY3VsYXRlX2dhdGVfZHVyYXRpb25zKHEsIG5ldyk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjIwLVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjIzLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTIyNDpzdGF0aWMgaW50IHRhcHJpb19wYXJzZV9tcXByaW9fb3B0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjI1LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCB0Y19tcXByaW9fcW9wdCAqcW9wdCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyMjYtXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTIyNzpcXHRcXHRcXHRcXHQgICB1MzIgdGFwcmlvX2ZsYWdzKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTIyOC17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMjI5OlxcdGJvb2wgYWxsb3dfb3ZlcmxhcHBpbmdfdHhxcyA9IFRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRCh0YXByaW9fZmxhZ3MpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTIzMC1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI1MS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEyNTI6c3RhdGljIGludCB0YXByaW9fZ2V0X3N0YXJ0X3RpbWUoc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjUzLVxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI1NS17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMjU2OlxcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjU3LVxcdGt0aW1lX3Qgbm93LCBiYXNlLCBjeWNsZTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI2MC1cXHRiYXNlID0gc2NoZWRfYmFzZV90aW1lKHNjaGVkKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEyNjE6XFx0bm93ID0gdGFwcmlvX2dldF90aW1lKHEpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI2Mi1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI4NS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEyODY6c3RhdGljIHZvaWQgc2V0dXBfZmlyc3RfZW5kX3RpbWUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyODctXFx0XFx0XFx0XFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLCBrdGltZV90IGJhc2UpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzMDMtXFx0Zmlyc3QtXFx1MDAzZWVuZF90aW1lID0ga3RpbWVfYWRkX25zKGJhc2UsIGZpcnN0LVxcdTAwM2VpbnRlcnZhbCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzA0OlxcdHRhcHJpb19zZXRfYnVkZ2V0cyhxLCBzY2hlZCwgZmlyc3QpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTMwNS1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTMxNS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzMTY6c3RhdGljIHZvaWQgdGFwcmlvX3N0YXJ0X3NjaGVkKHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTMxNy1cXHRcXHRcXHQgICAgICAga3RpbWVfdCBzdGFydCwgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqbmV3KVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTMxOC17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzE5OlxcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzIwLVxcdGt0aW1lX3QgZXhwaXJlcztcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTMzNy1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzMzg6c3RhdGljIHZvaWQgdGFwcmlvX3NldF9waWNvc19wZXJfYnl0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTMzOTpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTM0MC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzNzEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzcyOnN0YXRpYyBpbnQgdGFwcmlvX2Rldl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTM3My1cXHRcXHRcXHQgICAgICAgdm9pZCAqcHRyKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzc3LVxcdHN0cnVjdCBxZGlzY19zaXplX3RhYmxlICpzdGFiO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTM3ODpcXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTM3OS1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTM4NC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzODU6XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShxLCBcXHUwMDI2dGFwcmlvX2xpc3QsIHRhcHJpb19saXN0KSB7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzg2LVxcdFxcdGlmIChkZXYgIT0gcWRpc2NfZGV2KHEtXFx1MDAzZXJvb3QpKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzg4LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTM4OTpcXHRcXHR0YXByaW9fc2V0X3BpY29zX3Blcl9ieXRlKGRldiwgcSwgTlVMTCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzkwLVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzk1LVxcdFxcdGlmIChvcGVyKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTM5NjpcXHRcXHRcXHR0YXByaW9fdXBkYXRlX3F1ZXVlX21heF9zZHUocSwgb3Blciwgc3RhYik7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzk3LVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzk5LVxcdFxcdGlmIChhZG1pbilcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0MDA6XFx0XFx0XFx0dGFwcmlvX3VwZGF0ZV9xdWV1ZV9tYXhfc2R1KHEsIGFkbWluLCBzdGFiKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0MDEtXFx0XFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0MDgtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDA5OnN0YXRpYyB2b2lkIHNldHVwX3R4dGltZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQxMC1cXHRcXHRcXHQgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsIGt0aW1lX3QgYmFzZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQyMC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0MjE6c3RhdGljIHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICp0YXByaW9fb2ZmbG9hZF9hbGxvYyhpbnQgbnVtX2VudHJpZXMpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDIyLXtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0MjM6XFx0c3RydWN0IF9fdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqX19vZmZsb2FkO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQyNC1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQzMy1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0MzQ6c3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKnRhcHJpb19vZmZsb2FkX2dldChzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQzNS1cXHRcXHRcXHRcXHRcXHRcXHQgICpvZmZsb2FkKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQzNi17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDM3OlxcdHN0cnVjdCBfX3RjX3RhcHJpb19xb3B0X29mZmxvYWQgKl9fb2ZmbG9hZDtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0MzgtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDM5OlxcdF9fb2ZmbG9hZCA9IGNvbnRhaW5lcl9vZihvZmZsb2FkLCBzdHJ1Y3QgX190Y190YXByaW9fcW9wdF9vZmZsb2FkLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ0MC1cXHRcXHRcXHRcXHQgb2ZmbG9hZCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NDUtfVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQ0NjpFWFBPUlRfU1lNQk9MX0dQTCh0YXByaW9fb2ZmbG9hZF9nZXQpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ0Ny1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0NDg6dm9pZCB0YXByaW9fb2ZmbG9hZF9mcmVlKHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICpvZmZsb2FkKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ0OS17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDUwOlxcdHN0cnVjdCBfX3RjX3RhcHJpb19xb3B0X29mZmxvYWQgKl9fb2ZmbG9hZDtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NTEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDUyOlxcdF9fb2ZmbG9hZCA9IGNvbnRhaW5lcl9vZihvZmZsb2FkLCBzdHJ1Y3QgX190Y190YXByaW9fcW9wdF9vZmZsb2FkLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ1My1cXHRcXHRcXHRcXHQgb2ZmbG9hZCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NTktfVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQ2MDpFWFBPUlRfU1lNQk9MX0dQTCh0YXByaW9fb2ZmbG9hZF9mcmVlKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NjEtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NzMtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDc0OnN0YXRpYyB2b2lkIHRhcHJpb19vZmZsb2FkX2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDc1LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTQ4ND1zdGF0aWMgdTMyIHRjX21hcF90b19xdWV1ZV9tYXNrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiB0Y19tYXNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTAyLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTUwMzpzdGF0aWMgdm9pZCB0YXByaW9fc2NoZWRfdG9fb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTUwNC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTA1OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqb2ZmbG9hZCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1MDY6XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB0Y190YXByaW9fY2FwcyAqY2FwcylcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MDcte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTE1LVxcdGxpc3RfZm9yX2VhY2hfZW50cnkoZW50cnksIFxcdTAwMjZzY2hlZC1cXHUwMDNlZW50cmllcywgbGlzdCkge1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTUxNjpcXHRcXHRzdHJ1Y3QgdGNfdGFwcmlvX3NjaGVkX2VudHJ5ICplID0gXFx1MDAyNm9mZmxvYWQtXFx1MDAzZWVudHJpZXNbaV07XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTE3LVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTMxLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTUzMjpzdGF0aWMgdm9pZCB0YXByaW9fZGV0ZWN0X2Jyb2tlbl9tcXByaW8oc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MzMte1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTUzNC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcWRpc2NfZGV2KHEtXFx1MDAzZXJvb3QpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTUzNTpcXHRzdHJ1Y3QgdGNfdGFwcmlvX2NhcHMgY2FwcztcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MzYtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NDEtXFx0aWYgKHEtXFx1MDAzZWJyb2tlbl9tcXByaW8pXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTQyOlxcdFxcdHN0YXRpY19icmFuY2hfaW5jKFxcdTAwMjZ0YXByaW9faGF2ZV9icm9rZW5fbXFwcmlvKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NDMtXFx0ZWxzZVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU0NDpcXHRcXHRzdGF0aWNfYnJhbmNoX2luYyhcXHUwMDI2dGFwcmlvX2hhdmVfd29ya2luZ19tcXByaW8pO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU0NS1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU0OC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1NDk6c3RhdGljIHZvaWQgdGFwcmlvX2NsZWFudXBfYnJva2VuX21xcHJpbyhzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU1MC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NTQtXFx0aWYgKHEtXFx1MDAzZWJyb2tlbl9tcXByaW8pXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTU1OlxcdFxcdHN0YXRpY19icmFuY2hfZGVjKFxcdTAwMjZ0YXByaW9faGF2ZV9icm9rZW5fbXFwcmlvKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NTYtXFx0ZWxzZVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU1NzpcXHRcXHRzdGF0aWNfYnJhbmNoX2RlYyhcXHUwMDI2dGFwcmlvX2hhdmVfd29ya2luZ19tcXByaW8pO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU1OC19XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTU5LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU2MDpzdGF0aWMgaW50IHRhcHJpb19lbmFibGVfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU2MTpcXHRcXHRcXHRcXHQgc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NjItXFx0XFx0XFx0XFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTY1LVxcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyAqb3BzID0gZGV2LVxcdTAwM2VuZXRkZXZfb3BzO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU2NjpcXHRzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqb2ZmbG9hZDtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1Njc6XFx0c3RydWN0IHRjX3RhcHJpb19jYXBzIGNhcHM7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTY4LVxcdGludCB0YywgZXJyID0gMDtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU4OC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1ODk6XFx0b2ZmbG9hZCA9IHRhcHJpb19vZmZsb2FkX2FsbG9jKHNjaGVkLVxcdTAwM2VudW1fZW50cmllcyk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTkwLVxcdGlmICghb2ZmbG9hZCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTk4LVxcdG9mZmxvYWQtXFx1MDAzZW1xcHJpby5leHRhY2sgPSBleHRhY2s7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTk5OlxcdHRhcHJpb19zY2hlZF90b19vZmZsb2FkKGRldiwgc2NoZWQsIG9mZmxvYWQsIFxcdTAwMjZjYXBzKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MDAtXFx0bXFwcmlvX2ZwX3RvX29mZmxvYWQocS1cXHUwMDNlZnAsIFxcdTAwMjZvZmZsb2FkLVxcdTAwM2VtcXByaW8pO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjIwLVxcdG9mZmxvYWQtXFx1MDAzZW1xcHJpby5leHRhY2sgPSBOVUxMO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTYyMTpcXHR0YXByaW9fb2ZmbG9hZF9mcmVlKG9mZmxvYWQpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYyMi1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYyNS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2MjY6c3RhdGljIGludCB0YXByaW9fZGlzYWJsZV9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjI3OlxcdFxcdFxcdFxcdCAgc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MjgtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2MzAtXFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzICpvcHMgPSBkZXYtXFx1MDAzZW5ldGRldl9vcHM7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjMxOlxcdHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICpvZmZsb2FkO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYzMi1cXHRpbnQgZXJyO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjM2LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTYzNzpcXHRvZmZsb2FkID0gdGFwcmlvX29mZmxvYWRfYWxsb2MoMCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjM4LVxcdGlmICghb2ZmbG9hZCkge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjU0LW91dDpcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2NTU6XFx0dGFwcmlvX29mZmxvYWRfZnJlZShvZmZsb2FkKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2NTYtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2NjYtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjY3OnN0YXRpYyBpbnQgdGFwcmlvX3BhcnNlX2Nsb2NraWQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKip0YixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2NjgtXFx0XFx0XFx0XFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY2OS17XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjcwOlxcdHN0cnVjdCB0YXByaW9fc2NoZWQgKnEgPSBxZGlzY19wcml2KHNjaCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjcxLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYoc2NoKTtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTcyOC1cXHRcXHR9XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzI5OlxcdFxcdC8qIFRoaXMgcGFpcnMgd2l0aCBSRUFEX09OQ0UoKSBpbiB0YXByaW9fbW9ub190b19hbnkgKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3MzAtXFx0XFx0V1JJVEVfT05DRShxLVxcdTAwM2V0a19vZmZzZXQsIHRrX29mZnNldCk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3NDQtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzQ1OnN0YXRpYyBpbnQgdGFwcmlvX3BhcnNlX3RjX2VudHJ5KHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc0Ni1cXHRcXHRcXHRcXHQgc3RydWN0IG5sYXR0ciAqb3B0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzU3LVxcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWQodGIsIFRDQV9UQVBSSU9fVENfRU5UUllfTUFYLCBvcHQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzU4OlxcdFxcdFxcdCAgICAgICB0YXByaW9fdGNfcG9saWN5LCBleHRhY2spO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc1OS1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc5MS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE3OTI6c3RhdGljIGludCB0YXByaW9fcGFyc2VfdGNfZW50cmllcyhzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3OTMtXFx0XFx0XFx0XFx0ICAgc3RydWN0IG5sYXR0ciAqb3B0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzk1LXtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE3OTY6XFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3OTctXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHFkaXNjX2RldihzY2gpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODExLVxcdG5sYV9mb3JfZWFjaF9uZXN0ZWRfdHlwZShuLCBUQ0FfVEFQUklPX0FUVFJfVENfRU5UUlksIG9wdCwgcmVtKSB7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODEyOlxcdFxcdGVyciA9IHRhcHJpb19wYXJzZV90Y19lbnRyeShzY2gsIG4sIG1heF9zZHUsIGZwLCBcXHUwMDI2c2Vlbl90Y3MsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODEzLVxcdFxcdFxcdFxcdFxcdCAgICBleHRhY2spO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODQxLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTg0MjpzdGF0aWMgaW50IHRhcHJpb19tcXByaW9fY21wKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODQzLVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IHRjX21xcHJpb19xb3B0ICptcXByaW8pXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NjEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODYyOnN0YXRpYyBpbnQgdGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg2My1cXHRcXHRcXHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODY3LVxcdHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm9wZXIsICphZG1pbiwgKm5ld19hZG1pbjtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4Njg6XFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IHFkaXNjX3ByaXYoc2NoKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NjktXFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHFkaXNjX2RldihzY2gpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODcxLVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODcyOlxcdHUzMiB0YXByaW9fZmxhZ3M7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODczLVxcdGt0aW1lX3Qgc3RhcnQ7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NzYtXFx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKHRiLCBUQ0FfVEFQUklPX0FUVFJfTUFYLCBvcHQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODc3OlxcdFxcdFxcdFxcdFxcdCAgdGFwcmlvX3BvbGljeSwgZXh0YWNrKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NzgtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6MzYuNjIzODI1OTQ4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NDg4NTcwNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgVEFQUklPKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoaXMgVEFQUklPIGltcGxlbWVudGF0aW9uLiBUaGUgY29yZSBlbnRyeSBwb2ludHMsIHRoZSBvbmVzIEkgbmVlZCB0byBmb2N1cyBvbiwgYXJlIGRlZmluaXRlbHkgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2luaXRgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYC4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGB0YXByaW9fY2hhbmdlYCBhbmQgYHRhcHJpb19pbml0YCBhcmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIHNjaGVkdWxlLCBhbmQgaXQgbG9va3MgbGlrZSBJJ20gcmlnaHQuIGB0YXByaW9fY2hhbmdlYCBkb2VzIHRoZSBwYXJzaW5nIG9mIHRoZSBzY2hlZHVsZSBhbmQgc2V0cyB0aGUgdGltZXIsIGFuZCBJIHNlZSBub3cgdGhhdCBgdGFwcmlvX2VucXVldWVgIGFuZCBgdGFwcmlvX2RlcXVldWVgIGhhbmRsZSBwYWNrZXQgcHJvY2Vzc2luZy5cblxuVGhlIHBhdGNoIG1lbnRpb25zIGEgbW9kaWZpY2F0aW9uIHRvIGBhZHZhbmNlX3NjaGVkYCwgd2hpY2ggaXMgdGhlIGhydGltZXIgY2FsbGJhY2suIFRoYXQgY29uZmlybXMgbXkgaW5pdGlhbCB0aG91Z2h0OiBmdXp6aW5nIGB0YXByaW9fY2hhbmdlYCBpcyBnb2luZyB0byBiZSAqY3JpdGljYWwqLCBiZWNhdXNlIHRoYXQncyB3aGVyZSB0aGUgcWRpc2MgZ2V0cyBjb25maWd1cmVkIGFuZCB0aGUgdGltZXIgc3RhcnRzLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgc2NoZWR1bGUgYW5kIGB0YXByaW9fZW5xdWV1ZWAgYW5kIGB0YXByaW9fZGVxdWV1ZWAsIGFzIHRob3NlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIGl0LiBTbywgdG8gY292ZXIgYWxsIHRoZSBpbXBvcnRhbnQgcGFydHMsIEknbSBnb2luZyB0byBpbmNsdWRlIGB0YXByaW9fY2hhbmdlYCwgYHRhcHJpb19pbml0YCwgYHRhcHJpb19lbnF1ZXVlYCwgYHRhcHJpb19kZXF1ZXVlYCwgYW5kIGBhZHZhbmNlX3NjaGVkYCBpbiBteSBmdXp6aW5nIHRhcmdldC5cblxuTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYGFkdmFuY2Vfc2NoZWRgIGlzbid0IGEgc3RhdGljIGlubGluZSBmdW5jdGlvbiwganVzdCB0byBiZSBzdXJlLiBBIHF1aWNrIGxvb2sgYXQgYG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNgIGNvbmZpcm1zIHRoYXQgaXQncyBgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKWAsIHNvIGl0J3Mgbm90IGlubGluZS5cblxuQWxyaWdodCwgdGhlIG5leHQgdGhpbmcgaXMgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIGNvbmZpZyBkZXBlbmRlbmNpZXMgY29ycmVjdC4gYE5FVF9TQ0hfVEFQUklPYCBpcyB0aGUgb2J2aW91cyBvbmUuIE5vdywgYXJlIHRoZXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgSSBuZWVkPyBMb29raW5nIGluIGBuZXQvc2NoZWQvS2NvbmZpZ2AsIEkgc2VlIHRoYXQgYE5FVF9TQ0hfTVFQUklPX0xJQmAgaXMgc2VsZWN0ZWQgYnkgYE5FVF9TQ0hfVEFQUklPYCwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGNvbnNpZGVyLiBJIHNob3VsZCBjb25maXJtIHRoYXQgYE5FVF9TQ0hFRGAgaXMgcmVxdWlyZWQgYXMgYSBwYXJlbnQuIFl1cCwgaXQncyB0aGUgcGFyZW50LCBhcyBleHBlY3RlZC4gSSdsbCBuZWVkIHRvIGtlZXAgdGhpcyBpbiBtaW5kIHdoZW4gSSBzZXQgdXAgbXkgZnV6emluZyBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc2NjAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6NDMuMTcyNjg1MjAxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODIxMDI3ODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZy01LVxcbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6NDMuMzU0NzkzMzE1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNDUzMDY0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgVEFQUklPKipcblxuT2theSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgTkVUX1NDSEVEYCBpcyBlbmFibGVkIGZvciB0aGlzIGZ1enppbmcgZWZmb3J0LiBBbmQsIHdhaXQsIHdoYXQgYWJvdXQgYE5FVF9TQ0hfVEFQUklPYD8gSXQncyB0cmlzdGF0ZSwgd2hpY2ggaXMgZ29vZC5cblxuTGV0J3MgcHVsbCB0b2dldGhlciB0aGUga2V5IGVsZW1lbnRzOiBJJ3ZlIGRldGVybWluZWQgdGhhdCB0aGlzIGlzIHdvcnRoIGZ1enppbmcuIE15IG1haW4gZm9jdXMgc2hvdWxkIGJlIG9uIHRoZXNlIHN5bWJvbHM6IGBhZHZhbmNlX3NjaGVkYCwgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2luaXRgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYC4gVG8gbWFrZSB0aGlzIHdvcmssIEknbGwgbmVlZCB0byBlbmFibGUgdGhlIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gIGNvbmZpZ3VyYXRpb25zLlxuXG5Ob3csIGEgcXVpY2sgdGhvdWdodCBhYm91dCBgYWR2YW5jZV9zY2hlZGAuIFRoZSBmdXp6aW5nIGd1aWRlbGluZXMgZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGUgZG9jdW1lbnQgZW1waGFzaXplZCBub3QgdXNpbmcgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMsIGJ1dCBsb29raW5nIGF0IGBhZHZhbmNlX3NjaGVkYCBtb3JlIGNsb3NlbHksIGl0J3MgYWN0dWFsbHkgYSB0aW1lciBjYWxsYmFjay4gSXRzIGFkZHJlc3MgKmlzKiB0YWtlbiBhbmQgcGFzc2VkIHRvIGBocnRpbWVyX3NldHVwYCwgc28gaXQgbGlrZWx5IHdvbid0IGJlIGlubGluZWQsIGV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLiBJdCdzIGEgYml0IG9mIGFuIGVkZ2UgY2FzZSwgc28gSSdsbCBpbmNsdWRlIGl0LiBCdXQgSSBzaG91bGQgZGVmaW5pdGVseSBwcmlvcml0aXplIHRoZSBtYWluIEFQSSBlbnRyeSBwb2ludHM6IGB0YXByaW9fY2hhbmdlYCwgYHRhcHJpb19pbml0YCwgYHRhcHJpb19lbnF1ZXVlYCwgYW5kIGB0YXByaW9fZGVxdWV1ZWAuXG5cbkp1c3QgdG8gYmUgc2FmZSwgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgYHRhcHJpb19jaGFuZ2VgIGFuZCBgdGFwcmlvX2luaXRgIHRvIGNvbmZpcm0gbXkgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NTkzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIxOjM5OjQ4LjYwMDEwMjQ1NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAxOTg2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGFwcmlvX2NoYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTg0Mj1zdGF0aWMgaW50IHRhcHJpb19tcXByaW9fY21wKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NjEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODYyOnN0YXRpYyBpbnQgdGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg2My1cXHRcXHRcXHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yMTExPXN0YXRpYyBpbnQgdGFwcmlvX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjEyNC1cXHQvKiBXZSBvbmx5IHN1cHBvcnQgc3RhdGljIGNsb2NraWRzLiBVc2UgYW4gaW52YWxpZCB2YWx1ZSBhcyBkZWZhdWx0XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTI1OlxcdCAqIGFuZCBnZXQgdGhlIHZhbGlkIG9uZSBvbiB0YXByaW9fY2hhbmdlKCkuXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTI2LVxcdCAqL1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTcyLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjE3MzpcXHRyZXR1cm4gdGFwcmlvX2NoYW5nZShzY2gsIG9wdCwgZXh0YWNrKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxNzQtfVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNTg2PXN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHRhcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU5MC1cXHQuaW5pdFxcdFxcdD0gdGFwcmlvX2luaXQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNTkxOlxcdC5jaGFuZ2VcXHRcXHQ9IHRhcHJpb19jaGFuZ2UsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTkyLVxcdC5kZXN0cm95XFx0PSB0YXByaW9fZGVzdHJveSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6NDguNjYwMzA2NDA0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NjgzNzE2OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFRBUFJJTyBTY2hlZHVsZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgVEFQUklPIHNjaGVkdWxlciBwYXRjaC4gSXQgbG9va3MgbGlrZSB0aGUga2V5IFFkaXNjIG9wZXJhdGlvbiBjYWxsYmFja3Mg4oCTIGB0YXByaW9fY2hhbmdlYCwgYHRhcHJpb19pbml0YCwgYHRhcHJpb19lbnF1ZXVlYCwgYW5kIGB0YXByaW9fZGVxdWV1ZWAg4oCTIGFyZSBvdXIgcHJpbWFyeSBlbnRyeSBwb2ludHMsIGV2ZW4gdGhvdWdoIHRoZXkncmUgc3RhdGljIHdpdGhpbiB0aGUgUWRpc2Mgc3RydWN0dXJlLiBJJ20gYWxzbyBnb2luZyB0byBhZGQgYGFkdmFuY2Vfc2NoZWRgIHRvIHRoZSBsaXN0LCBzaW5jZSB0aGF0J3MgdGhlIHRpbWVyIGNhbGxiYWNrIHRoYXQncyBiZWVuIGRpcmVjdGx5IG1vZGlmaWVkLiBJdCdzIGltcG9ydGFudCB0byBpbmNsdWRlIGl0IGJlY2F1c2UgaXQncyBub3QgaW5saW5lZCwgd2hpY2ggbWFrZXMgaXQgYSBjcnVjaWFsIGZ1bmN0aW9uIHRvIGNvbnNpZGVyLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IHJlLWV4YW1pbmUgdGhlIHBhdGNoIHRvIGVuc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciBtb2RpZmllZCBmdW5jdGlvbnMuIE5vcGUsIGxvb2tzIGxpa2UgYGFkdmFuY2Vfc2NoZWRgIGlzIHRoZSBvbmx5IG90aGVyIGZ1bmN0aW9uIHRoYXQncyBiZWVuIHRvdWNoZWQuXG5cblNvLCB0byBzdW1tYXJpemUsIHRoZSBlc3NlbnRpYWwgZm9jdXMgc3ltYm9scyBoZXJlIGFyZTpcblxuKiAgIGBhZHZhbmNlX3NjaGVkYFxuKiAgIGB0YXByaW9fY2hhbmdlYFxuKiAgIGB0YXByaW9fZW5xdWV1ZWBcbiogICBgdGFwcmlvX2RlcXVldWVgXG5cbkZvciB0aGUgY29ycmVzcG9uZGluZyBjb25maWd1cmF0aW9ucywgd2UgbmVlZCB0byBoYXZlOlxuXG4qICAgYE5FVF9TQ0hfVEFQUklPYFxuKiAgIGBORVRfU0NIRURgXG5cbkVzc2VudGlhbGx5LCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgc29mdGlycSBzdGFsbCBwcm9ibGVtIGluIHRoZSBUQVBSSU8gbmV0d29yayBzY2hlZHVsZXIuIEl0IGJvdW5kcyB0aGUgcmV0cnkgbG9vcCBhbmQgZml4ZXMgdGhlIGBnYXRlX2Nsb3NlX3RpbWVgIGNhbGN1bGF0aW9uIGluIHRoZSBgYWR2YW5jZV9zY2hlZGAgaHJ0aW1lciBjYWxsYmFjay4gVGhpcyBpcyBjb3JlIG5ldHdvcmsgc2NoZWR1bGluZyBsb2dpYywgZGlyZWN0bHkgcmVhY2hhYmxlIHRocm91Z2ggY29uZmlndXJpbmcgdGhlIHRhcHJpbyBRZGlzYyBhbmQgc2VuZGluZyB0cmFmZmljLiBJdCdzIGEgY3JpdGljYWwgZml4IGFmZmVjdGluZyBob3cgVEFQUklPIHNoYXBlcyBhbmQgcHJpb3JpdGl6ZXMgdHJhZmZpYywgc28gaXQncyB3b3J0aCBtYWtpbmcgc3VyZSB3ZSdyZSBnZXR0aW5nIHRoaXMgaW1wbGVtZW50ZWQuXG5cbkknbSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTYzNCwiT3V0cHV0VG9rZW5zIjoxNDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjE6Mzk6NTQuNjI4NjgwMDYzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODA3Njc3NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhZHZhbmNlX3NjaGVkXCIsXG4gICAgXCJ0YXByaW9fY2hhbmdlXCIsXG4gICAgXCJ0YXByaW9fZW5xdWV1ZVwiLFxuICAgIFwidGFwcmlvX2RlcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYGFkdmFuY2Vfc2NoZWRgIGhydGltZXIgY2FsbGJhY2sgaW4gdGhlIHRhcHJpbyBuZXR3b3JrIHNjaGVkdWxlciAoVGltZS1Bd2FyZSBQcmlvcml0eSBTaGFwZXIpIHRvIHByZXZlbnQgc29mdGlycSBzdGFsbHMgYnkgYm91bmRpbmcgdGhlIHJldHJ5IGxvb3AgYW5kIGNvcnJlY3RseSBjYWxjdWxhdGluZyBgZ2F0ZV9jbG9zZV90aW1lYC4gVGhpcyBpcyBjb3JlIHJlYWNoYWJsZSBuZXR3b3JrIHNjaGVkdWxpbmcgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNvbmZpZ3VyaW5nIHRoZSB0YXByaW8gcWRpc2MgYW5kIHNlbmRpbmcgdHJhZmZpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfVEFQUklPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWR2YW5jZV9zY2hlZFwiLFxuICAgIFwidGFwcmlvX2NoYW5nZVwiLFxuICAgIFwidGFwcmlvX2VucXVldWVcIixcbiAgICBcInRhcHJpb19kZXF1ZXVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGBhZHZhbmNlX3NjaGVkYCBocnRpbWVyIGNhbGxiYWNrIGluIHRoZSB0YXByaW8gbmV0d29yayBzY2hlZHVsZXIgKFRpbWUtQXdhcmUgUHJpb3JpdHkgU2hhcGVyKSB0byBwcmV2ZW50IHNvZnRpcnEgc3RhbGxzIGJ5IGJvdW5kaW5nIHRoZSByZXRyeSBsb29wIGFuZCBjb3JyZWN0bHkgY2FsY3VsYXRpbmcgYGdhdGVfY2xvc2VfdGltZWAuIFRoaXMgaXMgY29yZSByZWFjaGFibGUgbmV0d29yayBzY2hlZHVsaW5nIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjb25maWd1cmluZyB0aGUgdGFwcmlvIHFkaXNjIGFuZCBzZW5kaW5nIHRyYWZmaWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowrs8bf[1] Phase: Succeeded StartedAt: 2026-07-24 21:40:06 +0000 UTC FinishedAt: 2026-07-24 21:40:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-24 21:40:06 +0000 UTC FinishedAt: 2026-07-24 21:40:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2] Phase: Succeeded StartedAt: 2026-07-24 21:40:06 +0000 UTC FinishedAt: 2026-07-25 02:26:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-24 21:40:06 +0000 UTC FinishedAt: 2026-07-25 02:26:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-24 21:40:06 +0000 UTC FinishedAt: 2026-07-24 21:40:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-24 21:40:06 +0000 UTC FinishedAt: 2026-07-24 21:40:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowrs8bf/series-workflowrs8bf-convert-artifact-272525572/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-24 21:40:16 +0000 UTC FinishedAt: 2026-07-24 22:35:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-24 21:40:16 +0000 UTC FinishedAt: 2026-07-24 22:35:05 +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:*d02f5ab4-a31d-4cf0-a22a-a79ddaf204c4,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-workflowrs8bf/series-workflowrs8bf-convert-artifact-272525572/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": "138f3dfb-9969-411e-89bf-5f710b5ffc90", "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-workflowrs8bf/series-workflowrs8bf-build-action-457322050/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-24 21:40:16 +0000 UTC FinishedAt: 2026-07-24 22:34:55 +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:*d02f5ab4-a31d-4cf0-a22a-a79ddaf204c4,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-workflowrs8bf/series-workflowrs8bf-convert-artifact-272525572/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": "138f3dfb-9969-411e-89bf-5f710b5ffc90", "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-workflowrs8bf/series-workflowrs8bf-build-action-457322050/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-24 22:35:05 +0000 UTC FinishedAt: 2026-07-24 22:35:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-24 22:35:05 +0000 UTC FinishedAt: 2026-07-24 22:35:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-24 22:35:05 +0000 UTC FinishedAt: 2026-07-24 22:35:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-24 22:35:05 +0000 UTC FinishedAt: 2026-07-24 22:35:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowrs8bf/series-workflowrs8bf-convert-artifact-1624685699/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-24 22:35:26 +0000 UTC FinishedAt: 2026-07-24 22:37:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-24 22:35:26 +0000 UTC FinishedAt: 2026-07-24 22:37:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*138f3dfb-9969-411e-89bf-5f710b5ffc90,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-workflowrs8bf/series-workflowrs8bf-build-action-457322050/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-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-24 22:37:29 +0000 UTC FinishedAt: 2026-07-24 22:37:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-24 22:37:29 +0000 UTC FinishedAt: 2026-07-24 22:37:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-24 22:37:29 +0000 UTC FinishedAt: 2026-07-24 23:15:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-24 22:37:29 +0000 UTC FinishedAt: 2026-07-24 23:15:16 +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:*d02f5ab4-a31d-4cf0-a22a-a79ddaf204c4,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-workflowrs8bf/series-workflowrs8bf-convert-artifact-1624685699/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": "cfa10014-c7c2-438f-9b18-ff09c0c5f28e", "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-workflowrs8bf/series-workflowrs8bf-build-action-1825008439/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-24 22:37:29 +0000 UTC FinishedAt: 2026-07-24 23:15:06 +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:*d02f5ab4-a31d-4cf0-a22a-a79ddaf204c4,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-workflowrs8bf/series-workflowrs8bf-convert-artifact-1624685699/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": "cfa10014-c7c2-438f-9b18-ff09c0c5f28e", "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-workflowrs8bf/series-workflowrs8bf-build-action-1825008439/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-24 23:15:16 +0000 UTC FinishedAt: 2026-07-24 23:15:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-24 23:15:16 +0000 UTC FinishedAt: 2026-07-24 23:15:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-24 23:15:16 +0000 UTC FinishedAt: 2026-07-24 23:17:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-24 23:15:16 +0000 UTC FinishedAt: 2026-07-24 23:17:13 +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:*cfa10014-c7c2-438f-9b18-ff09c0c5f28e,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-workflowrs8bf/series-workflowrs8bf-build-action-1825008439/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-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-24 23:17:23 +0000 UTC FinishedAt: 2026-07-25 02:26:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-24 23:17:23 +0000 UTC FinishedAt: 2026-07-25 02:26:30 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","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:*138f3dfb-9969-411e-89bf-5f710b5ffc90,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cfa10014-c7c2-438f-9b18-ff09c0c5f28e,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-workflowrs8bf/series-workflowrs8bf-build-action-457322050/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-workflowrs8bf/series-workflowrs8bf-build-action-1825008439/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-24 23:17:23 +0000 UTC FinishedAt: 2026-07-24 23:17:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-24 23:17:23 +0000 UTC FinishedAt: 2026-07-24 23:17:29 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","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-workflowrs8bf/series-workflowrs8bf-convert-artifact-1730777756/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-24 23:17:23 +0000 UTC FinishedAt: 2026-07-24 23:17:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-24 23:17:23 +0000 UTC FinishedAt: 2026-07-24 23:17:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-24 23:17:23 +0000 UTC FinishedAt: 2026-07-24 23:17:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-24 23:17:33 +0000 UTC FinishedAt: 2026-07-25 02:26:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrs8bf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["advance_sched","taprio_change","taprio_enqueue","taprio_dequeue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"9eef63a7-e701-4129-be03-5cee36b6a453","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-24 23:17:33 +0000 UTC FinishedAt: 2026-07-25 02:26:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*138f3dfb-9969-411e-89bf-5f710b5ffc90,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cfa10014-c7c2-438f-9b18-ff09c0c5f28e,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-workflowrs8bf/series-workflowrs8bf-build-action-457322050/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-workflowrs8bf/series-workflowrs8bf-build-action-1825008439/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-workflowrs8bf/series-workflowrs8bf-convert-artifact-1730777756/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,}