{# obico-settings-choice #}
<div class="obico-settings-choice" data-bind="visible: !showDetailPage()">
  <div class="obico-settings-choice__logo">
    <img src="plugin/obico/static/img/logo-full.svg" alt="Obico">
  </div>
  <div class="obico-settings-choice__content">
    <div data-bind="visible: !serverStatus.bailed_because_tsd_plugin_running()">
      <div class="obico-settings-choice__choice-unavailable" data-bind="visible: !configured()">
        <div>
          <p>
            <i class="fa fa-exclamation" style="font-size: 48px;"></i>
          </p>
          <b>You haven't linked OctoPrint to your Obico account!</b>
        </div>
        <br>
        <a class="obico-button obico-button_solid" data-bind="click: showWizardModal">Run Setup Wizard to Link OctoPrint</a>
      </div>
      <div class="obico-settings-choice__choice-wrapper" data-bind="visible: configured()">
        <div class="obico-settings-choice__choice-option" data-bind="click: function(data, event) { selectPage('advanced'); }">
          <a href="#" class="obico-button obico-button_outline obico-button_with-icon">
            <span>Settings</span>
            <img src="plugin/obico/static/img/arrow-right.svg">
          </a>
          <ul class="obico-settings-choice__choice-description">
            <li>View linked printer name</li>
            <li>Webcam Streaming</li>
            <li>Configure private Obico Server</li>
            <li>Opt in error reporting</li>
          </ul>
        </div>
        <div class="obico-settings-choice__choice-option" data-bind="click: function(data, event) { selectPage('troubleshooting'); }">
          <a href="#" class="obico-button obico-button_outline obico-button_with-icon">
            <span>Troubleshooting</span>
            <img src="plugin/obico/static/img/arrow-right.svg">
          </a>
          <ul class="obico-settings-choice__choice-description">
            <li>Server connection status</li>
            <li>Webcam streaming issues</li>
            <li>Re-run setup wizard</li>
          </ul>
        </div>
      </div>
    </div>
    <div data-bind="visible: serverStatus.bailed_because_tsd_plugin_running()">
      <div class="obico-settings-choice__choice-unavailable">
          <p>
          <i class="fa fa-exclamation" style="font-size: 48px; margin-bottom: 12px;"></i>
          </p>
        <p style="text-align: left;">The Obico plugin failed to start because "Access Anywhere - The Spaghetti Detective" plugin is still installed and enabled.</p>
        <p style="text-align: left;">Please remove or disable "Access Anywhere - The Spaghetti Detective" plugin and restart OctoPrint.</p>
        <p style="text-align: left;"><a href="https://www.obico.io/docs/user-guides/move-from-tsd-to-obico-in-octoprint">Learn more about migrating from The Spaghetti Detective to Obico.</a></p>
      </div>
    </div>
  </div>
  <div class="obico-settings-choice__footer">
    <img src="plugin/obico/static/img/chat.svg" alt="">
    <div>
      Join <a href="https://discord.com/invite/NcZkQfj" target="_blank">Obico user community (Discord server)</a><br>
      Visit our website <a href="https://obico.io/" target="_blank">obico.io</a><br>
      Download the app through the <a href="https://play.google.com/store/apps/details?id=com.thespaghettidetective.android" target="_blank">Google Playstore</a> or <a href="https://apps.apple.com/us/app/the-spaghetti-detective/id1540646623?ign-itsct=apps_box&ign-itscg=30200" target="_blank">App Store</a>
    </div>
  </div>
</div>

{# obico-settings-page #}
<div class="obico-settings-page obico-tabbable tabbable" data-bind="visible: showDetailPage()">
  <ul class="obico-tabbable__tabs nav">
    <img src="plugin/obico/static/img/logo-square-bw.svg" class="obico-tabbable__logo" alt="Obico" data-bind="click: returnToSelection">
    <li class="obico-tabbable__tab" data-page="advanced">
      <a href="#obico-advanced" class="obico-tabbable__tab-link" data-toggle="tab">
        <span class="obico-tabbable__tab-title">Settings</span>
      </a>
    </li>
    <li class="obico-tabbable__tab" data-page="troubleshooting">
      <a href="#obico-troubleshooting" class="obico-tabbable__tab-link" data-toggle="tab">
        <span class="obico-tabbable__tab-title">Troubleshooting</span>
      </a>
    </li>
  </ul>
  <div class="tab-content">
    <div class="tab-pane active" id="obico-advanced">
      <section class="obico-settings-page__section">
        <h1 class="obico-settings-page__section-title">Linked Printer</h1>
        <div class="obico-settings-page__section-content" data-bind="visible: !linkedPrinter.id()">
          <div class="alert alert-warning" role="alert">
            Can't determine which Obico account this OctoPrint is linked to. Check to make sure your Rasbperry Pi is connected to the Internet. And refresh this page.
          </div>
        </div>
        <div class="obico-settings-page__section-content" data-bind="visible: linkedPrinter.id">
          <p>This OctoPrint is linked to <b data-bind="text: linkedPrinter.name"></b> in your Obico account.</p>
          <a data-bind="attr: { href: settingsViewModel.settings.plugins.obico.endpoint_prefix() + '/printers/' + linkedPrinter.id() + '/?source=plugin' }" target="_blank" class="btn">View/Change Settings (Login Required)</a>
        </div>
      </section>
      <section class="obico-settings-page__section">
        <div class="alert alert-warning" role="alert">
          <h4>Restart required:</h4>
          The changes to any of the following settings won't be effective until OctoPrint is restarted.
        </div>
      </section>
      <section class="obico-settings-page__section">
        <h1 class="obico-settings-page__section-title">Obico Server</h1>
        <div class="obico-settings-page__section-content">
          <div class="control-group">
            <div class="controls">
                <label class="radio">
                  <input
                    type="radio"
                    name="serverAddressRadioGroup2"
                    value="cloud"
                    data-bind="checked: serverType, click: resetEndpointPrefix"
                  >
                    The Obico Cloud
                  </input>
                </label>
                <div class="radio obico-text-muted">Proudly maintained by <a href="https://www.obico.io/team.html">the Obico team</a>.</div>
                <div class="radio obico-text-muted">Free for 1 printer. Pro plan starts from $4/month. <a href="https://app.obico.io/ent_pub/pricing/">Learn more <i class="fa fa-external-link" aria-hidden="true"></i></a></div>
                <br />
                <label class="radio">
                  <input
                    type="radio"
                    name="serverAddressRadioGroup2"
                    value="self-hosted"
                    data-bind="checked: serverType, click: clearEndpointPrefix"
                  >
                    A self-hosted Obico Server.
                  </input>
                </label>
                <div class="radio obico-text-muted">Learn more about <a href="https://www.obico.io/docs/server-guides/">hosting your own Obico Server <i class="fa fa-external-link" aria-hidden="true"></i></a>.</div>
                <div class="radio">
                  <input
                    type="text"
                    class="endpoint-prefix"
                    data-bind="value: settingsViewModel.settings.plugins.obico.endpoint_prefix, hidden: serverType() === 'cloud'"
                    style="width: 100%"
                  ></input>
                </div>
              </div>
          </div>
        </div>
      </section>
      <section data-bind="visible: linkedPrinter.id">
        <h1 class="obico-settings-page__section-title">Webcam Streaming</h1>
        <div class="obico-settings-page__section-content">
          <form class="form-horizontal">
            <div class="form-check" style="margin-bottom: 24px;">
              <input id="disable-streaming" class="form-check-input" type="checkbox" data-bind="checked: settingsViewModel.settings.plugins.obico.disable_video_streaming" style="margin-top: 0px;">
              <label class="form-check-label" for="disable-streaming" style="display: inline">
                Disable webcam streaming. <a href="https://www.obico.io/docs/user-guides/disable-25-fps-streaming/">(Why would I want to do that?)</a>
              </label>
            </div>
          </form>
          <form class="form">
              <div data-bind="visible: (streaming.is_pi_camera() && !settingsViewModel.settings.plugins.obico.disable_video_streaming())" class="control-group" title="{{ _('Pi Camera resolution') }}">
                  <label class="control-label" for="pi-cam-resolution">{{ _('Webcam resolution') }}</label>
                  <div class="controls">
                      <select data-bind="options: piCamResolutionOptions, optionsValue: 'id', optionsText: 'text', value: settingsViewModel.settings.plugins.obico.pi_cam_resolution" id="pi-cam-resolution"></select>
                  </div>
              </div>
              <div data-bind="visible: linkedPrinter.is_pro() && !settingsViewModel.settings.plugins.obico.disable_video_streaming()" class="control-group">
                  <label class="control-label">Compatibility mode <a href="https://www.obico.io/docs/user-guides/streaming-compatibility-mode/">(What is it?)</a></label>
                  <div class="controls">
                      <label class="radio">
                          <input type="radio" name="webcamCompatibleModeGroup" value="auto" data-bind="checked: settingsViewModel.settings.plugins.obico.video_streaming_compatible_mode"> Automatic (default). Obico will automatically switch to compatibility mode if necessary. Select this option if you are not sure.
                      </label>
                      <label class="radio">
                          <input type="radio" name="webcamCompatibleModeGroup" value="always" data-bind="checked: settingsViewModel.settings.plugins.obico.video_streaming_compatible_mode"> Always stream in compatibility mode
                      </label>
                      <label class="radio">
                          <input type="radio" name="webcamCompatibleModeGroup" value="never" data-bind="checked: settingsViewModel.settings.plugins.obico.video_streaming_compatible_mode"> Never stream in compatibility mode
                      </label>
                  </div>
              </div>
          </form>
        </div>
      </section>
      <section class="obico-settings-page__section">
        <h1 class="obico-settings-page__section-title">Opt In</h1>
        <div class="obico-settings-page__section-content">
          <form class="form-horizontal">
            <div>Do you want to send anonymized error informtation to Obico developers to help them improve the plugin?</div>
            <div class="form-check" style="margin-top: 8px;">
              <input id="sentry-opt" class="form-check-input" type="checkbox" value="" data-bind="checked: sentryOptedIn, click: toggleSentryOpt" style="margin-top: 0px;">
              <label class="form-check-label" for="sentry-opt" style="display: inline">
                Yes I am in!
              </label>
            </div>
          </form>
        </div>
      </section>
    </div>

    <div class="tab-pane" id="obico-troubleshooting">
      <section class="obico-settings-page__section">
        <h1 class="obico-settings-page__section-title">Plugin Status</h1>
        <div class="obico-settings-page__section-content">
          <div class="obico-test-connection-wrapper">
            <div class="obico-section-panel obico-plugin-status" data-bind="visible: !linkedPrinter.id()">
              <div class="obico-text-error">
                Plugin can't reach Obico Server. Press the "TEST" button to further diagnose the problem.
              </div>
            </div>
            <div class="obico-section-panel obico-plugin-status" data-bind="visible: linkedPrinter.id">
              <div class="obico-status-line" data-bind="visible: linkedPrinter.is_pro">
                <i class="fa fa-circle"></i>Account status: Pro
              </div>
              <div class="obico-status-line" data-bind="visible: !linkedPrinter.is_pro()">
                <i class="fa fa-circle"></i>Account status: Free
              </div>
              <div class="obico-status-line">
                <i class="fa fa-circle"></i>Webcam streaming:
                <span data-bind="visible: !streaming.webrtc_streaming()"><a target="_blank" href="https://www.obico.io/docs/user-guides/webcam-stream-stuck-at-1-10-fps/">0.1 FPS</a></span>
                <span data-bind="visible: streaming.webrtc_streaming(), text: linkedPrinter.is_pro() ? (streaming.compat_streaming() ?  'Premium (compatibility)' : 'Premium (advanced)') : 'Basic'"></span>
              </div>
              <div class="obico-status-line obico-text-success" data-bind="visible: !hasServerErrors()">
                <i class="fa fa-circle"></i>Connection to server: Okay
              </div>
              <div class="obico-status-line obico-text-error" data-bind="visible: hasServerErrors()">
                <i class="fa fa-circle"></i><a href="#diagnosticReportModal" data-bind="click: showDiagnosticReportModal">Connection to server: <span data-bind="text: serverStatus.is_connected() ? 'Error' : 'Disconnected'"></span></a>
              </div>
              <div class="obico-status-line obico-text-success" data-bind="visible: !hasWebcamErrors()">
                <i class="fa fa-circle"></i>Connection to webcam: Okay
              </div>
              <div class="obico-status-line obico-text-error" data-bind="visible: hasWebcamErrors()">
                <i class="fa fa-circle"></i><a href="#diagnosticReportModal" data-bind="click: showDiagnosticReportModal">Connection to webcam: Error</a>
              </div>
            </div>
            <div class="obico-divider" style="height: 70px; border-right: gray solid thin;"></div>
            <div class="obico-section-panel">
                <h5 class="obico-test-connection-header">Server Connection Test</h5>
            <div class="obico-test-connection" style="padding-right: 18px;">
              <button class="obico-button obico-button_solid obico-button_circle obico-text-connection-button" data-bind="click: testServerConnection">
              <span data-bind="visible: serverTested() != 'testing'">TEST</span>
              <i data-bind="visible: serverTested() == 'testing'" class="fa fa-spinner fa-spin" style="font-size: 40px;"></i>
              </button>
              <div class="obico-test-result">
                <div style="margin: 10px; display: flex; flex-direction: column; align-items: center;">
                  <div data-bind="visible: serverTested() == 'tested', css: {'obico-text-error': !serverTestSucceeded(), 'obico-text-success': serverTestSucceeded()}" style="text-align: center;">
                    <i data-bind="css: {'fa-exclamation': !serverTestSucceeded(), 'fa-check': serverTestSucceeded()}" class="fa" aria-hidden="true" style="font-size: 24px;"></i>
                    <div data-bind="visible: serverTestStatusCode() == 200">
                    Succeeded!
                    </div>
                    <div class="obico-status-line obico-text-error" data-bind="visible: serverTestStatusCode() == null">
                    <a href="#diagnosticReportModal" data-bind="click: showDiagnosticReportModal">Failed to contact server. Is OctoPrint connected to Internet?</a>
                    </div>
                    <div data-bind="visible: serverTestStatusCode() == 401">
                    <div>Invalid account credentials.</div>
                    <div><a href="#" data-bind="click: showWizardModal">Re-run wizard</a> to link OctoPrint.</div>
                    </div>
                    <div data-bind="visible: serverTestUnknownError()">
                    Something went wrong. <a href="mailto:support@obico.io">Contact us</a> for help.
                    </div>
                  </div>
                </div>
              </div>
            </div>
            </div>
          </div>
        </div>
      </section>
      <section class="obico-settings-page__section">
        <h1 class="obico-settings-page__section-title">Troubleshooting Tips</h1>
        <p>Make sure you have followed <a href="https://www.obico.io/docs/user-guides/octoprint-plugin-setup/">the setup guide</a> to link OctoPrint to your Obico account successfully. Check out our <a href="https://www.obico.io/help">help docs</a> for detailed troubleshooting guides.</p>
        <div class="obico-settings-page__section-content">
          <div class="obico-collapsable">
            <h4 class="obico-collapsable__title">
              Webcam streaming
              <span class="obico-collapsable__counter">4</span>
            </h4>
            <div class="obico-collapsable__content">
              <h5>I'm getting laggy webcam streaming.</h5>
              <ul>
                <li>If you have a free Obico account and it's out of the free trial period, your webcam streaming will be up to 5 FPS (frame per second). <a href="https://www.obico.io/docs/user-guides/webcam-streaming-for-human-eyes/">25 FPS webcam streaming is a premium feature for Pro accounts only.</a></li>
                <li>Have you restarted OctoPrint and/or your Rasbperry Pi after upgrading to Pro account?</li>
              </ul>
              <h5>I got a warning that says "the webcam streaming failed to start".</h5>
              <div>This warning means the webcam streaming process failed to start. Follow <a target="_blank" href="https://www.obico.io/docs/user-guides/webcam-stream-stuck-at-1-10-fps/">this troubleshooting guide</a>.</div>
              <h5>Webcam streaming doesn't work.</h5>
              <ul>
                <li>You need to make sure webcam URL is configured correctly in OctoPrint, and can be reached from your Raspberry Pi.</li>
                <li>Check out <a href="https://www.obico.io/docs/user-guides/webcam-feed-is-not-showing/">the detailed troubleshooting guide</a>.</li>
              </ul>
              <h5>I got a warning that says "streaming uses excessive CPU".</h5>
              <ul>
                <li>If you have set streaming compability mode to "always", please set it back to "auto".</li>
                <li>If you have to always stream in compability mode, set webcam resolution to 640x480, fps to 10. Then restart the Pi.</li>
                <li>Learn more about <a href="https://www.obico.io/docs/user-guides/streaming-compatibility-mode/">the streaming compability mode</a>.</li>
              </ul>
            </div>
          </div>
          <div class="obico-collapsable">
            <h4 class="obico-collapsable__title">
              Failure detection
              <span class="obico-collapsable__counter">2</span>
            </h4>
            <div class="obico-collapsable__content">
              <h5>I got a failure alert but there was nothing wrong.</h5>
              <ul>
                <li>This happens because the AI failure detection is still not perfect yet. <a href="https://www.obico.io/docs/user-guides/how-does-credits-work/">Help us improve.</a></li>
              </ul>
              <h5>"Failure detection off" in the Obico app.</h5>
              <ul>
                <li>The AI failure detection is off when your printer is not printing.</li>
                <li>You have disabled AI failure detection.</li>
                <li>The plugin has trouble connecting to Obico Server</li>
                <li><a href="https://www.obico.io/docs/user-guides/detective-not-watching#4-you-have-run-out-of-ai-detection-hours">You have run out of AI Detection Hours</a>.</li>
              </ul>
            </div>
          </div>
          <div class="obico-collapsable">
            <h4 class="obico-collapsable__title">
              Other problems
              <span class="obico-collapsable__counter">2</span>
            </h4>
            <div class="obico-collapsable__content">
              <h5>My OctoPrint is running, but the page shows "OctoPrint is offline".</h5>
              <ul>
                <li>Your Rasbperry Pi may have issue connecting to the internet. Check the connection status on this page for errors.</li>
                <li>The credentials established in the process of linking OctoPrint to your account may have been lost or corrupted. For instance, if you have re-installed OctoPrint, or have a corrupted SD card.</li>
                <li>As the last resort, you re-run the setup wizard (below) to re-establish the credentials to link OctoPrint to your account.</li>
              </ul>
              <h5>Help! The web page doesn't seem to work correctly.</h5>
              <ul>
                <li>It's almost always a good idea to just try "hard-refreshing" the page. Here is <a href="https://en.scratch-wiki.info/wiki/Help:Hard_Refresh">how you hard-refresh a page</a>.</li>
              </ul>
            </div>
          </div>
        </div>
      </section>
      <section class="obico-settings-page__section">
        <h1 class="obico-settings-page__section-title">Re-run Setup Wizard</h1>
        <div class="obico-settings-page__section-content">
          <div>
          If you can no longer log into your Obico account, e.g., you don't remember what email you signed up with, you can re-run the setup wizard to link your OctoPrint with a new Obico account.
          </div>
          <div>
            <br>
            <a href="#" class="obico-button obico-button_solid" data-bind="click: showWizardModal">Re-run Wizard</a>
          </div>
        </div>
      </section>
    </div>
  </div>
</div>


{# Modals #}

<div id="wizardModal" class="obico-modal modal hide fade secondary-modal" tabindex="-1" role="dialog" aria-labelledby="wizardModalLabel" aria-hidden="true">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
    <h4 style="text-align: center;"><img src="plugin/obico/static/img/logo-square.svg" style="width: 1.6em; height: 1.6em; margin-right: 1em;">Obico Setup Wizard</h4>
  </div>
  <div class="modal-body">
    <div class="alert alert-warning" role="alert" data-bind="visible: configured">
      You are re-linking OctoPrint to your Obico account. Don't forget to <strong>restart OctoPrint</strong> when you are done.
    </div>
    <div data-bind="allowBindings: false">
    {% include "obico_wizard.jinja2" %}
    </div>
  </div>
  <div class="modal-footer">
    <div class="row-fluid">
      <div class="span6" style="text-align: left;">
        <div class="controls" data-bind="visible: wizardAutoPoppedup">
          <label class="checkbox">
            <input type="checkbox" data-bind="checked: disableWizardAutoPopUp" id="toggleAutoPopUp"> Don't show again
          </label>
        </div>
      </div>
      <div class="span6">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>

<div id="diagnosticReportModal" class="obico-modal modal hide fade obico-secondary-modal" tabindex="-1" role="dialog" aria-labelledby="diagnosticReportModalLabel" aria-hidden="true">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
    <h3 id="diagnosticReportModalLabel">Obico Diagnostic Report</h3>
  </div>
  <div class="modal-body">
    <i>*Note: This report is to diagnostic information for potential problems in <b>Obico for OctoPrint</b> plugin. It is not a diagnosis for your print failures.</i>
    <br /><br />
    <b class="obico-text-success" data-bind="visible: !hasServerErrors() && !hasWebcamErrors()">
      There have been no errors since last time OctoPrint rebooted.
    </b>
    <b class="obico-text-error" data-bind="visible: hasServerErrors() || hasWebcamErrors()">
      Obico plugin has run into issues. These issues may have prevented Obico plugin from connecting to the Obico Server and sending status update correctly and promptly. Please check out our <a href="https://www.obico.io/docs/user-guides/connectivity-error-report/">trouble-shooting page</a> or <a href="https://www.obico.io/docs/user-guides/contact-us-for-support/">reach out to us</a> for help.
    </b>
    <div data-bind="visible: hasServerErrors()">
      <hr />
      <p class="obico-text-error">
        The plugin has failed to connect to the server <b data-bind="text: errorStats.server.error_count"></b> times (error rate <b data-bind="text: serverErrorRate() + '%'"></b>) since OctoPrint rebooted.
      </p>
      <ul>
        <li>The first error occurred at: <b data-bind="text: new Date(errorStats.server.first())"></b>.</li>
        <li>The most recent error occurred at: <b data-bind="text: new Date(errorStats.server.last())"></b>.</li>
        <li data-bind="visible: serverStatus.status_posted_to_server_ts">The most recent attempted server contact occurred at: <b data-bind="text: new Date(serverStatus.status_posted_to_server_ts()*1000)"></b>.</li>
      </ul>
      <p>
        Obico failed to connect to the server. Please make sure OctoPrint has a reliable internet connection.
      </p>
    </div>
    <div data-bind="visible: hasWebcamErrors()">
      <hr />
      <p class="obico-text-error">
        The plugin has failed to connect to the webcam <b data-bind="text: errorStats.webcam.error_count"></b> times (error rate <b data-bind="text: webcamErrorRate() + '%'"></b>) since OctoPrint rebooted.
      </p>
      <ul>
        <li>The first error occurred at: <b data-bind="text: new Date(errorStats.webcam.first())"></b>.</li>
        <li>The most recent error occurred at: <b data-bind="text: new Date(errorStats.webcam.last())"></b>.</li>
      </ul>
      <p>
        Please go to "Settings" -> "Webcam & Timelapse" and make sure the stream URL and snapshot URL are set correctly.
      </p>
    </div>
  </div>
</div>

<div id="tsdMigratedModal" class="obico-modal modal hide fade secondary-modal" tabindex="-1" role="dialog" aria-labelledby="tsdMigratedModal" aria-hidden="true">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
    <h4 style="text-align: center;"><img src="plugin/obico/static/img/logo-square.svg" style="width: 1.6em; height: 1.6em; margin-right: 1em;">Welcome to Obico</h4>
  </div>
  <div class="modal-body">
    <h3>The Spaghetti Detective is now Obico</h3>
    <p>We have migrated all of your previous settings in The Spaghetti Detective to Obico. Now your OctoPrint is linked to the Obico Server.</p>
    <br /><br />
    <p><b>What's next?</b></p>
    <ul>
      <li>If you haven't done so, please remove the "Access Anywhere - The Spaghetti Detective" plugin from your Octoprint. Don't forget to restart OctoPrint afterward.</li>
      <li>Nothing else. You are all set. You can now login <a href="https://app.obico.io">the Obico app</a> using your previous The Spaghetti Detective account credential.</li>
    </ul>
    <br /><br />
    <p>Have run into issues with the Obico plugin? Head to <a href="https://www.obico.io/docs/user-guides/move-from-tsd-to-obico-in-octoprint">the migration instruction</a> for troubleshooting tips.</p>
    <p>Learn more about <a href="https://www.obico.io/the-spaghetti-detective.html">The Spaghetti Detective becoming Obico</a>.</p>
  </div>
  <div class="modal-footer">
    <div class="row-fluid">
      <div class="span12">
        <button type="button" class="btn btn-secondary" data-bind="click: hideTsdMigratedModal">Gotcha! Don't show again.</button>
      </div>
    </div>
  </div>
</div>


