import type { FunctionalComponent } from 'preact';
import { h, Fragment } from 'preact';
import { useState, useEffect } from 'preact/hooks';

const themes = ['system', 'light', 'dark'];

const icons = [
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="currentColor">
    <path
      fill-rule="evenodd"
      d="M3 5a2 2 0 012-2h10a2 2 0 012 2v8a2 2 0 01-2 2h-2.22l.123.489.804.804A1 1 0 0113 18H7a1 1 0 01-.707-1.707l.804-.804L7.22 15H5a2 2 0 01-2-2V5zm5.771 7H5V5h10v7H8.771z"
      clip-rule="evenodd"
    />
  </svg>,
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="currentColor">
    <path
      fillRule="evenodd"
      d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"
      clipRule="evenodd"
    />
  </svg>,
  <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="currentColor">
    <path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z" />
  </svg>,
];

const ThemeToggle: FunctionalComponent = () => {
  const [theme, setTheme] = useState(themes[0]);

  useEffect(() => {
    const user = localStorage.getItem('theme');
    if (!user) return;
    setTheme(user);
  }, []);

  useEffect(() => {
    const root = document.documentElement;
    if (theme === 'system') {
      localStorage.removeItem('theme');
      if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
        root.classList.add('theme-dark');
      } else {
        root.classList.remove('theme-dark');
      }
    } else {
      localStorage.setItem('theme', theme);
      if (theme === 'light') {
        root.classList.remove('theme-dark');
      } else {
        root.classList.add('theme-dark');
      }
    }
  }, [theme]);

  return (
    <div id="theme-toggle">
      {themes.map((t, i) => {
        const icon = icons[i];
        const checked = t === theme;
        return (
          <label className={checked ? 'checked' : ''}>
            {icon}
            <input type="radio" name="theme-toggle" checked={checked} value={t} title={`Use ${t} theme`} aria-label={`Use ${t} theme`} onChange={() => setTheme(t)} />
          </label>
        );
      })}
    </div>
  );
};

export default ThemeToggle;
</a><a href='/ansg191/coredns/refs/?id=bdf71cf25136c3752a8aed5e50a907f15daea689'>refs</a><a class='active' href='/ansg191/coredns/log/vendor/golang.org/x/net/CONTRIBUTORS?follow=1'>log</a><a href='/ansg191/coredns/tree/vendor/golang.org/x/net/CONTRIBUTORS?id=bdf71cf25136c3752a8aed5e50a907f15daea689'>tree</a><a href='/ansg191/coredns/commit/vendor/golang.org/x/net/CONTRIBUTORS?id=bdf71cf25136c3752a8aed5e50a907f15daea689&amp;follow=1'>commit</a><a href='/ansg191/coredns/diff/vendor/golang.org/x/net/CONTRIBUTORS?id=bdf71cf25136c3752a8aed5e50a907f15daea689&amp;follow=1'>diff</a></td><td class='form'><form class='right' method='get' action='/ansg191/coredns/log/vendor/golang.org/x/net/CONTRIBUTORS'>
<input type='hidden' name='id' value='bdf71cf25136c3752a8aed5e50a907f15daea689'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/ansg191/coredns/log/?id=bdf71cf25136c3752a8aed5e50a907f15daea689&amp;follow=1'>root</a>/<a href='/ansg191/coredns/log/vendor?id=bdf71cf25136c3752a8aed5e50a907f15daea689&amp;follow=1'>vendor</a>/<a href='/ansg191/coredns/log/vendor/golang.org?id=bdf71cf25136c3752a8aed5e50a907f15daea689&amp;follow=1'>golang.org</a>/<a href='/ansg191/coredns/log/vendor/golang.org/x?id=bdf71cf25136c3752a8aed5e50a907f15daea689&amp;follow=1'>x</a>/<a href='/ansg191/coredns/log/vendor/golang.org/x/net?id=bdf71cf25136c3752a8aed5e50a907f15daea689&amp;follow=1'>net</a>/<a href='/ansg191/coredns/log/vendor/golang.org/x/net/CONTRIBUTORS?id=bdf71cf25136c3752a8aed5e50a907f15daea689&amp;follow=1'>CONTRIBUTORS</a> (<a href='/ansg191/coredns/log/vendor/golang.org/x/net/CONTRIBUTORS?id=bdf71cf25136c3752a8aed5e50a907f15daea689'>unfollow</a>)</div><div class='content'><table class='list nowrap'><tr class='nohover'><th class='left'>Age</th><th class='left'>Commit message (<a href='/ansg191/coredns/log/vendor/golang.org/x/net/CONTRIBUTORS?id=bdf71cf25136c3752a8aed5e50a907f15daea689&amp;showmsg=1&amp;follow=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Files</th><th class='left'>Lines</th></tr>
<tr><td><span title='2017-06-02 17:18:58 +0100'>2017-06-02</span></td><td><a href='/ansg191/coredns/commit/middleware/file/lookup.go?id=7be066e4de6fae1fc6634d986b75ccb1b7255af6&amp;follow=1'>middleware/file: add DNSSEC support (#697)</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>4</td><td><span class='deletions'>-2</span>/<span class='insertions'>+207</span></td></tr>
<tr><td><span title='2017-06-02 07:25:33 +0100'>2017-06-02</span></td><td><a href='/ansg191/coredns/commit/middleware/kubernetes/setup.go?id=d684dedfd3e1fa41381ccf3c5b9bd559ee144542&amp;follow=1'>unexpose InterfaceAddrser (#693)</a></td><td><img src='//www.gravatar.com/avatar/c4e1dff64e2c0210e86f613a22916fc1?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Chris O'Haver
</td><td>4</td><td><span class='deletions'>-10</span>/<span class='insertions'>+10</span></td></tr>
<tr><td><span title='2017-06-02 07:25:00 +0100'>2017-06-02</span></td><td><a href='/ansg191/coredns/commit/Makefile?id=a4eea611905498c307804fc4dbc89765febc4bc7&amp;follow=1'>fix make lint (#694)</a></td><td><img src='//www.gravatar.com/avatar/c4e1dff64e2c0210e86f613a22916fc1?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Chris O'Haver
</td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+2</span></td></tr>
<tr><td><span title='2017-06-01 22:44:10 -0400'>2017-06-01</span></td><td><a href='/ansg191/coredns/commit/middleware/kubernetes/README.md?id=381ec9d7f82afcdd3088c39aa2aeffcf65739364&amp;follow=1'>fix typo (#692)</a></td><td><img src='//www.gravatar.com/avatar/c4e1dff64e2c0210e86f613a22916fc1?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Chris O'Haver
</td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr><td><span title='2017-06-01 21:22:45 +0100'>2017-06-01</span></td><td><a href='/ansg191/coredns/commit/test/kubernetes_test.go?id=50f75734143ec002ccfa0deee83a2812f615da09&amp;follow=1'>Add SOA record to upstream zone file (#689)</a></td><td><img src='//www.gravatar.com/avatar/c4e1dff64e2c0210e86f613a22916fc1?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Chris O'Haver
</td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+1</span></td></tr>
<tr><td><span title='2017-06-01 11:02:47 -0700'>2017-06-01</span></td><td><a href='/ansg191/coredns/commit/CONTRIBUTING.md?id=16d86d95aa3a23c120a3a80b0e9a7e41fbf44d70&amp;follow=1'>Update CONTRIBUTING.md to add the section for vendor management. (#688)</a></td><td><img src='//www.gravatar.com/avatar/10c4cad3ba13f0378dbd67185314d3d4?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Yong Tang
</td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+27</span></td></tr>
<tr><td><span title='2017-06-01 18:11:50 +0100'>2017-06-01</span></td><td><a href='/ansg191/coredns/commit/vendor/k8s.io/client-go/examples/out-of-cluster/main.go?id=3752a97135e93ca32f052375f22e6c2419e2ce4c&amp;follow=1'>update deps (#686)</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>6538</td><td><span class='deletions'>-2217448</span>/<span class='insertions'>+9</span></td></tr>
<tr><td><span title='2017-06-01 12:33:40 +0100'>2017-06-01</span></td><td><a href='/ansg191/coredns/commit/test/secondary_test.go?id=30ecb83dce02491a22eb64674354dbd9b1fa08c7&amp;follow=1'>middleware/secondary: fix crash with no zone (#680)</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>2</td><td><span class='deletions'>-0</span>/<span class='insertions'>+55</span></td></tr>
<tr><td><span title='2017-05-31 20:28:53 +0100'>2017-05-31</span></td><td><a href='/ansg191/coredns/commit/middleware/log/setup_test.go?id=e261ac1a6e64077e288ca95fbb805c9ce7aafba0&amp;follow=1'>middleware/{log,errors}: output everything to stdout (#684)</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>9</td><td><span class='deletions'>-185</span>/<span class='insertions'>+48</span></td></tr>
<tr><td><span title='2017-05-30 15:03:35 +0100'>2017-05-30</span></td><td><a href='/ansg191/coredns/commit/middleware/proxy/README.md?id=6c774782e0d47c3e76f8b7339752caab57850710&amp;follow=1'>Fix typos (#682)</a></td><td><img src='//www.gravatar.com/avatar/a3f0c56d768901c12f6288eb65f25c86?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Jonas Östanbäck
</td><td>2</td><td><span class='deletions'>-2</span>/<span class='insertions'>+2</span></td></tr>
<tr><td><span title='2017-05-30 13:20:39 +0100'>2017-05-30</span></td><td><a href='/ansg191/coredns/commit/test/kubernetes_test.go?id=d917ff5ac2bc5c88f8aebb67cc6a085fa81eacb5&amp;follow=1'>Add k8s external service CNAMEs (#677)</a></td><td><img src='//www.gravatar.com/avatar/c4e1dff64e2c0210e86f613a22916fc1?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Chris O'Haver
</td><td>11</td><td><span class='deletions'>-16</span>/<span class='insertions'>+293</span></td></tr>
<tr><td><span title='2017-05-26 09:02:51 -0400'>2017-05-26</span></td><td><a href='/ansg191/coredns/commit/middleware/reverse/README.md?id=2f2c90f3917f5d2179874d7415e593e0ff0c0f79&amp;follow=1'>Update README.md (#668)</a></td><td><img src='//www.gravatar.com/avatar/e02a763a6099c2eda7c9232c90fc15c6?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> cricketliu
</td><td>1</td><td><span class='deletions'>-9</span>/<span class='insertions'>+9</span></td></tr>
<tr><td><span title='2017-05-26 10:37:06 +0100'>2017-05-26</span></td><td><a href='/ansg191/coredns/commit/middleware/test/helpers.go?id=d2268d30308307db239eec25dfda4774543493b5&amp;follow=1'>middleware/file: add DNAME support (#651)</a></td><td><img src='//www.gravatar.com/avatar/b56a73d452d383aef1e03010ea90e13c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Eric Yan
</td><td>4</td><td><span class='deletions'>-2</span>/<span class='insertions'>+225</span></td></tr>
<tr><td><span title='2017-05-25 20:08:44 +0100'>2017-05-25</span></td><td><a href='/ansg191/coredns/commit/middleware/kubernetes/controller.go?id=7c8d1b0234145817e997b6a4f9b5a6771cf16dfa&amp;follow=1'>Check that all the controllers are synced agains api server (#671)</a></td><td><img src='//www.gravatar.com/avatar/8798ca0a499428e5e8f25d3614ac8b6e?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Manuel Alejandro de Brito Fontes
</td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+9</span></td></tr>
<tr><td><span title='2017-05-25 20:08:34 +0100'>2017-05-25</span></td><td><a href='/ansg191/coredns/commit/middleware/kubernetes/kubernetes.go?id=37050dc2179e0f988a5c5df2bb63ef9b83ddde2f&amp;follow=1'>Some golint cleanup (#674)</a></td><td><img src='//www.gravatar.com/avatar/10c4cad3ba13f0378dbd67185314d3d4?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Yong Tang
</td><td>4</td><td><span class='deletions'>-8</span>/<span class='insertions'>+8</span></td></tr>
<tr><td><span title='2017-05-25 07:28:12 +0100'>2017-05-25</span></td><td><a href='/ansg191/coredns/commit/Makefile.release?id=4dc61e67cdccdd78e091a49be0cfc890e0bad6bb&amp;follow=1'>fix docker build (#673)</a></td><td><img src='//www.gravatar.com/avatar/c4e1dff64e2c0210e86f613a22916fc1?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Chris O'Haver
</td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr><td><span title='2017-05-23 14:43:58 -0400'>2017-05-23</span></td><td><a href='/ansg191/coredns/commit/MAINTAINERS?id=fe725f497f4719dcf14a6efa16f59e4fd5a32f5d&amp;follow=1'>Maintainer update (#670)</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>1</td><td><span class='deletions'>-7</span>/<span class='insertions'>+5</span></td></tr>
<tr><td><span title='2017-05-22 16:05:48 -0400'>2017-05-22</span></td><td><a href='/ansg191/coredns/commit/test/kubernetes_test.go?id=7f950e496ab8ae518d8f78f3a80225604dd90da3&amp;follow=1'>Handle K8s middleware NS record (#662)</a></td><td><img src='//www.gravatar.com/avatar/c4e1dff64e2c0210e86f613a22916fc1?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Chris O'Haver
</td><td>9</td><td><span class='deletions'>-98</span>/<span class='insertions'>+538</span></td></tr>
<tr><td><span title='2017-05-22 08:09:35 -0400'>2017-05-22</span></td><td><a href='/ansg191/coredns/commit/test/chaos_test.go?id=024f56682dcaaaae2dd990d6fae3b54c8d17c467&amp;follow=1'>middleware/chaos: fix version (#669)</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>4</td><td><span class='deletions'>-14</span>/<span class='insertions'>+57</span></td></tr>
<tr><td><span title='2017-05-12 10:15:34 +0100'>2017-05-12</span></td><td><a href='/ansg191/coredns/commit/Makefile.release?id=7e6f5c77aa617bb95df10cbfacf22b1e96751169&amp;follow=1'>Makefile.release: bogus all target (#666)</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>1</td><td><span class='deletions'>-7</span>/<span class='insertions'>+10</span></td></tr>
<tr><td><span title='2017-05-08 15:31:26 +0100'>2017-05-08</span></td><td><a href='/ansg191/coredns/commit/README.md?id=9a951be7ddf21539d08da148240b2e48ea7b090e&amp;follow=1'>Add License Scanning badge (#663)</a></td><td><img src='//www.gravatar.com/avatar/8ccf2bfccb6b570c4fae81e50dd80ed8?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Chris Aniszczyk
</td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+1</span></td></tr>
<tr><td><span title='2017-05-05 15:33:18 -0400'>2017-05-05</span></td><td><a href='/ansg191/coredns/commit/Makefile?id=afec8963c62cc362729ba53c9f081f6d744cf51c&amp;follow=1'>Don't check vendor code for gofmt, it takes forever (#661)</a></td><td><img src='//www.gravatar.com/avatar/92aec22a2f92e81152610b8b40f49a21?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> John Belamaric
</td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr><td><span title='2017-05-03 19:59:11 +0100'>2017-05-03</span></td><td><a href='/ansg191/coredns/commit/Makefile.release?id=b7dd1559c1ac66218331bda51c354fbe212b492e&amp;follow=1'>Release: fix docker push</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+2</span></td></tr>
<tr><td><span title='2017-05-03 19:48:11 +0100'>2017-05-03</span></td><td><a href='/ansg191/coredns/commit/Makefile.release?id=667635e2958343987c5603180a6e957c33f2a33d&amp;follow=1'>Release: fix Makefile</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+1</span></td></tr>
<tr><td><span title='2017-05-03 19:37:27 +0100'>2017-05-03</span></td><td><a href='/ansg191/coredns/commit/coremain/version.go?id=edcc0356b78de6a899a9765d3e04389c91ed7501&amp;follow=1'>Release 007</a><span class='decoration'><a class='tag-deco' href='/ansg191/coredns/tag/?h=v007'>v007</a></span></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr><td><span title='2017-05-03 16:36:41 +0100'>2017-05-03</span></td><td><a href='/ansg191/coredns/commit/test/file_cname_proxy_test.go?id=8eda6c7b9c6554116f3fa8e9b12311a2e95f675d&amp;follow=1'>middleware/file: correctly parse the stanza (#658)</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>3</td><td><span class='deletions'>-34</span>/<span class='insertions'>+87</span></td></tr>
<tr><td><span title='2017-04-30 11:48:19 +0100'>2017-04-30</span></td><td><a href='/ansg191/coredns/commit/Makefile.release?id=4fc1318e28b21c85c117f1821c3fb34790679f0f&amp;follow=1'>Install: split build targets (#656)</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>1</td><td><span class='deletions'>-3</span>/<span class='insertions'>+13</span></td></tr>
<tr><td><span title='2017-04-30 08:48:37 +0100'>2017-04-30</span></td><td><a href='/ansg191/coredns/commit/middleware/kubernetes/kubernetes.go?id=6062e58c591dfbd8024e5764f920d7d6f0d7914c&amp;follow=1'>Remove annoying INFO from k8s middleware (#655)</a></td><td><img src='//www.gravatar.com/avatar/92aec22a2f92e81152610b8b40f49a21?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> John Belamaric
</td><td>1</td><td><span class='deletions'>-3</span>/<span class='insertions'>+1</span></td></tr>
<tr><td><span title='2017-04-29 07:06:42 -0700'>2017-04-29</span></td><td><a href='/ansg191/coredns/commit/middleware/pkg/response/typify_test.go?id=7d39c2ba51aed96f983abd89ba59518eba524df3&amp;follow=1'>middleware/cache: don't cache expired RRSIGs (#641)</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>7</td><td><span class='deletions'>-62</span>/<span class='insertions'>+172</span></td></tr>
<tr><td><span title='2017-04-28 09:14:54 -0700'>2017-04-28</span></td><td><a href='/ansg191/coredns/commit/vendor/k8s.io/client-go/examples/out-of-cluster/main.go?id=6e3be7f3d5a1897c781dd569f534526b8c2b8c6f&amp;follow=1'>Update vendor with `go dep`</a></td><td><img src='//www.gravatar.com/avatar/10c4cad3ba13f0378dbd67185314d3d4?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Yong Tang
</td><td>8408</td><td><span class='deletions'>-13844</span>/<span class='insertions'>+2469780</span></td></tr>
<tr><td><span title='2017-04-28 09:14:10 -0700'>2017-04-28</span></td><td><a href='/ansg191/coredns/commit/Makefile?id=e08fb277fad1147c8b37e218e9b4a43c1cc92119&amp;follow=1'>Add vendor setup with `go dep`</a></td><td><img src='//www.gravatar.com/avatar/10c4cad3ba13f0378dbd67185314d3d4?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Yong Tang
</td><td>3</td><td><span class='deletions'>-1</span>/<span class='insertions'>+443</span></td></tr>
<tr><td><span title='2017-04-27 16:24:00 +0100'>2017-04-27</span></td><td><a href='/ansg191/coredns/commit/README.md?id=7132faae50167968050e17f475d3e2efb1a4c602&amp;follow=1'>update readme (#650)</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>1</td><td><span class='deletions'>-3</span>/<span class='insertions'>+4</span></td></tr>
<tr><td><span title='2017-04-26 10:58:14 +0100'>2017-04-26</span></td><td><a href='/ansg191/coredns/commit/middleware/proxy/upstream.go?id=3b5b6a233fc669dfb47a6dc4eb8899c3e992cc32&amp;follow=1'>middleware/proxy: Kill goroutines on stop (#646)</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>5</td><td><span class='deletions'>-5</span>/<span class='insertions'>+112</span></td></tr>
<tr><td><span title='2017-04-24 20:37:43 +0100'>2017-04-24</span></td><td><a href='/ansg191/coredns/commit/middleware/proxy/upstream_test.go?id=003b1bf678f6fc1d551fed5184adccde2137e86f&amp;follow=1'>Fix health race (#645)</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>6</td><td><span class='deletions'>-28</span>/<span class='insertions'>+26</span></td></tr>
<tr><td><span title='2017-04-24 16:45:47 +0100'>2017-04-24</span></td><td><a href='/ansg191/coredns/commit/README.md?id=bfa18470e53c5058237e02b56c97c5d0a2cb47be&amp;follow=1'>Point users to deployment repo (#643)</a></td><td><img src='//www.gravatar.com/avatar/92aec22a2f92e81152610b8b40f49a21?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> John Belamaric
</td><td>1</td><td><span class='deletions'>-23</span>/<span class='insertions'>+3</span></td></tr>
<tr><td><span title='2017-04-24 10:27:26 -0400'>2017-04-24</span></td><td><a href='/ansg191/coredns/commit/middleware/pprof/setup_test.go?id=f359aea2faa5004b385d91a6c8668d6ba6f4cdc2&amp;follow=1'>Pprof listen (#639)</a></td><td><img src='//www.gravatar.com/avatar/c4e1dff64e2c0210e86f613a22916fc1?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Chris O'Haver
</td><td>4</td><td><span class='deletions'>-9</span>/<span class='insertions'>+34</span></td></tr>
<tr><td><span title='2017-04-22 07:58:30 +0100'>2017-04-22</span></td><td><a href='/ansg191/coredns/commit/middleware/etcd/msg/type_test.go?id=4c9351b0a3fa1e1d6d1bc1870a37189c05d7f17f&amp;follow=1'>msg.Service: add HostType() method (#627)</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>3</td><td><span class='deletions'>-40</span>/<span class='insertions'>+114</span></td></tr>
<tr><td><span title='2017-04-21 14:17:50 -0400'>2017-04-21</span></td><td><a href='/ansg191/coredns/commit/middleware/pprof/README.md?id=320cf978689fef82b16d1149eb6effe801104023&amp;follow=1'>Fix go pprof lib link (#638)</a></td><td><img src='//www.gravatar.com/avatar/c4e1dff64e2c0210e86f613a22916fc1?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Chris O'Haver
</td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr><td><span title='2017-04-21 10:21:56 +0100'>2017-04-21</span></td><td><a href='/ansg191/coredns/commit/middleware/etcd/README.md?id=e9f6a1b4ce68721e31157a8123d08a92aa4a3326&amp;follow=1'>Fix link to SkyDNS (#637)</a></td><td><img src='//www.gravatar.com/avatar/b8d1dbc43de4aafc6b60016bcdd6a12e?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Dominic
</td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr><td><span title='2017-04-20 09:40:18 -0400'>2017-04-20</span></td><td><a href='/ansg191/coredns/commit/middleware/tls/tls.go?id=387d3f5a41db1ff423475879b47acb9f8078e781&amp;follow=1'>Fix TLS error message (#634)</a></td><td><img src='//www.gravatar.com/avatar/2e69ce46f5fc6281ae89dc72eb47dce5?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Yue Ko
</td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr><td><span title='2017-04-20 10:56:56 +0100'>2017-04-20</span></td><td><a href='/ansg191/coredns/commit/Makefile.release?id=f2426b9966f4d5a41a7c6c0102d0bff56a7526be&amp;follow=1'>Add MAINTAINERS (#633)</a></td><td><img src='//www.gravatar.com/avatar/25ba01eee5a1c0e007e810afe805766c?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> Miek Gieben
</td><td>2</td><td><span class='deletions'>-0</span>/<span class='insertions'>+10</span></td></tr>
<tr><td><span title='2017-04-19 22:43:10 +0100'>2017-04-19</span></td><td><a href='/ansg191/coredns/commit/middleware/tls/README.md?id=e5b2cbb7014397eddb6d5d8f72e7bb8d6de092c4&amp;follow=1'>Clean up the tls middleware README (#631)</a></td><td><img src='//www.gravatar.com/avatar/92aec22a2f92e81152610b8b40f49a21?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> John Belamaric
</td><td>1</td><td><span class='deletions'>-4</span>/<span class='insertions'>+22</span></td></tr>
<tr><td><span title='2017-04-19 22:42:45 +0100'>2017-04-19</span></td><td><a href='/ansg191/coredns/commit/middleware/kubernetes/SkyDNS.md?id=8fc7ec776dfecf29ff34481e2e826a02968419a1&amp;follow=1'>Update the various Kubernetes middleware README files. (#630)</a></td><td><img src='//www.gravatar.com/avatar/92aec22a2f92e81152610b8b40f49a21?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> John Belamaric
</td><td>3</td><td><span class='deletions'>-174</span>/<span class='insertions'>+21</span></td></tr>
<tr><td><span title='2017-04-19 16:08:30 -0400'>2017-04-19</span></td><td><a href='/ansg191/coredns/commit/test/kubernetes_test.go?id=1c53d4130e83aecdbd06d40ed3daaf90e7e26a03&amp;follow=1'>Add fallthrough support for Kubernetes (#626)</a></td><td><img src='//www.gravatar.com/avatar/92aec22a2f92e81152610b8b40f49a21?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> John Belamaric
</td><td>7</td><td><span class='deletions'>-9</span>/<span class='insertions'>+122</span></td></tr>
<tr><td><span title='2017-04-18 11:10:49 -0400'>2017-04-18</span></td><td><a href='/ansg191/coredns/commit/middleware/trace/trace.go?id=5a60090933a221467fdc2e18faa516c6c55be306&amp;follow=1'>Tracing for gRPC Server (#619)</a></td><td><img src='//www.gravatar.com/avatar/92aec22a2f92e81152610b8b40f49a21?s=13&amp;d=retro' width='13' height='13' alt='Gravatar' /> John Belamaric
</td><td>6</td><td><span class='deletions'>-11</span>/<span class='insertions'>+72</span></td></tr>
