~evanj/cms

f3e9a19873591d05ccf5be10aff90fb4bf32c298 — Evan M Jones 9 months ago 7b6b40d
Feat(landing): Adding feature list to landing page.
M internal/m/tier/tier.go => internal/m/tier/tier.go +5 -5
@@ 30,7 30,7 @@ var (
		[]TierOpt{
			{"Commercial use"},
			{"Five spaces"},
			{"15 user"},
			{"15 users"},
			{"60 API requests/min"},
			{"File uploads"},
		},


@@ 43,7 43,7 @@ var (
		[]TierOpt{
			{"Commercial use"},
			{"Unlimited spaces"},
			{"Unlimited user"},
			{"Unlimited users"},
			{"Unlimited API requests/min"},
			{"File uploads"},
		},


@@ 52,13 52,13 @@ var (
	SelfHost = Tier{
		"Self host",
		"$500",
		"release",
		"once",
		[]TierOpt{
			{"Commercial use"},
			{"Unlimited spaces"},
			{"Unlimited user"},
			{"Unlimited users"},
			{"Unlimited API requests/min"},
			{"Bring your own object storage"},
			{"Bring your object storage"},
		},
	}


M internal/s/tmpl/html/_footer.html => internal/s/tmpl/html/_footer.html +1 -1
@@ 4,7 4,7 @@
      <div class="col-12 col-md">
        <small class="d-block text-muted">Evan Jones</small>
        <small class="d-block text-muted">© 2020</small>
        <small class="d-block mb-3 text-muted"><a href='https://git.sr.ht/~evanj/cms/blob/master/LICENSE'>EUPL v1.2</a></small>
        <small class="d-block mb-3 text-muted"><a href='https://git.sr.ht/~evanj/cms/blob/master/LICENSE'>EUPL</a></small>
      </div>
      <!--
      <div class="col-6 col-md">

M internal/s/tmpl/html/index.html => internal/s/tmpl/html/index.html +54 -12
@@ 40,56 40,98 @@
      </div>
      <div class=row>

        <div class='col col-md-6'>
        <div class='col col-12 col-md-6'>
          <div class='card mb-3'>
            <div class='card-body'>
              <div class='card-text'>
                Some feat here.
                <a href='https://en.wikipedia.org/wiki/Web_API'>API</a>
                first CMS. Skipper is a fully-fledged content 
                management <mark>infrastructure</mark> as much as it is a
                content management system. 
              </div>
            </div>
          </div>
        </div>
        <div class='col col-md-6'>

        <div class='col col-12 col-md-6'>
          <div class='card mb-3'>
            <div class='card-body'>
              <div class='card-text'>
                Some feat here.
                Your content model your way. You're <mark>never
                restricted</mark> to a
                blessed content model, a la category/tags for pages/posts. 
              </div>
            </div>
          </div>
        </div>
        <div class='col col-md-6'>

        <div class='col col-12 col-md-6'>
          <div class='card mb-3'>
            <div class='card-body'>
              <div class='card-text'>
                Some feat here.
                <mark>Lightweight</mark> and <mark>fast</mark>; API calls to
                Skipper CMS will not be your bottleneck. Skipper CMS makes heavy
                use of caching.
              </div>
            </div>
          </div>
        </div>
        <div class='col col-md-6'>

        <div class='col col-12 col-md-6'>
          <div class='card mb-3'>
            <div class='card-body'>
              <div class='card-text'>
                Some feat here.
                100% committed to <mark>open source</mark>; you can see exactly what the code
                does and make improvements. See 
                <a href='https://git.sr.ht/~evanj/cms'>sourcehut</a>.
              </div>
            </div>
          </div>
        </div>
        <div class='col col-md-6'>

        <div class='col col-12 col-md-6'>
          <div class='card mb-3'>
            <div class='card-body'>
              <div class='card-text'>
                Some feat here.
                <mark>Easy</mark> to use for <mark>all</mark>. We keep a big
                tent. No matter your background, Skipper CMS is committed to
                assisting you well.
              </div>
            </div>
          </div>
        </div>
        <div class='col col-md-6'>

        <div class='col col-12 col-md-6'>
          <div class='card mb-3'>
            <div class='card-body'>
              <div class='card-text'>
                <mark>Quickly</mark> setup staging and test environments for
                your data. Tailored use for <mark>your environments</mark>.
              </div>
            </div>
          </div>
        </div>

        <div class='col col-12 col-md-6'>
          <div class='card mb-3'>
            <div class='card-body'>
              <div class='card-text'>
                <mark>Approachable</mark> 
                documention. Examples provided in 
                <a href='https://linux.die.net/man/1/curl'>cURL</a>.
                Use from your programming language or runtime of choice.
              </div>
            </div>
          </div>
        </div>

        <div class='col col-12 col-md-6'>
          <div class='card mb-3'>
            <div class='card-body'>
              <div class='card-text'>
                Some feat here.
                <mark>Freedom</mark> respecting license. The 
                <a href='http://www.gnu.org/philosophy/free-sw.html#content'>four essential freedoms</a> 
                are upheld under the EUPL v1.2 license. Compatible with AGPL v3.
              </div>
            </div>
          </div>

M internal/s/tmpl/tmpls_embed.go => internal/s/tmpl/tmpls_embed.go +2 -2
@@ 20,7 20,7 @@ func init() {

	tmpls["css/mvp.css"] = tostring("OnJvb3QgewogICAgLS1ib3JkZXItcmFkaXVzOiA1cHg7CiAgICAtLWJveC1zaGFkb3c6IDJweCAycHggMTBweDsKICAgIC0tY29sb3I6ICMxMThiZWU7CiAgICAtLWNvbG9yLWFjY2VudDogIzExOGJlZTBiOwogICAgLS1jb2xvci1iZzogI2ZmZjsKICAgIC0tY29sb3ItYmctc2Vjb25kYXJ5OiAjZTllOWU5OwogICAgLS1jb2xvci1zZWNvbmRhcnk6ICM5MjBkZTk7CiAgICAtLWNvbG9yLXNlY29uZGFyeS1hY2NlbnQ6ICM5MjBkZTkwYjsKICAgIC0tY29sb3Itc2hhZG93OiAjZjRmNGY0OwogICAgLS1jb2xvci10ZXh0OiAjMDAwOwogICAgLS1jb2xvci10ZXh0LXNlY29uZGFyeTogIzk5OTsKICAgIC0taG92ZXItYnJpZ2h0bmVzczogMS4yOwogICAgLS1qdXN0aWZ5LWltcG9ydGFudDogY2VudGVyOwogICAgLS1qdXN0aWZ5LW5vcm1hbDogbGVmdDsKICAgIC0tbGluZS1oZWlnaHQ6IDE1MCU7CiAgICAtLXdpZHRoLWNhcmQ6IDI4NXB4OwogICAgLS13aWR0aC1jYXJkLW1lZGl1bTogNDYwcHg7CiAgICAtLXdpZHRoLWNhcmQtd2lkZTogODAwcHg7CiAgICAtLXdpZHRoLWNvbnRlbnQ6IDEwODBweDsKfQoKLyogTVZQLmNzcyB2MS4wIC0gYnkgQW5keSBCcmV3ZXIgKi8KCi8qIExheW91dCAqLwphcnRpY2xlIGFzaWRlIHsKICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXNlY29uZGFyeS1hY2NlbnQpOwogICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS1jb2xvci1zZWNvbmRhcnkpOwogICAgcGFkZGluZzogMC4wMXJlbSAwLjhyZW07Cn0KCmJvZHkgewogICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmcpOwogICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpOwogICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCBPeHlnZW4tU2FucywgVWJ1bnR1LCBDYW50YXJlbGwsICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7CiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQpOwogICAgbWFyZ2luOiAwOwogICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgcGFkZGluZzogMXJlbSAwOwp9Cgpmb290ZXIsCmhlYWRlciwKbWFpbiB7CiAgICBtYXJnaW46IDAgYXV0bzsKICAgIG1heC13aWR0aDogdmFyKC0td2lkdGgtY29udGVudCk7CiAgICBwYWRkaW5nOiAycmVtIDFyZW07Cn0KCmhyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJnLXNlY29uZGFyeSk7CiAgICBib3JkZXI6IG5vbmU7CiAgICBoZWlnaHQ6IDFweDsKICAgIG1hcmdpbjogNHJlbSAwOwp9CgpzZWN0aW9uIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHZhcigtLWp1c3RpZnktaW1wb3J0YW50KTsKfQoKc2VjdGlvbiBhc2lkZSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1iZy1zZWNvbmRhcnkpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7CiAgICBib3gtc2hhZG93OiB2YXIoLS1ib3gtc2hhZG93KSB2YXIoLS1jb2xvci1zaGFkb3cpOwogICAgbWFyZ2luOiAxcmVtOwogICAgcGFkZGluZzogMS4yNXJlbTsKICAgIHdpZHRoOiB2YXIoLS13aWR0aC1jYXJkKTsKfQoKc2VjdGlvbiBhc2lkZTpob3ZlciB7CiAgICBib3gtc2hhZG93OiB2YXIoLS1ib3gtc2hhZG93KSB2YXIoLS1jb2xvci1iZy1zZWNvbmRhcnkpOwp9CgpzZWN0aW9uIGFzaWRlIGltZyB7CiAgICBtYXgtd2lkdGg6IDEwMCU7Cn0KCi8qIEhlYWRlcnMgKi8KYXJ0aWNsZSBoZWFkZXIsCmRpdiBoZWFkZXIsCm1haW4gaGVhZGVyIHsKICAgIHBhZGRpbmctdG9wOiAwOwp9CgpoZWFkZXIgewogICAgdGV4dC1hbGlnbjogdmFyKC0tanVzdGlmeS1pbXBvcnRhbnQpOwp9CgpoZWFkZXIgYSBiLApoZWFkZXIgYSBlbSwKaGVhZGVyIGEgaSwKaGVhZGVyIGEgc3Ryb25nIHsKICAgIG1hcmdpbi1sZWZ0OiAxcmVtOwogICAgbWFyZ2luLXJpZ2h0OiAxcmVtOwp9CgpoZWFkZXIgbmF2IGltZyB7CiAgICBtYXJnaW46IDFyZW0gMDsKfQoKc2VjdGlvbiBoZWFkZXIgewogICAgcGFkZGluZy10b3A6IDA7CiAgICB3aWR0aDogMTAwJTsKfQoKLyogTmF2ICovCm5hdiB7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZGlzcGxheTogZmxleDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgbWFyZ2luLWJvdHRvbTogN3JlbTsKfQoKbmF2IHVsIHsKICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICBwYWRkaW5nOiAwOwp9CgpuYXYgdWwgbGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luOiAwIDAuNXJlbTsKfQoKLyogVHlwb2dyYXBoeSAqLwpjb2RlIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbjogMCAwLjFyZW07CiAgICBwYWRkaW5nOiAwcmVtIDAuNXJlbTsKfQoKY29kZSwKc2FtcCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQpOwogICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7CiAgICB0ZXh0LWFsaWduOiB2YXIoLS1qdXN0aWZ5LW5vcm1hbCk7Cn0KCmgxLApoMiwKaDMsCmg0LApoNSwKaDYgewogICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0KTsKfQoKbWFyayB7CiAgICBwYWRkaW5nOiAwLjFyZW07Cn0KCm9sIGxpLAp1bCBsaSB7CiAgICBwYWRkaW5nOiAwLjJyZW0gMDsKfQoKcCB7CiAgICBtYXJnaW46IDAuNzVyZW0gMDsKICAgIHBhZGRpbmc6IDA7Cn0KCnNhbXAgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW46IDFyZW0gMDsKICAgIG1heC13aWR0aDogdmFyKC0td2lkdGgtY2FyZC13aWRlKTsKICAgIHBhZGRpbmc6IDFyZW07Cn0KCnNtYWxsIHsKICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7Cn0KCnN1cCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1zZWNvbmRhcnkpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7CiAgICBjb2xvcjogdmFyKC0tY29sb3ItYmcpOwogICAgZm9udC1zaXplOiB4eC1zbWFsbDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgbWFyZ2luOiAwLjJyZW07CiAgICBwYWRkaW5nOiAwLjJyZW0gMC4zcmVtOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAtMnB4Owp9CgovKiBMaW5rcyAqLwphIHsKICAgIGNvbG9yOiB2YXIoLS1jb2xvci1zZWNvbmRhcnkpOwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCmE6aG92ZXIgewogICAgZmlsdGVyOiBicmlnaHRuZXNzKHZhcigtLWhvdmVyLWJyaWdodG5lc3MpKTsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9CgphIGIsCmEgZW0sCmEgaSwKYSBzdHJvbmcsCmJ1dHRvbiB7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtc2l6ZTogbWVkaXVtOwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBtYXJnaW46IDEuNXJlbSAwIDAuNXJlbSAwOwogICAgcGFkZGluZzogMXJlbSAycmVtOwp9CgppbnB1dFt0eXBlPXN1Ym1pdF06aG92ZXIsCmJ1dHRvbjpob3ZlciB7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmaWx0ZXI6IGJyaWdodG5lc3ModmFyKC0taG92ZXItYnJpZ2h0bmVzcykpOwp9CgphIGIsCmEgc3Ryb25nLAppbnB1dFt0eXBlPXN1Ym1pdF0sCmJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvcik7CiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvcik7CiAgICBjb2xvcjogdmFyKC0tY29sb3ItYmcpOwp9CgphIGVtLAphIGkgewogICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3IpOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7CiAgICBjb2xvcjogdmFyKC0tY29sb3IpOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcGFkZGluZzogMXJlbSAycmVtOwp9CgovKiBJbWFnZXMgKi8KZmlndXJlIHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCmZpZ3VyZSBmaWdjYXB0aW9uIHsKICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7Cn0KCi8qIEZvcm1zICovCmZvcm0gewogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYmctc2Vjb25kYXJ5KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpOwogICAgYm94LXNoYWRvdzogdmFyKC0tYm94LXNoYWRvdykgdmFyKC0tY29sb3Itc2hhZG93KTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWF4LXdpZHRoOiB2YXIoLS13aWR0aC1jYXJkLXdpZGUpOwogICAgbWluLXdpZHRoOiB2YXIoLS13aWR0aC1jYXJkKTsKICAgIHBhZGRpbmc6IDEuNXJlbTsKICAgIHRleHQtYWxpZ246IHZhcigtLWp1c3RpZnktbm9ybWFsKTsKfQoKZm9ybSBoZWFkZXIgewogICAgbWFyZ2luOiAxLjVyZW0gMDsKICAgIHBhZGRpbmc6IDEuNXJlbSAwOwp9CgppbnB1dCwKbGFiZWwsCnNlbGVjdCwKdGV4dGFyZWEgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBmb250LXNpemU6IGluaGVyaXQ7CiAgICBtYXgtd2lkdGg6IHZhcigtLXdpZHRoLWNhcmQtd2lkZSk7Cn0KCmlucHV0LApzZWxlY3QsCnRleHRhcmVhIHsKICAgIG1hcmdpbi1ib3R0b206IDFyZW07Cn0KCmlucHV0LApzZWxlY3QsCnRleHRhcmVhIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJnLXNlY29uZGFyeSk7CiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTsKICAgIHBhZGRpbmc6IDAuNHJlbSAwLjhyZW07Cn0KCmxhYmVsIHsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgbWFyZ2luLWJvdHRvbTogMC4ycmVtOwp9CgovKiBUYWJsZXMgKi8KdGFibGUgewogICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYmctc2Vjb25kYXJ5KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpOwogICAgYm9yZGVyLXNwYWNpbmc6IDA7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcGFkZGluZzogMDsKfQoKdGFibGUgdGQsCnRhYmxlIHRoLAp0YWJsZSB0ciB7CiAgICBwYWRkaW5nOiAwLjRyZW0gMC44cmVtOwogICAgdGV4dC1hbGlnbjogdmFyKC0tanVzdGlmeS1pbXBvcnRhbnQpOwp9Cgp0YWJsZSB0aGVhZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvcik7CiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7CiAgICBjb2xvcjogdmFyKC0tY29sb3ItYmcpOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogMDsKfQoKdGFibGUgdGhlYWQgdGg6Zmlyc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7Cn0KCnRhYmxlIHRoZWFkIHRoOmxhc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpOwp9Cgp0YWJsZSB0aGVhZCB0aDpmaXJzdC1jaGlsZCwKdGFibGUgdHIgdGQ6Zmlyc3QtY2hpbGQgewogICAgdGV4dC1hbGlnbjogdmFyKC0tanVzdGlmeS1ub3JtYWwpOwp9CgovKiBRdW90ZXMgKi8KYmxvY2txdW90ZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogeC1sYXJnZTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodCk7CiAgICBtYXJnaW46IDFyZW0gYXV0bzsKICAgIG1heC13aWR0aDogdmFyKC0td2lkdGgtY2FyZC1tZWRpdW0pOwogICAgcGFkZGluZzogMS41cmVtIDFyZW07CiAgICB0ZXh0LWFsaWduOiB2YXIoLS1qdXN0aWZ5LWltcG9ydGFudCk7Cn0KCmJsb2NrcXVvdGUgZm9vdGVyIHsKICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogc21hbGw7CiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQpOwogICAgcGFkZGluZzogMS41cmVtIDA7Cn0KCi8qIEN1c3RvbSBzdHlsZXMgKi8K")

	tmpls["html/_footer.html"] = tostring("PGRpdiBjbGFzcz1jb250YWluZXI+CiAgPGZvb3RlciBjbGFzcz0icHQtNCBteS1tZC01IHB0LW1kLTUgYm9yZGVyLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kIj4KICAgICAgICA8c21hbGwgY2xhc3M9ImQtYmxvY2sgdGV4dC1tdXRlZCI+RXZhbiBKb25lczwvc21hbGw+CiAgICAgICAgPHNtYWxsIGNsYXNzPSJkLWJsb2NrIHRleHQtbXV0ZWQiPsKpIDIwMjA8L3NtYWxsPgogICAgICAgIDxzbWFsbCBjbGFzcz0iZC1ibG9jayBtYi0zIHRleHQtbXV0ZWQiPjxhIGhyZWY9J2h0dHBzOi8vZ2l0LnNyLmh0L35ldmFuai9jbXMvYmxvYi9tYXN0ZXIvTElDRU5TRSc+RVVQTCB2MS4yPC9hPjwvc21hbGw+CiAgICAgIDwvZGl2PgogICAgICA8IS0tCiAgICAgIDxkaXYgY2xhc3M9ImNvbC02IGNvbC1tZCI+CiAgICAgICAgPGg1PkZlYXR1cmVzPC9oNT4KICAgICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgdGV4dC1zbWFsbCI+CiAgICAgICAgICA8bGk+PGEgY2xhc3M9InRleHQtbXV0ZWQiIGhyZWY9IiMiPkNvb2wgc3R1ZmY8L2E+PC9saT4KICAgICAgICAgIDxsaT48YSBjbGFzcz0idGV4dC1tdXRlZCIgaHJlZj0iIyI+UmFuZG9tIGZlYXR1cmU8L2E+PC9saT4KICAgICAgICAgIDxsaT48YSBjbGFzcz0idGV4dC1tdXRlZCIgaHJlZj0iIyI+VGVhbSBmZWF0dXJlPC9hPjwvbGk+CiAgICAgICAgICA8bGk+PGEgY2xhc3M9InRleHQtbXV0ZWQiIGhyZWY9IiMiPlN0dWZmIGZvciBkZXZlbG9wZXJzPC9hPjwvbGk+CiAgICAgICAgICA8bGk+PGEgY2xhc3M9InRleHQtbXV0ZWQiIGhyZWY9IiMiPkFub3RoZXIgb25lPC9hPjwvbGk+CiAgICAgICAgICA8bGk+PGEgY2xhc3M9InRleHQtbXV0ZWQiIGhyZWY9IiMiPkxhc3QgdGltZTwvYT48L2xpPgogICAgICAgIDwvdWw+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb2wtNiBjb2wtbWQiPgogICAgICAgIDxoNT5SZXNvdXJjZXM8L2g1PgogICAgICAgIDx1bCBjbGFzcz0ibGlzdC11bnN0eWxlZCB0ZXh0LXNtYWxsIj4KICAgICAgICAgIDxsaT48YSBjbGFzcz0idGV4dC1tdXRlZCIgaHJlZj0iIyI+UmVzb3VyY2U8L2E+PC9saT4KICAgICAgICAgIDxsaT48YSBjbGFzcz0idGV4dC1tdXRlZCIgaHJlZj0iIyI+UmVzb3VyY2UgbmFtZTwvYT48L2xpPgogICAgICAgICAgPGxpPjxhIGNsYXNzPSJ0ZXh0LW11dGVkIiBocmVmPSIjIj5Bbm90aGVyIHJlc291cmNlPC9hPjwvbGk+CiAgICAgICAgICA8bGk+PGEgY2xhc3M9InRleHQtbXV0ZWQiIGhyZWY9IiMiPkZpbmFsIHJlc291cmNlPC9hPjwvbGk+CiAgICAgICAgPC91bD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbC02IGNvbC1tZCI+CiAgICAgICAgPGg1PkFib3V0PC9oNT4KICAgICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgdGV4dC1zbWFsbCI+CiAgICAgICAgICA8bGk+PGEgY2xhc3M9InRleHQtbXV0ZWQiIGhyZWY9IiMiPlRlYW08L2E+PC9saT4KICAgICAgICAgIDxsaT48YSBjbGFzcz0idGV4dC1tdXRlZCIgaHJlZj0iIyI+TG9jYXRpb25zPC9hPjwvbGk+CiAgICAgICAgICA8bGk+PGEgY2xhc3M9InRleHQtbXV0ZWQiIGhyZWY9IiMiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICAgIDxsaT48YSBjbGFzcz0idGV4dC1tdXRlZCIgaHJlZj0iIyI+VGVybXM8L2E+PC9saT4KICAgICAgICA8L3VsPgogICAgICA8L2Rpdj4KICAgICAgLS0+CiAgICA8L2Rpdj4KICA8L2Zvb3Rlcj4KPC9kaXY+Cnt7aWYgLkF9fQo8aW1nIHN0eWxlPSdwb3NpdGlvbjogZml4ZWQ7IGJvdHRvbTogMDsgcmlnaHQ6IDA7JyBzcmM9Ii8vc2tpcHBlcmNtcy5nb2F0Y291bnRlci5jb20vY291bnQ/cD17ey5BLlBhdGh9fXt7aWYgLkEuUmVmZXJyZXJ9fSZyPXt7LkEuUmVmZXJyZXJ9fXt7ZW5kfX0mcm5kPXt7LkEuUk5EfX0iPgp7e2VuZH19Cg==")
	tmpls["html/_footer.html"] = tostring("PGRpdiBjbGFzcz1jb250YWluZXI+CiAgPGZvb3RlciBjbGFzcz0icHQtNCBteS1tZC01IHB0LW1kLTUgYm9yZGVyLXRvcCI+CiAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kIj4KICAgICAgICA8c21hbGwgY2xhc3M9ImQtYmxvY2sgdGV4dC1tdXRlZCI+RXZhbiBKb25lczwvc21hbGw+CiAgICAgICAgPHNtYWxsIGNsYXNzPSJkLWJsb2NrIHRleHQtbXV0ZWQiPsKpIDIwMjA8L3NtYWxsPgogICAgICAgIDxzbWFsbCBjbGFzcz0iZC1ibG9jayBtYi0zIHRleHQtbXV0ZWQiPjxhIGhyZWY9J2h0dHBzOi8vZ2l0LnNyLmh0L35ldmFuai9jbXMvYmxvYi9tYXN0ZXIvTElDRU5TRSc+RVVQTDwvYT48L3NtYWxsPgogICAgICA8L2Rpdj4KICAgICAgPCEtLQogICAgICA8ZGl2IGNsYXNzPSJjb2wtNiBjb2wtbWQiPgogICAgICAgIDxoNT5GZWF0dXJlczwvaDU+CiAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIHRleHQtc21hbGwiPgogICAgICAgICAgPGxpPjxhIGNsYXNzPSJ0ZXh0LW11dGVkIiBocmVmPSIjIj5Db29sIHN0dWZmPC9hPjwvbGk+CiAgICAgICAgICA8bGk+PGEgY2xhc3M9InRleHQtbXV0ZWQiIGhyZWY9IiMiPlJhbmRvbSBmZWF0dXJlPC9hPjwvbGk+CiAgICAgICAgICA8bGk+PGEgY2xhc3M9InRleHQtbXV0ZWQiIGhyZWY9IiMiPlRlYW0gZmVhdHVyZTwvYT48L2xpPgogICAgICAgICAgPGxpPjxhIGNsYXNzPSJ0ZXh0LW11dGVkIiBocmVmPSIjIj5TdHVmZiBmb3IgZGV2ZWxvcGVyczwvYT48L2xpPgogICAgICAgICAgPGxpPjxhIGNsYXNzPSJ0ZXh0LW11dGVkIiBocmVmPSIjIj5Bbm90aGVyIG9uZTwvYT48L2xpPgogICAgICAgICAgPGxpPjxhIGNsYXNzPSJ0ZXh0LW11dGVkIiBocmVmPSIjIj5MYXN0IHRpbWU8L2E+PC9saT4KICAgICAgICA8L3VsPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29sLTYgY29sLW1kIj4KICAgICAgICA8aDU+UmVzb3VyY2VzPC9oNT4KICAgICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgdGV4dC1zbWFsbCI+CiAgICAgICAgICA8bGk+PGEgY2xhc3M9InRleHQtbXV0ZWQiIGhyZWY9IiMiPlJlc291cmNlPC9hPjwvbGk+CiAgICAgICAgICA8bGk+PGEgY2xhc3M9InRleHQtbXV0ZWQiIGhyZWY9IiMiPlJlc291cmNlIG5hbWU8L2E+PC9saT4KICAgICAgICAgIDxsaT48YSBjbGFzcz0idGV4dC1tdXRlZCIgaHJlZj0iIyI+QW5vdGhlciByZXNvdXJjZTwvYT48L2xpPgogICAgICAgICAgPGxpPjxhIGNsYXNzPSJ0ZXh0LW11dGVkIiBocmVmPSIjIj5GaW5hbCByZXNvdXJjZTwvYT48L2xpPgogICAgICAgIDwvdWw+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb2wtNiBjb2wtbWQiPgogICAgICAgIDxoNT5BYm91dDwvaDU+CiAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIHRleHQtc21hbGwiPgogICAgICAgICAgPGxpPjxhIGNsYXNzPSJ0ZXh0LW11dGVkIiBocmVmPSIjIj5UZWFtPC9hPjwvbGk+CiAgICAgICAgICA8bGk+PGEgY2xhc3M9InRleHQtbXV0ZWQiIGhyZWY9IiMiPkxvY2F0aW9uczwvYT48L2xpPgogICAgICAgICAgPGxpPjxhIGNsYXNzPSJ0ZXh0LW11dGVkIiBocmVmPSIjIj5Qcml2YWN5PC9hPjwvbGk+CiAgICAgICAgICA8bGk+PGEgY2xhc3M9InRleHQtbXV0ZWQiIGhyZWY9IiMiPlRlcm1zPC9hPjwvbGk+CiAgICAgICAgPC91bD4KICAgICAgPC9kaXY+CiAgICAgIC0tPgogICAgPC9kaXY+CiAgPC9mb290ZXI+CjwvZGl2Pgp7e2lmIC5BfX0KPGltZyBzdHlsZT0ncG9zaXRpb246IGZpeGVkOyBib3R0b206IDA7IHJpZ2h0OiAwOycgc3JjPSIvL3NraXBwZXJjbXMuZ29hdGNvdW50ZXIuY29tL2NvdW50P3A9e3suQS5QYXRofX17e2lmIC5BLlJlZmVycmVyfX0mcj17ey5BLlJlZmVycmVyfX17e2VuZH19JnJuZD17ey5BLlJORH19Ij4Ke3tlbmR9fQo=")

	tmpls["html/_head.html"] = tostring("PG1ldGEgY2hhcnNldD0ndXRmLTgnPgo8bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0nd2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEnPgo8bGluayByZWw9J2ljb24nIHR5cGU9J2ltYWdlL3gtaWNvbicgaHJlZj0naHR0cHM6Ly9mYXZpY29uLmV2YW5qb24uZXMvMC8xMDUvMjE3LzMyL2Zhdmljb24uaWNvJyAvPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy9zdGF0aWMvY3NzL2Jvb3RzdHJhcC5taW4uY3NzJyAvPgo=")



@@ 36,7 36,7 @@ func init() {

	tmpls["html/hook.html"] = tostring("PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ZW4+CjxoZWFkPgogIHt7IHRlbXBsYXRlICJodG1sL19oZWFkLmh0bWwiIH19CiAgPHRpdGxlPkNNUyB8IHt7IC5TcGFjZS5OYW1lIH19IHwge3sgLkhvb2suVVJMIH19PC90aXRsZT4KPC9oZWFkPgo8Ym9keSBjbGFzcz0naG9vayBiZy1saWdodCc+CiAgPHN0eWxlPnt7IHRlbXBsYXRlICJjc3MvbWFpbi5jc3MiIH19PC9zdHlsZT4KICA8bWFpbj4KICAgIHt7IHRlbXBsYXRlICJodG1sL19oZWFkZXIuaHRtbCIgJCB9fQogICAgPGRpdiBjbGFzcz0icHJpY2luZy1oZWFkZXIgcHgtMyBweS0zIHB0LW1kLTUgcGItbWQtNCBteC1hdXRvIHRleHQtY2VudGVyIj4KICAgICAgPGgxIGNsYXNzPSJkaXNwbGF5LTQiPnt7IC5Ib29rLlVSTCB9fTwvaDE+CiAgICA8L2Rpdj4KICAgIDxhcnRpY2xlIGNsYXNzPWNvbnRhaW5lcj4KICAgICAgPGZvcm0gbWV0aG9kPVBPU1QgYWN0aW9uPScvaG9vaycgZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YSc+CiAgICAgICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9bWV0aG9kIHZhbHVlPURFTEVURSAvPgogICAgICAgIDxpbnB1dCByZXF1aXJlZCB0eXBlPWhpZGRlbiBuYW1lPXNwYWNlIHZhbHVlPSJ7eyAuU3BhY2UuSUQgfX0iIC8+CiAgICAgICAgPGlucHV0IHJlcXVpcmVkIHR5cGU9aGlkZGVuIG5hbWU9aG9vayB2YWx1ZT0ie3sgLkhvb2suSUQgfX0iIC8+CiAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9ImRlbGV0ZU1vZGFsIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJkZWxldGVNb2RhbExhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLXNjcm9sbGFibGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgPGg1IGNsYXNzPSJtb2RhbC10aXRsZSIgaWQ9ImRlbGV0ZU1vZGFsTGFiZWwiPkRlbGV0ZSB7eyAuSG9vay5VUkwgfX08L2g1PgogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iQ2xvc2UiPgogICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdvPC9idXR0b24+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZm9ybT4KICAgIDwvZGl2PgogICAge3sgdGVtcGxhdGUgImh0bWwvX2Zvb3Rlci5odG1sIiAkIH19CiAgPC9tYWluPgogIHt7IHRlbXBsYXRlICJodG1sL19zY3JpcHRzLmh0bWwiIH19CiAgPHNjcmlwdD57eyB0ZW1wbGF0ZSAianMvbWFpbi5qcyIgJCB9fTwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K")

	tmpls["html/index.html"] = tostring("PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ZW4+CjxoZWFkPgogIHt7IHRlbXBsYXRlICJodG1sL19oZWFkLmh0bWwiIH19CiAgPHRpdGxlPkNNUzwvdGl0bGU+CjwvaGVhZD4KPGJvZHkgY2xhc3M9J2luZGV4IGJnLWxpZ2h0Jz4KICA8c3R5bGU+e3sgdGVtcGxhdGUgImNzcy9tYWluLmNzcyIgfX08L3N0eWxlPgogIDxtYWluPgogICAge3sgdGVtcGxhdGUgImh0bWwvX2hlYWRlci5odG1sIiAkIH19CiAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWhlYWRlciBweC0zIHB5LTUgcHQtbWQtNSBwYi1tZC00IG14LWF1dG8gdGV4dC1jZW50ZXIiPgogICAgICA8aDEgY2xhc3M9ImRpc3BsYXktMSI+U2tpcHBlciBDTVM8L2gxPgogICAgICA8cCBjbGFzcz0ibGVhZCI+QW4gb2xkLXNjaG9vbCBjb250ZW50IG1hbmFnZW1lbnQgc3lzdGVtIGZvciBtb3N0LjwvcD4KICAgIDwvZGl2PgogICAge3tpZiBub3QgLlVzZXJ9fQogICAgPGRpdiBjbGFzcz0nY29udGFpbmVyIG15LTUnPgogICAgICA8ZGl2IGNsYXNzPSdyb3cnPgogICAgICAgIDxkaXYgY2xhc3M9J2NvbCBjb2wtMTInPgogICAgICAgICAgPGgyIGNsYXNzPSdkaXNwbGF5LTQgdGV4dC1jZW50ZXInPkNvbnRlbnQgTWFuYWdlbWVudCBTeXN0ZW0gKENNUyk8L2gyPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9J2NvbCBvZmZzZXQtbGctMiBjb2wtbGctOCc+CiAgICAgICAgICA8dGFibGU+CiAgICAgICAgICAgIDx0ciB2YWxpZ249dG9wPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSdtci0zJz48c3Ryb25nPk5vdW4uPC9zdHJvbmc+PC9wPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHA+QSBjb21wdXRlciBzb2Z0d2FyZSBzeXN0ZW0gZm9yIG9yZ2FuaXppbmcgYW5kIGZhY2lsaXRhdGluZyBjb2xsYWJvcmF0aXZlIGNyZWF0aW9uIG9mIGRvY3VtZW50cyBhbmQgb3RoZXIgY29udGVudCwgZXNwZWNpYWxseSBmb3IgZGlzcGxheWluZyBjb250ZW50IHRvIGEgd2Vic2l0ZSBvciBtb2JpbGUgYXBwbGljYXRpb24uPC9wPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0nY29udGFpbmVyIG15LTUnPgogICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbCI+CiAgICAgICAgICA8aDEgY2xhc3M9ImRpc3BsYXktNCB0ZXh0LWNlbnRlciBtYi01Ij5GZWF0dXJlczwvaDE+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPXJvdz4KCiAgICAgICAgPGRpdiBjbGFzcz0nY29sIGNvbC1tZC02Jz4KICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQgbWItMyc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQtYm9keSc+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZC10ZXh0Jz4KICAgICAgICAgICAgICAgIFNvbWUgZmVhdCBoZXJlLgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9J2NvbCBjb2wtbWQtNic+CiAgICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkIG1iLTMnPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkLWJvZHknPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQtdGV4dCc+CiAgICAgICAgICAgICAgICBTb21lIGZlYXQgaGVyZS4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSdjb2wgY29sLW1kLTYnPgogICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZCBtYi0zJz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZC1ib2R5Jz4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkLXRleHQnPgogICAgICAgICAgICAgICAgU29tZSBmZWF0IGhlcmUuCiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0nY29sIGNvbC1tZC02Jz4KICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQgbWItMyc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQtYm9keSc+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZC10ZXh0Jz4KICAgICAgICAgICAgICAgIFNvbWUgZmVhdCBoZXJlLgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9J2NvbCBjb2wtbWQtNic+CiAgICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkIG1iLTMnPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkLWJvZHknPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQtdGV4dCc+CiAgICAgICAgICAgICAgICBTb21lIGZlYXQgaGVyZS4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSdjb2wgY29sLW1kLTYnPgogICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZCBtYi0zJz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZC1ib2R5Jz4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkLXRleHQnPgogICAgICAgICAgICAgICAgU29tZSBmZWF0IGhlcmUuCiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0nY29udGFpbmVyIG15LTUnPgogICAgICA8ZGl2IGlkPSdwcmljaW5nJyBjbGFzcz0icm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjb2wiPgogICAgICAgICAgPGgxIGNsYXNzPSJkaXNwbGF5LTQgdGV4dC1jZW50ZXIgbWItNSI+UHJpY2luZzwvaDE+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJyb3cgcm93LWNvbHMtMSByb3ctY29scy1tZC0yIHJvdy1jb2xzLXhsLTQgbWItNSB0ZXh0LWNlbnRlciI+CiAgICAgICAge3tyYW5nZSAuVGllcnN9fQogICAgICAgIDxkaXYgY2xhc3M9ImNvbCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkIG1iLTQgc2hhZG93LXNtIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaGVhZGVyIj4KICAgICAgICAgICAgPGg0IGNsYXNzPSJteS0wIGZvbnQtd2VpZ2h0LW5vcm1hbCI+e3suTmFtZX19PC9oND4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1ib2R5Ij4KICAgICAgICAgICAgPGgxIGNsYXNzPSJjYXJkLXRpdGxlIHByaWNpbmctY2FyZC10aXRsZSI+e3suUHJpY2V9fSA8c21hbGwgY2xhc3M9InRleHQtbXV0ZWQiPi8ge3suVGltZVVuaXR9fTwvc21hbGw+PC9oMT4KICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIG10LTMgbWItNCI+CiAgICAgICAgICAgICAge3tyYW5nZSAuT3B0c319CiAgICAgICAgICAgICAgICA8bGk+e3suVGV4dH19PC9saT4KICAgICAgICAgICAgICB7e2VuZH19CiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICB7e2VuZH19CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICB7e2VuZH19CiAgICA8IS0tCiAgICA8ZGl2IGNsYXNzPSdjb250YWluZXInPgogICAgICA8ZGl2IGNsYXNzPSdyb3cnPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbC0xMiBvZmZzZXQtMCBjb2wtbGctOCBvZmZzZXQtbGctMiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC13YXJuaW5nIiByb2xlPSJhbGVydCI+CiAgICAgICAgICAgIDxwPjxzdHJvbmc+V0FSTklORzo8L3N0cm9uZz4gVGhpcyBzaXRlIGlzIGluIDxzdHJvbmc+QUxQSEE8L3N0cm9uZz4uIAogICAgICAgICAgICBUaGlzIHNpdGUgaXMgYSBjb250ZW50IG1hbmFnZW1lbnQgc3lzdGVtL2luZnJhc3RydWN0dXJlLiBNZWFuaW5nOiAKICAgICAgICAgICAgaXQncyBwdXJwb3NlIGlzIHRvIGFsbG93IHVzZXJzIHRvIGdlbmVyYXRlIGNvbnRlbnQuIFRoYXQncyBhIAogICAgICAgICAgICBkYW5nZXJvdXMgdGhpbmcuIEluc3RlYWQgb2YgZm9jdXNpbmcgb24gZmlnaHRpbmcgYWJ1c2UgSSdsbCBiZSBhdXRvIAogICAgICAgICAgICBkZWxldGluZyBhbGwgY29udGVudCAoZXhjZXB0IGZvciBteSBvd24pIG9uIGEgcmVndWxhciBhbmQgdGlnaHQgCiAgICAgICAgICAgIGludGVydmFsLiBZb3Ugc3RpbGwgbWlnaHQgaGF2ZSBmdW4gcG9raW5nIGFyb3VuZCBvbiB0aGlzIHNpdGUuIEl0J3MgCiAgICAgICAgICAgIGFsc28gPGEgaHJlZj0naHR0cHM6Ly93d3cuZ251Lm9yZy9waGlsb3NvcGh5L2Zsb3NzLWFuZC1mb3NzLmVuLmh0bWwnPkZMT1NTLDwvYT4KICAgICAgICAgICAgc28geW91IGNhbiBlbmpveSBzZWxmLWhvc3RpbmcgeW91cnNlbGYgaWYgeW91IGFyZSBzbyBpbmNsaW5lZC4gSWYgeW91CiAgICAgICAgICAgIGZpbmQgYnVncyAoeW91IG1vc3QgbGlrZWx5IHdpbGwpIG9yIGhhdmUgZmVhdHVyZSByZXF1ZXN0cyBwbGVhc2Ugc2VuZCAKICAgICAgICAgICAgdGhlbSBteSB3YXkuIEl0IGlzIGFwcHJlY2lhdGVkLiBUaGFuayB5b3UuPC9wPgogICAgICAgICAgICA8cD5JZiB5b3UgbmVlZCB0byBoaXQgdGhlIEFQSSB0cnkgY1VSTCdpbmcgYW55IHBhZ2UgeW91IHNlZSBpbiB0aGUgCiAgICAgICAgICAgIFVSTCBiYXIgKGluY2x1ZGUgYmFzaWMgYXV0aCkuIEEgc2ltcGxlIHVzZSBjYXNlIG9mIGNvbnN1bWluZyB0aGlzIHNpdGUgY2FuIGJlIGZvdW5kIG9uIG15IAogICAgICAgICAgICA8YSBocmVmPSdodHRwczovL2dpdC5zci5odC9+ZXZhbmovZXZhbmpvbi5lcy90cmVlL21hc3Rlci9wa2cvY21zL2Ntcy5nbyc+cGVyc29uYWwgc2l0ZTwvYT4uPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICAtLT4KICAgIDxhcnRpY2xlPgogICAgICB7eyBpZiAuVXNlciB9fQogICAgICAgIDxmb3JtIG1ldGhvZD1QT1NUIGFjdGlvbj0nL3NwYWNlJyBlbmN0eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJz4KICAgICAgICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPW1ldGhvZCB2YWx1ZT1QT1NUIC8+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iZXhhbXBsZU1vZGFsIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJleGFtcGxlTW9kYWxMYWJlbCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLXNjcm9sbGFibGUiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPSJtb2RhbC10aXRsZSIgaWQ9ImV4YW1wbGVNb2RhbExhYmVsIj5DcmVhdGUgYSBuZXcgc3BhY2U8L2g1PgogICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJDbG9zZSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ic3BhY2VOYW1lIj5OYW1lPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9bmFtZSB0eXBlPXRleHQgaWQ9InNwYWNlTmFtZSIgY2xhc3M9Im1iLTMgZm9ybS1jb250cm9sIiBwbGFjZWhvbGRlcj0iTmFtZSIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InNwYWNlRGVzYyI+RGVzY3JpcHRpb248L2xhYmVsPgogICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1kZXNjIHR5cGU9dGV4dCBpZD0ic3BhY2VEZXNjIiBjbGFzcz0ibWItMyBmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJEZXNjcmlwdGlvbiIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiIGRhdGEtZGlzbWlzcz0ibW9kYWwiPkNsb3NlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij5HbzwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSdyb3cnPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdvZmZzZXQtbGctMyBjb2wtbGctNic+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibXktMyBwLTMgYmctd2hpdGUgcm91bmRlZCBzaGFkb3ctc20iPgogICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9ImQtYmxvY2sgdGV4dC1yaWdodCBmbG9hdC1yaWdodCIgZGF0YS10b2dnbGU9Im1vZGFsIiBkYXRhLXRhcmdldD0iI2V4YW1wbGVNb2RhbCI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyI+Q3JlYXRlIGEgbmV3IHNwYWNlPC9hPgogICAgICAgICAgICAgICAgICA8L3NtYWxsPgogICAgICAgICAgICAgICAgPGg2IGNsYXNzPSJib3JkZXItYm90dG9tIGJvcmRlci1ncmF5IHBiLTIgbWItMCI+WW91ciBzcGFjZXM8L2g2PgogICAgICAgICAgICAgICAge3sgaWYgLlNwYWNlcy5MaXN0IH19CiAgICAgICAgICAgICAgICAgIHt7IHJhbmdlIC5TcGFjZXMuTGlzdCB9fQogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYSB0ZXh0LW11dGVkIHB0LTMiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Jy9zcGFjZS97eyAuSUQgfX0nICBjbGFzcz0iZC1ibG9jayBtZWRpYS1ib2R5IHBiLTMgbWItMCBzbWFsbCBsaC0xMjUgYm9yZGVyLWJvdHRvbSBib3JkZXItZ3JheSI+CiAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPSJkLWJsb2NrIHRleHQtZ3JheS1kYXJrIj57eyAuTmFtZSB9fTwvc3Ryb25nPgogICAgICAgICAgICAgICAgICAgICAge3sgLkRlc2MgfX0KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICB7eyBlbmQgfX0KICAgICAgICAgICAgICAgICAge3sgaWYgLlNwYWNlcy5Nb3JlIH19CiAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0iZC1ibG9jayB0ZXh0LXJpZ2h0IG10LTMiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii8/YmVmb3JlPXt7IC5TcGFjZXMuQmVmb3JlIH19Ij5Mb2FkIG1vcmU8L2E+CiAgICAgICAgICAgICAgICAgIDwvc21hbGw+CiAgICAgICAgICAgICAgICAgIHt7IGVuZCB9fQogICAgICAgICAgICAgICAge3sgZWxzZSB9fQogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtdC0zIGFsZXJ0IGFsZXJ0LXByaW1hcnkiIHJvbGU9ImFsZXJ0Ij4KICAgICAgICAgICAgICAgICAgICBZb3UgaGF2ZW4ndCBjcmVhdGVkIGFueSBzcGFjZXMgeWV0LiAKICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICB7eyBlbmQgfX0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAge3sgZWxzZSB9fQogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciBteS01Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbCI+CiAgICAgICAgICAgICAgPGgxIGNsYXNzPSJkaXNwbGF5LTQgdGV4dC1jZW50ZXIgbWItNSI+TGV0J3MgZ288L2gxPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ncm93IGp1c3RpZnktY29udGVudC1jZW50ZXInPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kLTYgY29sLWxnLTQgb2Zmc2V0LWNvbC1sZy0yIGNvbC14bC0zIG9mZnNldC1jb2wteGwtMyBkLWZsZXgiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQgbWItNCBzaGFkb3ctc20gZmxleC1maWxsIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJteS0wIGZvbnQtd2VpZ2h0LW5vcm1hbCI+U2lnbnVwPC9oND4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgPGZvcm0gaWQ9J3NpZ251cCcgbWV0aG9kPVBPU1QgYWN0aW9uPScvdXNlci9zaWdudXAnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InNpZ251cElucHV0VXNlcm5hbWUiIGNsYXNzPSJzci1vbmx5Ij5FbWFpbCBhZGRyZXNzPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT11c2VybmFtZSB0eXBlPSJ0ZXh0IiBpZD0ic2lnbnVwSW5wdXRVc2VybmFtZSIgY2xhc3M9Im1iLTMgZm9ybS1jb250cm9sIiBwbGFjZWhvbGRlcj0iVXNlcm5hbWUiIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9InNpZ251cElucHV0UGFzc3dvcmQiIGNsYXNzPSJzci1vbmx5Ij5QYXNzd29yZDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9cGFzc3dvcmQgdHlwZT0icGFzc3dvcmQiIGlkPSJzaWdudXBJbnB1dFBhc3N3b3JkIiBjbGFzcz0ibWItMyBmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJQYXNzd29yZCIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ic2lnbnVwSW5wdXRWZXJpZnkiIGNsYXNzPSJzci1vbmx5Ij5Db25maXJtIFBhc3N3b3JkPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT12ZXJpZnkgdHlwZT0icGFzc3dvcmQiIGlkPSJzaWdudXBJbnB1dFZlcmlmeSIgY2xhc3M9Im1iLTMgZm9ybS1jb250cm9sIiBwbGFjZWhvbGRlcj0iQ29uZmlybSBQYXNzd29yZCIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1sZyBidG4tcHJpbWFyeSBidG4tYmxvY2siIHR5cGU9InN1Ym1pdCI+R288L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kLTYgY29sLWxnLTQgY29sLXhsLTMgZC1mbGV4Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkIG1iLTQgc2hhZG93LXNtIGZsZXgtZmlsbCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWhlYWRlciI+CiAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0ibXktMCBmb250LXdlaWdodC1ub3JtYWwiPkxvZ2luPC9oND4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1ib2R5IGQtZmxleCI+CiAgICAgICAgICAgICAgICAgIDxmb3JtIGlkPSdsb2dpbicgY2xhc3M9J2QtZmxleCBmbGV4LWdyb3ctMSBmbGV4LWNvbHVtbicgbWV0aG9kPVBPU1QgYWN0aW9uPScvdXNlci9sb2dpbicgZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YSc+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ibG9naW5JbnB1dFVzZXJuYW1lIiBjbGFzcz0ic3Itb25seSI+RW1haWwgYWRkcmVzczwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9dXNlcm5hbWUgdHlwZT0idGV4dCIgaWQ9ImxvZ2luSW5wdXRVc2VybmFtZSIgY2xhc3M9Im1iLTMgZm9ybS1jb250cm9sIiBwbGFjZWhvbGRlcj0iVXNlcm5hbWUiIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9ImxvZ2luSW5wdXRQYXNzd29yZCIgY2xhc3M9InNyLW9ubHkiPlBhc3N3b3JkPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1wYXNzd29yZCB0eXBlPSJwYXNzd29yZCIgaWQ9ImxvZ2luSW5wdXRQYXNzd29yZCIgY2xhc3M9Im1iLTMgZm9ybS1jb250cm9sIiBwbGFjZWhvbGRlcj0iUGFzc3dvcmQiIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im10LWF1dG8gYnRuIGJ0bi1sZyBidG4tcHJpbWFyeSBidG4tYmxvY2siIHR5cGU9InN1Ym1pdCI+R288L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIHt7IGVuZCB9fQogICAgPC9hcnRpY2xlPgogICAge3sgdGVtcGxhdGUgImh0bWwvX2Zvb3Rlci5odG1sIiAkIH19CiAgPC9tYWluPgogIHt7IHRlbXBsYXRlICJodG1sL19zY3JpcHRzLmh0bWwiIH19CiAge3sgaWYgLlVzZXIgfX0KICAgIDxzY3JpcHQ+e3sgdGVtcGxhdGUgImpzL21haW4uanMiICQgfX08L3NjcmlwdD4KICB7eyBlbHNlIH19CiAgICA8c2NyaXB0PgogICAgICAoZnVuY3Rpb24oKSB7IAogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2FbaHJlZj0iLyNzaWdudXAiXScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlSGFzaENsaWNrKTsKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhW2hyZWY9Ii8jbG9naW4iXScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlSGFzaENsaWNrKTsKICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGhhbmRsZUhhc2hDbGljaygpKTsKICAgICAgICBmdW5jdGlvbiBoYW5kbGVIYXNoQ2xpY2soKSB7IAogICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgCiAgICAgICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGxvY2F0aW9uLmhhc2guc3Vic3RyKDEpKTsKICAgICAgICAgICAgaWYgKCFlbCkgcmV0dXJuOwogICAgICAgICAgICB2YXIgaW5wdXQgPSBlbC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpOwogICAgICAgICAgICBpZiAoIWlucHV0KSByZXR1cm47CiAgICAgICAgICAgIGlucHV0LmZvY3VzKCk7CiAgICAgICAgICB9LCAxKTsKICAgICAgICB9OwogICAgICB9KSgpOwogICAgPC9zY3JpcHQ+CiAge3sgZW5kIH19CjwvYm9keT4KPC9odG1sPgo=")
	tmpls["html/index.html"] = tostring("PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ZW4+CjxoZWFkPgogIHt7IHRlbXBsYXRlICJodG1sL19oZWFkLmh0bWwiIH19CiAgPHRpdGxlPkNNUzwvdGl0bGU+CjwvaGVhZD4KPGJvZHkgY2xhc3M9J2luZGV4IGJnLWxpZ2h0Jz4KICA8c3R5bGU+e3sgdGVtcGxhdGUgImNzcy9tYWluLmNzcyIgfX08L3N0eWxlPgogIDxtYWluPgogICAge3sgdGVtcGxhdGUgImh0bWwvX2hlYWRlci5odG1sIiAkIH19CiAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWhlYWRlciBweC0zIHB5LTUgcHQtbWQtNSBwYi1tZC00IG14LWF1dG8gdGV4dC1jZW50ZXIiPgogICAgICA8aDEgY2xhc3M9ImRpc3BsYXktMSI+U2tpcHBlciBDTVM8L2gxPgogICAgICA8cCBjbGFzcz0ibGVhZCI+QW4gb2xkLXNjaG9vbCBjb250ZW50IG1hbmFnZW1lbnQgc3lzdGVtIGZvciBtb3N0LjwvcD4KICAgIDwvZGl2PgogICAge3tpZiBub3QgLlVzZXJ9fQogICAgPGRpdiBjbGFzcz0nY29udGFpbmVyIG15LTUnPgogICAgICA8ZGl2IGNsYXNzPSdyb3cnPgogICAgICAgIDxkaXYgY2xhc3M9J2NvbCBjb2wtMTInPgogICAgICAgICAgPGgyIGNsYXNzPSdkaXNwbGF5LTQgdGV4dC1jZW50ZXInPkNvbnRlbnQgTWFuYWdlbWVudCBTeXN0ZW0gKENNUyk8L2gyPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9J2NvbCBvZmZzZXQtbGctMiBjb2wtbGctOCc+CiAgICAgICAgICA8dGFibGU+CiAgICAgICAgICAgIDx0ciB2YWxpZ249dG9wPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSdtci0zJz48c3Ryb25nPk5vdW4uPC9zdHJvbmc+PC9wPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHA+QSBjb21wdXRlciBzb2Z0d2FyZSBzeXN0ZW0gZm9yIG9yZ2FuaXppbmcgYW5kIGZhY2lsaXRhdGluZyBjb2xsYWJvcmF0aXZlIGNyZWF0aW9uIG9mIGRvY3VtZW50cyBhbmQgb3RoZXIgY29udGVudCwgZXNwZWNpYWxseSBmb3IgZGlzcGxheWluZyBjb250ZW50IHRvIGEgd2Vic2l0ZSBvciBtb2JpbGUgYXBwbGljYXRpb24uPC9wPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0nY29udGFpbmVyIG15LTUnPgogICAgICA8ZGl2IGNsYXNzPSJyb3ciPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbCI+CiAgICAgICAgICA8aDEgY2xhc3M9ImRpc3BsYXktNCB0ZXh0LWNlbnRlciBtYi01Ij5GZWF0dXJlczwvaDE+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPXJvdz4KCiAgICAgICAgPGRpdiBjbGFzcz0nY29sIGNvbC0xMiBjb2wtbWQtNic+CiAgICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkIG1iLTMnPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkLWJvZHknPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQtdGV4dCc+CiAgICAgICAgICAgICAgICA8YSBocmVmPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZWJfQVBJJz5BUEk8L2E+CiAgICAgICAgICAgICAgICBmaXJzdCBDTVMuIFNraXBwZXIgaXMgYSBmdWxseS1mbGVkZ2VkIGNvbnRlbnQgCiAgICAgICAgICAgICAgICBtYW5hZ2VtZW50IDxtYXJrPmluZnJhc3RydWN0dXJlPC9tYXJrPiBhcyBtdWNoIGFzIGl0IGlzIGEKICAgICAgICAgICAgICAgIGNvbnRlbnQgbWFuYWdlbWVudCBzeXN0ZW0uIAogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSdjb2wgY29sLTEyIGNvbC1tZC02Jz4KICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQgbWItMyc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQtYm9keSc+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZC10ZXh0Jz4KICAgICAgICAgICAgICAgIFlvdXIgY29udGVudCBtb2RlbCB5b3VyIHdheS4gWW91J3JlIDxtYXJrPm5ldmVyCiAgICAgICAgICAgICAgICByZXN0cmljdGVkPC9tYXJrPiB0byBhCiAgICAgICAgICAgICAgICBibGVzc2VkIGNvbnRlbnQgbW9kZWwsIGEgbGEgY2F0ZWdvcnkvdGFncyBmb3IgcGFnZXMvcG9zdHMuIAogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSdjb2wgY29sLTEyIGNvbC1tZC02Jz4KICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQgbWItMyc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQtYm9keSc+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZC10ZXh0Jz4KICAgICAgICAgICAgICAgIDxtYXJrPkxpZ2h0d2VpZ2h0PC9tYXJrPiBhbmQgPG1hcms+ZmFzdDwvbWFyaz47IEFQSSBjYWxscyB0bwogICAgICAgICAgICAgICAgU2tpcHBlciBDTVMgd2lsbCBub3QgYmUgeW91ciBib3R0bGVuZWNrLiBTa2lwcGVyIENNUyBtYWtlcyBoZWF2eQogICAgICAgICAgICAgICAgdXNlIG9mIGNhY2hpbmcuCiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9J2NvbCBjb2wtMTIgY29sLW1kLTYnPgogICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZCBtYi0zJz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZC1ib2R5Jz4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkLXRleHQnPgogICAgICAgICAgICAgICAgMTAwJSBjb21taXR0ZWQgdG8gPG1hcms+b3BlbiBzb3VyY2U8L21hcms+OyB5b3UgY2FuIHNlZSBleGFjdGx5IHdoYXQgdGhlIGNvZGUKICAgICAgICAgICAgICAgIGRvZXMgYW5kIG1ha2UgaW1wcm92ZW1lbnRzLiBTZWUgCiAgICAgICAgICAgICAgICA8YSBocmVmPSdodHRwczovL2dpdC5zci5odC9+ZXZhbmovY21zJz5zb3VyY2VodXQ8L2E+LgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSdjb2wgY29sLTEyIGNvbC1tZC02Jz4KICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQgbWItMyc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQtYm9keSc+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZC10ZXh0Jz4KICAgICAgICAgICAgICAgIDxtYXJrPkVhc3k8L21hcms+IHRvIHVzZSBmb3IgPG1hcms+YWxsPC9tYXJrPi4gV2Uga2VlcCBhIGJpZwogICAgICAgICAgICAgICAgdGVudC4gTm8gbWF0dGVyIHlvdXIgYmFja2dyb3VuZCwgU2tpcHBlciBDTVMgaXMgY29tbWl0dGVkIHRvCiAgICAgICAgICAgICAgICBhc3Npc3RpbmcgeW91IHdlbGwuCiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9J2NvbCBjb2wtMTIgY29sLW1kLTYnPgogICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZCBtYi0zJz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZC1ib2R5Jz4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdjYXJkLXRleHQnPgogICAgICAgICAgICAgICAgPG1hcms+UXVpY2tseTwvbWFyaz4gc2V0dXAgc3RhZ2luZyBhbmQgdGVzdCBlbnZpcm9ubWVudHMgZm9yCiAgICAgICAgICAgICAgICB5b3VyIGRhdGEuIFRhaWxvcmVkIHVzZSBmb3IgPG1hcms+eW91ciBlbnZpcm9ubWVudHM8L21hcms+LgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSdjb2wgY29sLTEyIGNvbC1tZC02Jz4KICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQgbWItMyc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQtYm9keSc+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZC10ZXh0Jz4KICAgICAgICAgICAgICAgIDxtYXJrPkFwcHJvYWNoYWJsZTwvbWFyaz4gCiAgICAgICAgICAgICAgICBkb2N1bWVudGlvbi4gRXhhbXBsZXMgcHJvdmlkZWQgaW4gCiAgICAgICAgICAgICAgICA8YSBocmVmPSdodHRwczovL2xpbnV4LmRpZS5uZXQvbWFuLzEvY3VybCc+Y1VSTDwvYT4uCiAgICAgICAgICAgICAgICBVc2UgZnJvbSB5b3VyIHByb2dyYW1taW5nIGxhbmd1YWdlIG9yIHJ1bnRpbWUgb2YgY2hvaWNlLgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSdjb2wgY29sLTEyIGNvbC1tZC02Jz4KICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQgbWItMyc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NhcmQtYm9keSc+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nY2FyZC10ZXh0Jz4KICAgICAgICAgICAgICAgIDxtYXJrPkZyZWVkb208L21hcms+IHJlc3BlY3RpbmcgbGljZW5zZS4gVGhlIAogICAgICAgICAgICAgICAgPGEgaHJlZj0naHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvZnJlZS1zdy5odG1sI2NvbnRlbnQnPmZvdXIgZXNzZW50aWFsIGZyZWVkb21zPC9hPiAKICAgICAgICAgICAgICAgIGFyZSB1cGhlbGQgdW5kZXIgdGhlIEVVUEwgdjEuMiBsaWNlbnNlLiBDb21wYXRpYmxlIHdpdGggQUdQTCB2My4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSdjb250YWluZXIgbXktNSc+CiAgICAgIDxkaXYgaWQ9J3ByaWNpbmcnIGNsYXNzPSJyb3ciPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbCI+CiAgICAgICAgICA8aDEgY2xhc3M9ImRpc3BsYXktNCB0ZXh0LWNlbnRlciBtYi01Ij5QcmljaW5nPC9oMT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InJvdyByb3ctY29scy0xIHJvdy1jb2xzLW1kLTIgcm93LWNvbHMteGwtNCBtYi01IHRleHQtY2VudGVyIj4KICAgICAgICB7e3JhbmdlIC5UaWVyc319CiAgICAgICAgPGRpdiBjbGFzcz0iY29sIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQgbWItNCBzaGFkb3ctc20iPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1oZWFkZXIiPgogICAgICAgICAgICA8aDQgY2xhc3M9Im15LTAgZm9udC13ZWlnaHQtbm9ybWFsIj57ey5OYW1lfX08L2g0PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWJvZHkiPgogICAgICAgICAgICA8aDEgY2xhc3M9ImNhcmQtdGl0bGUgcHJpY2luZy1jYXJkLXRpdGxlIj57ey5QcmljZX19IDxzbWFsbCBjbGFzcz0idGV4dC1tdXRlZCI+LyB7ey5UaW1lVW5pdH19PC9zbWFsbD48L2gxPgogICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgbXQtMyBtYi00Ij4KICAgICAgICAgICAgICB7e3JhbmdlIC5PcHRzfX0KICAgICAgICAgICAgICAgIDxsaT57ey5UZXh0fX08L2xpPgogICAgICAgICAgICAgIHt7ZW5kfX0KICAgICAgICAgICAgPC91bD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIHt7ZW5kfX0KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIHt7ZW5kfX0KICAgIDwhLS0KICAgIDxkaXYgY2xhc3M9J2NvbnRhaW5lcic+CiAgICAgIDxkaXYgY2xhc3M9J3Jvdyc+CiAgICAgICAgPGRpdiBjbGFzcz0iY29sLTEyIG9mZnNldC0wIGNvbC1sZy04IG9mZnNldC1sZy0yIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LXdhcm5pbmciIHJvbGU9ImFsZXJ0Ij4KICAgICAgICAgICAgPHA+PHN0cm9uZz5XQVJOSU5HOjwvc3Ryb25nPiBUaGlzIHNpdGUgaXMgaW4gPHN0cm9uZz5BTFBIQTwvc3Ryb25nPi4gCiAgICAgICAgICAgIFRoaXMgc2l0ZSBpcyBhIGNvbnRlbnQgbWFuYWdlbWVudCBzeXN0ZW0vaW5mcmFzdHJ1Y3R1cmUuIE1lYW5pbmc6IAogICAgICAgICAgICBpdCdzIHB1cnBvc2UgaXMgdG8gYWxsb3cgdXNlcnMgdG8gZ2VuZXJhdGUgY29udGVudC4gVGhhdCdzIGEgCiAgICAgICAgICAgIGRhbmdlcm91cyB0aGluZy4gSW5zdGVhZCBvZiBmb2N1c2luZyBvbiBmaWdodGluZyBhYnVzZSBJJ2xsIGJlIGF1dG8gCiAgICAgICAgICAgIGRlbGV0aW5nIGFsbCBjb250ZW50IChleGNlcHQgZm9yIG15IG93bikgb24gYSByZWd1bGFyIGFuZCB0aWdodCAKICAgICAgICAgICAgaW50ZXJ2YWwuIFlvdSBzdGlsbCBtaWdodCBoYXZlIGZ1biBwb2tpbmcgYXJvdW5kIG9uIHRoaXMgc2l0ZS4gSXQncyAKICAgICAgICAgICAgYWxzbyA8YSBocmVmPSdodHRwczovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvZmxvc3MtYW5kLWZvc3MuZW4uaHRtbCc+RkxPU1MsPC9hPgogICAgICAgICAgICBzbyB5b3UgY2FuIGVuam95IHNlbGYtaG9zdGluZyB5b3Vyc2VsZiBpZiB5b3UgYXJlIHNvIGluY2xpbmVkLiBJZiB5b3UKICAgICAgICAgICAgZmluZCBidWdzICh5b3UgbW9zdCBsaWtlbHkgd2lsbCkgb3IgaGF2ZSBmZWF0dXJlIHJlcXVlc3RzIHBsZWFzZSBzZW5kIAogICAgICAgICAgICB0aGVtIG15IHdheS4gSXQgaXMgYXBwcmVjaWF0ZWQuIFRoYW5rIHlvdS48L3A+CiAgICAgICAgICAgIDxwPklmIHlvdSBuZWVkIHRvIGhpdCB0aGUgQVBJIHRyeSBjVVJMJ2luZyBhbnkgcGFnZSB5b3Ugc2VlIGluIHRoZSAKICAgICAgICAgICAgVVJMIGJhciAoaW5jbHVkZSBiYXNpYyBhdXRoKS4gQSBzaW1wbGUgdXNlIGNhc2Ugb2YgY29uc3VtaW5nIHRoaXMgc2l0ZSBjYW4gYmUgZm91bmQgb24gbXkgCiAgICAgICAgICAgIDxhIGhyZWY9J2h0dHBzOi8vZ2l0LnNyLmh0L35ldmFuai9ldmFuam9uLmVzL3RyZWUvbWFzdGVyL3BrZy9jbXMvY21zLmdvJz5wZXJzb25hbCBzaXRlPC9hPi48L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIC0tPgogICAgPGFydGljbGU+CiAgICAgIHt7IGlmIC5Vc2VyIH19CiAgICAgICAgPGZvcm0gbWV0aG9kPVBPU1QgYWN0aW9uPScvc3BhY2UnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnPgogICAgICAgICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9bWV0aG9kIHZhbHVlPVBPU1QgLz4KICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIGZhZGUiIGlkPSJleGFtcGxlTW9kYWwiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9ImV4YW1wbGVNb2RhbExhYmVsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyBtb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9Im1vZGFsLXRpdGxlIiBpZD0iZXhhbXBsZU1vZGFsTGFiZWwiPkNyZWF0ZSBhIG5ldyBzcGFjZTwvaDU+CiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJzcGFjZU5hbWUiPk5hbWU8L2xhYmVsPgogICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1uYW1lIHR5cGU9dGV4dCBpZD0ic3BhY2VOYW1lIiBjbGFzcz0ibWItMyBmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJOYW1lIiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ic3BhY2VEZXNjIj5EZXNjcmlwdGlvbjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPWRlc2MgdHlwZT10ZXh0IGlkPSJzcGFjZURlc2MiIGNsYXNzPSJtYi0zIGZvcm0tY29udHJvbCIgcGxhY2Vob2xkZXI9IkRlc2NyaXB0aW9uIiByZXF1aXJlZD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSIgZGF0YS1kaXNtaXNzPSJtb2RhbCI+Q2xvc2U8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPkdvPC9idXR0b24+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9J3Jvdyc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J29mZnNldC1sZy0zIGNvbC1sZy02Jz4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJteS0zIHAtMyBiZy13aGl0ZSByb3VuZGVkIHNoYWRvdy1zbSI+CiAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0iZC1ibG9jayB0ZXh0LXJpZ2h0IGZsb2F0LXJpZ2h0IiBkYXRhLXRvZ2dsZT0ibW9kYWwiIGRhdGEtdGFyZ2V0PSIjZXhhbXBsZU1vZGFsIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIj5DcmVhdGUgYSBuZXcgc3BhY2U8L2E+CiAgICAgICAgICAgICAgICAgIDwvc21hbGw+CiAgICAgICAgICAgICAgICA8aDYgY2xhc3M9ImJvcmRlci1ib3R0b20gYm9yZGVyLWdyYXkgcGItMiBtYi0wIj5Zb3VyIHNwYWNlczwvaDY+CiAgICAgICAgICAgICAgICB7eyBpZiAuU3BhY2VzLkxpc3QgfX0KICAgICAgICAgICAgICAgICAge3sgcmFuZ2UgLlNwYWNlcy5MaXN0IH19CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIHRleHQtbXV0ZWQgcHQtMyI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0nL3NwYWNlL3t7IC5JRCB9fScgIGNsYXNzPSJkLWJsb2NrIG1lZGlhLWJvZHkgcGItMyBtYi0wIHNtYWxsIGxoLTEyNSBib3JkZXItYm90dG9tIGJvcmRlci1ncmF5Ij4KICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9ImQtYmxvY2sgdGV4dC1ncmF5LWRhcmsiPnt7IC5OYW1lIH19PC9zdHJvbmc+CiAgICAgICAgICAgICAgICAgICAgICB7eyAuRGVzYyB9fQogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIHt7IGVuZCB9fQogICAgICAgICAgICAgICAgICB7eyBpZiAuU3BhY2VzLk1vcmUgfX0KICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJkLWJsb2NrIHRleHQtcmlnaHQgbXQtMyI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iLz9iZWZvcmU9e3sgLlNwYWNlcy5CZWZvcmUgfX0iPkxvYWQgbW9yZTwvYT4KICAgICAgICAgICAgICAgICAgPC9zbWFsbD4KICAgICAgICAgICAgICAgICAge3sgZW5kIH19CiAgICAgICAgICAgICAgICB7eyBlbHNlIH19CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im10LTMgYWxlcnQgYWxlcnQtcHJpbWFyeSIgcm9sZT0iYWxlcnQiPgogICAgICAgICAgICAgICAgICAgIFlvdSBoYXZlbid0IGNyZWF0ZWQgYW55IHNwYWNlcyB5ZXQuIAogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIHt7IGVuZCB9fQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICB7eyBlbHNlIH19CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIG15LTUiPgogICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sIj4KICAgICAgICAgICAgICA8aDEgY2xhc3M9ImRpc3BsYXktNCB0ZXh0LWNlbnRlciBtYi01Ij5MZXQncyBnbzwvaDE+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSdyb3cganVzdGlmeS1jb250ZW50LWNlbnRlcic+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtbWQtNiBjb2wtbGctNCBvZmZzZXQtY29sLWxnLTIgY29sLXhsLTMgb2Zmc2V0LWNvbC14bC0zIGQtZmxleCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZCBtYi00IHNoYWRvdy1zbSBmbGV4LWZpbGwiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9Im15LTAgZm9udC13ZWlnaHQtbm9ybWFsIj5TaWdudXA8L2g0PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWJvZHkiPgogICAgICAgICAgICAgICAgICA8Zm9ybSBpZD0nc2lnbnVwJyBtZXRob2Q9UE9TVCBhY3Rpb249Jy91c2VyL3NpZ251cCcgZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YSc+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ic2lnbnVwSW5wdXRVc2VybmFtZSIgY2xhc3M9InNyLW9ubHkiPkVtYWlsIGFkZHJlc3M8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPXVzZXJuYW1lIHR5cGU9InRleHQiIGlkPSJzaWdudXBJbnB1dFVzZXJuYW1lIiBjbGFzcz0ibWItMyBmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJVc2VybmFtZSIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ic2lnbnVwSW5wdXRQYXNzd29yZCIgY2xhc3M9InNyLW9ubHkiPlBhc3N3b3JkPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1wYXNzd29yZCB0eXBlPSJwYXNzd29yZCIgaWQ9InNpZ251cElucHV0UGFzc3dvcmQiIGNsYXNzPSJtYi0zIGZvcm0tY29udHJvbCIgcGxhY2Vob2xkZXI9IlBhc3N3b3JkIiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJzaWdudXBJbnB1dFZlcmlmeSIgY2xhc3M9InNyLW9ubHkiPkNvbmZpcm0gUGFzc3dvcmQ8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPXZlcmlmeSB0eXBlPSJwYXNzd29yZCIgaWQ9InNpZ251cElucHV0VmVyaWZ5IiBjbGFzcz0ibWItMyBmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJDb25maXJtIFBhc3N3b3JkIiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLWxnIGJ0bi1wcmltYXJ5IGJ0bi1ibG9jayIgdHlwZT0ic3VibWl0Ij5HbzwvYnV0dG9uPgogICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtbWQtNiBjb2wtbGctNCBjb2wteGwtMyBkLWZsZXgiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQgbWItNCBzaGFkb3ctc20gZmxleC1maWxsIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJteS0wIGZvbnQtd2VpZ2h0LW5vcm1hbCI+TG9naW48L2g0PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWJvZHkgZC1mbGV4Ij4KICAgICAgICAgICAgICAgICAgPGZvcm0gaWQ9J2xvZ2luJyBjbGFzcz0nZC1mbGV4IGZsZXgtZ3Jvdy0xIGZsZXgtY29sdW1uJyBtZXRob2Q9UE9TVCBhY3Rpb249Jy91c2VyL2xvZ2luJyBlbmN0eXBlPSdtdWx0aXBhcnQvZm9ybS1kYXRhJz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJsb2dpbklucHV0VXNlcm5hbWUiIGNsYXNzPSJzci1vbmx5Ij5FbWFpbCBhZGRyZXNzPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT11c2VybmFtZSB0eXBlPSJ0ZXh0IiBpZD0ibG9naW5JbnB1dFVzZXJuYW1lIiBjbGFzcz0ibWItMyBmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJVc2VybmFtZSIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ibG9naW5JbnB1dFBhc3N3b3JkIiBjbGFzcz0ic3Itb25seSI+UGFzc3dvcmQ8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPXBhc3N3b3JkIHR5cGU9InBhc3N3b3JkIiBpZD0ibG9naW5JbnB1dFBhc3N3b3JkIiBjbGFzcz0ibWItMyBmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJQYXNzd29yZCIgcmVxdWlyZWQ+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ibXQtYXV0byBidG4gYnRuLWxnIGJ0bi1wcmltYXJ5IGJ0bi1ibG9jayIgdHlwZT0ic3VibWl0Ij5HbzwvYnV0dG9uPgogICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAge3sgZW5kIH19CiAgICA8L2FydGljbGU+CiAgICB7eyB0ZW1wbGF0ZSAiaHRtbC9fZm9vdGVyLmh0bWwiICQgfX0KICA8L21haW4+CiAge3sgdGVtcGxhdGUgImh0bWwvX3NjcmlwdHMuaHRtbCIgfX0KICB7eyBpZiAuVXNlciB9fQogICAgPHNjcmlwdD57eyB0ZW1wbGF0ZSAianMvbWFpbi5qcyIgJCB9fTwvc2NyaXB0PgogIHt7IGVsc2UgfX0KICAgIDxzY3JpcHQ+CiAgICAgIChmdW5jdGlvbigpIHsgCiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYVtocmVmPSIvI3NpZ251cCJdJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVIYXNoQ2xpY2spOwogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2FbaHJlZj0iLyNsb2dpbiJdJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVIYXNoQ2xpY2spOwogICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgaGFuZGxlSGFzaENsaWNrKCkpOwogICAgICAgIGZ1bmN0aW9uIGhhbmRsZUhhc2hDbGljaygpIHsgCiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyAKICAgICAgICAgICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobG9jYXRpb24uaGFzaC5zdWJzdHIoMSkpOwogICAgICAgICAgICBpZiAoIWVsKSByZXR1cm47CiAgICAgICAgICAgIHZhciBpbnB1dCA9IGVsLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7CiAgICAgICAgICAgIGlmICghaW5wdXQpIHJldHVybjsKICAgICAgICAgICAgaW5wdXQuZm9jdXMoKTsKICAgICAgICAgIH0sIDEpOwogICAgICAgIH07CiAgICAgIH0pKCk7CiAgICA8L3NjcmlwdD4KICB7eyBlbmQgfX0KPC9ib2R5Pgo8L2h0bWw+Cg==")

	tmpls["html/redirect.html"] = tostring("PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ZW4+CjxoZWFkPgogIHt7IHRlbXBsYXRlICJodG1sL19oZWFkLmh0bWwiIH19CiAgPHRpdGxlPkNNUzwvdGl0bGU+CjwvaGVhZD4KPGJvZHkgY2xhc3M9J2luZGV4IGJnLWxpZ2h0Jz4KICA8c3R5bGU+e3sgdGVtcGxhdGUgImNzcy9tYWluLmNzcyIgfX08L3N0eWxlPgogIDxtYWluPgogICAge3sgdGVtcGxhdGUgImh0bWwvX2hlYWRlci5odG1sIiAkIH19CiAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWhlYWRlciBweC0zIHB5LTMgcHQtbWQtNSBwYi1tZC00IG14LWF1dG8gdGV4dC1jZW50ZXIiPgogICAgICA8aDEgY2xhc3M9ImRpc3BsYXktNCI+UmVkaXJlY3RpbmcuLi48L2gxPgogICAgPC9kaXY+CiAgICB7eyB0ZW1wbGF0ZSAiaHRtbC9fZm9vdGVyLmh0bWwiICQgfX0KICA8L21haW4+CiAge3sgdGVtcGxhdGUgImh0bWwvX3NjcmlwdHMuaHRtbCIgfX0KICA8c2NyaXB0PihmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtsb2NhdGlvbi5ocmVmPSJ7ey5VUkx9fSI7fSw1MDApO30pKCk7PC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=")