IyBUaGlzIHNldCBvZiB0ZXN0cyBpcyBmb3IgVVRGLTggc3VwcG9ydCBhbmQgVW5pY29kZSBwcm9wZXJ0eSBzdXBwb3J0LCB3aXRoCiMgcmVsZXZhbmNlIG9ubHkgZm9yIHRoZSA4LWJpdCBsaWJyYXJ5LgoKIyBUaGUgbmV4dCA0IHBhdHRlcm5zIGhhdmUgVVRGLTggZXJyb3JzCgovW8NdL3V0ZgoKL8MvdXRmCgovw8PDeHh4L3V0ZgoKL8OCgoKCgoKCgsMvdXRmCgojIE5vdyB0ZXN0IHN1YmplY3RzCgovYmFkdXRmL3V0ZgpcPSBFeHBlY3QgVVRGLTggZXJyb3JzCiAgICBYXHhkZgogICAgWFhceGVmCiAgICBYWFhceGVmXHg4MAogICAgWFx4ZjcKICAgIFhYXHhmN1x4ODAKICAgIFhYWFx4ZjdceDgwXHg4MAogICAgXHhmYgogICAgXHhmYlx4ODAKICAgIFx4ZmJceDgwXHg4MAogICAgXHhmYlx4ODBceDgwXHg4MAogICAgXHhmZAogICAgXHhmZFx4ODAKICAgIFx4ZmRceDgwXHg4MAogICAgXHhmZFx4ODBceDgwXHg4MAogICAgXHhmZFx4ODBceDgwXHg4MFx4ODAKICAgIFx4ZGZceDdmCiAgICBceGVmXHg3Zlx4ODAKICAgIFx4ZWZceDgwXHg3ZgogICAgXHhmN1x4N2ZceDgwXHg4MAogICAgXHhmN1x4ODBceDdmXHg4MAogICAgXHhmN1x4ODBceDgwXHg3ZgogICAgXHhmYlx4N2ZceDgwXHg4MFx4ODAKICAgIFx4ZmJceDgwXHg3Zlx4ODBceDgwCiAgICBceGZiXHg4MFx4ODBceDdmXHg4MAogICAgXHhmYlx4ODBceDgwXHg4MFx4N2YKICAgIFx4ZmRceDdmXHg4MFx4ODBceDgwXHg4MAogICAgXHhmZFx4ODBceDdmXHg4MFx4ODBceDgwCiAgICBceGZkXHg4MFx4ODBceDdmXHg4MFx4ODAKICAgIFx4ZmRceDgwXHg4MFx4ODBceDdmXHg4MAogICAgXHhmZFx4ODBceDgwXHg4MFx4ODBceDdmCiAgICBceGVkXHhhMFx4ODAKICAgIFx4YzBceDhmCiAgICBceGUwXHg4MFx4OGYKICAgIFx4ZjBceDgwXHg4MFx4OGYKICAgIFx4ZjhceDgwXHg4MFx4ODBceDhmCiAgICBceGZjXHg4MFx4ODBceDgwXHg4MFx4OGYKICAgIFx4ODAKICAgIFx4ZmUKICAgIFx4ZmYKCi9iYWR1dGYvdXRmClw9IEV4cGVjdCBVVEYtOCBlcnJvcnMKICAgIFhYXHhmYlx4ODBceDgwXHg4MFx4ODAKICAgIFhYXHhmZFx4ODBceDgwXHg4MFx4ODBceDgwCiAgICBYWFx4ZjdceGJmXHhiZlx4YmYKCi9zaG9ydHV0Zi91dGYKXD0gRXhwZWN0IFVURi04IGVycm9ycwogICAgWFhceGRmXD1waAogICAgWFhceGVmXD1waAogICAgWFhceGVmXHg4MFw9cGgKICAgIFx4ZjdcPXBoCiAgICBceGY3XHg4MFw9cGgKICAgIFx4ZjdceDgwXHg4MFw9cGgKICAgIFx4ZmJcPXBoCiAgICBceGZiXHg4MFw9cGgKICAgIFx4ZmJceDgwXHg4MFw9cGgKICAgIFx4ZmJceDgwXHg4MFx4ODBcPXBoCiAgICBceGZkXD1waAogICAgXHhmZFx4ODBcPXBoCiAgICBceGZkXHg4MFx4ODBcPXBoCiAgICBceGZkXHg4MFx4ODBceDgwXD1waAogICAgXHhmZFx4ODBceDgwXHg4MFx4ODBcPXBoCgovYW55dGhpbmcvdXRmClw9IEV4cGVjdCBVVEYtOCBlcnJvcnMKICAgIFhceGMwXHg4MAogICAgWFhceGMxXHg4ZgogICAgWFhYXHhlMFx4OWZceDgwCiAgICBceGYwXHg4Zlx4ODBceDgwCiAgICBceGY4XHg4N1x4ODBceDgwXHg4MAogICAgXHhmY1x4ODNceDgwXHg4MFx4ODBceDgwCiAgICBceGZlXHg4MFx4ODBceDgwXHg4MFx4ODAKICAgIFx4ZmZceDgwXHg4MFx4ODBceDgwXHg4MAogICAgXHhmOFx4ODhceDgwXHg4MFx4ODAKICAgIFx4ZjlceDg3XHg4MFx4ODBceDgwCiAgICBceGZjXHg4NFx4ODBceDgwXHg4MFx4ODAKICAgIFx4ZmRceDgzXHg4MFx4ODBceDgwXHg4MApcPSBFeHBlY3Qgbm8gbWF0Y2gKICAgIFx4YzNceDhmCiAgICBceGUwXHhhZlx4ODAKICAgIFx4ZTFceDgwXHg4MAogICAgXHhmMFx4OWZceDgwXHg4MAogICAgXHhmMVx4OGZceDgwXHg4MAogICAgXHhmOFx4ODhceDgwXHg4MFx4ODBcPW5vX3V0Zl9jaGVjawogICAgXHhmOVx4ODdceDgwXHg4MFx4ODBcPW5vX3V0Zl9jaGVjawogICAgXHhmY1x4ODRceDgwXHg4MFx4ODBceDgwXD1ub191dGZfY2hlY2sKICAgIFx4ZmRceDgzXHg4MFx4ODBceDgwXHg4MFw9bm9fdXRmX2NoZWNrCiAgICAKIyBTaW1pbGFyIHRlc3RzIHdpdGggb2Zmc2V0cwoKL2JhZHV0Zi91dGYKXD0gRXhwZWN0IFVURi04IGVycm9ycwogICAgWFx4ZGZhYmNkCiAgICBYXHhkZmFiY2RcPW9mZnNldD0xClw9IEV4cGVjdCBubyBtYXRjaAogICAgWFx4ZGZhYmNkXD1vZmZzZXQ9MgoKLyg/PD14KWJhZHV0Zi91dGYKXD0gRXhwZWN0IFVURi04IGVycm9ycwogICAgWFx4ZGZhYmNkCiAgICBYXHhkZmFiY2RcPW9mZnNldD0xCiAgICBYXHhkZmFiY2RcPW9mZnNldD0yCiAgICBYXHhkZmFiY2RceGRmXD1vZmZzZXQ9MwpcPSBFeHBlY3Qgbm8gbWF0Y2gKICAgIFhceGRmYWJjZFw9b2Zmc2V0PTMKCi8oPzw9eHgpYmFkdXRmL3V0ZgpcPSBFeHBlY3QgVVRGLTggZXJyb3JzCiAgICBYXHhkZmFiY2QKICAgIFhceGRmYWJjZFw9b2Zmc2V0PTEKICAgIFhceGRmYWJjZFw9b2Zmc2V0PTIKICAgIFhceGRmYWJjZFw9b2Zmc2V0PTMKCi8oPzw9eHh4eCliYWR1dGYvdXRmClw9IEV4cGVjdCBVVEYtOCBlcnJvcnMKICAgIFhceGRmYWJjZAogICAgWFx4ZGZhYmNkXD1vZmZzZXQ9MQogICAgWFx4ZGZhYmNkXD1vZmZzZXQ9MgogICAgWFx4ZGZhYmNkXD1vZmZzZXQ9MwogICAgWFx4ZGZhYmNceGRmXD1vZmZzZXQ9NgogICAgWFx4ZGZhYmNceGRmXD1vZmZzZXQ9NwpcPSBFeHBlY3Qgbm8gbWF0Y2gKICAgIFhceGRmYWJjZFw9b2Zmc2V0PTYKIAovXHh7MTAwfS9JQix1dGYKCi9ceHsxMDAwfS9JQix1dGYKCi9ceHsxMDAwMH0vSUIsdXRmCgovXHh7MTAwMDAwfS9JQix1dGYKCi9ceHsxMGZmZmZ9L0lCLHV0ZgoKL1tceHtmZn1dL0lCLHV0ZgoKL1tceHsxMDB9XS9JQix1dGYKCi9ceDgwL0lCLHV0ZgoKL1x4ZmYvSUIsdXRmCgovXHh7RDU1Y31ceHthZDZkfVx4e0M1QjR9L0lCLHV0ZgogICAgXHh7RDU1Y31ceHthZDZkfVx4e0M1QjR9CgovXHh7NjVlNX1ceHs2NzJjfVx4ezhhOWV9L0lCLHV0ZgogICAgXHh7NjVlNX1ceHs2NzJjfVx4ezhhOWV9CgovXHh7ODB9L0lCLHV0ZgoKL1x4ezA4NH0vSUIsdXRmCgovXHh7MTA0fS9JQix1dGYKCi9ceHs4NjF9L0lCLHV0ZgoKL1x4ezIxMmFifS9JQix1dGYKCi9bXmFiXHhDMC1ceEYwXS9JQix1dGYKICAgIFx4e2YxfQogICAgXHh7YmZ9CiAgICBceHsxMDB9CiAgICBceHsxMDAwfQpcPSBFeHBlY3Qgbm8gbWF0Y2gKICAgIFx4e2MwfQogICAgXHh7ZjB9CgovxIB7Myw0fS9JQix1dGYKICBceHsxMDB9XHh7MTAwfVx4ezEwMH1ceHsxMDBceHsxMDB9CgovKFx4ezEwMH0rfHgpL0lCLHV0ZgoKLyhceHsxMDB9KmF8eCkvSUIsdXRmCgovKFx4ezEwMH17MCwyfWF8eCkvSUIsdXRmCgovKFx4ezEwMH17MSwyfWF8eCkvSUIsdXRmCgovXHh7MTAwfS9JQix1dGYKCi9hXHh7MTAwfVx4ezEwMX0qL0lCLHV0ZgoKL2FceHsxMDB9XHh7MTAxfSsvSUIsdXRmCgovW15ceHtjNH1dL0lCCgovW1x4ezEwMH1dL0lCLHV0ZgogICAgXHh7MTAwfQogICAgWlx4ezEwMH0KICAgIFx4ezEwMH1aCgovW1x4ZmZdL0lCLHV0ZgogICAgPlx4e2ZmfTwKCi9bXlx4ZmZdL0lCLHV0ZgoKL1x4ezEwMH1hYmMoeHl6KD8xKSkvSUIsdXRmCgovXDc3Ny9JLHV0ZgogIFx4ezFmZn0KICBcNzc3CgovXHh7MTAwfStceHsyMDB9L0lCLHV0ZgoKL1x4ezEwMH0rWC9JQix1dGYKCi9eW1xRxIBcRS1cUcWQXEUvQix1dGYKCiMgVGhpcyB0ZXN0cyB0aGUgc3RyaWN0ZXIgVVRGLTggY2hlY2sgYWNjb3JkaW5nIHRvIFJGQyAzNjI5LgoKL1gvdXRmClw9IEV4cGVjdCBVVEYtOCBlcnJvcnMKICAgIFx4e2Q4MDB9CiAgICBceHtkYTAwfQogICAgXHh7ZGZmZn0KICAgIFx4ezExMDAwMH0KICAgIFx4ezIwMDAwMDB9CiAgICBceHs3ZmZmZmZmZn0KXD0gRXhwZWN0IG5vIG1hdGNoCiAgICBceHtkODAwfVw9bm9fdXRmX2NoZWNrCiAgICBceHtkYTAwfVw9bm9fdXRmX2NoZWNrCiAgICBceHtkZmZmfVw9bm9fdXRmX2NoZWNrCiAgICBceHsxMTAwMDB9XD1ub191dGZfY2hlY2sKICAgIFx4ezIwMDAwMDB9XD1ub191dGZfY2hlY2sKICAgIFx4ezdmZmZmZmZmfVw9bm9fdXRmX2NoZWNrCgovKCpVVEY4KVx4ezEyMzR9LwogICAgYWJjZFx4ezEyMzR9cHFyCgovKCpDUkxGKSgqVVRGKSgqQlNSX1VOSUNPREUpYVxSYi9JCgovXGgvSSx1dGYKICAgIEFCQ1x4ezA5fQogICAgQUJDXHh7MjB9CiAgICBBQkNceHthMH0KICAgIEFCQ1x4ezE2ODB9CiAgICBBQkNceHsxODBlfQogICAgQUJDXHh7MjAwMH0KICAgIEFCQ1x4ezIwMmZ9CiAgICBBQkNceHsyMDVmfQogICAgQUJDXHh7MzAwMH0KCi9cdi9JLHV0ZgogICAgQUJDXHh7MGF9CiAgICBBQkNceHswYn0KICAgIEFCQ1x4ezBjfQogICAgQUJDXHh7MGR9CiAgICBBQkNceHs4NX0KICAgIEFCQ1x4ezIwMjh9CgovXGgqQS9JLHV0ZgogICAgQ0RCQUJDCgovXHYrQS9JLHV0ZgoKL1xzP3h4eFxzL0ksdXRmCgovXHN4eHhccy9JLHV0Zix0YWJsZXM9MgogICAgQUJceHs4NX14eHhceHthMH1YWVoKICAgIEFCXHh7YTB9eHh4XHh7ODV9WFlaCgovXFMgXFMvSSx1dGYsdGFibGVzPTIKICAgIFx4e2EyfSBceHs4NH0KICAgIEEgWgoKL2ErL3V0ZgogICAgYVx4ezEyM31hYVw9b2Zmc2V0PTEKICAgIGFceHsxMjN9YWFcPW9mZnNldD0zCiAgICBhXHh7MTIzfWFhXD1vZmZzZXQ9NApcPSBFeHBlY3QgYmFkIG9mZnNldCB2YWx1ZQogICAgYVx4ezEyM31hYVw9b2Zmc2V0PTYKXD0gRXhwZWN0IGJhZCBVVEYtOCBvZmZzZXQgICAgIAogICAgYVx4ezEyM31hYVw9b2Zmc2V0PTIKXD0gRXhwZWN0IG5vIG1hdGNoCiAgICBhXHh7MTIzfWFhXD1vZmZzZXQ9NQoKL1x4ezEyMzR9Ky9JaSx1dGYKCi9ceHsxMjM0fSs/L0lpLHV0ZgoKL1x4ezEyMzR9KysvSWksdXRmCgovXHh7MTIzNH17Mn0vSWksdXRmCgovW15ceHtjNH1dL0lCLHV0ZgoKL1grXHh7MjAwfS9JQix1dGYKCi9cUi9JLHV0ZgoKL1w3NzcvSUIsdXRmCgovXHcrXHh7QzR9L0IsdXRmCiAgICBhXHh7QzR9XHh7QzR9CgovXHcrXHh7QzR9L0IsdXRmLHRhYmxlcz0yCiAgICBhXHh7QzR9XHh7QzR9CgovXFcrXHh7QzR9L0IsdXRmCiAgICAhXHh7QzR9CgovXFcrXHh7QzR9L0IsdXRmLHRhYmxlcz0yCiAgICAhXHh7QzR9CgovXFcrXHh7QTF9L0IsdXRmCiAgICAhXHh7QTF9CgovXFcrXHh7QTF9L0IsdXRmLHRhYmxlcz0yCiAgICAhXHh7QTF9CgovWFxzK1x4e0EwfS9CLHV0ZgogICAgWFx4MjBceHtBMH1ceHtBMH0KCi9YXHMrXHh7QTB9L0IsdXRmLHRhYmxlcz0yCiAgICBYXHgyMFx4e0EwfVx4e0EwfQoKL1xTK1x4e0EwfS9CLHV0ZgogICAgWFx4e0EwfVx4e0EwfQoKL1xTK1x4e0EwfS9CLHV0Zix0YWJsZXM9MgogICAgWFx4e0EwfVx4e0EwfQoKL1x4e2EwfStccyEvQix1dGYKICAgIFx4e2EwfVx4MjAhCgovXHh7YTB9K1xzIS9CLHV0Zix0YWJsZXM9MgogICAgXHh7YTB9XHgyMCEKCi9BL3V0ZgogIFx4e2ZmMDAwMDQxfQogIFx4ezdmMDAwMDQxfQoKLygqVVRGOClhYmMvbmV2ZXJfdXRmCgovYWJjL3V0ZixuZXZlcl91dGYKCi9BXHh7MzkxfVx4ezEwNDI3fVx4e2ZmM2F9XHh7MWZiMH0vSUJpLHV0ZgoKL0FceHszOTF9XHh7MTA0Mjd9XHh7ZmYzYX1ceHsxZmIwfS9JQix1dGYKCi9BQlx4ezFmYjB9L0lCLHV0ZgoKL0FCXHh7MWZiMH0vSUJpLHV0ZgoKL1x4ezQwMX1ceHs0MjB9XHh7NDIxfVx4ezQyMn1ceHs0MjN9XHh7NDI0fVx4ezQyNX1ceHs0MjZ9XHh7NDI3fVx4ezQyOH1ceHs0Mjl9XHh7NDJhfVx4ezQyYn1ceHs0MmN9XHh7NDJkfVx4ezQyZX1ceHs0MmZ9L0lpLHV0ZgogICAgXHh7NDAxfVx4ezQyMH1ceHs0MjF9XHh7NDIyfVx4ezQyM31ceHs0MjR9XHh7NDI1fVx4ezQyNn1ceHs0Mjd9XHh7NDI4fVx4ezQyOX1ceHs0MmF9XHh7NDJifVx4ezQyY31ceHs0MmR9XHh7NDJlfVx4ezQyZn0KICAgIFx4ezQ1MX1ceHs0NDB9XHh7NDQxfVx4ezQ0Mn1ceHs0NDN9XHh7NDQ0fVx4ezQ0NX1ceHs0NDZ9XHh7NDQ3fVx4ezQ0OH1ceHs0NDl9XHh7NDRhfVx4ezQ0Yn1ceHs0NGN9XHh7NDRkfVx4ezQ0ZX1ceHs0NGZ9CgovW+KxpV0vQmksdXRmCgovW17isaVdL0JpLHV0ZgoKL1xoL0kKCi9cdi9JCgovXFIvSQoKL1tbOmJsYW5rOl1dL0IsdWNwCgovXHh7MjEyYX0rL0lpLHV0ZgogICAgS0tra1x4ezIxMmF9CgovcysvSWksdXRmCiAgICBTU3NzXHh7MTdmfQoKL1x4ezEwMH0qQS9JQix1dGYKICAgIEEKCi9ceHsxMDB9KlxkKD9SKS9JQix1dGYKCi9bWlx4ezEwMH1dL0lCLHV0ZgogICAgWlx4ezEwMH0KICAgIFx4ezEwMH0KICAgIFx4ezEwMH1aCgovW3otXHh7MTAwfV0vSUIsdXRmCgovW3pcUWEtZF3EgFxFXS9JQix1dGYKICAgIFx4ezEwMH0KICAgIMSAIAoKL1thYlx4ezEwMH1dYWJjKHh5eig/MSkpL0lCLHV0ZgoKL1x4ezEwMH0qXHMvSUIsdXRmCgovXHh7MTAwfSpcZC9JQix1dGYKCi9ceHsxMDB9Klx3L0lCLHV0ZgoKL1x4ezEwMH0qXEQvSUIsdXRmCgovXHh7MTAwfSpcUy9JQix1dGYKCi9ceHsxMDB9KlxXL0lCLHV0ZgoKL1tceHsxMDV9LVx4ezEwOX1dL0lCaSx1dGYKICAgIFx4ezEwNH0KICAgIFx4ezEwNX0KICAgIFx4ezEwOX0gIApcPSBFeHBlY3Qgbm8gbWF0Y2gKICAgIFx4ezEwMH0KICAgIFx4ezEwYX0gCiAgICAKL1t6LVx4ezEwMH1dL0lCaSx1dGYKICAgIFoKICAgIHoKICAgIFx4ezM5Y30KICAgIFx4ezE3OH0KICAgIHwKICAgIFx4ezgwfQogICAgXHh7ZmZ9CiAgICBceHsxMDB9CiAgICBceHsxMDF9IApcPSBFeHBlY3Qgbm8gbWF0Y2gKICAgIFx4ezEwMn0KICAgIFkKICAgIHkgICAgICAgICAgIAoKL1t6LVx4ezEwMH1dL0lCaSx1dGYKCi9ceHszYTN9Qi9JQmksdXRmCgovYWJjL3V0ZixyZXBsYWNlPcMKICAgIGFiYwoKLyg/PD0oYSkoPy0xKSl4L0ksdXRmCiAgICBhXHg4MHp4XD1vZmZzZXQ9MwoKIyBFbmQgb2YgdGVzdGlucHV0MTAK