Ly8gQ29weXJpZ2h0IChjKSAyMDAxIFNhbXVlbCBLcmVtcHAKLy8gICAgICAgICAgICAgICAgICBrcmVtcHBAY3JhbnMuZW5zLWNhY2hhbi5mcgovLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55LQovLyBpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCgovLyBUaGlzIGJlbmNobWFyayBpcyBwcm92aWRlZCBwdXJlbHkgZm9yIGluZm9ybWF0aW9uLgovLyBJdCBtaWdodCBub3QgZXZlbiBjb21waWxlIGFzLWlzLCAKLy8gICBvciBub3QgZ2l2ZSBhbnkgc2Vuc2libGUgcmVzdWx0cy4gCi8vICAgICAgKGUuZy4sIGl0IGV4cGVjdHMgc3ByaW50ZiB0byBiZSBQT1NJWCBjb21wbGlhbnQpCgogbmV3IHJlc3VsdHMgKCB3aXRoICBvdXRzc3RyZWFtIHZzLiBzdHJpbmdzdHJlYW0pCgpiamFtIC1zVE9PTFM9ImdjYyBpbnRlbC1saW51eC03LjEiIC1zQlVJTEQ9InJlbGVhc2UiCgooIC1zQlVJTEQ9InByb2ZpbGUiICBmb3IgcHJvZmlsaW5nLi4pCgoKICJfbm9fcmV1c2Vfc3RyZWFtIiAiX3N0cmluZ3N0ciIgIl9zdHJzdHJlYW0iIF9ub19sb2NhbGUgCgppbnRlbC1saW51eC03LjEKCmZvciBjb21wIGluIGdjYyAgOyBkbyAKICAgZWNobyAgIlxuLS0tLS0tLS0tLS0tLS0tLS0tLSBDb21waWxlciAgJGNvbXAgOiAtLS0tLS0tLS0tLS0tLS0tICIKICAgZm9yIHZhciBpbiBfb3ZlcmxvYWRzIF9iYXNpY2ZtdCBfbm9ybWFsOyBkbyAKICAgICBlY2hvICJcbi0tIFZhcmlhbnQgICoqIiAkdmFyICIqKiIgOgogICAgICB0ZXhlPSRFWEVCT09TVC9saWJzL2Zvcm1hdC9iZW5jaG1hcmsvYmVuY2hfZm9ybWF0JHt2YXJ9LyR7Y29tcH0vcmVsZWFzZS9iZW5jaF9mb3JtYXQke3Zhcn0gOwogICAgICBscyAtbCAkdGV4ZTsKICAgICAgJHRleGUKICAgZG9uZQpkb25lCgoKLy8gc3RyaW5nc3RyZWFtIHJlY3Lp6SBjaGFxdWUgZm9pcy4KLS0gVmFyaWFudCAgKiogX25vcm1hbCAqKiA6Ci1yd3gtLXgtLXggICAgMSBzYW0gICAgICB1c2VycyAgICAgICA2MTk1MiBTZXAgMTcgMDM6MTMgL2hvbWUvZGF0YS96U3RvcmUvQkJvb3N0L2Jpbi9ib29zdC8vbGlicy9mb3JtYXQvYmVuY2htYXJrL2JlbmNoX2Zvcm1hdF9ub3JtYWwvZ2NjL3JlbGVhc2UvYmVuY2hfZm9ybWF0X25vcm1hbApwcmludGYgdGltZSAgICAgICAgIDoyLjE2Cm9zdHJlYW0gdGltZSAgICAgICAgOiAzLjY5LCAgPSAxLjcwODMzICogcHJpbnRmCnBhcnNlZC1vbmNlIHRpbWUgICAgOiA4LjQ1LCAgPSAzLjkxMjA0ICogcHJpbnRmICwgID0gMi4yODk5NyAqIG51bGxTdHJlYW0KcmV1c2VkIGZvcm1hdCB0aW1lICA6MTAuOTQsICA9IDUuMDY0ODEgKiBwcmludGYgLCAgPSAyLjk2NDc3ICogbnVsbFN0cmVhbQpmb3JtYXQgdGltZSAgICAgICAgIDoxMC45NywgID0gNS4wNzg3ICogcHJpbnRmICwgID0gMi45NzI5ICogbnVsbFN0cmVhbQoKClBvdXIgbGUgcGFyc2luZy4gc3RlcCAxIDogc2Nhbl9ub3QgKyBzdHIyaW50ICh2ZXJzaW9uIEl0ZXIgY29uc3QmIHFxdWVzICUgbWlldXgpCgotLS0tLS0tLS0tLS0tLS0tLS0tIENvbXBpbGVyICBnY2MgOiAtLS0tLS0tLS0tLS0tLS0tCgotLSBWYXJpYW50ICAqKiBfb3ZlcmxvYWRzICoqIDoKLXJ3eC0teC0teCAgICAxIHNhbSAgICAgIHVzZXJzICAgICAgIDUyODY0IDIwMDMtMDktMTIgMDI6NTkgL2hvbWUvc2FtL3Byb2dzL0Jvb3N0L2Jpbi9CQm9vc3QvL2xpYnMvZm9ybWF0L2JlbmNobWFyay9iZW5jaF9mb3JtYXRfb3ZlcmxvYWRzL2djYy9yZWxlYXNlL2JlbmNoX2Zvcm1hdF9vdmVybG9hZHMKcHJpbnRmIHRpbWUgICAgICAgICA6Mi4yMQpvc3RyZWFtIHRpbWUgICAgICAgIDogMy41NywgID0gMS42MTUzOCAqIHByaW50ZgpwYXJzZWQtb25jZSB0aW1lICAgIDogNC45MywgID0gMi4yMzA3NyAqIHByaW50ZiAsICA9IDEuMzgwOTUgKiBudWxsU3RyZWFtCnJldXNlZCBmb3JtYXQgdGltZSAgOiA5LjI1LCAgPSA0LjE4NTUyICogcHJpbnRmICwgID0gMi41OTEwNCAqIG51bGxTdHJlYW0KZm9ybWF0IHRpbWUgICAgICAgICA6MTAuMzMsICA9IDQuNjc0MjEgKiBwcmludGYgLCAgPSAyLjg5MzU2ICogbnVsbFN0cmVhbQoKLS0gVmFyaWFudCAgKiogX2Jhc2ljZm10ICoqIDoKLXJ3eC0teC0teCAgICAxIHNhbSAgICAgIHVzZXJzICAgICAgIDUyODY0IDIwMDMtMDktMTIgMDM6MDAgL2hvbWUvc2FtL3Byb2dzL0Jvb3N0L2Jpbi9CQm9vc3QvL2xpYnMvZm9ybWF0L2JlbmNobWFyay9iZW5jaF9mb3JtYXRfYmFzaWNmbXQvZ2NjL3JlbGVhc2UvYmVuY2hfZm9ybWF0X2Jhc2ljZm10CnByaW50ZiB0aW1lICAgICAgICAgOjIuMgpvc3RyZWFtIHRpbWUgICAgICAgIDogMy41NywgID0gMS42MjI3MyAqIHByaW50ZgpwYXJzZWQtb25jZSB0aW1lICAgIDogNC44NSwgID0gMi4yMDQ1NSAqIHByaW50ZiAsICA9IDEuMzU4NTQgKiBudWxsU3RyZWFtCnJldXNlZCBmb3JtYXQgdGltZSAgOiA5LjI1LCAgPSA0LjIwNDU1ICogcHJpbnRmICwgID0gMi41OTEwNCAqIG51bGxTdHJlYW0KZm9ybWF0IHRpbWUgICAgICAgICA6MTAuMjksICA9IDQuNjc3MjcgKiBwcmludGYgLCAgPSAyLjg4MjM1ICogbnVsbFN0cmVhbQoKLS0gVmFyaWFudCAgKiogX25vcm1hbCAqKiA6Ci1yd3gtLXgtLXggICAgMSBzYW0gICAgICB1c2VycyAgICAgICA1MzA4OCAyMDAzLTA5LTEyIDAzOjAwIC9ob21lL3NhbS9wcm9ncy9Cb29zdC9iaW4vQkJvb3N0Ly9saWJzL2Zvcm1hdC9iZW5jaG1hcmsvYmVuY2hfZm9ybWF0X25vcm1hbC9nY2MvcmVsZWFzZS9iZW5jaF9mb3JtYXRfbm9ybWFsCnByaW50ZiB0aW1lICAgICAgICAgOjIuMjcKb3N0cmVhbSB0aW1lICAgICAgICA6IDMuNDcsICA9IDEuNTI4NjMgKiBwcmludGYKcGFyc2VkLW9uY2UgdGltZSAgICA6IDQuNzksICA9IDIuMTEwMTMgKiBwcmludGYgLCAgPSAxLjM4MDQgKiBudWxsU3RyZWFtCnJldXNlZCBmb3JtYXQgdGltZSAgOiA5Ljg4LCAgPSA0LjM1MjQyICogcHJpbnRmICwgID0gMi44NDcyNiAqIG51bGxTdHJlYW0KZm9ybWF0IHRpbWUgICAgICAgICA6MTAuOTcsICA9IDQuODMyNiAqIHByaW50ZiAsICA9IDMuMTYxMzggKiBudWxsU3RyZWFtCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk92ZXJsb2FkIDogaW50LCBkb3VibGUgY2hhciAqIC0+IHB1dF9zaW1wbGUgOgojaWYgZGVmaW5lZChCT09TVF9GT1JNQVRfT1ZFUkxPQURTKQogICAgICAgIHRlbXBsYXRlPGNsYXNzIFQ+ICAKICAgICAgICBiYXNpY19mb3JtYXQmICAgb3BlcmF0b3IlKGNvbnN0IGNoYXIqIHgpIAogICAgICAgICAgICB7IHJldHVybiBpbzo6ZGV0YWlsOjpmZWVkX292ZXJsb2FkZWQoKnRoaXMseCk7IH0KICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiAgCiAgICAgICAgYmFzaWNfZm9ybWF0JiAgIG9wZXJhdG9yJShjb25zdCBkb3VibGUgeCkKICAgICAgICAgICAgeyByZXR1cm4gaW86OmRldGFpbDo6ZmVlZF9vdmVybG9hZGVkKCp0aGlzLHgpOyB9CiAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVD4gIAogICAgICAgIGJhc2ljX2Zvcm1hdCYgICBvcGVyYXRvciUoY29uc3QgaW50IHgpCiAgICAgICAgICAgIHsgcmV0dXJuIGlvOjpkZXRhaWw6OmZlZWRfb3ZlcmxvYWRlZCgqdGhpcyx4KTsgfQojZW5kaWYKCiAgICAvLyBwdXQgb3ZlcmxvYWRzIGZvciBjb21tb24gdHlwZXMgKC0+IGZhc3RlcikKICAgIHRlbXBsYXRlPCBjbGFzcyBDaCwgY2xhc3MgVHIsIGNsYXNzIFQ+IAogICAgdm9pZCBwdXRfc2ltcGxlKCBUIHgsIAogICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXRfaXRlbTxDaCwgVHI+JiBzcGVjcywgCiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPENoLCBUcj4gJiByZXMsIAogICAgICAgICAgICAgICAgICAgICBpbzo6YmFzaWNfb3V0c3N0cmVhbTxDaCwgVHI+JiBvc3NfICkKICAgIHsKICAgICAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPENoLCBUcj4gc3RyaW5nX3Q7CiAgICAgICAgdHlwZWRlZiBmb3JtYXRfaXRlbTxDaCwgVHI+ICBmb3JtYXRfaXRlbV90OwogICAgCiAgICAgICAgc3BlY3MuZm10c3RhdGVfLmFwcGx5X29uKG9zc18pOwogICAgICAgIGNvbnN0IHN0ZDo6aW9zX2Jhc2U6OmZtdGZsYWdzIGZsPW9zc18uZmxhZ3MoKTsKICAgICAgICBjb25zdCBzdGQ6OnN0cmVhbXNpemUgdyA9IG9zc18ud2lkdGgoKTsKICAgICAgCiAgICAgICAgaWYodyE9MCkgCiAgICAgICAgICAgIG9zc18ud2lkdGgoMCk7CiAgICAgICAgcHV0X2xhc3QoIG9zc18sIHgpOwogICAgICAgIGNvbnN0IENoICogcmVzX2JlZyA9IG9zc18uYmVnaW4oKTsKICAgICAgICBzdGQ6OnN0cmVhbXNpemUgcmVzX3NpemUgPSBzdGQ6Om1pbihzcGVjcy50cnVuY2F0ZV8sIG9zc18ucGNvdW50KCkpOwogICAgICAgIGludCBwcmVmaXhfc3BhY2UgPSAwOwogICAgICAgIGlmKHNwZWNzLnBhZF9zY2hlbWVfICYgZm9ybWF0X2l0ZW1fdDo6c3BhY2VwYWQpCiAgICAgICAgICAgIGlmKCByZXNfc2l6ZSA9PSAwIHx8ICAgKCByZXNfYmVnWzBdICE9JysnICYmIHJlc19iZWdbMF0gIT0nLScgICkpCiAgICAgICAgICAgICAgICBwcmVmaXhfc3BhY2UgPSAxOwogICAgICAgIG1rX3N0cihyZXMsIHJlc19iZWcsIHJlc19zaXplLCB3LCBvc3NfLmZpbGwoKSwgZmwsIAogICAgICAgICAgICAgICBwcmVmaXhfc3BhY2UsIChzcGVjcy5wYWRfc2NoZW1lXyAmIGZvcm1hdF9pdGVtX3Q6OmNlbnRlcmVkKSAhPTAgKTsKICAgICAgICBjbGVhcl9idWZmZXIoIG9zc18pOwogICAgfSAvLyBlbmQtIHB1dF9zaW1wbGUoLi4pCgoKCi0tLS0tLS0tLS0tLS0tLS0tLS0gQ29tcGlsZXIgIGdjYyA6IC0tLS0tLS0tLS0tLS0tLS0KCi0tIFZhcmlhbnQgICoqIF9vdmVybG9hZHMgKiogOgotcnd4LS14LS14ICAgIDEgc2FtICAgICAgdXNlcnMgICAgICAgNTI4MzIgMjAwMy0wOS0xMiAwMDoxNyAvaG9tZS9zYW0vcHJvZ3MvQm9vc3QvYmluL0JCb29zdC8vbGlicy9mb3JtYXQvYmVuY2htYXJrL2JlbmNoX2Zvcm1hdF9vdmVybG9hZHMvZ2NjL3JlbGVhc2UvYmVuY2hfZm9ybWF0X292ZXJsb2FkcwpwcmludGYgdGltZSAgICAgICAgIDoyLjEzCm9zdHJlYW0gdGltZSAgICAgICAgOiAyLjkxLCAgPSAxLjM2NjIgKiBwcmludGYKcGFyc2VkLW9uY2UgdGltZSAgICA6IDQuNDgsICA9IDIuMTAzMjkgKiBwcmludGYgLCAgPSAxLjUzOTUyICogbnVsbFN0cmVhbQpyZXVzZWQgZm9ybWF0IHRpbWUgIDogOS40MiwgID0gNC40MjI1NCAqIHByaW50ZiAsICA9IDMuMjM3MTEgKiBudWxsU3RyZWFtCmZvcm1hdCB0aW1lICAgICAgICAgOiAxMS4xLCAgPSA1LjIxMTI3ICogcHJpbnRmICwgID0gMy44MTQ0MyAqIG51bGxTdHJlYW0KClJFUlVOIApwcmludGYgdGltZSAgICAgICAgIDoyLjA5Cm9zdHJlYW0gdGltZSAgICAgICAgOiAyLjkyLCAgPSAxLjM5NzEzICogcHJpbnRmCnBhcnNlZC1vbmNlIHRpbWUgICAgOiA0LjQzLCAgPSAyLjExOTYyICogcHJpbnRmICwgID0gMS41MTcxMiAqIG51bGxTdHJlYW0KcmV1c2VkIGZvcm1hdCB0aW1lICA6IDkuMjksICA9IDQuNDQ0OTggKiBwcmludGYgLCAgPSAzLjE4MTUxICogbnVsbFN0cmVhbQpmb3JtYXQgdGltZSAgICAgICAgIDoxMS4wNSwgID0gNS4yODcwOCAqIHByaW50ZiAsICA9IDMuNzg0MjUgKiBudWxsU3RyZWFtCgotLSBWYXJpYW50ICAqKiBfYmFzaWNmbXQgKiogOgotcnd4LS14LS14ICAgIDEgc2FtICAgICAgdXNlcnMgICAgICAgNTI4MzIgMjAwMy0wOS0xMiAwMDoxNyAvaG9tZS9zYW0vcHJvZ3MvQm9vc3QvYmluL0JCb29zdC8vbGlicy9mb3JtYXQvYmVuY2htYXJrL2JlbmNoX2Zvcm1hdF9iYXNpY2ZtdC9nY2MvcmVsZWFzZS9iZW5jaF9mb3JtYXRfYmFzaWNmbXQKcHJpbnRmIHRpbWUgICAgICAgICA6Mi4xNgpvc3RyZWFtIHRpbWUgICAgICAgIDogMy4wMSwgID0gMS4zOTM1MiAqIHByaW50ZgpwYXJzZWQtb25jZSB0aW1lICAgIDogNC40MSwgID0gMi4wNDE2NyAqIHByaW50ZiAsICA9IDEuNDY1MTIgKiBudWxsU3RyZWFtCnJldXNlZCBmb3JtYXQgdGltZSAgOiA5LjYxLCAgPSA0LjQ0OTA3ICogcHJpbnRmICwgID0gMy4xOTI2OSAqIG51bGxTdHJlYW0KZm9ybWF0IHRpbWUgICAgICAgICA6MTEuMDIsICA9IDUuMTAxODUgKiBwcmludGYgLCAgPSAzLjY2MTEzICogbnVsbFN0cmVhbQoKLS0gVmFyaWFudCAgKiogX25vX2xvY2FsZSAqKiA6Ci1yd3gtLXgtLXggICAgMSBzYW0gICAgICB1c2VycyAgICAgICA1MjE5MiAyMDAzLTA5LTEyIDAwOjA5IC9ob21lL3NhbS9wcm9ncy9Cb29zdC9iaW4vQkJvb3N0Ly9saWJzL2Zvcm1hdC9iZW5jaG1hcmsvYmVuY2hfZm9ybWF0X25vX2xvY2FsZS9nY2MvcmVsZWFzZS9iZW5jaF9mb3JtYXRfbm9fbG9jYWxlCnByaW50ZiB0aW1lICAgICAgICAgOjIuMQpvc3RyZWFtIHRpbWUgICAgICAgIDogMi44NywgID0gMS4zNjY2NyAqIHByaW50ZgpwYXJzZWQtb25jZSB0aW1lICAgIDogNC40NCwgID0gMi4xMTQyOSAqIHByaW50ZiAsICA9IDEuNTQ3MDQgKiBudWxsU3RyZWFtCnJldXNlZCBmb3JtYXQgdGltZSAgOiA4LjIxLCAgPSAzLjkwOTUyICogcHJpbnRmICwgID0gMi44NjA2MyAqIG51bGxTdHJlYW0KZm9ybWF0IHRpbWUgICAgICAgICA6IDkuMjUsICA9IDQuNDA0NzYgKiBwcmludGYgLCAgPSAzLjIyMyAqIG51bGxTdHJlYW0KCi0tIFZhcmlhbnQgICoqIF9ub3JtYWwgKiogOgotcnd4LS14LS14ICAgIDEgc2FtICAgICAgdXNlcnMgICAgICAgNTMwNTYgMjAwMy0wOS0xMiAwMDoxNyAvaG9tZS9zYW0vcHJvZ3MvQm9vc3QvYmluL0JCb29zdC8vbGlicy9mb3JtYXQvYmVuY2htYXJrL2JlbmNoX2Zvcm1hdF9ub3JtYWwvZ2NjL3JlbGVhc2UvYmVuY2hfZm9ybWF0X25vcm1hbApwcmludGYgdGltZSAgICAgICAgIDoyLjE4Cm9zdHJlYW0gdGltZSAgICAgICAgOiAyLjkyLCAgPSAxLjMzOTQ1ICogcHJpbnRmCnBhcnNlZC1vbmNlIHRpbWUgICAgOiA1Ljc1LCAgPSAyLjYzNzYxICogcHJpbnRmICwgID0gMS45NjkxOCAqIG51bGxTdHJlYW0KcmV1c2VkIGZvcm1hdCB0aW1lICA6MTAuMjcsICA9IDQuNzExMDEgKiBwcmludGYgLCAgPSAzLjUxNzEyICogbnVsbFN0cmVhbQoKCgoKCgoKCgoKCgoKCgoKCgoKCi0tLS0tLS0tLS0tLS0tLS0tLS0gQ29tcGlsZXIgIGdjYyA6IC0tLS0tLS0tLS0tLS0tLS0KCi0tIFZhcmlhbnQgICoqIF9ub3JtYWwgKiogOgotcnd4LS14LS14ICAgIDEgc2FtICAgICAgdXNlcnMgICAgICAgNDkyODAgMjAwMy0wOS0xMCAyMToxMiAvaG9tZS9zYW0vcHJvZ3MvQm9vc3QvYmluL0JCb29zdC8vbGlicy9mb3JtYXQvYmVuY2htYXJrL2JlbmNoX2Zvcm1hdF9ub3JtYWwvZ2NjL3JlbGVhc2UvYmVuY2hfZm9ybWF0X25vcm1hbApwcmludGYgdGltZSAgICAgICAgIDoyLjE2Cm9zdHJlYW0gdGltZSAgICAgICAgOiAyLjgxLCAgPSAxLjMwMDkzICogcHJpbnRmCnN0b3JlZCBmb3JtYXQgdGltZSAgOjExLjU2LCAgPSA1LjM1MTg1ICogcHJpbnRmICwgID0gNC4xMTM4OCAqIG51bGxTdHJlYW0KZm9ybWF0IHRpbWUgICAgICAgICA6MTguNjksICA9IDguNjUyNzggKiBwcmludGYgLCAgPSA2LjY1MTI1ICogbnVsbFN0cmVhbQoKLS0gVmFyaWFudCAgKiogX3N0YXRpY19zdHJlYW0gKiogOgotcnd4LS14LS14ICAgIDEgc2FtICAgICAgdXNlcnMgICAgICAgNDU4NTYgMjAwMy0wOS0xMCAyMToxMyAvaG9tZS9zYW0vcHJvZ3MvQm9vc3QvYmluL0JCb29zdC8vbGlicy9mb3JtYXQvYmVuY2htYXJrL2JlbmNoX2Zvcm1hdF9zdGF0aWNfc3RyZWFtL2djYy9yZWxlYXNlL2JlbmNoX2Zvcm1hdF9zdGF0aWNfc3RyZWFtCnByaW50ZiB0aW1lICAgICAgICAgOjIuMQpvc3RyZWFtIHRpbWUgICAgICAgIDogMi43OSwgID0gMS4zMjg1NyAqIHByaW50ZgpzdG9yZWQgZm9ybWF0IHRpbWUgIDogIDQuNSwgID0gMi4xNDI4NiAqIHByaW50ZiAsICA9IDEuNjEyOSAqIG51bGxTdHJlYW0KZm9ybWF0IHRpbWUgICAgICAgICA6MTAuMDUsICA9IDQuNzg1NzEgKiBwcmludGYgLCAgPSAzLjYwMjE1ICogbnVsbFN0cmVhbQoKLS0gVmFyaWFudCAgKiogX2Jhc2ljZm10ICoqIDoKLXJ3eC0teC0teCAgICAxIHNhbSAgICAgIHVzZXJzICAgICAgIDQ3MjAwIDIwMDMtMDktMTAgMjE6MTMgL2hvbWUvc2FtL3Byb2dzL0Jvb3N0L2Jpbi9CQm9vc3QvL2xpYnMvZm9ybWF0L2JlbmNobWFyay9iZW5jaF9mb3JtYXRfYmFzaWNmbXQvZ2NjL3JlbGVhc2UvYmVuY2hfZm9ybWF0X2Jhc2ljZm10CnByaW50ZiB0aW1lICAgICAgICAgOjIuMjIKb3N0cmVhbSB0aW1lICAgICAgICA6IDIuODgsICA9IDEuMjk3MyAqIHByaW50ZgpzdG9yZWQgZm9ybWF0IHRpbWUgIDogNC40NSwgID0gMi4wMDQ1ICogcHJpbnRmICwgID0gMS41NDUxNCAqIG51bGxTdHJlYW0KZm9ybWF0IHRpbWUgICAgICAgICA6MTEuNjcsICA9IDUuMjU2NzYgKiBwcmludGYgLCAgPSA0LjA1MjA4ICogbnVsbFN0cmVhbQoKCgoKClRoZSBjb3N0IG9mIGltYnVpbmcgbG9jYWxlIGFmdGVyIGVhY2ggb2JqZWN0IGlzIGZlZCA6CgotLS0tLS0tLS0tLS0tLS0tLS0tIENvbXBpbGVyICBnY2MgOiAtLS0tLS0tLS0tLS0tLS0tCi0tIFZhcmlhbnQgIF9ub3JtYWwgOgotcnd4LS14LS14ICAgIDEgc2FtICAgICAgdXNlcnMgICAgICAgNDk5MjAgMjAwMy0wOS0xMCAyMDoyMyAvaG9tZS9zYW0vcHJvZ3MvQm9vc3QvYmluL0JCb29zdC8vbGlicy9mb3JtYXQvYmVuY2htYXJrL2JlbmNoX2Zvcm1hdF9ub3JtYWwvZ2NjL3JlbGVhc2UvYmVuY2hfZm9ybWF0X25vcm1hbApwcmludGYgdGltZSAgICAgICAgIDoyLjIxCm9zdHJlYW0gdGltZSAgICAgICAgOiAgMy4xLCAgPSAxLjQwMjcxICogcHJpbnRmCnN0b3JlZCBmb3JtYXQgdGltZSAgOjExLjUzLCAgPSAzLjcxOTM1ICogc3RyZWFtCmZvcm1hdCB0aW1lICAgICAgICAgOjE4Ljg2LCAgPSA2LjA4Mzg3ICogc3RyZWFtCgotLSBWYXJpYW50ICBfc3RhdGljX3N0cmVhbSA6Ci1yd3gtLXgtLXggICAgMSBzYW0gICAgICB1c2VycyAgICAgICA0MzIzMiAyMDAzLTA5LTEwIDIwOjI0IC9ob21lL3NhbS9wcm9ncy9Cb29zdC9iaW4vQkJvb3N0Ly9saWJzL2Zvcm1hdC9iZW5jaG1hcmsvYmVuY2hfZm9ybWF0X3N0YXRpY19zdHJlYW0vZ2NjL3JlbGVhc2UvYmVuY2hfZm9ybWF0X3N0YXRpY19zdHJlYW0KcHJpbnRmIHRpbWUgICAgICAgICA6Mi4xOQpvc3RyZWFtIHRpbWUgICAgICAgIDogMy4wOSwgID0gMS40MTA5NiAqIHByaW50ZgpzdG9yZWQgZm9ybWF0IHRpbWUgIDogNC42MywgID0gMS40OTgzOCAqIHN0cmVhbQpmb3JtYXQgdGltZSAgICAgICAgIDoxMC4xMiwgID0gMy4yNzUwOCAqIHN0cmVhbQoKLS0gVmFyaWFudCAgX2Jhc2ljZm10IDoKLXJ3eC0teC0teCAgICAxIHNhbSAgICAgIHVzZXJzICAgICAgIDQ1NzYwIDIwMDMtMDktMTAgMjA6MjQgL2hvbWUvc2FtL3Byb2dzL0Jvb3N0L2Jpbi9CQm9vc3QvL2xpYnMvZm9ybWF0L2JlbmNobWFyay9iZW5jaF9mb3JtYXRfYmFzaWNmbXQvZ2NjL3JlbGVhc2UvYmVuY2hfZm9ybWF0X2Jhc2ljZm10CnByaW50ZiB0aW1lICAgICAgICAgOjIuMjMKb3N0cmVhbSB0aW1lICAgICAgICA6IDMuMTQsICA9IDEuNDA4MDcgKiBwcmludGYKc3RvcmVkIGZvcm1hdCB0aW1lICA6IDQuNjEsICA9IDEuNDY4MTUgKiBzdHJlYW0KZm9ybWF0IHRpbWUgICAgICAgICA6MTEuMzMsICA9IDMuNjA4MjggKiBzdHJlYW0KCgoKCgoKCi0tLS0tLS0tLS0tLS0tLS0tLS0gQ29tcGlsZXIgIGdjYyA6IC0tLS0tLS0tLS0tLS0tLS0KLS0gVmFyaWFudCAgX25vcm1hbCA6CnByaW50ZiB0aW1lICAgICAgICAgOjIuMTUKb3N0cmVhbSB0aW1lICAgICAgICA6NC40MiwgID0gMi4wNTU4MSAqIHByaW50ZgpzdG9yZWQgZm9ybWF0IHRpbWUgIDo1Ljg1LCAgPSAxLjMyMzUzICogc3RyZWFtCmZvcm1hdCB0aW1lICAgICAgICAgOjExLjUzLCAgPSAyLjYwODYgKiBzdHJlYW0KLS0gVmFyaWFudCAgX25vX3JldXNlX3N0cmVhbSA6CnByaW50ZiB0aW1lICAgICAgICAgOjIuMTMKb3N0cmVhbSB0aW1lICAgICAgICA6NC40LCAgPSAyLjA2NTczICogcHJpbnRmCnN0b3JlZCBmb3JtYXQgdGltZSAgOjExLjEsICA9IDIuNTIyNzMgKiBzdHJlYW0KZm9ybWF0IHRpbWUgICAgICAgICA6MTQuMywgID0gMy4yNSAqIHN0cmVhbQotLSBWYXJpYW50ICBfc3RyaW5nc3RyIDoKcHJpbnRmIHRpbWUgICAgICAgICA6Mi4wMQpvc3RyZWFtIHRpbWUgICAgICAgIDo0LjQyLCAgPSAyLjE5OSAqIHByaW50ZgpzdG9yZWQgZm9ybWF0IHRpbWUgIDo3LjkyLCAgPSAxLjc5MTg2ICogc3RyZWFtCmZvcm1hdCB0aW1lICAgICAgICAgOjEyLjgsICA9IDIuODk1OTMgKiBzdHJlYW0KCi0tLS0tLS0tLS0tLS0tLS0tLS0gQ29tcGlsZXIgIGludGVsLWxpbnV4LTcuMSA6IC0tLS0tLS0tLS0tLS0tLS0KLS0gVmFyaWFudCAgX25vcm1hbCA6CnByaW50ZiB0aW1lICAgICAgICAgOjIuMDgKb3N0cmVhbSB0aW1lICAgICAgICA6NC40OSwgID0gMi4xNTg2NSAqIHByaW50ZgpzdG9yZWQgZm9ybWF0IHRpbWUgIDo1LjMsICA9IDEuMTgwNCAqIHN0cmVhbQpmb3JtYXQgdGltZSAgICAgICAgIDoxNy44LCAgPSAzLjk2NDM3ICogc3RyZWFtCi0tIFZhcmlhbnQgIF9ub19yZXVzZV9zdHJlYW0gOgpwcmludGYgdGltZSAgICAgICAgIDoyLjA5Cm9zdHJlYW0gdGltZSAgICAgICAgOjQuMzcsICA9IDIuMDkwOTEgKiBwcmludGYKc3RvcmVkIGZvcm1hdCB0aW1lICA6MTAuMDcsICA9IDIuMzA0MzUgKiBzdHJlYW0KZm9ybWF0IHRpbWUgICAgICAgICA6MTQuNDYsICA9IDMuMzA4OTIgKiBzdHJlYW0KLS0gVmFyaWFudCAgX3N0cmluZ3N0ciA6CnByaW50ZiB0aW1lICAgICAgICAgOjEuOTkKb3N0cmVhbSB0aW1lICAgICAgICA6NS4xNiwgID0gMi41OTI5NiAqIHByaW50ZgpzdG9yZWQgZm9ybWF0IHRpbWUgIDo1LjgzLCAgPSAxLjEyOTg0ICogc3RyZWFtCmZvcm1hdCB0aW1lICAgICAgICAgOjE3LjQyLCAgPSAzLjM3NTk3ICogc3RyZWFtCgoKCgovLyBvbGRlciBSZXN1bHQgd2l0aCBnY2MtMy4wMyBvbiBsaW51eCA6CgovLyBXaXRoIGZsYWcgLWcgOgoKLyoqKgpwcmludGYgdGltZSAgICAgICAgIDoxLjIKb3N0cmVhbSB0aW1lICAgICAgICA6Mi44NCwgID0gMi4zNjY2NyAqIHByaW50ZiAKc3RvcmVkIGZvcm1hdCB0aW1lICA6OC45MSwgID0gMy4xMzczMiAqIHN0cmVhbSAKZm9ybWF0IHRpbWUgICAgICAgICA6MTUuMzUsID0gNS40MDQ5MyAqIHN0cmVhbSAKZm9ybWF0MyB0aW1lICAgICAgICA6MjEuODMsID0gNy42ODY2MiAqIHN0cmVhbSAKKioqLwoKCi8vIFdpdGggZmxhZyAtTwoKLyoqKgpwcmludGYgdGltZSAgICAgICAgIDoxLjE2Cm9zdHJlYW0gdGltZSAgICAgICAgOjEuOTQsICA9IDEuNjcyNDEgKiBwcmludGYgCnN0b3JlZCBmb3JtYXQgdGltZSAgOjMuNjgsICA9IDEuODk2OTEgKiBzdHJlYW0gCmZvcm1hdCB0aW1lICAgICAgICAgOjYuMzEsICA9IDMuMjUyNTggKiBzdHJlYW0gCmZvcm1hdDMgdGltZSAgICAgICAgOjkuMDQsICA9IDQuNjU5NzkgKiBzdHJlYW0gCioqKi8KCi8vICA9PT4gdGhhdCdzIHF1aXRlIGFjY2VwdGFibGUuCgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K