IyBUaGlzIHNldCBvZiB0ZXN0cyBpcyBmb3IgVVRGLTE2IGFuZCBVVEYtMzIgc3VwcG9ydCwgaW5jbHVkaW5nIFVuaWNvZGUKIyBwcm9wZXJ0aWVzLiBJdCBpcyByZWxldmFudCBvbmx5IHRvIHRoZSAxNi1iaXQgYW5kIDMyLWJpdCBsaWJyYXJpZXMuIFRoZQojIG91dHB1dCBpcyBkaWZmZXJlbnQgZm9yIGVhY2ggbGlicmFyeSwgc28gdGhlcmUgYXJlIHNlcGFyYXRlIG91dHB1dCBmaWxlcy4KCi/Dw8N4eHgvSUIsdXRmLG5vX3V0Zl9jaGVjawoKL2FiYy91dGYKICAgIMNdCgojIENoZWNrIG1heGltdW0gY2hhcmFjdGVyIHNpemUgCgovXHh7ZmZmZn0vSUIsdXRmCgovXHh7MTAwMDB9L0lCLHV0ZgoKL1x4ezEwMH0vSUIsdXRmCgovXHh7MTAwMH0vSUIsdXRmCgovXHh7MTAwMDB9L0lCLHV0ZgoKL1x4ezEwMDAwMH0vSUIsdXRmCgovXHh7MTBmZmZmfS9JQix1dGYKCi9bXHh7ZmZ9XS9JQix1dGYKCi9bXHh7MTAwfV0vSUIsdXRmCgovXHg4MC9JQix1dGYKCi9ceGZmL0lCLHV0ZgoKL1x4e0Q1NWN9XHh7YWQ2ZH1ceHtDNUI0fS9JQix1dGYKICAgIFx4e0Q1NWN9XHh7YWQ2ZH1ceHtDNUI0fQoKL1x4ezY1ZTV9XHh7NjcyY31ceHs4YTllfS9JQix1dGYKICAgIFx4ezY1ZTV9XHh7NjcyY31ceHs4YTllfQoKL1x4ezgwfS9JQix1dGYKCi9ceHswODR9L0lCLHV0ZgoKL1x4ezEwNH0vSUIsdXRmCgovXHh7ODYxfS9JQix1dGYKCi9ceHsyMTJhYn0vSUIsdXRmCgovW15hYlx4QzAtXHhGMF0vSUIsdXRmCiAgICBceHtmMX0KICAgIFx4e2JmfQogICAgXHh7MTAwfQogICAgXHh7MTAwMH0KXD0gRXhwZWN0IG5vIG1hdGNoCiAgICBceHtjMH0KICAgIFx4e2YwfQoKL8SAezMsNH0vSUIsdXRmCiAgXHh7MTAwfVx4ezEwMH1ceHsxMDB9XHh7MTAwXHh7MTAwfQoKLyhceHsxMDB9K3x4KS9JQix1dGYKCi8oXHh7MTAwfSphfHgpL0lCLHV0ZgoKLyhceHsxMDB9ezAsMn1hfHgpL0lCLHV0ZgoKLyhceHsxMDB9ezEsMn1hfHgpL0lCLHV0ZgoKL1x4ezEwMH0vSUIsdXRmCgovYVx4ezEwMH1ceHsxMDF9Ki9JQix1dGYKCi9hXHh7MTAwfVx4ezEwMX0rL0lCLHV0ZgoKL1teXHh7YzR9XS9JQgoKL1tceHsxMDB9XS9JQix1dGYKICAgIFx4ezEwMH0KICAgIFpceHsxMDB9CiAgICBceHsxMDB9WgoKL1tceGZmXS9JQix1dGYKICAgID5ceHtmZn08CgovW15ceGZmXS9JQix1dGYKCi9ceHsxMDB9YWJjKHh5eig/MSkpL0lCLHV0ZgoKL1w3NzcvSSx1dGYKICBceHsxZmZ9CiAgXDc3NwoKL1x4ezEwMH0rXHh7MjAwfS9JQix1dGYKCi9ceHsxMDB9K1gvSUIsdXRmCgovXltcUcSAXEUtXFHFkFxFL0IsdXRmCgovWC91dGYKICAgIFhYXHh7ZDgwMH1cPW5vX3V0Zl9jaGVjawogICAgWFhceHtkYTAwfVw9bm9fdXRmX2NoZWNrCiAgICBYWFx4e2RjMDB9XD1ub191dGZfY2hlY2sKICAgIFhYXHh7ZGUwMH1cPW5vX3V0Zl9jaGVjawogICAgWFhceHtkZmZmfVw9bm9fdXRmX2NoZWNrClw9IEV4cGVjdCBVVEYgZXJyb3IKICAgIFhYXHh7ZDgwMH0KICAgIFhYXHh7ZGEwMH0KICAgIFhYXHh7ZGMwMH0KICAgIFhYXHh7ZGUwMH0KICAgIFhYXHh7ZGZmZn0KICAgIFhYXHh7MTEwMDAwfQogICAgWFhceHtkODAwfVx4ezEyMzR9Clw9IEV4cGVjdCBubyBtYXRjaAogICAgWFhceHtkODAwfVw9b2Zmc2V0PTMKICAgIAovKD88PS4pWC91dGYKICAgIFhYXHh7ZDgwMH1cPW9mZnNldD0zCgovKCpVVEYxNilceHsxMTIzNH0vCiAgYWJjZFx4ezExMjM0fXBxcgoKLygqVVRGKVx4ezExMjM0fS9JCiAgYWJjZFx4ezExMjM0fXBxcgoKLygqVVRGLTMyKVx4ezExMjM0fS8KICBhYmNkXHh7MTEyMzR9cHFyCgovKCpVVEYtMzIpXHh7MTEyfS8KICBhYmNkXHh7MTEyMzR9cHFyCgovKCpDUkxGKSgqVVRGMTYpKCpCU1JfVU5JQ09ERSlhXFJiL0kKCi8oKkNSTEYpKCpVVEYzMikoKkJTUl9VTklDT0RFKWFcUmIvSQoKL1xoL0ksdXRmCiAgICBBQkNceHswOX0KICAgIEFCQ1x4ezIwfQogICAgQUJDXHh7YTB9CiAgICBBQkNceHsxNjgwfQogICAgQUJDXHh7MTgwZX0KICAgIEFCQ1x4ezIwMDB9CiAgICBBQkNceHsyMDJmfQogICAgQUJDXHh7MjA1Zn0KICAgIEFCQ1x4ezMwMDB9CgovXHYvSSx1dGYKICAgIEFCQ1x4ezBhfQogICAgQUJDXHh7MGJ9CiAgICBBQkNceHswY30KICAgIEFCQ1x4ezBkfQogICAgQUJDXHh7ODV9CiAgICBBQkNceHsyMDI4fQoKL1xoKkEvSSx1dGYKICAgIENEQkFCQwogICAgXHh7MjAwMH1BQkMKCi9cUipBL0ksYnNyPXVuaWNvZGUsdXRmCiAgICBDREJBQkMKICAgIFx4ezIwMjh9QQoKL1x2K0EvSSx1dGYKCi9ccz94eHhccy9JLHV0ZgoKL1xzeHh4XHMvSSx1dGYsdGFibGVzPTIKICAgIEFCXHh7ODV9eHh4XHh7YTB9WFlaCiAgICBBQlx4e2EwfXh4eFx4ezg1fVhZWgoKL1xTIFxTL0ksdXRmLHRhYmxlcz0yCiAgICBceHthMn0gXHh7ODR9CiAgICBBIFoKCi9hKy91dGYKICAgIGFceHsxMjN9YWFcPW9mZnNldD0xCiAgICBhXHh7MTIzfWFhXD1vZmZzZXQ9MgogICAgYVx4ezEyM31hYVw9b2Zmc2V0PTMKXD0gRXhwZWN0IG5vIG1hdGNoCiAgICBhXHh7MTIzfWFhXD1vZmZzZXQ9NApcPSBFeHBlY3QgYmFkIG9mZnNldCBlcnJvciAgICAgCiAgICBhXHh7MTIzfWFhXD1vZmZzZXQ9NQogICAgYVx4ezEyM31hYVw9b2Zmc2V0PTYKCi9ceHsxMjM0fSsvSWksdXRmCgovXHh7MTIzNH0rPy9JaSx1dGYKCi9ceHsxMjM0fSsrL0lpLHV0ZgoKL1x4ezEyMzR9ezJ9L0lpLHV0ZgoKL1teXHh7YzR9XS9JQix1dGYKCi9YK1x4ezIwMH0vSUIsdXRmCgovXFIvSSx1dGYKCiMgQ2hlY2sgYmFkIG9mZnNldCAKCi9hL3V0ZgpcPSBFeHBlY3QgYmFkIFVURi0xNiBvZmZzZXQsIG9yIG5vIG1hdGNoIGluIDMyLWJpdAogICAgXHh7MTAwMDB9XD1vZmZzZXQ9MQogICAgXHh7MTAwMDB9YWJcPW9mZnNldD0xClw9IEV4cGVjdCAxNi1iaXQgbWF0Y2gsIDMyLWJpdCBubyBtYXRjaAogICAgXHh7MTAwMDB9YWJcPW9mZnNldD0yClw9IEV4cGVjdCBubyBtYXRjaCAgICAgCiAgICBceHsxMDAwMH1hYlw9b2Zmc2V0PTMKXD0gRXhwZWN0IG5vIG1hdGNoIGluIDE2LWJpdCwgYmFkIG9mZnNldCBpbiAzMi1iaXQgICAgCiAgICBceHsxMDAwMH1hYlw9b2Zmc2V0PTQKXD0gRXhwZWN0IGJhZCBvZmZzZXQgICAgIAogICAgXHh7MTAwMDB9YWJcPW9mZnNldD01Cgov7byAL3V0ZgoKL1x3K1x4e0M0fS9CLHV0ZgogICAgYVx4e0M0fVx4e0M0fQoKL1x3K1x4e0M0fS9CLHV0Zix0YWJsZXM9MgogICAgYVx4e0M0fVx4e0M0fQogICAgCi9cVytceHtDNH0vQix1dGYKICAgICFceHtDNH0KIAovXFcrXHh7QzR9L0IsdXRmLHRhYmxlcz0yCiAgICAhXHh7QzR9CgovXFcrXHh7QTF9L0IsdXRmCiAgICAhXHh7QTF9CiAKL1xXK1x4e0ExfS9CLHV0Zix0YWJsZXM9MgogICAgIVx4e0ExfQoKL1hccytceHtBMH0vQix1dGYKICAgIFhceDIwXHh7QTB9XHh7QTB9CgovWFxzK1x4e0EwfS9CLHV0Zix0YWJsZXM9MgogICAgWFx4MjBceHtBMH1ceHtBMH0KCi9cUytceHtBMH0vQix1dGYKICAgIFhceHtBMH1ceHtBMH0KCi9cUytceHtBMH0vQix1dGYsdGFibGVzPTIKICAgIFhceHtBMH1ceHtBMH0KCi9ceHthMH0rXHMhL0IsdXRmCiAgICBceHthMH1ceDIwIQoKL1x4e2EwfStccyEvQix1dGYsdGFibGVzPTIKICAgIFx4e2EwfVx4MjAhCgovKCpVVEYpYWJjL25ldmVyX3V0ZgoKL2FiYy91dGYsbmV2ZXJfdXRmCgovQVx4ezM5MX1ceHsxMDQyN31ceHtmZjNhfVx4ezFmYjB9L0lCaSx1dGYKCi9BXHh7MzkxfVx4ezEwNDI3fVx4e2ZmM2F9XHh7MWZiMH0vSUIsdXRmCgovQUJceHsxZmIwfS9JQix1dGYKCi9BQlx4ezFmYjB9L0lCaSx1dGYKCi9ceHs0MDF9XHh7NDIwfVx4ezQyMX1ceHs0MjJ9XHh7NDIzfVx4ezQyNH1ceHs0MjV9XHh7NDI2fVx4ezQyN31ceHs0Mjh9XHh7NDI5fVx4ezQyYX1ceHs0MmJ9XHh7NDJjfVx4ezQyZH1ceHs0MmV9XHh7NDJmfS9JaSx1dGYKICAgIFx4ezQwMX1ceHs0MjB9XHh7NDIxfVx4ezQyMn1ceHs0MjN9XHh7NDI0fVx4ezQyNX1ceHs0MjZ9XHh7NDI3fVx4ezQyOH1ceHs0Mjl9XHh7NDJhfVx4ezQyYn1ceHs0MmN9XHh7NDJkfVx4ezQyZX1ceHs0MmZ9CiAgICBceHs0NTF9XHh7NDQwfVx4ezQ0MX1ceHs0NDJ9XHh7NDQzfVx4ezQ0NH1ceHs0NDV9XHh7NDQ2fVx4ezQ0N31ceHs0NDh9XHh7NDQ5fVx4ezQ0YX1ceHs0NGJ9XHh7NDRjfVx4ezQ0ZH1ceHs0NGV9XHh7NDRmfQoKL1visaVdL0JpLHV0ZgoKL1te4rGlXS9CaSx1dGYKCi9bWzpibGFuazpdXS9CLHVjcAoKL1x4ezIxMmF9Ky9JaSx1dGYKICAgIEtLa2tceHsyMTJhfQoKL3MrL0lpLHV0ZgogICAgU1Nzc1x4ezE3Zn0KCiMgTm9uLVVURiBjaGFyYWN0ZXJzIHNob3VsZCBnaXZlIGVycm9ycyBpbiBib3RoIDE2LWJpdCBhbmQgMzItYml0IG1vZGVzLgoKL1x4ezExMDAwMH0vdXRmCgovXG97NDIwMDAwMH0vdXRmCgovXHh7MTAwfSpBL0lCLHV0ZgogICAgQQoKL1x4ezEwMH0qXGQoP1IpL0lCLHV0ZgoKL1taXHh7MTAwfV0vSUIsdXRmCiAgICBaXHh7MTAwfQogICAgXHh7MTAwfQogICAgXHh7MTAwfVoKCi9bei1ceHsxMDB9XS9JQix1dGYKCi9belxRYS1kXcSAXEVdL0lCLHV0ZgogICAgXHh7MTAwfQogICAgxIAgCgovW2FiXHh7MTAwfV1hYmMoeHl6KD8xKSkvSUIsdXRmCgovXHh7MTAwfSpccy9JQix1dGYKCi9ceHsxMDB9KlxkL0lCLHV0ZgoKL1x4ezEwMH0qXHcvSUIsdXRmCgovXHh7MTAwfSpcRC9JQix1dGYKCi9ceHsxMDB9KlxTL0lCLHV0ZgoKL1x4ezEwMH0qXFcvSUIsdXRmCgovW1x4ezEwNX0tXHh7MTA5fV0vSUJpLHV0ZgogICAgXHh7MTA0fQogICAgXHh7MTA1fQogICAgXHh7MTA5fSAgClw9IEV4cGVjdCBubyBtYXRjaAogICAgXHh7MTAwfQogICAgXHh7MTBhfSAKICAgIAovW3otXHh7MTAwfV0vSUJpLHV0ZgogICAgWgogICAgegogICAgXHh7MzljfQogICAgXHh7MTc4fQogICAgfAogICAgXHh7ODB9CiAgICBceHtmZn0KICAgIFx4ezEwMH0KICAgIFx4ezEwMX0gClw9IEV4cGVjdCBubyBtYXRjaAogICAgXHh7MTAyfQogICAgWQogICAgeSAgICAgICAgICAgCgovW3otXHh7MTAwfV0vSUJpLHV0ZgoKL1x4ezNhM31CL0lCaSx1dGYKCi8uL3V0ZgogICAgXHh7MTEwMDAwfQoKIyBFbmQgb2YgdGVzdGlucHV0MTIK