IyEgL2Jpbi9zaAouICIke3NyY2Rpcj0ufS9pbml0LnNoIjsgcGF0aF9wcmVwZW5kXyAuIC4uL3NyYwoKIyBUZXN0IG9mIGFuIGV4dGVybmFsIGNvbW1hbmQuCgpjYXQgPDxcRU9GID4gbWV4LXRlc3QxLnBvCiMgSEVBREVSLgojCm1zZ2lkICIiCm1zZ3N0ciAiIgoiUHJvamVjdC1JZC1WZXJzaW9uOiBCb25uaWUgVHlsZXJcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xXG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCgojOiBtYXJyaWVkLW1lbjo0CiMsIGZ1enp5Cm1zZ2lkICJUaGUgd29ybGQgaXMgZnVsbCBvZiBtYXJyaWVkIG1lbiIKbXNnc3RyICJTbyB2aWVsZSB2ZXJoZWlyYXRldGUgTeRubmVyIgoKIzogbWFycmllZC1tZW46NQptc2dpZCAid2l0aCB3aXZlcyB3aG8gbmV2ZXIgdW5kZXJzdGFuZCIKbXNnc3RyICJ1bmQgaWhyZSBGcmF1ZW4gdmVyc3RlaGVuIHNpZSBuaWNodCIKCiM6IG1hcnJpZWQtbWVuOjYKbXNnaWQgIlRoZXkncmUgbG9va2luZyBmb3Igc29tZW9uZSB0byBzaGFyZSIKbXNnc3RyICIiCgojIHNjaHdlciB6dSD8YmVyc2V0emVuLi4uCiM6IG1hcnJpZWQtbWVuOjcKbXNnaWQgInRoZSBleGNpdGVtZW50IG9mIGEgbG92ZSBhZmZhaXIiCm1zZ3N0ciAiIgoKIzogbWFycmllZC1tZW46OAptc2dpZCAiSnVzdCBhcyBzb29uIGFzIHRoZXkgZmluZCB5b3UiCm1zZ3N0ciAiIgoKIzogbWFycmllZC1tZW46OQptc2dpZCAiVGhleSB3YXJuIHlvdSBhbmQgZGFybiB5b3UiCm1zZ3N0ciAiIgoKI34gbXNnaWQgIllvdSBmbHkgb24gdGhlIHdpbmdzIG9mIHJvbWFuY2UiCiN+IG1zZ3N0ciAiRGllIEZs/GdlbCBkZXIgZnJpc2NoZW4gTGllYmVcbiIKI34gImhlYmVuIGRpY2ggenVtIEhpbW1lbCIKCiMsIGZ1enp5CiN+IG1zZ2lkICJJbiB0aGUgZXllcyBvZiB0aGUgd29ybGQiCiN+IG1zZ3N0ciAiRvxyIGRpZSBhbmRlcmVuIgoKIyBFdHdhcyBmcmVpZSDcYmVyc2V0enVuZy4KI34gbXNnaWQgIllvdSdyZSBqdXN0IGFub3RoZXIgY3JhenkgZ2lybCIKI34gbXNnc3RyICJiaXN0IGR1IGJsb98gZWluIHZlcnL8Y2t0ZXMgZHVtbWVzIERpbmciCgojfiBtc2dpZCAiV2hvIGxvdmVzIGEgbWFycmllZCBtYW4iCiN+IG1zZ3N0ciAiZGFzIGVpbmVuIHZlcmhlaXJhdGV0ZW4gTWFubiBsaWVidCIKRU9GCgpjYXQgPDxcRU9GID4gbWV4LXRlc3QxLnNoCiMhIC9iaW4vc2gKZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PSAkTVNHRVhFQ19MT0NBVElPTiA9PT09PT09PT09PT09PT09PT09PT09PT09IiB8IExDX0FMTD1DIHRyIC1kICdccicKY2F0IDw8TUVPRgokTVNHRVhFQ19NU0dJRAotLS0KTUVPRgpjYXQKZWNobyB8IExDX0FMTD1DIHRyIC1kICdccicKZXhpdCAwCkVPRgpjaG1vZCBhK3ggbWV4LXRlc3QxLnNoCgo6ICR7TVNHRVhFQz1tc2dleGVjfQpMQ19BTEw9QyBcCiR7TVNHRVhFQ30gLWkgbWV4LXRlc3QxLnBvIC4vbWV4LXRlc3QxLnNoID4gbWV4LXRlc3QxLm91dCAyPiBtZXgtdGVzdDEuZXJyCnJlc3VsdD0kPwpjYXQgbWV4LXRlc3QxLmVyciB8IGdyZXAgLXYgJ3dhcm5pbmc6IExvY2FsZSBjaGFyc2V0JyB8IGdyZXAgLXYgJ14gJwp0ZXN0ICRyZXN1bHQgPSAwIHx8IHsgRXhpdCAxOyB9CgpjYXQgPDxcRU9GID4gbWV4LXRlc3QxLm9rCj09PT09PT09PT09PT09PT09PT09PT09PT0gbWV4LXRlc3QxLnBvOjQgPT09PT09PT09PT09PT09PT09PT09PT09PQoKLS0tClByb2plY3QtSWQtVmVyc2lvbjogQm9ubmllIFR5bGVyCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCj09PT09PT09PT09PT09PT09PT09PT09PT0gbWV4LXRlc3QxLnBvOjEyID09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIHdvcmxkIGlzIGZ1bGwgb2YgbWFycmllZCBtZW4KLS0tClNvIHZpZWxlIHZlcmhlaXJhdGV0ZSBN5G5uZXIKPT09PT09PT09PT09PT09PT09PT09PT09PSBtZXgtdGVzdDEucG86MTYgPT09PT09PT09PT09PT09PT09PT09PT09PQp3aXRoIHdpdmVzIHdobyBuZXZlciB1bmRlcnN0YW5kCi0tLQp1bmQgaWhyZSBGcmF1ZW4gdmVyc3RlaGVuIHNpZSBuaWNodAo9PT09PT09PT09PT09PT09PT09PT09PT09IG1leC10ZXN0MS5wbzoyMCA9PT09PT09PT09PT09PT09PT09PT09PT09ClRoZXkncmUgbG9va2luZyBmb3Igc29tZW9uZSB0byBzaGFyZQotLS0KCj09PT09PT09PT09PT09PT09PT09PT09PT0gbWV4LXRlc3QxLnBvOjI1ID09PT09PT09PT09PT09PT09PT09PT09PT0KdGhlIGV4Y2l0ZW1lbnQgb2YgYSBsb3ZlIGFmZmFpcgotLS0KCj09PT09PT09PT09PT09PT09PT09PT09PT0gbWV4LXRlc3QxLnBvOjI5ID09PT09PT09PT09PT09PT09PT09PT09PT0KSnVzdCBhcyBzb29uIGFzIHRoZXkgZmluZCB5b3UKLS0tCgo9PT09PT09PT09PT09PT09PT09PT09PT09IG1leC10ZXN0MS5wbzozMyA9PT09PT09PT09PT09PT09PT09PT09PT09ClRoZXkgd2FybiB5b3UgYW5kIGRhcm4geW91Ci0tLQoKPT09PT09PT09PT09PT09PT09PT09PT09PSBtZXgtdGVzdDEucG86MzYgPT09PT09PT09PT09PT09PT09PT09PT09PQpZb3UgZmx5IG9uIHRoZSB3aW5ncyBvZiByb21hbmNlCi0tLQpEaWUgRmz8Z2VsIGRlciBmcmlzY2hlbiBMaWViZQpoZWJlbiBkaWNoIHp1bSBIaW1tZWwKPT09PT09PT09PT09PT09PT09PT09PT09PSBtZXgtdGVzdDEucG86NDEgPT09PT09PT09PT09PT09PT09PT09PT09PQpJbiB0aGUgZXllcyBvZiB0aGUgd29ybGQKLS0tCkb8ciBkaWUgYW5kZXJlbgo9PT09PT09PT09PT09PT09PT09PT09PT09IG1leC10ZXN0MS5wbzo0NSA9PT09PT09PT09PT09PT09PT09PT09PT09CllvdSdyZSBqdXN0IGFub3RoZXIgY3JhenkgZ2lybAotLS0KYmlzdCBkdSBibG/fIGVpbiB2ZXJy/GNrdGVzIGR1bW1lcyBEaW5nCj09PT09PT09PT09PT09PT09PT09PT09PT0gbWV4LXRlc3QxLnBvOjQ4ID09PT09PT09PT09PT09PT09PT09PT09PT0KV2hvIGxvdmVzIGEgbWFycmllZCBtYW4KLS0tCmRhcyBlaW5lbiB2ZXJoZWlyYXRldGVuIE1hbm4gbGllYnQKRU9GCgo6ICR7RElGRj1kaWZmfQoke0RJRkZ9IG1leC10ZXN0MS5vayBtZXgtdGVzdDEub3V0CnJlc3VsdD0kPwoKZXhpdCAkcmVzdWx0Cg==