<div id="escaped">
  <h1>Escape!</h1>
</div>

<!-------  Cheryl Velez - Puzzler   -------- >

<!-- Trigger/Open The Modal -->
<!-- <button id="puzzlerBtn">Open Cheryls Puzzle</button> -->

<!-- The Modal -->
<div id="puzzlerModal" class="modal">

  <!-- Modal content -->
  <div class="modal-content">
    <span class="close close-puzzler">&times;</span>

    <!-- puzzler container   -->
    <div id="puzzler-container">

      <div class="content">
        <div>
          <p id="alert"></p>
        </div>
      </div>
      <p class="quote">"The person who masters himself through self-control and discipline is truly undefeatable." -Buddha</p><br><br>
      <p class="quote">Directions: Solve the riddle of the runes: the tiles are all out of order. <br>Can you figure out their correct order?<br>Drag and drop the tiles into the empty boxes in the correct order. <br> Hint: When placing a tile, do not hover over boxes
        you've already filled or are going to fill! <br><span class="bighint">Bigger Hint: </span><span class="revealtext">Use the console to watch for changes in the array!</span> </p>

      <div id="btn-container"><button>Submit Answer</button>
      </div>
      <div class="outerflex">
        <div class="topContainer">
          <div class="outerBorder">
            <div class="tile" id="1"><img src="https://assets.codepen.io/108463/tile1.png" alt="" /></div>
          </div>
          <div class="outerBorder">
            <div class="tile" id="2"><img src="https://assets.codepen.io/108463/tile2.png" alt="" /></div>
          </div>
          <div class="outerBorder">
            <div class="tile" id="3"><img src="https://assets.codepen.io/108463/tile3.png" alt="" /></div>
          </div>
          <div class="outerBorder">
            <div class="tile" id="4"><img src="https://assets.codepen.io/108463/tile4.png" alt="" /></div>
          </div>
          <div class="outerBorder">
            <div class="tile" id="5"><img src="https://assets.codepen.io/108463/tile5.png" alt="" /></div>
          </div>
          <div class="outerBorder">
            <div class="tile" id="6"><img src="https://assets.codepen.io/108463/tile6.png" alt="" /></div>
          </div>
          <div class="outerBorder">
            <div class="tile" id="7"><img src="https://assets.codepen.io/108463/tile7.png" alt="" /></div>
          </div>
          <div class="outerBorder">
            <div class="tile" id="8"><img src="https://assets.codepen.io/108463/tile8.png" alt="" /></div>
          </div>
        </div>
        <!-- top container -->

        <div class="bottomContainer">
          <div class="blank" id="b1"> </div>
          <div class="blank" id="b2"> </div>
          <div class="blank" id="b3"> </div>
          <div class="blank" id="b4"> </div>
          <div class="blank" id="b5"> </div>
          <div class="blank" id="b6"> </div>
          <div class="blank" id="b7"> </div>
          <div class="blank" id="b8"> </div>

        </div>
        <!-- bottom container -->
      </div>
      <!-- outer container -->

    </div>
    <!--  end puzzler container    -->

  </div>
  <!-- end modal content   -->

</div>
<!-- end modal -->

<!------- End Cheryl Velez - Puzzler ------- >

<!-- Dominic Duffin - Math Puzzle  -->

<!-- Trigger/Open The Modal -->
<!-- <button id="mathPuzzleBtn">Open Dominics Puzzle</button> -->

<!-- The Modal -->
<div id="mathPuzzleModal" class="modal">

  <!-- Modal content -->
  <div class="modal-content">
    <span class="close close-mathpuzzle">&times;</span>

    <!--   Math Puzzle Container   -->
    <!--  PUZZLE GOES INSIDE HERE   -->
    <div id="math-puzzle-container">
      <div id="math-puzzle-main">
        <div id="math-puzzle-keypad">
          <button type="button" class="math-puzzle-numberButton" id="math-puzzle-one">1</button>
          <button type="button" class="math-puzzle-numberButton" id="math-puzzle-two">2</button>
          <button type="button" class="math-puzzle-numberButton" id="math-puzzle-three">3</button>
          <button type="button" class="math-puzzle-numberButton" id="math-puzzle-four">4</button>
          <button type="button" class="math-puzzle-numberButton" id="math-puzzle-five">5</button>
          <button type="button" class="math-puzzle-numberButton" id="math-puzzle-six">6</button>
          <button type="button" class="math-puzzle-numberButton" id="math-puzzle-seven">7</button>
          <button type="button" class="math-puzzle-numberButton" id="math-puzzle-eight">8</button>
          <button type="button" class="math-puzzle-numberButton" id="math-puzzle-nine">9</button>
          <button type="button" class="math-puzzle-zeroButton" id="math-puzzle-zero">0</button>
          <button type="button" class="math-puzzle-signButton" id="math-puzzle-plus">+</button>
          <button type="button" class="math-puzzle-signButton" id="math-puzzle-minus">-</button>
        </div>
        <div id="math-puzzle-sum">
          <div class="math-puzzle-position" id="math-puzzle-message">
            Make the sum add up!
          </div>
          <div class="math-puzzle-position" id="math-puzzle-a">Number</div>
          <div class="math-puzzle-position" id="math-puzzle-b">Sign</div>
          <div class="math-puzzle-position" id="math-puzzle-c">Number</div>
          <div class="math-puzzle-position" id="math-puzzle-d">Sign</div>
          <div class="math-puzzle-position" id="math-puzzle-e">Number</div>
          <div class="math-puzzle-position" id="math-puzzle-f">=</div>
          <div class="math-puzzle-position" id="math-puzzle-g">Number</div>
        </div>
      </div>

    </div>
    <!--  end math puzzle container    -->

  </div>
  <!-- end modal content   -->

</div>
<!-- end modal  -->

<!-- End Dominic Duffin - Math Puzzle -->

<!-- Paul - Flexbox Puzzle  -->

<!-- Trigger/Open The Modal -->
<!-- <button id="flexboxPuzzleBtn">Open Pauls Puzzles</button> -->

<!-- The Modal -->
<div id="flexboxPuzzleModal" class="modal">

  <!-- Modal content -->
  <div class="modal-content">
    <span class="close close-flexboxpuzzle">&times;</span>

    <!--   Flexbox Puzzle Container   -->
    <!--  PUZZLE GOES INSIDE HERE   -->
    <div id="flexbox-puzzle-container">

      <div>
        <header class="heading">
          <p class="heading__rules">
            Use the buttons to rearrange the boxes and find the correct alignment!<br> The box color will change and indicate if you're getting hot or cold.
            <br><br>
          </p>
          <p class="heading__subtitle"></p>
          <div><span class="notification">Start with turning on "Display Flex"</span></div>
        </header>
        <div class="flex-menu">
          <div>
            <label for="flexDisplay">Display</label>
            <button class="flex-menu__items" id="flexDisplay">Display Flex  </button>
          </div>
          <div>
            <label for="flexDirectn">Flex Direction</label>
            <button class="flex-menu__items" id="flexDirectn">Change Flex Direction</button>
          </div>
          <div>
            <label for="flexJustCont">Justify-Content</label>
            <button class="flex-menu__items" id="flexJustCont">Justify Content</button>
          </div>
          <div>
            <label for="flexAlignItems">Align-Items</label>
            <button class="flex-menu__items" id="flexAlignItems">Align Items</button>
          </div>
        </div>

        <div class="flexPuzzle-container">
          <div class="cubes cube-1">
            <div class="side top"></div>
            <div class="side bottom"></div>
            <div class="side front"></div>
            <div class="side back"></div>
            <div class="side left"></div>
            <div class="side right"></div>
          </div>
          <div class="cubes cube-2">
            <div class="side top"></div>
            <div class="side bottom"></div>
            <div class="side front"></div>
            <div class="side back"></div>
            <div class="side left"></div>
            <div class="side right"></div>
          </div>
          <div class="cubes cube-3">
            <div class="side top"></div>
            <div class="side bottom"></div>
            <div class="side front"></div>
            <div class="side back"></div>
            <div class="side left"></div>
            <div class="side right"></div>

          </div>
          <div class="cubes cube-4">
            <div class="side top"></div>
            <div class="side bottom"></div>
            <div class="side front"></div>
            <div class="side back"></div>
            <div class="side left"></div>
            <div class="side right"></div>
          </div>
          <div class="cubes cube-5">
            <div class="side top"></div>
            <div class="side bottom"></div>
            <div class="side front"></div>
            <div class="side back"></div>
            <div class="side left"></div>
            <div class="side right"></div>
          </div>
        </div>
      </div>
    </div>

  </div>
  <!--  end flexbox puzzle container    -->

</div>
<!-- end modal content   -->

</div>
<!-- end Modal -->

<!-- End Paul - Flexbox Puzzle -->

<!-- Kristopher Van Sant - Mirror Puzzle  -->

<!-- Trigger/Open The Modal -->
<!-- <button id="mirrorPuzzleBtn">Open Kristophers Puzzle</button> -->

<!-- The Modal -->
<div id="mirrorPuzzleModal" class="modal">

  <!-- Modal content -->
  <div class="modal-content">
    <span class="close close-mirrorpuzzle">&times;</span>

    <!--   Mirror Puzzle Container   -->
    <!--  PUZZLE GOES INSIDE HERE   -->
    <div id="mirror-puzzle-container">
      <p id="mirror-clue">Hmm, I can't seem to read this note.</p>
      <div id="note">
        <p id="note-text" class="mirror-text">"Scraps of code drifting around the network can congeal into pools of data. within this primordial soup the code breaks, re-assembles, mutates. Evolves"</p>
      </div>
      <div id="mmirror"></div>

    </div>
    <!--  end mirror puzzle container    -->

  </div>
  <!-- end modal content   -->

</div>
<!-- end modal -->

<!-- End Kristopher Van Sant - Mirror Puzzle -->

<!-- Ryan Saunders - Pipe Puzzle  -->

<!-- Trigger/Open The Modal -->
<!-- <button id="pipePuzzleBtn">Open Ryans Puzzle</button> -->

<!-- The Modal -->
<div id="pipePuzzleModal" class="modal">

  <!-- Modal content -->
  <div class="modal-content">
    <span class="close close-pipepuzzle">&times;</span>

    <!--  Pipe Puzzle Container   -->
    <!--  PUZZLE GOES INSIDE HERE   -->
    <div id="pipe-puzzle-container">
      <div id="pipe-notbusted">
        <div class="container" id="container">
        </div>

        <div class="testArea">
          <button class="testButton" id="test" onClick="newPipe()">
        Add Pipe
        </button>
          <button class="testButton" id="test2" onClick="updatePipes()">
        Update Rows & Columns
        </button>
          <button class="testButton" id="test3" onClick="test()">
        List Array
        </button>
          <br /> <br />
          <form>
            Rows: <input type="number" min="1" max="10" id="rowCount"> Columns: <input type="number" min="1" max="10" id="colCount">
          </form>
          <br />
          <div class="pipe pipe-straight"></div>
          <div class="pipe pipe-cross"></div>
          <div class="pipe pipe-angle"></div>
          <div class="pipe pipe-junction"></div>

        </div>

        <div class="bottomConsole"></div>
      </div>
      <div id="pipe-busted">
        <h2>Oh my...Looks like these pipes are busted. <br> I guess I better leave this for the plumber.</h2>
        <!-- <img src="https://media.giphy.com/media/46LMaiLUFRkoU/giphy.gif" alt=""> -->
      </div>

    </div>
    <!--   end container   -->

  </div>
  <!--  end modal content  -->

</div>
<!-- end modal -->

<!-- End Ryan Saunders - Pipe Puzzle -->

<!-- Antoine Guillien - Recursion Puzzle  -->

<!-- Trigger/Open The Modal -->
<!-- <button id="recursionPuzzleBtn">Open Antoines Puzzle</button> -->

<!-- The Modal -->
<div id="recursionPuzzleModal" class="modal">

  <!-- Modal content -->
  <div class="modal-content">
    <span class="close close-recursionpuzzle">&times;</span>

    <!--  Recursion Puzzle Container   -->
    <!--  PUZZLE GOES INSIDE HERE   -->
    <div id="recursion-puzzle-container">

      <div id="app">
        <h1>We All Scream For Ice Cream</h1>
        <div v-if="won" class="won">
          <h1>Yay! You found the Ice Cream at level {{details.level}} after {{details.clicks}} clicks and {{details.opened}} containers opened!</h1>
          <h1><i class="fa fa-ice-cream"></i></h1>
        </div>
        <thing v-else :data="root" :cb="cb"></thing>
      </div>

    </div>
    <!--   end container   -->

  </div>
  <!--  end modal content  -->

</div>
<!-- end modal -->

<!-- End Antoine Guillien - Recursion Puzzle  -->

<!-- ROOM SCENE -->
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In  -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="300px" height="105px" viewBox="0 0 300 105" style="enable-background:new 0 0 300 105;" xml:space="preserve">
<style type="text/css">
	.st0{fill:#e6e6e6;}
	.st1{fill:#e6e6e6;stroke:#000000;stroke-width:0.2578;stroke-miterlimit:10;}
	.st2{fill:#e6e6e6;fill-opacity:0;}
	.st3{opacity:0;}
</style>
<defs>
</defs>
<g id="id="mirrorNoteWrap>
	<g id="mirror">
		<ellipse id="solidfill" class="st0" cx="285" cy="27.6" rx="11.5" ry="14.7"/>
		<g>
			<path class="st0" d="M285,7.9c-8.2,0-14.9,8.8-14.9,19.7s6.7,19.7,14.9,19.7s14.9-8.8,14.9-19.7S293.2,7.9,285,7.9z M285,46.3
				c-7.7,0-13.9-8.4-13.9-18.7S277.4,9,285,9s13.9,8.4,13.9,18.7S292.7,46.3,285,46.3z"/>
			<path class="st0" d="M285,12.3c-6.4,0-11.6,6.9-11.6,15.3S278.6,43,285,43s11.6-6.9,11.6-15.3S291.4,12.3,285,12.3z M285,41.9
				c-5.8,0-10.5-6.4-10.5-14.3s4.7-14.3,10.5-14.3s10.5,6.4,10.5,14.3S290.8,41.9,285,41.9z"/>
			<rect x="278.4" y="19.3" transform="matrix(0.7032 -0.711 0.711 0.7032 70.135 207.5076)" width="10.4" height="0.9"/>
			<rect x="279.1" y="26.5" transform="matrix(0.7032 -0.711 0.711 0.7032 64.812 209.1774)" width="7.7" height="0.9"/>
		</g>
		<g id="note">
			<path d="M292,37.8c0-0.1,0.5-1.6,0.5-3.6V30h-7.3v4.2c0,1.9-0.4,3.4-0.4,3.4l-0.1,0.3h7.3V37.8z M285.2,37.5
				c0.1-0.6,0.4-1.8,0.4-3.2v-3.7h6.3v3.7c0,1.5-0.3,2.8-0.4,3.2C291.6,37.5,285.2,37.5,285.2,37.5z"/>
			
				<rect x="287.9" y="29.6" transform="matrix(9.839854e-02 -0.9951 0.9951 9.839854e-02 230.2782 314.6575)" class="st1 st0" width="1.7" height="1.2"/>
			<g>
				<g>
					<path d="M288.8,32.7h-2.4c0,0-0.1,0-0.1-0.1c0,0,0-0.1,0.1-0.1h2.4C288.9,32.6,288.9,32.6,288.8,32.7
						C288.9,32.6,288.9,32.7,288.8,32.7z"/>
				</g>
			</g>
			<g>
				<g>
					<path d="M291.4,33.5c-0.8,0-1.7,0-2.5,0s-1.7,0-2.5,0c0,0-0.1,0-0.1-0.1c0,0,0-0.1,0.1-0.1c0.8,0,1.7,0,2.5,0s1.7,0,2.5,0
						C291.4,33.4,291.4,33.5,291.4,33.5L291.4,33.5z"/>
				</g>
			</g>
			<g>
				<g>
					<path d="M291.2,34.3h-4.9c0,0-0.1,0-0.1-0.1c0,0,0-0.1,0.1-0.1h4.9C291.2,34.2,291.2,34.3,291.2,34.3L291.2,34.3z"/>
				</g>
			</g>
			<g>
				<g>
					<path d="M286.5,35.1C286.4,35.1,286.4,35.1,286.5,35.1C286.4,35,286.5,35,286.5,35.1c0.8-0.1,1.6-0.1,2.4-0.1s1.6,0,2.4,0
						c0,0,0.1,0,0.1,0.1c0,0,0,0.1-0.1,0.1c-0.8,0-1.6,0-2.4,0C288.1,35.1,287.3,35.1,286.5,35.1z"/>
				</g>
			</g>
		</g>
	</g>
	<rect id="mirrorPuzzleBtn" x="270" y="8" class="st2" width="30" height="39.5"/>
</g>
<g id="door">
	<path class="st0" d="M62.7,56.7c1.5,0,2.8-1.3,2.8-2.8s-1.3-2.8-2.8-2.8c-1.5,0-2.8,1.3-2.8,2.8C60,55.5,61.2,56.7,62.7,56.7z
		 M62.7,52.9c0.6,0,1,0.5,1,1s-0.5,1-1,1c-0.6,0-1-0.5-1-1S62.2,52.9,62.7,52.9z"/>
	<path class="st0" d="M95.9,104v-1.7H74.7l0,0h-0.3V0H21.7v102.3h-2.3H0v1.7h19.2h4.1h2.2h1.7h41.6h1.7h2.1 M68.8,102.3H27.2V5.5
		h41.6V102.3z M70.5,102.3V3.8l0,0h-45l0,0v98.5h-2.1V1.7h49.2v100.5h-2.1V102.3z"/>
</g>
  
<!--   padlock section -->
<svg style="display: none;">
	<symbol id="locked" viewBox="0 0 24 24">

	</symbol>
  <symbol id="unlocked" viewBox="0 0 24 24">
  
  </symbol>
</svg>

<svg id="padlock0" x="75" y="25" width="7" height="7" viewBox="0 0 24 24">
   		<path class="locked" d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"/>
      		<path class="unlocked" d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z"/>
  </svg>

<svg id="padlock1" x="75" y="33" width="7" height="7" viewBox="0 0 24 24">
      		<path class="locked" d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"/>
      		<path class="unlocked" d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z"/>
  </svg>

<svg id="padlock2" x="75" y="41" width="7" height="7" viewBox="0 0 24 24">
      		<path class="locked" d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"/>
      		<path class="unlocked" d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z"/>
  </svg>

<svg id="padlock3" x="75" y="49" width="7" height="7" viewBox="0 0 24 24">
      		<path class="locked" d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"/>
      		<path class="unlocked" d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z"/>
  </svg>

<svg id="padlock4" x="75" y="57" width="7" height="7" viewBox="0 0 24 24">
      		<path class="locked" d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"/>
      		<path class="unlocked" d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z"/>
  </svg>

<svg id="padlock5" x="75" y="65" width="7" height="7" viewBox="0 0 24 24">
     		<path  class="locked" d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z"/>
      		<path class="unlocked" d="M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm0 12H6V10h12v10z"/>
  </svg>
<!--   end of padlock section -->

<path id="desk" class="st0" d="M130.4,65.4v5.5h2v33.7h5.5V73H207v6.4v1.3v8.4v1.4v14.1h18.3V90.5v-1.4v-8.4v-1.3v-8.5v-1.3v-4.3
	L130.4,65.4L130.4,65.4z M136.7,103.4h-3V70.9h3V73V103.4z M138,71.7v-0.8h69.1v0.8H138z M224.1,103.4h-15.7V90.5h15.7V103.4z
	 M224.1,89.1h-15.7v-8.4h15.7V89.1z M224.1,79.4h-15.7v-8.5h15.7V79.4z M207.9,69.6h-0.8H138h-1.3h-4.3h-0.7v-3h92.4v3H207.9z
	 M220.3,75.2h-8.1v-0.6c0-0.8,0.7-1.5,1.5-1.5h5c0.8,0,1.5,0.7,1.5,1.5L220.3,75.2L220.3,75.2z M220.3,85.1h-8.1v-0.6
	c0-0.8,0.7-1.5,1.5-1.5h5c0.8,0,1.5,0.7,1.5,1.5L220.3,85.1L220.3,85.1z M212.2,101.8v-0.6c0-0.8,0.7-1.5,1.5-1.5h5
	c0.8,0,1.5,0.7,1.5,1.5v0.6H212.2z M220.3,95.1h-8.1v-0.6c0-0.8,0.7-1.5,1.5-1.5h5c0.8,0,1.5,0.7,1.5,1.5L220.3,95.1L220.3,95.1z" />
<g id="computer">
  <g>
    <g id="hard-drive">
      <rect x="205.4" y="60.4" class="st0" width="0.9" height="3" />
      <rect x="201.7" y="60.4" class="st0" width="0.9" height="3" />
      <polygon class="st0" points="196.3,39.1 206.4,39.1 206.4,40.1 207.3,40.1 207.3,38.2 195.4,38.2 195.4,40.1 196.3,40.1 			" />
      <path class="st0" d="M193.7,36.2v29.5H209V36.2H193.7z M208.1,64.7h-13.5V37.1h13.5V64.7L208.1,64.7z" />
      <polygon class="st0" points="206.2,53.7 204.7,53.7 204.7,54.6 207.1,54.6 207.1,52.1 206.2,52.1 			" />
      <rect x="199.9" y="60.4" class="st0" width="0.9" height="3" />
      <rect x="203.6" y="60.4" class="st0" width="0.9" height="3" />
      <rect x="204.6" y="40.9" class="st0" width="1.8" height="0.9" />
      <rect x="200.1" y="46.2" class="st0" width="6.3" height="0.9" />
      <rect x="198" y="60.4" class="st0" width="0.9" height="3" />
      <rect x="196.2" y="60.4" class="st0" width="0.9" height="3" />
    </g>
    <g id="desktop">
      <path class="st0" d="M170.2,61.3c-5,0.2-5,1-5,1.4v2.1c0,1.2,4.1,1.4,7.6,1.4s7.6-0.2,7.6-1.4v-2.1c0-0.3,0-1.1-5-1.4v-3h14.3
				V34.9h-33.8v23.4h14.3L170.2,61.3L170.2,61.3z M179.4,64.6c-0.5,0.2-2.7,0.6-6.7,0.6c-3.9,0-6.2-0.4-6.7-0.6v-1.2
				c1.4,0.5,4.2,0.6,6.7,0.6s5.2-0.1,6.7-0.6V64.6z M156.7,57.4V35.8h31.9v21.6h-14.3v4.8h0.4c2.1,0.1,3.4,0.3,4.1,0.5
				c-0.9,0.2-3,0.5-6.2,0.5s-5.2-0.3-6.2-0.5c0.7-0.2,2-0.4,4.1-0.5h0.4v-4.8C171.1,57.4,156.7,57.4,156.7,57.4z" />
      <path class="st0" d="M187,37h-28.5v18.4H187V37z M186,54.4h-26.7V37.9H186V54.4z" />
      <rect x="158.9" y="37" class="st0" width="28" height="18" />
      <g id="screenglitch">
        <rect x="175.2" y="43.1" width="3.2" height="1.1" />
        <rect x="181.6" y="43.1" width="3.2" height="1.1" />
        <rect x="162.5" y="43.1" width="9.5" height="1.1" />
        <rect x="168.9" y="40.5" width="6.3" height="1.1" />
        <rect x="178.4" y="40.5" width="3.2" height="1.1" />
        <rect x="162.5" y="37.9" width="3.2" height="1.1" />
        <rect x="168.9" y="37.9" width="3.2" height="1.1" />
        <rect x="175.2" y="37.9" width="3.2" height="1.1" />
        <rect x="181.6" y="37.9" width="3.2" height="1.1" />
        <rect x="159.4" y="45.6" width="3.2" height="1.1" />
        <rect x="165.7" y="45.6" width="6.3" height="1.1" />
        <rect x="178.4" y="45.6" width="6.3" height="1.1" />
        <rect x="170.2" y="50.8" width="3.2" height="1.1" />
        <rect x="163.8" y="50.8" width="3.2" height="1.1" />
        <rect x="176.5" y="50.8" width="9.5" height="1.1" />
        <rect x="173.3" y="48.2" width="6.3" height="1.1" />
        <rect x="160.6" y="48.2" width="3.2" height="1.1" />
        <rect x="167" y="48.2" width="3.2" height="1.1" />
        <rect x="176.5" y="53.4" width="6.3" height="1.1" />
        <rect x="163.8" y="53.4" width="6.3" height="1.1" />
      </g>
    </g>
  </g>
</g>
<g id="servers">
  <g>
    <path class="st0" d="M250.7,72.3c0.2,0,0.4,0.2,0.4,0.4v31.6c0,0.2-0.2,0.4-0.4,0.4h-22.9c-0.2,0-0.4-0.2-0.4-0.4V72.7
			c0-0.2,0.2-0.4,0.4-0.4L250.7,72.3 M250.7,71.9h-22.9c-0.4,0-0.7,0.3-0.7,0.7v31.6c0,0.4,0.3,0.7,0.7,0.7h22.9
			c0.4,0,0.7-0.3,0.7-0.7V72.7C251.5,72.3,251.1,71.9,250.7,71.9L250.7,71.9z" />
    <path class="st0" d="M239.3,87.2c-3.9,0-7.1-3.1-7.1-7s3.2-7,7.1-7c3.9,0,7.1,3.1,7.1,7S243.2,87.2,239.3,87.2z M239.3,73.5
			c-3.7,0-6.7,3-6.7,6.6c0,3.7,3,6.6,6.7,6.6s6.7-3,6.7-6.6S243,73.5,239.3,73.5z" />
    <g>
      <path class="st0" d="M238.9,102.8h-10.2c-0.1,0-0.2-0.1-0.2-0.2V89.9c0-0.1,0.1-0.2,0.2-0.2h10.2c0.1,0,0.2,0.1,0.2,0.2v12.7
				C239.1,102.7,239,102.8,238.9,102.8z M228.9,102.4h9.8V90.1h-9.8V102.4z" />
      <path class="st0" d="M237.8,91.9h-2.5c-0.1,0-0.2-0.1-0.2-0.2v-0.8c0-0.1,0.1-0.2,0.2-0.2h2.5c0.1,0,0.2,0.1,0.2,0.2v0.8
				C238,91.8,237.9,91.9,237.8,91.9z M235.5,91.5h2.1V91h-2.1V91.5z" />
      <path class="st0" d="M234.7,91.9h-2.5c-0.1,0-0.2-0.1-0.2-0.2v-0.8c0-0.1,0.1-0.2,0.2-0.2h2.5c0.1,0,0.2,0.1,0.2,0.2v0.8
				C234.9,91.8,234.8,91.9,234.7,91.9z M232.4,91.5h2.1V91h-2.1V91.5z" />
      <path class="st0" d="M237.8,93.4h-2.5c-0.1,0-0.2-0.1-0.2-0.2v-0.8c0-0.1,0.1-0.2,0.2-0.2h2.5c0.1,0,0.2,0.1,0.2,0.2v0.8
				C238,93.3,237.9,93.4,237.8,93.4z M235.5,93h2.1v-0.5h-2.1V93z" />
      <path class="st0" d="M234.7,93.4h-2.5c-0.1,0-0.2-0.1-0.2-0.2v-0.8c0-0.1,0.1-0.2,0.2-0.2h2.5c0.1,0,0.2,0.1,0.2,0.2v0.8
				C234.9,93.3,234.8,93.4,234.7,93.4z M232.4,93h2.1v-0.5h-2.1V93z" />
      <path class="st0" d="M237.8,94.9h-2.5c-0.1,0-0.2-0.1-0.2-0.2v-0.8c0-0.1,0.1-0.2,0.2-0.2h2.5c0.1,0,0.2,0.1,0.2,0.2v0.8
				C238,94.8,237.9,94.9,237.8,94.9z M235.5,94.5h2.1V94h-2.1V94.5z" />
      <path class="st0" d="M234.7,94.9h-2.5c-0.1,0-0.2-0.1-0.2-0.2v-0.8c0-0.1,0.1-0.2,0.2-0.2h2.5c0.1,0,0.2,0.1,0.2,0.2v0.8
				C234.9,94.8,234.8,94.9,234.7,94.9z M232.4,94.5h2.1V94h-2.1V94.5z" />
      <path class="st0" d="M230.5,92.1c-0.4,0-0.7-0.3-0.7-0.7s0.3-0.7,0.7-0.7s0.7,0.3,0.7,0.7S230.9,92.1,230.5,92.1z M230.5,91
				c-0.2,0-0.4,0.2-0.4,0.4s0.2,0.4,0.4,0.4s0.4-0.2,0.4-0.4S230.7,91,230.5,91z" />
      <path class="st0" d="M230.5,94c-0.4,0-0.7-0.3-0.7-0.7s0.3-0.7,0.7-0.7s0.7,0.3,0.7,0.7C231.3,93.6,230.9,94,230.5,94z
				 M230.5,92.9c-0.2,0-0.4,0.2-0.4,0.4s0.2,0.4,0.4,0.4s0.4-0.2,0.4-0.4S230.7,92.9,230.5,92.9z" />
      <path class="st0" d="M237.8,97.5h-8c-0.1,0-0.2-0.1-0.2-0.2v-1.5c0-0.1,0.1-0.2,0.2-0.2h8c0.1,0,0.2,0.1,0.2,0.2v1.5
				C238,97.4,237.9,97.5,237.8,97.5z M230,97.1h7.6V96H230V97.1z" />
      <path class="st0" d="M237,97h-1.8c-0.1,0-0.1,0-0.2-0.1c0-0.1,0-0.1,0-0.2l0.4-0.5c0,0,0.1-0.1,0.2-0.1h1c0.1,0,0.1,0,0.2,0.1
				l0.4,0.5c0,0.1,0,0.1,0,0.2S237.1,97,237,97z M235.6,96.6h1l-0.1-0.2h-0.8L235.6,96.6z" />
      <path class="st0" d="M237.8,99.7h-8c-0.1,0-0.2-0.1-0.2-0.2V98c0-0.1,0.1-0.2,0.2-0.2h8c0.1,0,0.2,0.1,0.2,0.2v1.5
				C238,99.7,237.9,99.7,237.8,99.7z M230,99.4h7.6v-1.1H230V99.4z" />
      <path class="st0" d="M237.8,102h-8c-0.1,0-0.2-0.1-0.2-0.2v-1.5c0-0.1,0.1-0.2,0.2-0.2h8c0.1,0,0.2,0.1,0.2,0.2v1.5
				C238,101.9,237.9,102,237.8,102z M230,101.6h7.6v-1.1H230V101.6z" />
      <path class="st0" d="M237,99.3h-1.8c-0.1,0-0.1,0-0.2-0.1c0-0.1,0-0.1,0-0.2l0.4-0.5c0,0,0.1-0.1,0.2-0.1h1c0.1,0,0.1,0,0.2,0.1
				l0.4,0.5c0,0.1,0,0.1,0,0.2S237.1,99.3,237,99.3z M235.6,98.9h1l-0.1-0.2h-0.8L235.6,98.9z" />
      <path class="st0" d="M234.4,99.3h-1.8c-0.1,0-0.1,0-0.2-0.1c0-0.1,0-0.1,0-0.2l0.4-0.5c0,0,0.1-0.1,0.2-0.1h1
				c0.1,0,0.1,0,0.2,0.1l0.4,0.5c0,0.1,0,0.1,0,0.2C234.6,99.2,234.5,99.3,234.4,99.3z M233,98.9h1l-0.1-0.2h-0.8L233,98.9z" />
      <path class="st0" d="M234.8,97h-1c-0.1,0-0.2-0.1-0.2-0.2v-0.5c0-0.1,0.1-0.2,0.2-0.2h1c0.1,0,0.2,0.1,0.2,0.2v0.5
				C235,96.9,234.9,97,234.8,97z M234,96.6h0.6v-0.2H234V96.6z" />
      <circle class="st0" cx="230.7" cy="96.5" r="0.2" />
      <circle class="st0" cx="231.5" cy="96.5" r="0.2" />
      <circle class="st0" cx="232.2" cy="96.5" r="0.2" />
    </g>
    <path class="st0" d="M239.3,81.6c-0.8,0-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5s1.5,0.7,1.5,1.5C240.7,81,240.1,81.6,239.3,81.6z
			 M239.3,79.1c-0.6,0-1.1,0.5-1.1,1.1s0.5,1.1,1.1,1.1s1.1-0.5,1.1-1.1C240.4,79.6,239.9,79.1,239.3,79.1z" />
    <path class="st0" d="M239.8,78.9h-0.4c0-2.2,2-4,4.5-4v0.4C241.6,75.2,239.8,76.9,239.8,78.9z" />
    <path class="st0" d="M240.4,79.3H240c0-1.4,2.3-2.5,5.3-2.5v0.4C242.7,77.2,240.4,78.2,240.4,79.3z" />
    <path class="st0" d="M244.5,84.4c-0.1-2.2-1.8-4-3.8-4V80c2.2-0.1,4.1,1.9,4.2,4.3L244.5,84.4z" />
    <path class="st0" d="M242.6,86c0-1.3-0.3-2.6-0.8-3.5c-0.4-0.9-1-1.3-1.5-1.3l0,0v-0.4l0,0c0.7,0,1.4,0.5,1.9,1.5s0.8,2.3,0.8,3.7
			L242.6,86z" />
    <path class="st0" d="M236.6,86.6l-0.1-0.3c1-0.3,1.9-1,2.4-1.9s0.6-1.9,0.3-2.8l0.4-0.1c0.3,1,0.2,2.1-0.4,3.1
			C238.7,85.5,237.8,86.2,236.6,86.6z" />
    <path class="st0" d="M234.6,85.2l-0.1-0.3c2.6-0.8,4.4-2.5,4-3.6l0.4-0.1C239.3,82.5,237.4,84.3,234.6,85.2z" />
    <path class="st0" d="M235.6,81.8c-1.2,0-2.4-0.5-3.4-1.5l0.3-0.3c1.6,1.6,4,1.8,5.5,0.4l0.3,0.3C237.5,81.5,236.6,81.8,235.6,81.8
			z" />
    <path class="st0" d="M237,80.4c-0.4,0-0.8-0.1-1.3-0.3c-1-0.4-2.1-1.2-3.1-2.2l0.3-0.3c0.9,1,2,1.7,2.9,2.1s1.7,0.4,2.1,0l0.3,0.3
			C237.9,80.3,237.5,80.4,237,80.4z" />
    <path class="st0" d="M238.1,79.7c-1-0.4-1.8-1.3-2.1-2.3c-0.4-1.1-0.3-2.3,0.2-3.3l0.3,0.1c-0.4,1-0.5,2.1-0.1,3.1
			c0.3,1,1,1.7,1.9,2.1L238.1,79.7z" />
    <path class="st0" d="M238.8,79.2c-0.7-0.3-1-1.1-1.1-2.2c0-1.1,0.3-2.4,0.8-3.7l0.3,0.1c-0.5,1.2-0.8,2.5-0.8,3.5s0.3,1.6,0.8,1.9
			V79.2z" />
    <g>
      <path class="st0" d="M249.6,102.8h-9.8c-0.1,0-0.2-0.1-0.2-0.2V89.5c0-0.1,0-0.1,0.1-0.1c0,0,0.1,0,0.2,0
				c0.6,0.1,1.2,0.1,1.9,0.1c2.8-0.1,5.4-2.3,7.7-6.5c0-0.1,0.1-0.1,0.2-0.1c0.1,0,0.1,0.1,0.1,0.2v19.6
				C249.8,102.7,249.7,102.8,249.6,102.8z M240.1,102.4h9.4V83.7c-2.3,3.9-4.8,5.9-7.7,6c-0.7,0-1.2,0-1.7-0.1V102.4z" />
      <g>
        <path class="st0" d="M249.6,83.5V83c-0.1,0.1-0.1,0.2-0.2,0.3L249.6,83.5z" />
        <path class="st0" d="M249.5,102.1l0.2,0.2v-0.8l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8
					l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2V96l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8
					l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2V92l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8
					l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2V88l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8
					l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2v-0.8l-0.2,0.2l-0.4-0.4l0.4-0.4l0.2,0.2V84l-0.2,0.2l-0.3-0.3c-0.1,0.1-0.1,0.2-0.2,0.3
					l0.2,0.2l-0.4,0.4l-0.1-0.1c-0.1,0.1-0.1,0.2-0.2,0.3l0.1,0.1l-0.4,0.4l0,0c-0.9,1.2-1.9,2.3-3,3l-0.3,0.3l-0.1-0.1
					c-0.1,0.1-0.2,0.1-0.3,0.2l0.2,0.2l-0.4,0.4l-0.3-0.3c-0.3,0.1-0.7,0.2-1,0.3l0,0l0,0c-0.1,0-0.3,0.1-0.5,0.1l0.2,0.2l-0.4,0.4
					l-0.4-0.4l0.2-0.2c-0.3,0-0.6,0-0.9,0l0.2,0.2l-0.4,0.4l-0.4-0.4l0.2-0.2c-0.2,0-0.3,0-0.5-0.1l0,0l0,0h-0.1v0.7L240,90l0.4,0.4
					l-0.4,0.4l-0.1-0.1v0.8l0.1-0.1l0.4,0.4l-0.4,0.4l-0.1-0.1v0.8l0.1-0.1l0.4,0.4l-0.4,0.4l-0.1-0.1v0.8L240,94l0.4,0.4l-0.4,0.4
					l-0.1-0.1v0.8l0.1-0.1l0.4,0.4l-0.4,0.4l-0.1-0.1v0.8l0.1-0.1l0.4,0.4l-0.4,0.4l-0.1-0.1v0.8l0.1-0.1l0.4,0.4L240,99l-0.1-0.1
					v0.8l0.1-0.1l0.4,0.4l-0.4,0.4l-0.1-0.1v0.8l0.1-0.1l0.4,0.4l-0.4,0.4l-0.1-0.1v0.8l0.1-0.1l0.4,0.4l-0.1,0.1h0.7l-0.1-0.1
					l0.4-0.4l0.4,0.4l-0.1,0.1h0.7l-0.1-0.1l0.4-0.4l0.4,0.4l-0.1,0.1h0.7l-0.1-0.1l0.4-0.4l0.4,0.4l-0.1,0.1h0.7l-0.1-0.1l0.4-0.4
					l0.4,0.4l-0.1,0.1h0.7l-0.1-0.1l0.4-0.4l0.4,0.4l-0.1,0.1h0.7l-0.1-0.1l0.4-0.4l0.4,0.4l-0.1,0.1h0.7l-0.1-0.1L249.5,102.1z
					 M249.2,100.5l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,100.5z M243.8,96.5l-0.4,0.4l-0.4-0.4l0.4-0.4L243.8,96.5z M243,95.1l0.4-0.4
					l0.4,0.4l-0.4,0.4L243,95.1z M243.6,95.8l0.4-0.4l0.4,0.4l-0.4,0.4L243.6,95.8z M245.7,93.8l0.4-0.4l0.4,0.4l-0.4,0.4
					L245.7,93.8z M246.5,95.1l-0.4,0.4l-0.4-0.4l0.4-0.4L246.5,95.1z M245.8,94.5l-0.4,0.4l-0.4-0.4l0.4-0.4L245.8,94.5z
					 M245.2,95.1l-0.4,0.4l-0.4-0.4l0.4-0.4L245.2,95.1z M244.7,96.1l0.4,0.4l-0.4,0.4l-0.4-0.4L244.7,96.1z M245,95.8l0.4-0.4
					l0.4,0.4l-0.4,0.4L245,95.8z M246.1,96.1l0.4,0.4l-0.4,0.4l-0.4-0.4L246.1,96.1z M246.4,95.8l0.4-0.4l0.4,0.4l-0.4,0.4
					L246.4,95.8z M246.4,94.5l0.4-0.4l0.4,0.4l-0.4,0.4L246.4,94.5z M246.4,93.1l0.4-0.4l0.4,0.4l-0.4,0.4L246.4,93.1z M246.4,91.8
					l0.4-0.4l0.4,0.4l-0.4,0.4L246.4,91.8z M246.5,92.4l-0.4,0.4l-0.4-0.4l0.4-0.4L246.5,92.4z M245.8,93.1l-0.4,0.4l-0.4-0.4
					l0.4-0.4L245.8,93.1z M245.2,93.8l-0.4,0.4l-0.4-0.4l0.4-0.4L245.2,93.8z M244.5,94.5l-0.4,0.4l-0.4-0.4l0.4-0.4L244.5,94.5z
					 M243.4,94.2l-0.4-0.4l0.4-0.4l0.4,0.4L243.4,94.2z M243.1,94.5l-0.4,0.4l-0.4-0.4l0.4-0.4L243.1,94.5z M243.1,95.8l-0.4,0.4
					l-0.4-0.4l0.4-0.4L243.1,95.8z M243.1,97.1l-0.4,0.4l-0.4-0.4l0.4-0.4L243.1,97.1z M243.4,97.4l0.4,0.4l-0.4,0.4l-0.4-0.4
					L243.4,97.4z M243.6,97.1l0.4-0.4l0.4,0.4l-0.4,0.4L243.6,97.1z M244.7,97.4l0.4,0.4l-0.4,0.4l-0.4-0.4L244.7,97.4z M245,97.1
					l0.4-0.4l0.4,0.4l-0.4,0.4L245,97.1z M246.1,97.4l0.4,0.4l-0.4,0.4l-0.4-0.4L246.1,97.4z M246.4,97.1l0.4-0.4l0.4,0.4l-0.4,0.4
					L246.4,97.1z M247.4,97.4l0.4,0.4l-0.4,0.4l-0.4-0.4L247.4,97.4z M247,96.5l0.4-0.4l0.4,0.4l-0.4,0.4L247,96.5z M247,95.1
					l0.4-0.4l0.4,0.4l-0.4,0.4L247,95.1z M247,93.8l0.4-0.4l0.4,0.4l-0.4,0.4L247,93.8z M247,92.4l0.4-0.4l0.4,0.4l-0.4,0.4
					L247,92.4z M247,91.1l0.4-0.4l0.4,0.4l-0.4,0.4L247,91.1z M247,89.8l0.4-0.4l0.4,0.4l-0.4,0.4L247,89.8z M247.2,90.4l-0.4,0.4
					l-0.4-0.4l0.4-0.4L247.2,90.4z M246.5,91.1l-0.4,0.4l-0.4-0.4l0.4-0.4L246.5,91.1z M245.8,91.8l-0.4,0.4l-0.4-0.4l0.4-0.4
					L245.8,91.8z M245.2,92.4l-0.4,0.4l-0.4-0.4l0.4-0.4L245.2,92.4z M244.5,93.1l-0.4,0.4l-0.4-0.4l0.4-0.4L244.5,93.1z
					 M243.4,92.9l-0.4-0.4l0.4-0.4l0.4,0.4L243.4,92.9z M243.1,93.1l-0.4,0.4l-0.4-0.4l0.4-0.4L243.1,93.1z M242.4,93.8l-0.4,0.4
					l-0.4-0.4l0.4-0.4L242.4,93.8z M242.4,95.1l-0.4,0.4l-0.4-0.4l0.4-0.4L242.4,95.1z M242.4,96.5l-0.4,0.4l-0.4-0.4l0.4-0.4
					L242.4,96.5z M242.4,97.8l-0.4,0.4l-0.4-0.4l0.4-0.4L242.4,97.8z M242.4,99.1l-0.4,0.4l-0.4-0.4l0.4-0.4L242.4,99.1z
					 M242.3,98.5l0.4-0.4l0.4,0.4l-0.4,0.4L242.3,98.5z M243.4,98.7l0.4,0.4l-0.4,0.4l-0.4-0.4L243.4,98.7z M243.6,98.5l0.4-0.4
					l0.4,0.4l-0.4,0.4L243.6,98.5z M244.7,98.7l0.4,0.4l-0.4,0.4l-0.4-0.4L244.7,98.7z M245,98.5l0.4-0.4l0.4,0.4l-0.4,0.4L245,98.5
					z M246.1,98.7l0.4,0.4l-0.4,0.4l-0.4-0.4L246.1,98.7z M246.4,98.5l0.4-0.4l0.4,0.4l-0.4,0.4L246.4,98.5z M247.4,98.7l0.4,0.4
					l-0.4,0.4l-0.4-0.4L247.4,98.7z M247.7,98.5l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,98.5z M247.7,97.1l0.4-0.4l0.4,0.4l-0.4,0.4
					L247.7,97.1z M247.7,95.8l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,95.8z M247.7,94.5l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,94.5z M247.7,93.1
					l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,93.1z M247.7,91.8l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,91.8z M247.7,90.4l0.4-0.4l0.4,0.4l-0.4,0.4
					L247.7,90.4z M247.7,89.1l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,89.1z M247.7,87.7l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,87.7z M247.9,88.4
					l-0.4,0.4l-0.4-0.4l0.4-0.4L247.9,88.4z M247.2,89.1l-0.4,0.4l-0.4-0.4l0.4-0.4L247.2,89.1z M246.5,89.8l-0.4,0.4l-0.4-0.4
					l0.4-0.4L246.5,89.8z M245.8,90.4l-0.4,0.4l-0.4-0.4l0.4-0.4L245.8,90.4z M245.2,91.1l-0.4,0.4l-0.4-0.4l0.4-0.4L245.2,91.1z
					 M244.5,91.8l-0.4,0.4l-0.4-0.4l0.4-0.4L244.5,91.8z M243.4,91.5l-0.4-0.4l0.4-0.4l0.4,0.4L243.4,91.5z M243.1,91.8l-0.4,0.4
					l-0.4-0.4l0.4-0.4L243.1,91.8z M242.4,92.4l-0.4,0.4l-0.4-0.4L242,92L242.4,92.4z M241.3,92.2l-0.4-0.4l0.4-0.4l0.4,0.4
					L241.3,92.2z M241.8,93.1l-0.4,0.4l-0.4-0.4l0.4-0.4L241.8,93.1z M241.8,94.5l-0.4,0.4l-0.4-0.4l0.4-0.4L241.8,94.5z
					 M241.8,95.8l-0.4,0.4l-0.4-0.4l0.4-0.4L241.8,95.8z M241.8,97.1l-0.4,0.4l-0.4-0.4l0.4-0.4L241.8,97.1z M241.8,98.5l-0.4,0.4
					l-0.4-0.4l0.4-0.4L241.8,98.5z M241.8,99.8l-0.4,0.4l-0.4-0.4l0.4-0.4L241.8,99.8z M242,100.1l0.4,0.4l-0.4,0.4l-0.4-0.4
					L242,100.1z M242.3,99.8l0.4-0.4l0.4,0.4l-0.4,0.4L242.3,99.8z M243.4,100.1l0.4,0.4l-0.4,0.4l-0.4-0.4L243.4,100.1z
					 M243.6,99.8l0.4-0.4l0.4,0.4l-0.4,0.4L243.6,99.8z M244.7,100.1l0.4,0.4l-0.4,0.4l-0.4-0.4L244.7,100.1z M245,99.8l0.4-0.4
					l0.4,0.4l-0.4,0.4L245,99.8z M246.1,100.1l0.4,0.4l-0.4,0.4l-0.4-0.4L246.1,100.1z M246.4,99.8l0.4-0.4l0.4,0.4l-0.4,0.4
					L246.4,99.8z M247.4,100.1l0.4,0.4l-0.4,0.4l-0.4-0.4L247.4,100.1z M247.7,99.8l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,99.8z
					 M249.2,99.1l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,99.1z M249.2,97.8l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,97.8z M249.2,96.5l-0.4,0.4
					l-0.4-0.4l0.4-0.4L249.2,96.5z M249.2,95.1l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,95.1z M249.2,93.8l-0.4,0.4l-0.4-0.4l0.4-0.4
					L249.2,93.8z M249.2,92.4l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,92.4z M249.2,91.1l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,91.1z
					 M249.2,89.8l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,89.8z M249.2,88.4l-0.4,0.4l-0.4-0.4l0.4-0.4L249.2,88.4z M249.2,87.1l-0.4,0.4
					l-0.4-0.4l0.4-0.4L249.2,87.1z M248.8,85.3l0.4,0.4l-0.4,0.4l-0.4-0.4L248.8,85.3z M248.1,86l0.4,0.4l-0.4,0.4l-0.4-0.4
					L248.1,86z M247.4,86.7l0.4,0.4l-0.4,0.4l-0.4-0.4L247.4,86.7z M246.8,87.3l0.4,0.4l-0.4,0.4l-0.4-0.4L246.8,87.3z M246.1,88
					l0.4,0.4l-0.4,0.4l-0.4-0.4L246.1,88z M245.4,88.7l0.4,0.4l-0.4,0.4l-0.4-0.4L245.4,88.7z M244.7,89.3l0.4,0.4l-0.4,0.4
					l-0.4-0.4L244.7,89.3z M244.5,90.4l-0.4,0.4l-0.4-0.4l0.4-0.4L244.5,90.4z M243.4,89.3l0.4,0.4l-0.4,0.4l-0.4-0.4L243.4,89.3z
					 M242.7,90l0.4,0.4l-0.4,0.4l-0.4-0.4L242.7,90z M242.4,91.1l-0.4,0.4l-0.4-0.4l0.4-0.4L242.4,91.1z M241.3,90l0.4,0.4l-0.4,0.4
					l-0.4-0.4L241.3,90z M240.3,91.1l0.4-0.4l0.4,0.4l-0.4,0.4L240.3,91.1z M240.3,92.4l0.4-0.4l0.4,0.4l-0.4,0.4L240.3,92.4z
					 M240.3,93.8l0.4-0.4l0.4,0.4l-0.4,0.4L240.3,93.8z M240.3,95.1l0.4-0.4l0.4,0.4l-0.4,0.4L240.3,95.1z M240.3,96.5l0.4-0.4
					l0.4,0.4l-0.4,0.4L240.3,96.5z M240.3,97.8l0.4-0.4l0.4,0.4l-0.4,0.4L240.3,97.8z M240.3,99.1l0.4-0.4l0.4,0.4l-0.4,0.4
					L240.3,99.1z M240.3,100.5l0.4-0.4l0.4,0.4l-0.4,0.4L240.3,100.5z M240.7,102.2l-0.4-0.4l0.4-0.4l0.4,0.4L240.7,102.2z
					 M240.9,101.2l0.4-0.4l0.4,0.4l-0.4,0.4L240.9,101.2z M242,102.2l-0.4-0.4l0.4-0.4l0.4,0.4L242,102.2z M242.3,101.2l0.4-0.4
					l0.4,0.4l-0.4,0.4L242.3,101.2z M243.4,102.2l-0.4-0.4l0.4-0.4l0.4,0.4L243.4,102.2z M243.6,101.2l0.4-0.4l0.4,0.4l-0.4,0.4
					L243.6,101.2z M244.7,102.2l-0.4-0.4l0.4-0.4l0.4,0.4L244.7,102.2z M245,101.2l0.4-0.4l0.4,0.4l-0.4,0.4L245,101.2z
					 M246.1,102.2l-0.4-0.4l0.4-0.4l0.4,0.4L246.1,102.2z M246.4,101.2l0.4-0.4l0.4,0.4l-0.4,0.4L246.4,101.2z M247.4,102.2
					l-0.4-0.4l0.4-0.4l0.4,0.4L247.4,102.2z M247.7,101.2l0.4-0.4l0.4,0.4l-0.4,0.4L247.7,101.2z M248.4,101.8l0.4-0.4l0.4,0.4
					l-0.4,0.4L248.4,101.8z" />
      </g>
    </g>
  </g>
  <g>
    <path class="st0" d="M230.3,52.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
			C230.5,52.6,230.4,52.7,230.3,52.7z" />
  </g>
  <g>
    <path class="st0" d="M231.5,52.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
			C231.7,52.6,231.6,52.7,231.5,52.7z" />
  </g>
  <g>
    <path class="st0" d="M232.6,52.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
			C232.9,52.6,232.8,52.7,232.6,52.7z" />
  </g>
  <g>
    <path class="st0" d="M233.8,52.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
			C234,52.6,234,52.7,233.8,52.7z" />
  </g>
  <g>
    <path class="st0" d="M235,52.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
			C235.2,52.6,235.1,52.7,235,52.7z" />
  </g>
  <g>
    <path class="st0" d="M247.2,52.2c-0.7,0-1.4-0.6-1.4-1.4c0-0.7,0.6-1.4,1.4-1.4c0.7,0,1.4,0.6,1.4,1.4
			C248.5,51.6,247.9,52.2,247.2,52.2z M247.2,50c-0.5,0-0.9,0.4-0.9,0.9s0.4,0.9,0.9,0.9s0.9-0.4,0.9-0.9
			C248.1,50.4,247.7,50,247.2,50z" />
  </g>
  <path class="st0" d="M239,50.7v0.4h-0.4v-0.4H239 M239,50.2h-0.4c-0.2,0-0.4,0.2-0.4,0.4V51c0,0.2,0.2,0.4,0.4,0.4h0.4
		c0.2,0,0.4-0.2,0.4-0.4v-0.4C239.4,50.4,239.2,50.2,239,50.2L239,50.2z" />
  <path class="st0" d="M241.4,50.7v0.4H241v-0.4H241.4 M241.4,50.2H241c-0.2,0-0.4,0.2-0.4,0.4V51c0,0.2,0.2,0.4,0.4,0.4h0.4
		c0.2,0,0.4-0.2,0.4-0.4v-0.4C241.8,50.4,241.6,50.2,241.4,50.2L241.4,50.2z" />
  <path class="st0" d="M243.8,50.7v0.4h-0.4v-0.4H243.8 M243.8,50.2h-0.4c-0.2,0-0.4,0.2-0.4,0.4V51c0,0.2,0.2,0.4,0.4,0.4h0.4
		c0.2,0,0.4-0.2,0.4-0.4v-0.4C244.2,50.4,244,50.2,243.8,50.2L243.8,50.2z" />
  <g>
    <path class="st0" d="M230.3,61.2c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2V61
			C230.5,61.1,230.4,61.2,230.3,61.2z" />
  </g>
  <g>
    <path class="st0" d="M231.5,61.2c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2V61
			C231.7,61.1,231.6,61.2,231.5,61.2z" />
  </g>
  <g>
    <path class="st0" d="M232.6,61.2c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2V61
			C232.9,61.1,232.8,61.2,232.6,61.2z" />
  </g>
  <g>
    <path class="st0" d="M233.8,61.2c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2V61
			C234,61.1,234,61.2,233.8,61.2z" />
  </g>
  <g>
    <path class="st0" d="M235,61.2c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2V61
			C235.2,61.1,235.1,61.2,235,61.2z" />
  </g>
  <g>
    <path class="st0" d="M247.2,60.8c-0.7,0-1.4-0.6-1.4-1.4c0-0.7,0.6-1.4,1.4-1.4c0.7,0,1.4,0.6,1.4,1.4
			C248.5,60.2,247.9,60.8,247.2,60.8z M247.2,58.5c-0.5,0-0.9,0.4-0.9,0.9s0.4,0.9,0.9,0.9s0.9-0.4,0.9-0.9S247.7,58.5,247.2,58.5z" />
  </g>
  <path class="st0" d="M239,59.2v0.4h-0.4v-0.4H239 M239,58.8h-0.4c-0.2,0-0.4,0.2-0.4,0.4v0.4c0,0.2,0.2,0.4,0.4,0.4h0.4
		c0.2,0,0.4-0.2,0.4-0.4v-0.4C239.4,58.9,239.2,58.8,239,58.8L239,58.8z" />
  <path class="st0" d="M241.4,59.2v0.4H241v-0.4H241.4 M241.4,58.8H241c-0.2,0-0.4,0.2-0.4,0.4v0.4c0,0.2,0.2,0.4,0.4,0.4h0.4
		c0.2,0,0.4-0.2,0.4-0.4v-0.4C241.8,58.9,241.6,58.8,241.4,58.8L241.4,58.8z" />
  <path class="st0" d="M243.8,59.2v0.4h-0.4v-0.4H243.8 M243.8,58.8h-0.4c-0.2,0-0.4,0.2-0.4,0.4v0.4c0,0.2,0.2,0.4,0.4,0.4h0.4
		c0.2,0,0.4-0.2,0.4-0.4v-0.4C244.2,58.9,244,58.8,243.8,58.8L243.8,58.8z" />
  <g>
    <path class="st0" d="M230.3,69.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
			C230.5,69.7,230.4,69.7,230.3,69.7z" />
  </g>
  <g>
    <path class="st0" d="M231.5,69.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
			C231.7,69.7,231.6,69.7,231.5,69.7z" />
  </g>
  <g>
    <path class="st0" d="M232.6,69.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
			C232.9,69.7,232.8,69.7,232.6,69.7z" />
  </g>
  <g>
    <path class="st0" d="M233.8,69.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
			C234,69.7,234,69.7,233.8,69.7z" />
  </g>
  <g>
    <path class="st0" d="M235,69.7c-0.1,0-0.2-0.1-0.2-0.2v-3.1c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2v3.1
			C235.2,69.7,235.1,69.7,235,69.7z" />
  </g>
  <g>
    <path class="st0" d="M247.2,69.3c-0.7,0-1.4-0.6-1.4-1.4c0-0.7,0.6-1.4,1.4-1.4c0.7,0,1.4,0.6,1.4,1.4S247.9,69.3,247.2,69.3z
			 M247.2,67.1c-0.5,0-0.9,0.4-0.9,0.9s0.4,0.9,0.9,0.9s0.9-0.4,0.9-0.9C248.1,67.5,247.7,67.1,247.2,67.1z" />
  </g>
  <path class="st0" d="M239,67.7v0.4h-0.4v-0.4H239 M239,67.3h-0.4c-0.2,0-0.4,0.2-0.4,0.4v0.4c0,0.2,0.2,0.4,0.4,0.4h0.4
		c0.2,0,0.4-0.2,0.4-0.4v-0.4C239.4,67.5,239.2,67.3,239,67.3L239,67.3z" />
  <path class="st0" d="M241.4,67.7v0.4H241v-0.4H241.4 M241.4,67.3H241c-0.2,0-0.4,0.2-0.4,0.4v0.4c0,0.2,0.2,0.4,0.4,0.4h0.4
		c0.2,0,0.4-0.2,0.4-0.4v-0.4C241.8,67.5,241.6,67.3,241.4,67.3L241.4,67.3z" />
  <path class="st0" d="M243.8,67.7v0.4h-0.4v-0.4H243.8 M243.8,67.3h-0.4c-0.2,0-0.4,0.2-0.4,0.4v0.4c0,0.2,0.2,0.4,0.4,0.4h0.4
		c0.2,0,0.4-0.2,0.4-0.4v-0.4C244.2,67.5,244,67.3,243.8,67.3L243.8,67.3z" />
  <path class="st0" d="M250.8,54.5c0.1,0,0.2-0.1,0.2-0.2v-6.7c0-0.1-0.1-0.2-0.2-0.2h-22.5c-0.1,0-0.2,0.1-0.2,0.2V51
		c-2,0.4-3.6,2.2-3.6,4.4c0,2,1.3,3.7,3.1,4.3c-1.8,0.6-3.1,2.3-3.1,4.3c0,2.2,1.5,4,3.6,4.4v3.1c0,0.1,0.1,0.2,0.2,0.2h22.5
		c0.1,0,0.2-0.1,0.2-0.2v-6.7c0-0.1-0.1-0.2-0.2-0.2h-2.9V63h2.9c0.1,0,0.2-0.1,0.2-0.2V56c0-0.1-0.1-0.2-0.2-0.2h-2.9v-1.4h2.9
		V54.5z M228.5,47.7h22V54h-22v-2.8v-0.4V47.7z M224.9,55.3c0-1.9,1.4-3.5,3.1-4v2.9c0,0.1,0.1,0.2,0.2,0.2h2.9v1.4h-2.9
		c-0.1,0-0.2,0.1-0.2,0.2v3.2C226.3,58.8,224.9,57.2,224.9,55.3z M224.9,63.8c0-1.9,1.4-3.5,3.1-4v2.9c0,0.1,0.1,0.2,0.2,0.2h2.9
		v1.4h-2.9c-0.1,0-0.2,0.1-0.2,0.2v3.2C226.3,67.4,224.9,65.7,224.9,63.8z M250.5,71.1h-22v-2.8v-0.4v-3h22V71.1L250.5,71.1z
		 M247.4,64.4h-15.7V63h15.7V64.4z M250.5,62.6h-22v-2.8v-0.1v-0.4v-0.1v-3h22V62.6L250.5,62.6z M247.4,55.8h-15.7v-1.4h15.7V55.8z" />
</g>
<g id="poster">
  <rect x="112" y="26" class="st0" width="0.8" height="0.8" />
  <rect x="110.4" y="26" class="st0" width="0.8" height="0.8" />
  <rect x="113.7" y="26" class="st0" width="0.8" height="0.8" />
  <rect x="107.6" y="19.1" class="st0" width="9.8" height="0.8" />
  <rect x="114.5" y="32.1" class="st0" width="0.8" height="0.8" />
  <path class="st0" d="M118.4,29.4l-1.5-2.3l0.9-0.9v-4.3c0.7-0.2,1.2-0.8,1.2-1.6v-2.2l-0.8-0.8c-0.1-3.1-2.6-5.5-5.6-5.5
		c-3.1,0-5.6,2.4-5.7,5.5l-0.8,0.8v2.2c0,0.8,0.5,1.4,1.2,1.6v4.3l0.9,0.9l-1.5,2.3L101,31l-1.4,2.2V37h0.8v-3.3l5.8-1.5l-0.2-0.8
		l-5.1,1.4l0.6-1l5.1-1.5c0.2,0.6,0.8,1.1,1.5,1.1h3.2v2.4h0.8v-3.2H108c-0.4,0-0.7-0.3-0.8-0.7l1.4-2.2l1.2,1.2h5.2l1.2-1.2
		l1.4,2.2c0,0.4-0.4,0.7-0.8,0.7h-4V37h0.8v-5.7h3.2c0.7,0,1.3-0.4,1.5-1.1l5.1,1.8l0.6,1l-5-1.7l-0.2,0.8l5.8,1.9v3h0.8v-3.4
		l-1.3-2.2L118.4,29.4z M108,22h8.9v1l-1.6,1.6l-0.7-0.6h-4.4l-0.6,0.6L108,23V22z M106.8,20.3v-1.9l0.6-0.6h1.1V17h-0.8
		c0.2-2.5,2.3-4.5,4.8-4.5c2.6,0,4.6,2,4.8,4.5h-8.1v0.8h8.4l0.6,0.6v1.9c0,0.4-0.4,0.8-0.8,0.8H117h-9h-0.4
		C107.1,21.2,106.8,20.8,106.8,20.3z M114.7,28.1h-4.5l-2.2-2.2v-1.7l1.6,1.6l1-1h3.7l1,1l1.6-1.6v1.7L114.7,28.1z" />
  <rect x="105.1" y="35.4" class="st0" width="0.8" height="1.6" />
  <rect x="119" y="35.4" class="st0" width="0.8" height="1.6" />
  <rect x="111.2" y="36.2" class="st0" width="0.8" height="0.8" />
  <rect x="111.2" y="34.6" class="st0" width="0.8" height="0.8" />
  <rect x="119.8" y="24" class="st0" width="0.8" height="0.8" />
  <rect x="121.4" y="25.6" class="st0" width="0.8" height="0.8" />
  <rect x="121.4" y="24" class="st0" width="0.8" height="0.8" />
  <rect x="119.8" y="27.2" class="st0" width="0.8" height="0.8" />
  <rect x="123" y="27.2" class="st0" width="0.8" height="0.8" />
  <rect x="123" y="28.9" class="st0" width="0.8" height="0.8" />
  <rect x="124.6" y="27.2" class="st0" width="0.8" height="0.8" />
  <rect x="99.5" y="28.9" class="st0" width="0.8" height="0.8" />
  <rect x="119.8" y="22.4" class="st0" width="0.8" height="0.8" />
  <rect x="123" y="25.6" class="st0" width="0.8" height="0.8" />
  <rect x="124.6" y="22.4" class="st0" width="0.8" height="0.8" />
  <rect x="124.6" y="24" class="st0" width="0.8" height="0.8" />
  <rect x="124.6" y="19.1" class="st0" width="0.8" height="0.8" />
  <rect x="123" y="20.8" class="st0" width="0.8" height="0.8" />
  <rect x="123" y="17.5" class="st0" width="0.8" height="0.8" />
  <rect x="121.4" y="19.1" class="st0" width="0.8" height="0.8" />
  <rect x="119.8" y="16.9" class="st0" width="0.8" height="0.8" />
  <rect x="118.8" y="14.2" class="st0" width="0.8" height="0.8" />
  <rect x="118.1" y="11" class="st0" width="0.8" height="0.8" />
  <rect x="101.1" y="20.8" class="st0" width="0.8" height="0.8" />
  <rect x="102.7" y="20.8" class="st0" width="0.8" height="0.8" />
  <rect x="102.7" y="25.6" class="st0" width="0.8" height="0.8" />
  <rect x="101.1" y="24" class="st0" width="0.8" height="0.8" />
  <rect x="99.5" y="25.6" class="st0" width="0.8" height="0.8" />
  <rect x="102.7" y="27.2" class="st0" width="0.8" height="0.8" />
  <rect x="101.1" y="27.2" class="st0" width="0.8" height="0.8" />
  <rect x="104.3" y="24" class="st0" width="0.8" height="0.8" />
  <rect x="99.5" y="22.4" class="st0" width="0.8" height="0.8" />
  <rect x="99.5" y="19.1" class="st0" width="0.8" height="0.8" />
  <rect x="102.7" y="17.5" class="st0" width="0.8" height="0.8" />
  <rect x="104.3" y="15.9" class="st0" width="0.8" height="0.8" />
  <rect x="99.5" y="11" class="st0" width="0.8" height="0.8" />
  <rect x="104.3" y="11" class="st0" width="0.8" height="0.8" />
  <rect x="106" y="11" class="st0" width="0.8" height="0.8" />
  <rect x="101.1" y="11" class="st0" width="0.8" height="0.8" />
  <rect x="101.1" y="19.1" class="st0" width="0.8" height="0.8" />
  <rect x="99.5" y="15.9" class="st0" width="0.8" height="0.8" />
  <rect x="101.1" y="15.9" class="st0" width="0.8" height="0.8" />
  <rect x="99.5" y="14.2" class="st0" width="0.8" height="0.8" />
  <rect x="104.3" y="12.6" class="st0" width="0.8" height="0.8" />
  <rect x="102.7" y="12.6" class="st0" width="0.8" height="0.8" />
  <rect x="124.6" y="16.1" class="st0" width="0.8" height="0.8" />
  <rect x="119.8" y="12.2" class="st0" width="0.8" height="0.8" />
</g>
<g id="radiator">
  <path class="st0" d="M279,77.7v1.1l0,0V77.7L279,77.7z M279,97.6v1.1l0,0V97.6L279,97.6z" />
  <path class="st0" d="M269.6,99c0.1,0.1,0.2,0.2,0.3,0.2C269.8,99.2,269.6,99.1,269.6,99z M270,98.1L270,98.1L270,98.1
		c0,0.2,0,0.3,0.2,0.4C270,98.4,270,98.3,270,98.1z" />
  <path class="st0" d="M278.2,76.6V80l0,0V76.6L278.2,76.6z" />
  <path class="st0" d="M297.6,96.8h-0.1c-0.2,0-0.4-0.2-0.4-0.4V80c0-0.2,0.2-0.4,0.4-0.4h0.1c0.7,0,1.3-0.6,1.3-1.3
		s-0.6-1.3-1.3-1.3h-0.1c-0.2,0-0.4-0.2-0.4-0.4v-0.1c0-0.5-0.4-1.3-1.3-1.3s-1.3,0.8-1.3,1.3v0.1c0,0.2-0.2,0.4-0.4,0.4h-0.2
		c-0.2,0-0.4-0.2-0.4-0.4v-0.1c0-0.5-0.4-1.3-1.3-1.3s-1.3,0.8-1.3,1.3v0.1c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4v-0.1
		c0-0.5-0.4-1.3-1.3-1.3s-1.3,0.8-1.3,1.3v0.1c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4v-0.1c0-0.5-0.4-1.3-1.3-1.3
		s-1.3,0.8-1.3,1.3v0.1c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4v-0.1c0-0.5-0.4-1.3-1.3-1.3s-1.3,0.8-1.3,1.3v0.1
		c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4v-0.2c0-0.5-0.4-1.3-1.3-1.3s-1.3,0.8-1.3,1.3v0.1c0,0.2-0.2,0.4-0.4,0.4h-0.2
		c-0.2,0-0.4-0.2-0.4-0.4v-0.1c0-0.5-0.4-1.3-1.3-1.3s-1.3,0.8-1.3,1.3v0.1c0,0.2-0.2,0.4-0.4,0.4h-0.6v-0.2c0-0.4-0.4-0.8-0.8-0.8
		h-1c-0.4,0-0.8,0.4-0.8,0.8v2.9c0,0.4,0.4,0.8,0.8,0.8h1c0.4,0,0.8-0.4,0.8-0.8v-0.2h0.6c0.2,0,0.4,0.2,0.4,0.4v16.4
		c0,0.2-0.2,0.4-0.4,0.4h-1.9c-0.2,0-0.5,0.1-0.7,0.2c-0.1,0-0.2,0.1-0.2,0.2c-0.1,0.1-0.1,0.1-0.2,0.2c0,0-0.1,0.1-0.1,0.2
		s-0.1,0.2-0.1,0.3l0,0c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3c0,0.2,0.2,0.5,0.4,0.6c0.1,0.1,0.2,0.2,0.3,0.2
		c0.2,0.1,0.4,0.2,0.6,0.2h1.9c0.2,0,0.4,0.2,0.4,0.4v3.7c0,0.5,0.4,1.3,1.3,1.3s1.3-0.8,1.3-1.3c0-0.1,0-2.3,2.3-2.3h14.5
		c2.2,0,2.3,2.1,2.3,2.3c0,0.5,0.4,1.3,1.3,1.3s1.3-0.8,1.3-1.3v-3.7c0-0.2,0.2-0.4,0.4-0.4h0.1c0.7,0,1.3-0.6,1.3-1.3
		C298.9,97.4,298.3,96.8,297.6,96.8z M297,77.7c0.1,0,0.3,0.1,0.4,0.1h0.1c0.3,0,0.5,0.2,0.5,0.5s-0.2,0.5-0.5,0.5h-0.1
		c-0.2,0-0.3,0-0.4,0.1V77.7z M271,79.7h-1v-2.9h1V79.7z M270.5,98.6c-0.2,0-0.3-0.1-0.4-0.2s-0.2-0.2-0.2-0.4v-0.1
		c0-0.1,0.1-0.2,0.1-0.2s0.1-0.1,0.2-0.1s0.1,0,0.2,0c0.3,0,0.5,0.2,0.5,0.5C271,98.4,270.7,98.6,270.5,98.6z M272.8,98.7
		c-0.1,0-0.3-0.1-0.4-0.1h-0.7c0.1-0.2,0.1-0.3,0.1-0.5s0-0.4-0.1-0.5h0.7c0.1,0,0.3,0,0.4-0.1V98.7z M272.8,78.9
		c-0.1,0-0.3-0.1-0.4-0.1h-0.6v-1h0.6c0.1,0,0.3,0,0.4-0.1V78.9z M275.4,77.7c0.1,0,0.3,0.1,0.4,0.1h0.2c0.1,0,0.3,0,0.4-0.1v1.1
		c-0.1,0-0.3-0.1-0.4-0.1h-0.2c-0.1,0-0.3,0-0.4,0.1V77.7z M275.4,80c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v16.4
		c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4V80z M275.4,97.6c0.1,0,0.3,0.1,0.4,0.1h0.2c0.1,0,0.3,0,0.4-0.1v1.1
		c-0.1,0-0.3-0.1-0.4-0.1h-0.2c-0.1,0-0.3,0-0.4,0.1V97.6z M273.6,76.5c0-0.1,0-0.5,0.5-0.5s0.5,0.4,0.5,0.5v23.4
		c0,0.2,0,0.5-0.5,0.5c-0.4,0-0.5-0.4-0.5-0.5V76.5z M274.6,103.5c0,0.1,0,0.5-0.5,0.5c-0.4,0-0.5-0.4-0.5-0.5v-2.4
		c0.2,0.1,0.3,0.1,0.5,0.1c0.9,0,1.3-0.8,1.3-1.3v-0.1c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v0.1c0,0.2,0,0.5,0.2,0.7
		C275,101.1,274.6,102.6,274.6,103.5z M278.2,99.9c0,0.1,0,0.5-0.5,0.5c-0.4,0-0.5-0.4-0.5-0.5V76.5c0-0.1,0-0.5,0.5-0.5
		s0.5,0.4,0.5,0.5V99.9z M279,77.7L279,77.7c0.1,0,0.3,0.1,0.4,0.1h0.2c0.1,0,0.3,0,0.4-0.1v1.1c-0.1,0-0.3-0.1-0.4-0.1h-0.2
		c-0.2,0-0.3,0-0.4,0.1l0,0V77.7z M280,80v16.4c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4V79.9c0-0.2,0.2-0.4,0.4-0.4h0.2
		C279.8,79.6,280,79.8,280,80z M279,97.6L279,97.6c0.1,0,0.3,0.1,0.4,0.1h0.2c0.1,0,0.3,0,0.4-0.1v1.1c-0.1,0-0.3-0.1-0.4-0.1h-0.2
		c-0.2,0-0.3,0-0.4,0.1l0,0V97.6z M278.9,100.4c0.1-0.2,0.1-0.4,0.1-0.5v-0.2c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v0.1
		c0,0.2,0,0.3,0.1,0.5L278.9,100.4L278.9,100.4z M281.8,99.9c0,0.2-0.1,0.5-0.5,0.5s-0.5-0.4-0.5-0.5V76.5c0-0.1,0-0.5,0.5-0.5
		c0.4,0,0.5,0.4,0.5,0.5V99.9z M282.6,77.7c0.1,0,0.2,0.1,0.4,0.1h0.2c0.1,0,0.3,0,0.4-0.1v1.1c-0.1,0-0.3-0.1-0.4-0.1H283
		c-0.1,0-0.3,0-0.4,0.1V77.7L282.6,77.7z M282.6,80c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v16.4c0,0.2-0.2,0.4-0.4,0.4
		H283c-0.2,0-0.4-0.2-0.4-0.4V80L282.6,80z M282.6,97.6c0.1,0,0.2,0.1,0.4,0.1h0.2c0.1,0,0.3,0,0.4-0.1v1.1c-0.1,0-0.3-0.1-0.4-0.1
		H283c-0.1,0-0.3,0-0.4,0.1V97.6L282.6,97.6z M282.5,100.4c0.1-0.2,0.1-0.4,0.1-0.5v-0.1c0-0.2,0.2-0.4,0.4-0.4h0.2
		c0.2,0,0.4,0.2,0.4,0.4v0.1c0,0.2,0,0.3,0.1,0.5H282.5z M285.4,99.9c0,0.2,0,0.5-0.5,0.5c-0.4,0-0.5-0.4-0.5-0.5V76.5
		c0-0.1,0-0.5,0.5-0.5s0.5,0.4,0.5,0.5V99.9z M286.2,77.7c0.1,0,0.3,0.1,0.4,0.1h0.2c0.2,0,0.3,0,0.4-0.1v1.1
		c-0.1,0-0.2-0.1-0.4-0.1h-0.2c-0.1,0-0.3,0-0.4,0.1V77.7z M286.2,80c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v16.4
		c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4V80z M286.2,97.6c0.1,0,0.3,0.1,0.4,0.1h0.2c0.2,0,0.3,0,0.4-0.1v1.1
		c-0.1,0-0.2-0.1-0.4-0.1h-0.2c-0.1,0-0.3,0-0.4,0.1V97.6z M286.1,100.4c0.1-0.2,0.1-0.4,0.1-0.5v-0.1c0-0.2,0.2-0.4,0.4-0.4h0.2
		c0.2,0,0.4,0.2,0.4,0.4v0.1c0,0.2,0,0.3,0.1,0.5H286.1z M289,99.9c0,0.2-0.1,0.5-0.5,0.5s-0.5-0.4-0.5-0.5V76.5
		c0-0.1,0-0.5,0.5-0.5c0.4,0,0.5,0.4,0.5,0.5V99.9z M289.8,77.7c0.1,0,0.3,0.1,0.4,0.1h0.2c0.2,0,0.3,0,0.4-0.1v1.1
		c-0.1,0-0.3-0.1-0.4-0.1h-0.2c-0.2,0-0.3,0-0.4,0.1V77.7z M289.8,80c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v16.4
		c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4V80z M289.8,97.6c0.1,0,0.3,0.1,0.4,0.1h0.2c0.2,0,0.3,0,0.4-0.1v1.1
		c-0.1,0-0.3-0.1-0.4-0.1h-0.2c-0.2,0-0.3,0-0.4,0.1V97.6z M289.7,100.4c0.1-0.2,0.1-0.4,0.1-0.5v-0.1c0-0.2,0.2-0.4,0.4-0.4h0.2
		c0.2,0,0.4,0.2,0.4,0.4v0.1c0,0.2,0,0.3,0.1,0.5H289.7z M292.6,99.9c0,0.1,0,0.5-0.5,0.5l0,0c-0.5,0-0.5-0.4-0.5-0.5V76.5
		c0-0.2,0-0.5,0.5-0.5c0.4,0,0.5,0.4,0.5,0.5V99.9L292.6,99.9z M293.4,77.7c0.1,0,0.3,0.1,0.4,0.1h0.2c0.2,0,0.3,0,0.4-0.1v1.1
		c-0.1,0-0.3-0.1-0.4-0.1h-0.2c-0.2,0-0.3,0-0.4,0.1V77.7z M293.4,80c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v16.4
		c0,0.2-0.2,0.4-0.4,0.4h-0.2c-0.2,0-0.4-0.2-0.4-0.4V80z M293.4,97.6c0.1,0,0.3,0.1,0.4,0.1h0.2c0.2,0,0.3,0,0.4-0.1v1.1
		c-0.1,0-0.3-0.1-0.4-0.1h-0.2c-0.2,0-0.3,0-0.4,0.1V97.6z M296.3,103.5c0,0.2-0.1,0.5-0.5,0.5s-0.5-0.4-0.5-0.5
		c0-0.9-0.4-2.4-2-2.9c0.1-0.2,0.2-0.5,0.2-0.7v-0.1c0-0.2,0.2-0.4,0.4-0.4h0.2c0.2,0,0.4,0.2,0.4,0.4v0.1c0,0.5,0.4,1.3,1.3,1.3
		c0.2,0,0.4,0,0.5-0.1V103.5z M296.3,99.9c0,0.1,0,0.5-0.5,0.5s-0.5-0.4-0.5-0.5V76.5c0-0.2,0.1-0.5,0.5-0.5s0.5,0.4,0.5,0.5V99.9z
		 M297.6,98.6h-0.1c-0.2,0-0.3,0-0.4,0.1v-1.1c0.1,0,0.3,0.1,0.4,0.1h0.1c0.3,0,0.5,0.2,0.5,0.5S297.8,98.6,297.6,98.6z" />
  <path class="st0" d="M278.2,96.5v3.4l0,0V96.5L278.2,96.5z" />
  <path class="st0" d="M273.4,100.8" />
  <path class="st0" d="M269.2,97.8c0,0.1,0,0.2,0,0.3s0,0.2,0,0.3c0-0.1,0-0.2,0-0.3S269.2,97.9,269.2,97.8z" />
</g>
<g id="plant">
  <polygon class="st0" points="105.9,90.5 92.2,90.5 93.9,103.8 103.8,103.8 	" />
  <g>
    <path class="st0" d="M98.4,90.9c-0.1,0-0.2-0.1-0.2-0.2S97.7,80,96.5,74.5c0-0.1,0.1-0.3,0.2-0.3s0.3,0.1,0.3,0.2
			c1.3,5.6,1.8,16.2,1.8,16.3C98.6,90.7,98.5,90.9,98.4,90.9L98.4,90.9z" />
  </g>
  <g>
    <path class="st0" d="M99.7,90.9c-0.1,0-0.2-0.1-0.2-0.2s-0.1-8.2,2.4-14.5c0.1-0.1,0.2-0.2,0.3-0.1c0.1,0.1,0.2,0.2,0.1,0.3
			c-2.5,6.1-2.4,14.2-2.4,14.3C99.9,90.8,99.8,90.9,99.7,90.9L99.7,90.9z" />
  </g>
  <g>
    <path class="st0" d="M97.6,90.8c-0.1,0-0.2-0.1-0.2-0.2s-1.1-9.9-5-14.1c-0.1-0.1-0.1-0.3,0-0.3c0.1-0.1,0.3-0.1,0.3,0
			c4,4.3,5.1,14,5.1,14.4C97.9,90.7,97.8,90.8,97.6,90.8C97.7,90.8,97.6,90.8,97.6,90.8z" />
  </g>
  <g>
    <path class="st0" d="M99,90.9c-0.1,0-0.2-0.1-0.2-0.2c0-0.4-0.7-10.5,0.6-15.5c0-0.1,0.2-0.2,0.3-0.2c0.1,0,0.2,0.2,0.2,0.3
			c-1.3,4.9-0.6,15.2-0.6,15.3C99.3,90.7,99.2,90.9,99,90.9C99.1,90.9,99,90.9,99,90.9z" />
  </g>
  <g>
    <path class="st0" d="M100.3,90.9c-0.1,0-0.2-0.1-0.2-0.2s-0.2-6.4,4.8-10.2c0.1-0.1,0.3-0.1,0.3,0s0.1,0.3,0,0.3
			c-4.8,3.6-4.6,9.7-4.6,9.7C100.6,90.7,100.5,90.9,100.3,90.9L100.3,90.9z" />
  </g>
  <g>
    <path class="st0" d="M90.1,78.8c-0.2,0-0.3,0-0.3-0.1l-2.5-0.8c-0.1,0-0.2-0.1-0.2-0.3c0-0.1,0.1-0.2,0.2-0.2
			c0.4,0,1.5-0.3,1.8-0.9v-0.1c0,0-0.1,0-0.2,0c-0.6,0-1.7,0.4-2.3,0.9c-0.1,0.1-0.2,0.1-0.3,0c-0.2-0.1-1.8-0.7-2.3-1.5
			c0-0.1,0-0.2,0-0.2s0.1-0.1,0.2-0.1c0.8,0,1.7-0.2,1.8-0.5c0,0,0-0.1,0-0.2s-0.1-0.2-0.5-0.2c-0.7,0-1.8,0.6-1.8,0.6
			c-0.1,0-0.2,0-0.2,0c-0.1-0.1-2.2-1.3-2.3-2.8v-0.1v-0.1c0,0,0-0.1,0.1-0.1c1.1-0.9,4.1-1,4.2-1s0.2,0.1,0.2,0.2
			c0.1,0.4,0.6,1.6,1.2,1.4c0.1,0,0.1-0.1,0.1-0.1c0-0.1-0.4-0.7-0.8-1c-0.1-0.1-0.1-0.2-0.1-0.2c0-0.1,0.1-0.2,0.2-0.2
			c0.9-0.1,2.5,0.7,2.6,0.7S89,72,89,72.1c0.1,0.7,0.6,2,0.9,2.1c0,0,0.1,0,0.2-0.2c0.3-0.6-0.2-1.6-0.4-1.9c-0.1-0.1-0.1-0.2,0-0.3
			c0.1-0.1,0.2-0.1,0.3,0l2.3,1.4c0.2,0.1,0.9,0.4,0.8,2c0,0.9-0.3,1.3-0.4,1.5s-0.2,0.8-0.9,1.3C90.9,78.7,90.4,78.8,90.1,78.8z
			 M90,78.3c0,0,0.5,0.2,1.5-0.7c0.6-0.5,0.7-1,0.7-1.1s0-0.1,0.1-0.1l0,0c0,0,0.3-0.3,0.3-1.2c0.1-1.4-0.5-1.6-0.5-1.6s0,0-0.1,0
			l-1.6-0.9c0.2,0.5,0.3,1.1,0.1,1.7c-0.3,0.5-0.7,0.6-1,0.3c-0.4-0.4-0.8-1.7-0.9-2.1c-0.3-0.1-1-0.5-1.6-0.6
			c0.3,0.3,0.6,0.7,0.5,1.1c0,0.1-0.2,0.3-0.5,0.4c-1,0.2-1.5-1.1-1.7-1.6c-0.6,0-2.8,0.2-3.7,0.8c0.1,1,1.6,2,2,2.2
			c0.3-0.2,1.2-0.6,1.9-0.6c0.5,0,0.8,0.2,0.9,0.4c0.2,0.3,0.1,0.5,0,0.6c-0.2,0.4-1.1,0.6-1.7,0.7c0.5,0.4,1.2,0.7,1.6,0.9
			c0.7-0.5,1.8-0.9,2.5-0.9c0.3,0,0.5,0.1,0.6,0.3c0.1,0.1,0.1,0.3,0,0.5c-0.2,0.5-0.8,0.9-1.3,1L90,78.3
			C89.9,78.3,89.9,78.3,90,78.3L90,78.3z" />
  </g>
  <g>
    <path class="st0" d="M101.6,76.5c-0.1,0-0.1,0-0.2,0c-0.9,0-1.6-0.7-1.8-1c-0.3,0-1-0.1-1.8-0.9c-1.6-1.6-1.2-2.8-1.1-2.9l0.8-2.7
			c0-0.1,0.1-0.2,0.2-0.2s0.2,0.1,0.2,0.2c0,0,0.4,1.8,1.4,2.2c0.1,0.1,0.2,0.1,0.3,0.1c0.1-0.4-1.1-2.5-1.6-3.2
			c-0.1-0.1-0.1-0.1,0-0.2c0-0.1,0.8-1.8,1.7-2.3c0.1,0,0.2,0,0.2,0c0.1,0,0.1,0.1,0.1,0.2c0.1,0.9,0.4,2,0.7,2h0.1
			c0.1-0.1,0.2-0.1,0.2-0.2c0.2-0.6-0.5-1.9-0.8-2.3c-0.1-0.1,0-0.2,0-0.3c0.1-0.1,2-2.6,3.7-2.6h0.1h0.1c0,0,0.1,0,0.1,0.1
			c1.2,1.4,1.1,4.6,1.1,4.8c0,0.1-0.1,0.2-0.2,0.2c-0.4,0.1-1.6,0.5-1.9,1.1c-0.1,0.1-0.1,0.3-0.1,0.5c0.1,0.2,0.2,0.2,0.2,0.2
			c0.4,0,1.1-0.6,1.5-1c0.1-0.1,0.1-0.1,0.2-0.1s0.2,0.1,0.2,0.2c0.3,1.1-0.2,3.1-0.2,3.2s-0.1,0.2-0.3,0.2c-0.1,0-0.2,0-0.2,0
			c-1.1,0-2.4,0.6-2.5,1c0,0.1,0.1,0.1,0.1,0.1c0.2,0.1,0.4,0.2,0.7,0.2c0.8,0,1.6-0.5,1.6-0.5c0.1-0.1,0.2-0.1,0.3,0
			c0.1,0.1,0.1,0.2,0.1,0.3l-1,2.8C103.8,75.5,103.4,76.5,101.6,76.5z M99.7,75c0.1,0,0.2,0,0.2,0.1c0,0,0.6,0.9,1.5,0.9
			c1.7,0.1,2-0.7,2-0.7l0.8-2.2c-0.3,0.1-0.8,0.3-1.3,0.3c-0.3,0-0.6-0.1-0.9-0.2c-0.4-0.2-0.4-0.6-0.4-0.7c0.2-0.7,1.9-1.4,3-1.3
			c0.1-0.4,0.3-1.5,0.3-2.3c-0.4,0.4-1,0.9-1.5,0.9c-0.2,0-0.5-0.1-0.7-0.6c-0.1-0.3-0.1-0.6,0.1-0.8c0.4-0.7,1.6-1.1,2-1.2
			c0-0.7-0.1-3.1-1-4.2c-1.2,0.1-2.7,1.8-3.1,2.3c0.3,0.4,1,1.7,0.7,2.5c-0.1,0.2-0.2,0.4-0.4,0.6c-0.1,0.1-0.2,0.1-0.4,0.1
			c-0.7,0-1-1.3-1.1-2c-0.4,0.5-0.9,1.3-1.1,1.7c0.4,0.6,1.8,2.8,1.6,3.5c-0.1,0.3-0.4,0.4-0.9,0.1c-0.7-0.3-1.2-1.2-1.4-1.8l-0.6,2
			c0,0-0.3,1.1,1,2.4c0.7,0.6,1.2,0.7,1.4,0.7C99.6,75,99.6,75,99.7,75C99.6,75,99.6,75,99.7,75z" />
  </g>
  <g>
    <path class="st0" d="M99.7,75.4C99.6,75.4,99.6,75.4,99.7,75.4c-0.2-0.1-0.3-0.2-0.2-0.3l4.2-12.6c0-0.1,0.2-0.2,0.3-0.2
			c0.1,0,0.2,0.2,0.2,0.3L100,75.2C99.9,75.4,99.8,75.4,99.7,75.4z" />
  </g>
  <g>
    <path class="st0" d="M105.4,83.2c-0.3,0-0.7-0.1-1.1-0.3c-0.6-0.3-0.8-0.7-0.9-0.8c-0.1-0.1-0.4-0.4-0.5-1.2
			c-0.3-1.3,0.2-1.8,0.4-1.9l1.7-1.8c0.1-0.1,0.2-0.1,0.3,0c0.1,0.1,0.1,0.2,0.1,0.3c-0.1,0.3-0.4,1.3-0.1,1.8c0,0,0,0.1,0.1,0.1
			c0.2-0.3,0.4-1.9,0.4-2.5c0-0.1,0-0.1,0.1-0.2s1.3-1.2,2.1-1.4c0.1,0,0.2,0,0.2,0.1c0.1,0.1,0.1,0.2,0,0.3
			c-0.4,0.7-0.6,1.5-0.5,1.6c0.5-0.1,0.8-1.3,0.8-2.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,1.8-0.8,3-0.8c0.3,0,0.5,0,0.6,0.1
			c0,0,0.1,0,0.1,0.1l0,0v0.1c0.1,1.2-1.3,3.6-1.4,3.7s-0.2,0.1-0.3,0.1c0,0-0.4-0.1-0.9-0.1c-0.4,0-1,0.1-1.1,0.4
			c0,0.1,0,0.1,0,0.1l0,0c0,0,0.1,0.1,0.3,0.1c0.5,0,1.2-0.2,1.2-0.2c0.1,0,0.2,0,0.2,0.1c0.1,0.1,0.1,0.2,0.1,0.3
			c-0.3,0.8-1.6,1.9-1.7,1.9c-0.1,0.1-0.2,0.1-0.3,0c-0.2-0.1-0.7-0.2-1.1-0.2c-0.7,0-1,0.2-1,0.2c0.2,0.3,0.6,0.3,0.9,0.3
			s0.6-0.1,0.6-0.1c0.1,0,0.2,0,0.3,0.1c0,0.1,0,0.2-0.1,0.3l-2,1.4C106,83,105.8,83.2,105.4,83.2z M103.5,79.3c0,0-0.4,0.3-0.2,1.5
			c0.2,0.7,0.4,0.9,0.4,0.9c0.1,0,0.1,0.1,0.1,0.1s0.1,0.4,0.7,0.6c0.3,0.1,0.6,0.2,0.9,0.2s0.4-0.1,0.4-0.1l1.3-1
			c-0.5,0-0.9-0.2-1.1-0.5c-0.2-0.2-0.1-0.4,0-0.5c0.2-0.5,1.2-0.5,1.5-0.5c0.5,0,0.9,0.1,1.2,0.2c0.3-0.3,0.8-0.7,1.1-1.1
			c-0.2,0-0.5,0.1-0.7,0.1c-0.3,0-0.6-0.1-0.7-0.3c-0.1-0.1-0.1-0.3,0-0.5c0.1-0.3,0.5-0.8,1.5-0.8c0.3,0,0.6,0,0.8,0.1
			c0.4-0.7,1.2-2.3,1.3-3.2c-0.1,0-0.2,0-0.3,0c-0.9,0-2.2,0.5-2.7,0.7c0,0.6-0.2,2.2-1.1,2.4h-0.1l0,0c-0.2,0-0.3-0.1-0.4-0.2
			c-0.2-0.3,0-1,0.2-1.5c-0.5,0.3-1,0.7-1.2,1c0,0.5-0.1,2.2-0.5,2.7c-0.1,0.2-0.3,0.2-0.4,0.2c-0.2,0-0.3-0.1-0.4-0.3
			c-0.3-0.3-0.3-0.8-0.2-1.3L103.5,79.3L103.5,79.3L103.5,79.3z" />
  </g>
  <g>
    <path class="st0" d="M103.6,82.2c-0.1,0-0.1,0-0.2-0.1s-0.1-0.3,0-0.3l8.5-7.5c0.1-0.1,0.3-0.1,0.3,0c0.1,0.1,0.1,0.3,0,0.3
			l-8.5,7.5C103.7,82.2,103.6,82.2,103.6,82.2z" />
  </g>
  <g>
    <path class="st0" d="M92.6,76.6L92.6,76.6c-3.2-1.6-11.3-3.8-11.4-3.8S81,72.6,81,72.5c0-0.1,0.2-0.2,0.3-0.2
			c0.3,0.1,8.2,2.2,11.4,3.8c0.1,0.1,0.2,0.2,0.1,0.3C92.8,76.5,92.7,76.6,92.6,76.6z" />
  </g>
  <g>
    <path class="st0" d="M104.1,104H93.7c-0.1,0-0.2-0.1-0.2-0.2L92,90.7c0-0.1,0-0.1,0.1-0.2c0-0.1,0.1-0.1,0.2-0.1H106
			c0.1,0,0.1,0,0.2,0.1c0,0.1,0.1,0.1,0.1,0.2l-1.8,13.1C104.3,103.9,104.2,104,104.1,104z M93.9,103.5h10l1.7-12.7H92.5L93.9,103.5
			z" />
  </g>
  <g>
    <path class="st0" d="M94.6,75.3c-1,0-1.3-0.3-1.4-0.5l-1.8-2c-0.1-0.1-0.1-0.2,0-0.3s0.2-0.1,0.3-0.1c0,0,0.7,0.3,1.3,0.3
			c0.3,0,0.5-0.1,0.7-0.2c0.1,0,0.1-0.1,0.1-0.1c-0.1-0.2-1.1-0.6-2.1-0.6c-0.2,0-0.4,0-0.5,0s-0.2,0-0.2-0.1
			c-0.1-0.2-1.2-1.5-1.2-2.4c0-0.1,0-0.2,0.1-0.2s0.2,0,0.2,0c0.3,0.2,1.1,0.6,1.6,0.6c0.2,0,0.2-0.1,0.2-0.2c0-0.6-1.5-0.8-2.2-0.8
			c-0.1,0-0.2-0.1-0.2-0.2s-0.7-3-0.1-4.3c0,0,0-0.1,0.1-0.1h0.1h0.1c1.4-0.2,3.9,1.5,4,1.6s0.1,0.2,0.1,0.3c-0.2,0.7-0.6,2.1,0,2.4
			c0.1,0,0.1,0,0.2,0c0.2-0.3,0.2-1.2,0.1-1.8c0-0.1,0-0.2,0.1-0.2c0.1-0.1,0.2-0.1,0.2,0c0.9,0.3,1.8,1.9,1.9,2c0,0.1,0,0.2,0,0.3
			c-0.2,0.6-0.7,2.4-0.5,2.7c0,0,0.1,0,0.2-0.1c0.6-0.4,0.6-1.5,0.6-1.9c0-0.1,0.1-0.2,0.2-0.2s0.2,0,0.3,0.1l0.5,1
			c0,0.1,0,0.1,0,0.2c0,0-0.1,0.2-0.2,0.6c0,0.2-0.1,0.4-0.1,0.5s-0.1,0.2-0.1,0.3C97,72,97,72.3,97,72.5c0,0.1,0.1,0.3,0.2,0.5
			c0.2,0.3,0.3,0.5,0.3,0.6c0.1,0.1,0.1,0.2,0,0.4c-0.4,0.5-0.7,0.6-0.8,0.7c-0.1,0.1-0.6,0.5-1.4,0.6
			C95.1,75.3,94.8,75.3,94.6,75.3z M93.6,74.6c0,0,0.2,0.2,0.9,0.2c0.2,0,0.4,0,0.7-0.1c0.8-0.1,1.1-0.5,1.2-0.5l0.1-0.1l0,0
			c0,0,0.2-0.1,0.5-0.4c-0.1-0.1-0.2-0.3-0.3-0.6c-0.1-0.2-0.2-0.5-0.2-0.6c0-0.3,0-0.6,0.1-1c0-0.1,0.1-0.2,0.1-0.4
			c0-0.1,0.1-0.3,0.1-0.5c0.1-0.3,0.1-0.5,0.2-0.6h-0.1c-0.1,0.5-0.3,1.1-0.8,1.5c-0.4,0.3-0.7,0.2-0.9-0.1c-0.3-0.6,0.3-2.5,0.5-3
			C95.5,68,95,67.3,94.5,67c0,0.5,0,1.3-0.3,1.7c-0.2,0.2-0.4,0.3-0.7,0.2c-1-0.4-0.5-2.2-0.4-2.8c-0.5-0.3-2.3-1.5-3.4-1.4
			c-0.4,0.9-0.1,2.8,0.1,3.7c0.6,0,2.5,0.2,2.5,1.3c0,0.4-0.3,0.7-0.7,0.7l0,0c-0.4,0-1-0.2-1.4-0.4c0.2,0.6,0.6,1.2,0.9,1.6
			c0.1,0,0.3,0,0.5,0c0.9,0,2.4,0.4,2.6,0.9c0,0.1,0.1,0.4-0.2,0.6c-0.3,0.2-0.6,0.3-1,0.3c-0.2,0-0.4,0-0.6-0.1L93.6,74.6
			C93.6,74.5,93.6,74.5,93.6,74.6L93.6,74.6z" />
  </g>
  <g>
    <path class="st0" d="M96.6,74.6c-0.1,0-0.2,0-0.2-0.1c-1.4-2.8-6.8-9.9-6.9-10s-0.1-0.3,0-0.3c0.1-0.1,0.3-0.1,0.3,0
			c0.2,0.3,5.5,7.3,6.9,10.1C96.8,74.4,96.7,74.6,96.6,74.6C96.7,74.6,96.6,74.6,96.6,74.6z" />
  </g>
  <g>
    <path class="st0" d="M104.7,76.8c-0.3,0-0.8-0.1-1.5-1.1c-0.1-0.1-0.1-0.2,0-0.3c0,0,0.1-0.2,0.2-0.5l0.3-0.7c0,0,0.3-0.7,0.5-1.2
			c-0.1,0-0.1,0.1-0.2,0.1s-0.4,0.1-0.5,0.2c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2,0-0.3c0.7-1.3,1.3-1.5,1.4-1.5l2.6-0.7
			c0.1,0,0.2,0,0.3,0.1c0.1,0.1,0,0.2-0.1,0.3c-0.3,0.2-1.2,1-1.2,1.6c0,0.1,0,0.1,0,0.1c0.4-0.1,1.5-1.5,1.9-2.1
			c0-0.1,0.1-0.1,0.2-0.1s1.8,0.2,2.6,0.5c0.1,0,0.2,0.1,0.2,0.2s-0.1,0.2-0.2,0.2c-0.6,0.2-1.2,0.5-1.3,0.7l0,0c0.1,0,0.1,0,0.2,0
			c0.6,0,1.4-0.7,1.7-1c0.1-0.1,0.1-0.1,0.2-0.1c0.3,0.1,2.9,0.8,3.6,1.7v0.1V73v0.1c-0.5,0.9-2.2,1.5-3.2,1.7H112l0,0
			c-0.1,0-0.2,0-0.3-0.1c-0.1-0.1-0.1-0.2-0.1-0.3c-0.1,0-0.2,0-0.3,0h-0.2c-0.2,0-0.3,0-0.3-0.1c-0.6-0.4-1-0.5-1.3-0.3
			c-0.1,0.1-0.1,0.1-0.1,0.1s0,0,0.1,0s0.2,0.1,0.2,0.2c0,0.2-0.1,0.2-0.5,0.3c-0.2,0.1-0.6,0.2-0.6,0.2s0,0.3,0,0.6c0,0,0,0,0,0.1
			s-0.1,0.2-0.2,0.2l0,0c-0.1,0-0.2,0-0.2-0.1c0,0-0.2-0.2-0.3-0.2c-0.1-0.1-0.1-0.1-0.2-0.1s-0.1-0.1-0.2-0.1s-0.1-0.1-0.2-0.2
			c-0.3-0.2-0.6-0.4-0.9-0.4c-0.2,0-0.2,0.1-0.2,0.1c0,0.3,0.3,0.6,0.6,0.7c0.1,0,0.1,0.1,0.1,0.2s0,0.1-0.1,0.2
			c0,0-0.2,0.2-0.3,0.3c-0.1,0.1-0.3,0.2-0.3,0.2h-0.1H106l-1.2,0.1C104.8,76.8,104.8,76.8,104.7,76.8z M103.8,75.6
			c0.6,0.8,1,0.7,1,0.7l1.3-0.1c0,0,0.2-0.1,0.3-0.2l0,0c-0.3-0.3-0.5-0.6-0.5-1s0.3-0.6,0.7-0.6c0.4,0,0.8,0.2,1.2,0.5
			c0.1,0.1,0.1,0.1,0.2,0.1s0.1,0.1,0.2,0.1s0.1,0.1,0.2,0.1l0,0c0-0.2,0.1-0.4,0.1-0.5c0.1-0.1,0.3-0.2,0.8-0.3c0,0,0,0,0-0.1
			c-0.1-0.2,0-0.5,0.3-0.6c0.4-0.4,1.1-0.3,1.8,0.2c0,0,0,0,0.1,0h0.2c0.4,0,0.6,0.1,0.6,0.1c0.1,0,0.2,0.2,0.1,0.3l0,0
			c1.3-0.3,2.3-0.8,2.6-1.3c-0.6-0.6-2.3-1.2-3.1-1.4c-0.3,0.3-1.2,1-2,1c-0.1,0-0.3,0-0.4-0.1c-0.3-0.1-0.3-0.3-0.3-0.4
			c0-0.3,0.5-0.6,1-0.9c-0.6-0.1-1.3-0.2-1.6-0.3c-0.4,0.5-1.6,2.2-2.2,2.2c-0.1,0-0.4-0.1-0.5-0.6c0-0.5,0.3-0.9,0.6-1.3l-1.6,0.5
			c0,0-0.3,0.1-0.7,0.7c0.1-0.1,0.2-0.1,0.3-0.2c0.1-0.1,0.2-0.1,0.3-0.1c0.1,0,0.2,0,0.2,0.1s0.1,0.2,0,0.2
			c-0.1,0.5-0.6,1.7-0.6,1.8l-0.3,0.7C103.9,75.3,103.8,75.5,103.8,75.6z" />
  </g>
  <g>
    <path class="st0" d="M104.1,74.3c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.3,0.2-0.3s5.3-1.1,11.2-0.9c0.1,0,0.2,0.1,0.2,0.2
			s-0.1,0.2-0.2,0.2C109.4,73.3,104.2,74.3,104.1,74.3L104.1,74.3z" />
  </g>
</g>
<g id="box">
  <path class="st0" d="M17.8,88.7H3c-0.3,0-0.5,0.2-0.5,0.5v2.1c0,0.3,0.2,0.5,0.5,0.5h0.7v10.5h13.4V91.9h0.7c0.3,0,0.5-0.2,0.5-0.5
		v-2.1C18.3,89,18.1,88.7,17.8,88.7z M4,100.4c0.9,0.1,1.6,0.8,1.7,1.7H4V100.4z M15,102.1c0.1-0.9,0.8-1.6,1.7-1.7v1.7H15z
		 M16.7,100c-1.1,0.1-2,1-2.1,2.1H6.1c-0.1-1.1-1-2-2.1-2.1v-8.1h12.7V100z M18,91.4c0,0.1-0.1,0.2-0.2,0.2H3
		c-0.1,0-0.2-0.1-0.2-0.2v-2.1c0-0.1,0.1-0.2,0.2-0.2h14.8c0.1,0,0.2,0.1,0.2,0.2V91.4z" />
  <path class="st0" d="M8.7,95.1H12c0.5,0,0.9-0.4,0.9-0.9s-0.4-0.9-0.9-0.9H8.7c-0.5,0-0.9,0.4-0.9,0.9S8.2,95.1,8.7,95.1z
		 M8.7,93.7H12c0.3,0,0.5,0.2,0.5,0.5s-0.2,0.5-0.5,0.5H8.7c-0.3,0-0.5-0.2-0.5-0.5S8.4,93.7,8.7,93.7z" />
  <path class="st0" d="M17.1,89.5h-4.5v0.4h4.5c0.1,0,0.2,0.1,0.2,0.2v0.7h0.3v-0.7C17.6,89.7,17.4,89.5,17.1,89.5z" />
  <rect x="11.5" y="89.5" class="st0" width="0.5" height="0.4" />
</g>
<g id="abacus">
  <g transform="translate(50 50) scale(0.69 0.69) rotate(0) translate(-50 -50)">
    <path class="st0" d="M173.8,57.7c-0.2,0-0.3,0.2-0.3,0.4v14c0,0.2,0.2,0.3,0.3,0.3H196c0.2,0,0.3-0.2,0.3-0.3v-14
			c0-0.2-0.2-0.4-0.3-0.4l0,0L173.8,57.7C173.9,57.7,173.8,57.7,173.8,57.7z M174.2,58.4h21.5v13.3h-21.5V58.4z" />
    <path class="st0" d="M173.9,62.6v0.2H196v-0.2H173.9z" />
    <path class="st0" d="M176.1,58.1v14h0.2v-14H176.1z" />
    <path class="st0" d="M179.6,58.1v14h0.2v-14H179.6z" />
    <path class="st0" d="M183.1,58.1v14h0.2v-14H183.1z" />
    <path class="st0" d="M186.6,58.1v14h0.2v-14H186.6z" />
    <path class="st0" d="M190.1,58.1v14h0.2v-14H190.1z" />
    <path class="st0" d="M193.6,58.1v14h0.2v-14H193.6z" />
    <path class="st0" d="M175.6,69h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S175.4,69,175.6,69z" />
    <path class="st0" d="M175.6,70.9h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S175.4,70.9,175.6,70.9z
			" />
    <path class="st0" d="M175.6,70h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S175.4,70,175.6,70z" />
    <path class="st0" d="M175.6,68.1h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S175.4,68.1,175.6,68.1z
			" />
    <path class="st0" d="M175.6,63.4h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S175.4,63.4,175.6,63.4z
			" />
    <path class="st0" d="M179.1,69h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,69,179.1,69z" />
    <path class="st0" d="M179.1,70.9h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,70.9,179.1,70.9z
			" />
    <path class="st0" d="M179.1,70h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,70,179.1,70z" />
    <path class="st0" d="M179.1,65.3h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,65.3,179.1,65.3z
			" />
    <path class="st0" d="M179.1,64.4h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,64.4,179.1,64.4z
			" />
    <path class="st0" d="M182.6,69h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,69,182.6,69z" />
    <path class="st0" d="M182.6,70.9h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,70.9,182.6,70.9z
			" />
    <path class="st0" d="M182.6,70h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,70,182.6,70z" />
    <path class="st0" d="M182.6,68.1h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,68.1,182.6,68.1z
			" />
    <path class="st0" d="M182.6,67.2h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,67.2,182.6,67.2z
			" />
    <path class="st0" d="M182.6,63.4h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,63.4,182.6,63.4z
			" />
    <path class="st0" d="M186.1,69h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S185.9,69,186.1,69z" />
    <path class="st0" d="M186.1,70.9h1.2c0.2,0,0.3,0.2,0.3,0.3c0,0.2-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3
			S185.9,70.9,186.1,70.9z" />
    <path class="st0" d="M186.1,70h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S185.9,70,186.1,70z" />
    <path class="st0" d="M186.1,68.1h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S185.9,68.1,186.1,68.1z
			" />
    <path class="st0" d="M186.1,67.2h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S185.9,67.2,186.1,67.2z
			" />
    <path class="st0" d="M186.1,63.4h1.2c0.2,0,0.3,0.2,0.3,0.3c0,0.2-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3
			C185.8,63.6,185.9,63.4,186.1,63.4z" />
    <path class="st0" d="M189.6,69h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,69,189.6,69z" />
    <path class="st0" d="M189.6,70.9h1.2c0.2,0,0.3,0.2,0.3,0.3c0,0.2-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3
			S189.4,70.9,189.6,70.9z" />
    <path class="st0" d="M189.6,70h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,70,189.6,70z" />
    <path class="st0" d="M189.6,68.1h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,68.1,189.6,68.1z
			" />
    <path class="st0" d="M189.6,67.2h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,67.2,189.6,67.2z
			" />
    <path class="st0" d="M189.6,67.2h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,67.2,189.6,67.2z
			" />
    <path class="st0" d="M193.1,69h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,69,193.1,69z" />
    <path class="st0" d="M193.1,70.9h1.2c0.2,0,0.3,0.2,0.3,0.3c0,0.2-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3
			S192.9,70.9,193.1,70.9z" />
    <path class="st0" d="M193.1,70h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,70,193.1,70z" />
    <path class="st0" d="M193.1,68.1h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,68.1,193.1,68.1z
			" />
    <path class="st0" d="M193.1,67.2h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,67.2,193.1,67.2z
			" />
    <path class="st0" d="M193.1,67.2h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,67.2,193.1,67.2z
			" />
    <path class="st0" d="M175.6,61.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S175.4,61.6,175.6,61.6z
			" />
    <path class="st0" d="M175.6,58.8h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S175.4,58.8,175.6,58.8z
			" />
    <path class="st0" d="M179.1,61.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,61.6,179.1,61.6z
			" />
    <path class="st0" d="M179.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,60.6,179.1,60.6z
			" />
    <path class="st0" d="M179.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S178.9,60.6,179.1,60.6z
			" />
    <path class="st0" d="M182.6,61.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,61.6,182.6,61.6z
			" />
    <path class="st0" d="M182.6,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,60.6,182.6,60.6z
			" />
    <path class="st0" d="M182.6,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S182.4,60.6,182.6,60.6z
			" />
    <path class="st0" d="M186.1,61.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S185.9,61.6,186.1,61.6z
			" />
    <path class="st0" d="M186.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S185.9,60.6,186.1,60.6z
			" />
    <path class="st0" d="M186.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S185.9,60.6,186.1,60.6z
			" />
    <path class="st0" d="M189.6,61.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,61.6,189.6,61.6z
			" />
    <path class="st0" d="M189.6,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,60.6,189.6,60.6z
			" />
    <path class="st0" d="M189.6,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S189.4,60.6,189.6,60.6z
			" />
    <path class="st0" d="M193.1,61.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,61.6,193.1,61.6z
			" />
    <path class="st0" d="M193.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,60.6,193.1,60.6z
			" />
    <path class="st0" d="M193.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,60.6,193.1,60.6z
			" />
    <path class="st0" d="M193.1,61.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,61.6,193.1,61.6z
			" />
    <path class="st0" d="M193.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,60.6,193.1,60.6z
			" />
    <path class="st0" d="M193.1,60.6h1.2c0.2,0,0.3,0.2,0.3,0.3s-0.2,0.3-0.3,0.3h-1.2c-0.2,0-0.3-0.2-0.3-0.3S192.9,60.6,193.1,60.6z
			" />
  </g>
</g>
<g id="phone">
  <path class="st0" d="M218.1,55.2v-2.7c0-0.1-0.1-0.2-0.2-0.2c-0.1,0-0.2,0.1-0.2,0.2v2.7h-0.4v2l0.7,2.2v4l-0.7,1.3v0.7h1.4V55.2
		H218.1z" />
  <path class="st0" d="M217.9,59.4l-0.7-2.2v-2h-2.9v2l0.7,2.2v4l-0.7,1.3v0.7h2.9v-0.8l0.7-1.3V59.4z M216.1,55.9
		C216.1,55.9,216.2,56,216.1,55.9c0.1,0.1,0,0.2,0,0.2C216.1,56.1,216,56.1,216.1,55.9C216,56,216,55.9,216.1,55.9z M216.1,56.3
		C216.1,56.3,216.2,56.3,216.1,56.3c0.1,0.1,0,0.2,0,0.2C216.1,56.5,216,56.4,216.1,56.3C216,56.3,216,56.3,216.1,56.3z M216.1,56.7
		C216.1,56.7,216.2,56.7,216.1,56.7c0.1,0.1,0,0.2,0,0.2C216.1,56.8,216,56.8,216.1,56.7C216,56.7,216,56.7,216.1,56.7z M215.7,55.9
		C215.8,55.9,215.8,56,215.7,55.9c0.1,0.1,0,0.2,0,0.2S215.7,56.1,215.7,55.9C215.6,56,215.7,55.9,215.7,55.9z M215.7,56.3
		C215.8,56.3,215.8,56.3,215.7,56.3c0.1,0.1,0,0.2,0,0.2S215.7,56.4,215.7,56.3C215.6,56.3,215.7,56.3,215.7,56.3z M215.7,56.7
		C215.8,56.7,215.8,56.7,215.7,56.7c0.1,0.1,0,0.2,0,0.2S215.7,56.8,215.7,56.7C215.6,56.7,215.7,56.7,215.7,56.7z M215.4,55.9
		C215.4,55.9,215.5,56,215.4,55.9c0.1,0.1,0,0.2,0,0.2S215.3,56.1,215.4,55.9C215.3,56,215.3,55.9,215.4,55.9z M215.4,56.3
		C215.4,56.3,215.5,56.3,215.4,56.3c0.1,0.1,0,0.2,0,0.2S215.3,56.4,215.4,56.3C215.3,56.3,215.3,56.3,215.4,56.3z M215.4,56.7
		C215.4,56.7,215.5,56.7,215.4,56.7c0.1,0.1,0,0.2,0,0.2S215.3,56.8,215.4,56.7C215.3,56.7,215.3,56.7,215.4,56.7z M214.8,57.8h2.2
		l0.4,1.1h-2.2L214.8,57.8z M215.5,62.2v-0.4h0.5v0.4H215.5z M216,62.8v0.4h-0.5v-0.4H216z M215.5,61.5v-0.4h0.5v0.4H215.5z
		 M215.5,60.7v-0.4h0.5v0.4H215.5z M215.5,60v-0.4h0.5V60H215.5z M215.9,65.2h-0.4c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.2-0.2h0.4
		c0.1,0,0.2,0.1,0.2,0.2S216,65.2,215.9,65.2z M216.7,63.1h-0.5v-0.4h0.5V63.1z M216.7,62.2h-0.5v-0.4h0.5V62.2z M216.7,61.5h-0.5
		v-0.4h0.5V61.5z M216.7,60.7h-0.5v-0.4h0.5V60.7z M216.7,60h-0.5v-0.4h0.5V60z M217.4,63.1h-0.5v-0.4h0.5V63.1z M217.4,62.2h-0.5
		v-0.4h0.5V62.2z M217.4,61.5h-0.5v-0.4h0.5V61.5z M217.4,60.7h-0.5v-0.4h0.5V60.7z M217.4,60h-0.5v-0.4h0.5V60z" />
</g>
<g id="tiles">
  <path class="st0" d="M122.3,15c0,0.1,0.1,0.1,0.1,0.1h2.8c0.1,0,0.1-0.1,0.1-0.1v-3.9c0-0.1-0.1-0.1-0.1-0.1h-3.9
		c-0.1,0-0.1,0.1-0.1,0.1v2.8c0,0.1,0.1,0.1,0.1,0.1c0.1,0,0.1-0.1,0.1-0.1v-2.6h3.6v3.6L122.3,15C122.4,14.9,122.3,14.9,122.3,15z" />
  <path class="st0" d="M123.5,11.7v1.1c0,0.1,0.1,0.1,0.1,0.1h1.1c0.1,0,0.1-0.1,0.1-0.1v-1.1c0-0.1-0.1-0.1-0.1-0.1h-1.1
		C123.5,11.6,123.5,11.6,123.5,11.7z M123.7,11.8h0.8v0.8h-0.8V11.8z" />
  <path class="st0" d="M123.2,12.8v-1.1c0-0.1-0.1-0.1-0.1-0.1H122c-0.1,0-0.1,0.1-0.1,0.1v1.1c0,0.1,0.1,0.1,0.1,0.1h1.1
		C123.1,12.9,123.2,12.9,123.2,12.8z M122.9,12.7h-0.8v-0.8h0.8V12.7z" />
  <path class="st0" d="M123.5,13.4v1.1c0,0.1,0.1,0.1,0.1,0.1h1.1c0.1,0,0.1-0.1,0.1-0.1v-1.1c0-0.1-0.1-0.1-0.1-0.1h-1.1
		C123.5,13.2,123.5,13.3,123.5,13.4z M123.7,13.5h0.8v0.8h-0.8V13.5z" />
  <path class="st0" d="M120.4,14.8v1.1c0,0.1,0.1,0.1,0.1,0.1h1.1c0.1,0,0.1-0.1,0.1-0.1v-1.1c0-0.1-0.1-0.1-0.1-0.1h-1.1
		C120.5,14.6,120.4,14.7,120.4,14.8z M120.7,14.9h0.8v0.8h-0.8V14.9z" />
  <circle class="st0" cx="121.9" cy="14.5" r="0.1" />
  <circle class="st0" cx="121.9" cy="13.9" r="0.1" />
  <circle class="st0" cx="121.9" cy="13.4" r="0.1" />
  <circle class="st0" cx="122.5" cy="13.4" r="0.1" />
  <circle class="st0" cx="123" cy="13.4" r="0.1" />
  <circle class="st0" cx="123" cy="13.9" r="0.1" />
  <circle class="st0" cx="123" cy="14.5" r="0.1" />
  <circle class="st0" cx="122.5" cy="14.5" r="0.1" />
</g>
<rect id="flexboxPuzzleBtn" x="2.5" y="88.5" class="st2" width="16" height="14" />
<rect id="mathPuzzleBtn" x="135" y="55" class="st2" width="16" height="10" />
<rect id="puzzlerBtn" x="120.4" y="11" class="st2" width="5.1" height="5" />
<rect id="recursionPuzzleBtn" x="156" y="34.8" class="st2" width="34" height="23.5" />
<rect id="pipePuzzleBtn" x="269" y="75" class="st2" width="30" height="30" />
<g id="open-door" class="st3">
  <path class="st0" d="M49.1,53.9c0,1.5,1.2,2.8,2.8,2.8c1.5,0,2.8-1.2,2.8-2.8c0-1.5-1.2-2.8-2.8-2.8C50.3,51.2,49.1,52.4,49.1,53.9
		z M51.2,53.9c0-0.4,0.3-0.6,0.6-0.6c0.4,0,0.6,0.3,0.6,0.6s-0.3,0.6-0.6,0.6C51.5,54.6,51.2,54.3,51.2,53.9z" />
  <path class="st0" d="M0,101.9v2.1h27.4l29.8-8.4V12.3L34.2,6h34.3v98h27.4v-2.1H74.5V0H21.4v101.9H0z M27.4,101.5V6.3L55,13.9V94
		L27.4,101.5z M23.5,101.9V2.1h48.8v99.7h-1.7v-98H26.5l-1.2-0.3v0.3v98C25.3,101.9,23.5,101.9,23.5,101.9z" />
</g>
<g id="fishbooks">
  <path class="st0" d="M249.8,42.7c0.1,0,0.2-0.1,0.2-0.2v-0.7c0-0.1-0.1-0.2-0.2-0.2h-4.9c1.8-0.7,2.9-2.5,2.9-4.4
		c0-1.3-0.5-2.6-1.5-3.5c-0.1-0.1-0.1-0.1-0.2-0.2l-0.1-0.1h-5.9c-0.1,0-0.1,0-0.1,0.1c-2,1.7-2.3,4.7-0.5,6.7
		c0.5,0.6,1.1,1,1.8,1.3h-2.7c-0.8,0-1.4,0.6-1.4,1.4c0,0.4,0.2,0.8,0.4,1h-0.3c-1,0-1.8,0.8-1.8,1.7s0.8,1.8,1.7,1.8v1.3
		c0,0.1,0.1,0.2,0.2,0.2c0.1,0,0.1,0,0.1-0.1l0.5-0.6l0.5,0.6c0.1,0.1,0.2,0.1,0.3,0l0.1-0.1v-1.3h9.2c0.1,0,0.2-0.1,0.2-0.2v-0.7
		c0-0.1-0.1-0.2-0.2-0.2h-0.4V45h0.4c0.1,0,0.2-0.1,0.2-0.2v-0.6h1.5c0.1,0,0.2-0.1,0.2-0.2v-0.7c0-0.1-0.1-0.2-0.2-0.2h-0.2v-0.6
		h0.2V42.7z M240.2,33.8h5.7l0.1,0.1c0.2,0.2,0.4,0.4,0.6,0.6c-0.2,0-0.5,0.1-0.7,0.2c-0.6,0.2-1.2,0.2-1.8,0
		c-0.3-0.1-0.7-0.2-1-0.2c-0.4,0-0.7,0.1-1,0.2c-0.3,0.1-0.6,0.2-0.9,0.2c-0.3,0-0.6-0.1-0.9-0.2c-0.2-0.1-0.5-0.2-0.7-0.2
		C239.7,34.3,239.9,34.1,240.2,33.8z M238.7,37.2c0-0.8,0.2-1.6,0.6-2.2c0.3,0,0.6,0.1,0.8,0.2c0.3,0.1,0.7,0.2,1,0.2
		c0.4,0,0.7-0.1,1-0.2c0.3-0.1,0.6-0.2,0.9-0.2c0.3,0,0.6,0.1,0.9,0.2c0.3,0.1,0.7,0.2,1,0.2c0.4,0,0.7-0.1,1-0.2
		c0.3-0.1,0.5-0.2,0.8-0.2c1.2,2.1,0.5,4.8-1.6,6s-4.8,0.5-6-1.6C238.9,38.7,238.7,37.9,238.7,37.2z M248,47.1h-9v-0.4h9V47.1z
		 M247.4,46.4h-8.5V46c0-0.1-0.1-0.2-0.2-0.2h-1.3c-0.1,0-0.2,0.1-0.2,0.2v0.4c-0.4,0-0.6-0.3-0.6-0.7s0.3-0.6,0.7-0.6l0,0h10.1
		V46.4z M248,44.7h-10.7c-0.6,0-1,0.4-1,1s0.4,1,1,1v0.4c-0.8,0-1.4-0.6-1.4-1.4s0.6-1.4,1.4-1.4H248V44.7z M249.6,44h-11.1
		c-0.6,0-1-0.5-1-1c0-0.6,0.5-1,1-1h11.1v0.4h-10.9c-0.4,0-0.6,0.3-0.6,0.6c0,0.4,0.3,0.6,0.6,0.6h10.9V44z M249.3,43.2h-10.5
		c-0.2,0-0.3-0.1-0.3-0.3s0.1-0.3,0.3-0.3h10.5V43.2z" />
  <path class="st0" d="M245.8,37.5l0.8,0.7c0.1,0.1,0.2,0.1,0.3,0l0.1-0.1v-1.7c0-0.1-0.1-0.2-0.2-0.2c0,0-0.1,0-0.1,0.1l-0.8,0.7
		c-0.3-0.4-1.1-1.1-2.1-1.1c-1.2,0-2,1.3-2,1.3c0,0.1,0,0.1,0,0.2c0,0.1,0.8,1.3,2,1.3C244.7,38.6,245.5,37.8,245.8,37.5z
		 M246.5,36.8v0.8l-0.4-0.4L246.5,36.8z M242.1,37.2c0.2-0.3,0.8-1,1.6-1s1.6,0.7,1.8,1c-0.3,0.3-1,1-1.8,1
		C242.9,38.2,242.3,37.5,242.1,37.2L242.1,37.2z" />
  <circle class="st0" cx="242.8" cy="37" r="0.2" />
  <path class="st0" d="M242.1,35.4c0-0.5-0.4-1-1-1c-0.5,0-1,0.4-1,1c0,0.5,0.4,1,1,1C241.6,36.4,242.1,35.9,242.1,35.4z M241.1,36
		c-0.3,0-0.6-0.3-0.6-0.6s0.3-0.6,0.6-0.6s0.6,0.3,0.6,0.6S241.4,36,241.1,36z" />
  <path class="st0" d="M240.2,36.6c-0.3,0-0.6,0.3-0.6,0.6s0.3,0.6,0.6,0.6s0.6-0.3,0.6-0.6C240.9,36.9,240.6,36.6,240.2,36.6
		L240.2,36.6z M240.2,37.4c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.2-0.2c0.1,0,0.2,0.1,0.2,0.2l0,0C240.5,37.3,240.4,37.4,240.2,37.4z" />
</g>
</svg>
/***** Global Styles ******/

/***** 

Objects in the Room

#door
#screenglitch
#computer
#desk
#servers
#poster
#radiator
#mirror
#plant
#noteWrap
#box
#abacus
#phone
#tiles
#open-door

******/

/* Start global colors */

:root {
  --white: #e6e6e6; /* white alt */
  --darkest-blue-color: #071e26; /*  black alt */
  --greyish-blue-color: #06394c;
  --bright-blue-color: #0c4383; /*Recursion*/
  --turquoise-blue-color: #22a0b6; /* Tiles */
  --palest-blue-color: #6a96b9; /* Mirror */
  --dark-magenta-color: #7b1346; /* Pipe */
  --magenta-color: #cb0c59; /* Math */
  --pink-color: #eb649f; /* Box */
}

/* End global color variables */

* {
  box-sizing: border-box;
}

html {
  height: 100%;
}

body {
  display: grid;
  align-items: center;
  justify-items: center;
  background-color: #051217;
  background-image: radial-gradient(circle, #071e26, #051217);
  font-family: "Cutive Mono", monospace;
}

svg {
  width: 100%;
  height: 100vh;
  margin: 0 auto;
}

/* Room scene */
.st0 {
  fill: var(--white);
  transition: 0.4s ease-in-out;
}
#solidfill {
  fill: var(--white);
}
#poster {
  transition: 0.4s ease-in-out;
  opacity: 1;
}

#flexboxPuzzleBtn:hover,
#mathPuzzleBtn:hover,
#puzzlerBtn:hover,
#recursionPuzzleBtn:hover,
#pipePuzzleBtn:hover,
#mirrorPuzzleBtn:hover,
#noteBtn:hover {
  cursor: pointer;
}

/* End room scene */

/* The Modal (background) */
.modal {
  display: none; /* Hidden by default */
  position: fixed; /* Stay in place */
  z-index: 1; /* Sit on top */
  left: 0;
  top: 0;
  width: 100%; /* Full width */
  height: 100%; /* Full height */
  overflow: auto; /* Enable scroll if needed */
  background-color: rgb(0, 0, 0); /* Fallback color */
  background-color: rgba(0, 0, 0, 0.4); /* Black w/ opacity */
}

// Less opaque versions of their color

#mirrorPuzzleModal .modal-content {
  background-color: #6a96b9d9;
  box-shadow: 0px 0px 30px 10px #6a96b9d9;
}

#recursionPuzzleModal .modal-content {
  background-color: #0c4383f2;
  box-shadow: 0px 0px 30px 10px #0c4383f2;
}

#puzzlerModal .modal-content {
  background-color: #22a0b6f2;
  box-shadow: 0px 0px 30px 10px #22a0b6f2;
  width: 90%;
}

#flexboxPuzzleModal .modal-content {
  background-color: #eb649fe6;
  box-shadow: 0px 0px 30px 10px #eb649fe6;
}

#mathPuzzleModal .modal-content {
  background-color: #cb0c59e6;
  box-shadow: 0px 0px 30px 10px #cb0c59e6;
}

#pipePuzzleModal .modal-content {
  background-color: #7b1346d9;
  box-shadow: 0px 0px 30px 10px #7b1346d9;
}

/* Modal Content */
.modal-content {
  background-color: #fefefe;
  margin: auto;
  padding: 20px;
  width: 80%;
}

/* The Close Button */
.close {
  color: var(--white);
  float: right;
  font-size: 28px;
  font-weight: bold;
  z-index: 100;
  position: relative;
}

.close:hover,
.close:focus {
  color: var(--darkest-blue-color);
  text-decoration: none;
  cursor: pointer;
}

/****** End Global Styles ******/

/* Cheryl Velez - Puzzler  */

#puzzler-container {
  margin: 0;
  display: flex;
  flex-direction: column;
}
#puzzler-container button {
  font-size: 19px;
  padding: 10px;
  color: var(--white);
  background: #253543;
  margin-bottom: 8px;
  border: 5px solid #22a0b6f2;
  outline: 2px dashed var(--greyish-blue-color);
  transition: 0.3s ease-in-out;
}

#alert {
  position: relative;
  color: var(--dark-magenta-color);
  font-size: 32px;
  text-align: center;
}

.quote {
  position: relative;
  color: var(--white);
  font-size: 25px;
  margin-top: 10px;
  text-align: center;
  cursor: auto;
  width: 72%;
  margin: 0 auto;
  text-align: center;
}
.quote:last-of-type {
  text-align: justify;
  font-size: 18px;
  margin-bottom: 35px;
}
#puzzler-container button:hover {
  transform: scale(1.3);
}
.content {
  display: flex;
  flex-direction: column;
  justify-content: space-evenly;
  flex: 0 0 30%;
}
#btn-container {
  text-align: center;
}

.topContainer {
  margin-top: 20px;
  justify-content: space-evenly;
  display: flex;
}

.bottomContainer {
  margin-top: 20px;
  justify-content: space-evenly;
  display: flex;
}

.outerflex {
  display: flex;
  flex-direction: column;
  justify-content: space-around;
  flex: 1;
  height: 66vh;
}
#puzzler-container button {
  cursor: pointer;
}

.outerBorder {
  border: 2px dashed var(--greyish-blue-color);
  padding: 5px;
  height: fit-content;
  width: fit-content;
  margin: 10px;
}

.tile {
  width: 100px;
  height: 100px;
  z-index: 1000;
  box-sizing: border-box;
  cursor: move;
  border: 5px solid var(--darkest-blue-color);
}
.tile img {
  filter: invert(100%);
}
.blank {
  min-width: 116px;
  min-height: 116px;
  z-index: 100;
  box-sizing: border-box;
  border: 2px dashed var(--greyish-blue-color);
  top: 200px;
  padding: 5px;
  margin: 10px;
}

.ui-state-highlight {
  border-color: var(--dark-magenta-color);
}

@media all and (max-width: 1200px) {
  .outerflex {
    flex-direction: row;
    justify-content: space-around;
    height: auto;
  }
  .topContainer,
  .bottomContainer {
    flex-direction: column;
  }
}

.revealtext {
  background-color: var(--white);
  transition: 0.3s ease;
}

.revealtext:hover {
  cursor: pointer;
}

/* End Cheryl Velez - Puzzler  */

/* Dominic Duffin - Math Puzzle */

:root {
  --text-color: #111111;
}

#math-puzzle-container div {
  color: var(--white);
}

#math-puzzle-container button {
  line-height: 100px;
  width: 100px;
  border-radius: 40%;
  border: 4px solid var(--white);
  font-size: 2em;
  font-weight: bold;
  color: var(--white);
  margin: 2px 0 0 2px;
}

#math-puzzle-main {
  display: grid;
  grid-template-rows: 1fr;
  grid-template-columns: 50% 50%;
}

#math-puzzle-keypad {
  grid-column: 1;
  width: 50%;
  margin-left: 10%;
}

#math-puzzle-sum {
  grid-column: 2;
  margin-right: 10%;
}

.math-puzzle-numberButton {
  background-color: transparent;
}

.math-puzzle-zeroButton {
  background-color: transparent;
}

.math-puzzle-signButton {
  background-color: transparent;
}

.math-puzzle-position {
  text-align: center;
  line-height: 65px;
  font-size: 2em;
  padding: 10px;
  font-weight: bold;
  border-bottom: 1px solid var(--white);
}

#math-puzzle-message {
  line-height: normal;
  font-size: 1.5em;
}

/* End  Dominic Duffin - Math Puzzle */

/* Paul - Flexbox Puzzle  */
#flexbox-puzzle-container {
  height: 700px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  position: relative;
}

.heading {
  margin: 8px;
  color: var(--white);
}

.heading__rules {
  padding: 0;
  margin: 0 auto;
  text-align: center;
}

.heading__subtitle {
  display: block;
  margin: 10px auto;
  width: 80%;
  height: 50px;
  text-align: center;
}

.notification {
  display: block;
  width: 100%;
  height: 35px;
  font-size: 25px;
  margin-bottom: 30px;
  text-align: center;
  color: var(--white);
  transition: all 0.5s ease-in;
}

.flex-menu {
  width: 100%;
  height: 25%;
  padding: 0.5rem;
  text-align: center;
  display: flex;
  flex-direction: row;
  justify-content: space-evenly;
  align-items: center;
  color: var(--white);
}

.flex-menu div {
  display: flex;
  flex-direction: column;
}

.flex-menu label {
  display: inline-block;
  padding-bottom: 0.5rem;
}

.flex-menu button {
  margin: 10px;
  margin-bottom: 50px;
  border: 0;
  padding: 10px 0;
  width: 140px;
  font-size: 0.75rem;
  white-space: nowrap;
  text-decoration: none;
  outline: none;
  box-shadow: 5px 6px 4px 2px rgba(12, 67, 131, 0.45);
}

.flex-menu__items {
  background-color: var(--bright-blue-color);
  padding: 4px;
  text-decoration: none;
  color: #fff;
  cursor: pointer;
}

.flexPuzzle-container {
  // display: block;
  position: absolute;
  height: 25%;
  max-width: 100%;
  left: 10%;
  perspective: 1000px;
      top: 300px;
}

.cube-1,
.cube-2,
.cube-3,
.cube-4,
.cube-5 {
  //position: relative;
  width: 75px;
  height: 75px;
  padding: 25px;
  transform-style: preserve-3d;
  transform: translateZ(-360px) rotateX(65deg) rotateZ(75deg);
  transition: all 2s ease-in-out;

  .side {
    position: absolute;
    width: 75px;
    height: 75px;
  }

  .front {
    background-color: var(--bright-blue-color);
    transform: rotateY(0deg) translateZ(35px);
    transition: all 0.5s ease-in-out;
  }

  .back {
    background-color: var(--bright-blue-color);
    transform: rotateX(180deg) translateZ(35px);
    transition: all 0.5s ease-in-out;
  }

  .right {
    background-color: var(--bright-blue-color);
    transform: rotateY(90deg) translateZ(35px);
    transition: all 0.5s ease-in-out;
  }

  .left {
    transform: rotateY(-90deg) translateZ(35px);
    transition: all 0.5s ease-in-out;
  }

  .top {
    // background-color: var(--bright-blue-color);
    transform: rotateX(90deg) translateZ(35px);
    transition: all 0.5s ease-in-out;
  }

  .bottom {
    background-color: var(--bright-blue-color);
    transform: rotateX(-90deg) translateZ(35px);
    transition: all 0.5s ease-in-out;
  }
}



// Media queries smaller screen

@media only screen and (max-width: 1500px) {
 #flexboxPuzzleModal .modal-content {
  width: 90%;
}

  .flexPuzzle-container {
    left: 0;
  }
}

/* End  Paul - Flexbox Puzzle  */

/* Kristopher Van Sant - Mirror Puzzle  */

#mirror-puzzle-container {
  text-align: center;
}

#mirror-clue,
#mirror-puzzle-container > p:first-of-type {
  color: var(--white);
  font-size: 1.7em;
  margin-bottom: 50px;
}

#mirror-puzzle-container #note {
  color: var(--darkest-blue-color);
  width: 285px;
  padding: 2%;
  box-sizing: border-box;
  display: inline-block;
  vertical-align: middle;
  background: var(--white);
  background-size: contain;
  text-align: left;
  font-size: 19px;
}
#mirror-puzzle-container #note:hover {
  cursor: grab;
}
#mirror-puzzle-container #note:active {
  cursor: grabbing;
}

#mirror-puzzle-container #mmirror {
  width: 500px;
  height: 500px;
  padding: 5%;
  display: inline-block;
  vertical-align: middle;
  background: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/108463/mirror.svg)
    center center no-repeat;
  background-size: contain;
}
#note-text {
  margin: 0;
  padding: 9%;
  border: 2px dashed var(--darkest-blue-color);
}

#mirror-puzzle-container .mirror-text {
  -moz-transform: scaleX(-1);
  -o-transform: scaleX(-1);
  -webkit-transform: scaleX(-1);
  transform: scaleX(-1);
}

/* End  Kristopher Van Sant - Mirror Puzzle  */

/* Ryan Saunders - Pipe Puzzle   */

#pipe-puzzle-container {
  font-size: 100%;
  height: 600px;
  padding: 0;
  margin: 0;
  color: var(--white);
  position: relative;
}
#pipePuzzleModal .modal-content {
  height: 660px;
}
#pipe-puzzle-container span {
  -webkit-transition-duration: 0.5s;
  -moz-transition-duration: 0.5s;
  -o-transition-duration: 0.5s;
  transition-duration: 0.5s;
  -webkit-transition-property: -webkit-transform;
  -moz-transition-property: -moz-transform;
  -o-transition-property: -o-transform;
  transition-property: transform;
}

.container {
  text-align: center;
  margin-top: 50px;
  font-size: 0;
  width: 50%;
  float: right;
}

.box {
  width: 95px;
  height: 95px;
  position: relative;
  display: inline-block;
  font-size: 16px;
}

.box.fake {
  border: none;
  height: 25px;
}

#pipe-puzzle-container .left {
  float: left;
  position: absolute;
  left: 0px;
  top: 0px;
  z-index: 9999;
  width: 50%;
  height: 100%;
  font-size: xx-large;
  line-height: 95px;
}

#pipe-puzzle-container .right {
  float: left;
  position: absolute;
  right: 0px;
  top: 0px;
  z-index: 9999;
  width: 50%;
  height: 100%;
  font-size: xx-large;
  line-height: 95px;
}

.testArea {
  position: absolute;
  top: 20px;
  left: 0px;
  padding: 30px 15px;
  background-color: #6a96b9d9;
  text-align: center;
}

.testButton {
  border: none;
  padding: 10px;
  background-color: var(--white);
}

.pipe {
  width: 95px;
  height: 95px;
  filter: grayscale(1);
  background: url("data:image/png;base64,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");
  float: left;
  //border: 1px solid #dddddd;
}

.pipe.pipe-straight {
  background-position: -383px -192px;
  background-size: 2400px;
}

.testArea .pipe.pipe-straight {
  transition: all linear 2s;
  opacity: 1;
  filter: alpha(opacity=100);
}

.testArea .pipe.pipe-straight:hover {
  box-shadow: inset 100px 0 0 0 blue;
  opacity: 0.5;
  filter: alpha(opacity=50);
}

.pipe.pipe-cross {
  background-position: -95px -95px;
  background-size: 2400px;
}

.testArea .pipe.pipe-cross {
  transition: all linear 1s;
  opacity: 1;
  filter: alpha(opacity=100);
}

.testArea .pipe.pipe-cross:hover {
  opacity: 0;
  filter: alpha(opacity=0);
}

.pipe.pipe-angle {
  background-position: -193px -192px;
  background-size: 2400px;
}

.pipe.pipe-junction {
  background-position: -193px -384px;
  background-size: 2400px;
}

.pipe.pipe-empty {
  background-position: 100px 0;
  background-size: 2400px;
}

input[type="number"] {
  width: 45px;
  background-color: var(--white);
}

.startPipe {
  position: absolute;
  height: 20px;
  width: 75%;
  background: var(--palest-blue-color);
  font-size: 16px;
  bottom: 2px;
  left: 12px;
}

.endPipe {
  position: absolute;
  height: 75%;
  width: 20px;
  background: var(--palest-blue-color);
  font-size: 16px;
  bottom: 10px;
  left: 2px;
  writing-mode: vertical-rl;
}

.bottomConsole {
  position: absolute;
  bottom: 0px;
  left: 0px;
  height: 50%;
  width: 410px;
  padding: 10px;
  background-color: #6a96b9d9;
  color: var(--white);
  overflow-x: auto;
  scrollbar-width: thin;
}

.bottomConsole hr {
  color: var(--white);
}

#pipe-busted {
  text-align: center;
  display: none;
}

#pipe-busted h2 {
  font-weight: ligher;
}
/* End  Ryan Saunders - Pipe Puzzle  */

/* Antoine Guillien - Recursion Puzzle   */

#recursion-puzzle-container #app {
  padding: 0.5rem;
  font-size: 2rem;
}
#recursion-puzzle-container .fa-ice-cream {
  font-size: 2rem;
  color: var(--pink-color);
}
#recursion-puzzle-container h1 {
  font-weight: normal;
  font-size: 1.7rem;
  text-align: center;
  margin: 1rem 0 3.5rem 0;
  color: var(--white);
}
#recursion-puzzle-container .thing {
  > .flex {
    font-size: 23px;
    font-weight: 700;
    color: var(--white);
    border-bottom: 1px solid var(--pink-color);
    padding-bottom: 5px;
    display: flex;
    div {
      padding: 0.5rem;
    }
    div:nth-child(2) {
      color: var(--white);
      cursor: pointer;
      transition: 0.3s ease-in-out;
    }
    div:nth-child(2):hover {
      transform: scale(1.5);
    }
  }
  > .children {
    .thing {
      padding: 0.5rem 0 0 2rem;
    }
  }
}
#recursion-puzzle-container .won {
  padding: 1rem;
}
#recursion-puzzle-container h1 .fa-ice-cream {
  color: var(--pink-color);
  font-size: 7rem;
}

/* End  Antoine Guillien - Recursion Puzzle   */

.locked {
  fill: var(--white);
}

/* padlock unlocked colors */
#padlock0 .unlocked {
  fill: var(--turquoise-blue-color);
}

#padlock1 .unlocked {
  fill: var(--magenta-color);
}

#padlock2 .unlocked {
  fill: var(--pink-color);
}

#padlock4 .unlocked {
  fill: var(--palest-blue-color);
}

#padlock3 .unlocked {
  fill: var(--dark-magenta-color);
}

#padlock5 .unlocked {
  fill: var(--bright-blue-color);
}

.unlocked {
  opacity: 0;
}

#escaped {
  visibility: hidden;
  display: grid;
  position: absolute;
  z-index: 100;
  width: 100%; /* Full width */
  height: 100%; /* Full height */
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  color: var(--white);
  text-align: center;
  margin: 0;
  font-family: "Bangers", cursive;
  background-color: rgb(0, 0, 0); /* Fallback color */
  background-color: rgba(0, 0, 0, 0.4);
  overflow: hidden;
}

#escaped h1 {
  font-size: 300px;
  justify-self: center;
  align-self: center;
}

// make font responsive
View Compiled
// Global

// These variables set to true when player solves puzzle:
// Please comment here with ✅ as triggers are added to puzzles:
var puzzlerSolved = false; // ✅
var mathPuzzleSolved = false; // ✅
var flexboxPuzzleSolved = false; // ✅
var mirrorPuzzleSolved = false; // ✅
var pipePuzzleSolved = false; // ✅
var recursionPuzzleSolved = false; // ✅

// Theme color variables - please use in all color functions.
var white = "#e6e6e6";
var darkestBlueColor = "#071e26";
var greyishBlueColor = "#06394c";
var brightBlueColor = "#0c4383";
var turquoiseBlueColor = "#22a0b6";
var palestBlueColor = "#6a96b9";
var darkMagentaColor = "#7b1346";
var magentaColor = "#cb0c59";
var pinkColor = "#eb649f";
// End Global

// Room scene

// Changes fill color of elements <selectors> to <color>
function toColor(selectors, color) {
  var item = document.querySelectorAll(selectors);
  item.forEach(function(i) {
    i.style.fill = color;
  });
}

// Changes opacity of element <selector> to <opacity>
function toOpacity(selector, opacity) {
  var item = document.querySelector(selector);
  item.style.opacity = opacity;
}

function abacusToColor() {
  toColor("#abacus .st0", magentaColor);
}

function abacusToWhite() {
  toColor("#abacus .st0", white);
}

function boxToColor() {
  toColor("#box .st0", pinkColor);
}

function boxToWhite() {
  toColor("#box .st0", white);
}

function mirrorToColor() {
  toColor("#mirror .st0", palestBlueColor);
}

function mirrorToWhite() {
  toColor("#mirror .st0", white);
}

function mirrorToColor() {
  toColor("#mirror .st0", palestBlueColor);
}

function mirrorToWhite() {
  toColor("#mirror .st0", white);
}

function radiatorToColor() {
  toColor("#radiator .st0", darkMagentaColor);
}

function radiatorToWhite() {
  toColor("#radiator .st0", white);
}

function computerToColor() {
  toColor("#computer #desktop .st0", brightBlueColor);
}

function computerToWhite() {
  toColor("#computer .st0", white);
}

function posterToTransparent() {
  toOpacity("#poster", "0.2");
}

function posterToOpaque() {
  toOpacity("#poster", "1");
}

function tilesToColor() {
  toColor("#tiles .st0", turquoiseBlueColor);
}

function tilesToWhite() {
  toColor("#tiles .st0", white);
}

document
  .getElementById("mathPuzzleBtn")
  .addEventListener("mouseover", abacusToColor);
document
  .getElementById("mathPuzzleBtn")
  .addEventListener("mouseout", abacusToWhite);
document
  .getElementById("flexboxPuzzleBtn")
  .addEventListener("mouseover", boxToColor);
document
  .getElementById("flexboxPuzzleBtn")
  .addEventListener("mouseout", boxToWhite);
document
  .getElementById("mirrorPuzzleBtn")
  .addEventListener("mouseover", mirrorToColor);
document
  .getElementById("mirrorPuzzleBtn")
  .addEventListener("mouseout", mirrorToWhite);
document
  .getElementById("pipePuzzleBtn")
  .addEventListener("mouseover", radiatorToColor);
document
  .getElementById("pipePuzzleBtn")
  .addEventListener("mouseout", radiatorToWhite);
document
  .getElementById("recursionPuzzleBtn")
  .addEventListener("mouseover", computerToColor);
document
  .getElementById("recursionPuzzleBtn")
  .addEventListener("mouseout", computerToWhite);
document
  .getElementById("puzzlerBtn")
  .addEventListener("mouseover", posterToTransparent);
document
  .getElementById("puzzlerBtn")
  .addEventListener("mouseout", posterToOpaque);
document
  .getElementById("puzzlerBtn")
  .addEventListener("mouseover", tilesToColor);
document
  .getElementById("puzzlerBtn")
  .addEventListener("mouseout", tilesToWhite);

// End room scene

// Cheryl Velez - Puzzler

// MODAL

// Get the modal
var puzzlerModal = document.getElementById("puzzlerModal");

// Get the button that opens the modal
var puzzlerBtn = document.getElementById("puzzlerBtn");

// Get the <span> element that closes the modal
var closePuzzler = document.getElementsByClassName("close-puzzler")[0];

// When the user clicks the button, open the modal
puzzlerBtn.onclick = function() {
  puzzlerModal.style.display = "grid";
};

// When the user clicks on <span> (x), close the modal and check whether all puzzles solved
closePuzzler.onclick = function() {
  puzzlerModal.style.display = "none";
  verify();
};

// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
  if (event.target == puzzlerModal) {
    puzzlerModal.style.display = "none";
  }
};

// END MODAL

// Start JS for Puzzler Puzzler
!(function(a) {
  function f(a, b) {
    if (!(a.originalEvent.touches.length > 1)) {
      a.preventDefault();
      var c = a.originalEvent.changedTouches[0],
        d = document.createEvent("MouseEvents");
      d.initMouseEvent(
        b,
        !0,
        !0,
        window,
        1,
        c.screenX,
        c.screenY,
        c.clientX,
        c.clientY,
        !1,
        !1,
        !1,
        !1,
        0,
        null
      ),
        a.target.dispatchEvent(d);
    }
  }
  if (((a.support.touch = "ontouchend" in document), a.support.touch)) {
    var e,
      b = a.ui.mouse.prototype,
      c = b._mouseInit,
      d = b._mouseDestroy;
    (b._touchStart = function(a) {
      var b = this;
      !e &&
        b._mouseCapture(a.originalEvent.changedTouches[0]) &&
        ((e = !0),
        (b._touchMoved = !1),
        f(a, "mouseover"),
        f(a, "mousemove"),
        f(a, "mousedown"));
    }),
      (b._touchMove = function(a) {
        e && ((this._touchMoved = !0), f(a, "mousemove"));
      }),
      (b._touchEnd = function(a) {
        e &&
          (f(a, "mouseup"),
          f(a, "mouseout"),
          this._touchMoved || f(a, "click"),
          (e = !1));
      }),
      (b._mouseInit = function() {
        var b = this;
        b.element.bind({
          touchstart: a.proxy(b, "_touchStart"),
          touchmove: a.proxy(b, "_touchMove"),
          touchend: a.proxy(b, "_touchEnd")
        }),
          c.call(b);
      }),
      (b._mouseDestroy = function() {
        var b = this;
        b.element.unbind({
          touchstart: a.proxy(b, "_touchStart"),
          touchmove: a.proxy(b, "_touchMove"),
          touchend: a.proxy(b, "_touchEnd")
        }),
          d.call(b);
      });
  }
})(jQuery);

/* *** end jQuery UI Touch Punch *** */

var tileArr = [];
var ansID = ["6", "8", "1", "2", "7", "4", "3", "5"];
var droppedID = [0, 0, 0, 0, 0, 0, 0, 0];
var dragThis = 0;
var dropThis = 0;
$(document).ready(function() {
  $(".tile").each(function() {
    $(this).draggable({
      drag: function(event, ui) {
        dragThis = $(this).attr("id");
        console.log(droppedID);
      }
    });
  });
  $(".blank").each(function() {
    $(this).droppable({
      drop: function(event, ui) {
        $(this).addClass("ui-state-highlight");
        dropThis =
          $(this)
            .attr("id")
            .substring(2, 1) - 1;
        droppedID[dropThis] = dragThis;
      },
      out: function(event, ui) {
        $(this).removeClass("ui-state-highlight");
        droppedID[dropThis] = 0;
      }
    });
  });

  $("button").click(function() {
    var c = 0;
    $(".blank").each(function(obj, value) {
      if ($(this).hasClass("ui-state-highlight")) {
        //do nothing
      } else {
        c++;
      }
    });
    if (c > 0) {
      $("#alert").html("Please place all tiles!");
    } else {
      var w = 0;
      $.each(ansID, function(obj, value) {
        if (value == droppedID[obj]) {
          w++;
        }

        if (w == 8) {
          puzzlerSolved = true;
          $("#alert").html("You solved it!");

          //unlock 1st padlock once puzzle is solved
          // checkPadlocks('padlock0',puzzlerSolved);
          // document.querySelector('.unlocked').setAttribute('fill', "#22a0b6");
          document.querySelector("#padlock0 .locked").style.opacity = "0";
          document.querySelector("#padlock0 .unlocked").style.opacity = "1";
          //$("#alert").html(`You win! ${puzzlerSolved}`);
          //console.log(puzzlerSolved); //done- trigger worked
        } else {
          $("#alert").html("Sorry please try again!");
          puzzlerSolved = false;
        }

        //unlock 1st padlock once puzzle is solved
        // puzzlerSolved= true;
        // checkPadlocks('padlock0',puzzlerSolved);
      });
    }
  });
});
// End JS for Puzzler Puzzle

document.querySelector(".revealtext").onclick = function() {
  document.querySelector(".revealtext").style.backgroundColor = "transparent";
};

// End Cheryl Velez - Puzzler

// Dominic Duffin - Math Puzzle

// Get the modal
var mathPuzzleModal = document.getElementById("mathPuzzleModal");

// Get the button that opens the modal
var mathPuzzleBtn = document.getElementById("mathPuzzleBtn");

// Get the <span> element that closes the modal
var closeMathPuzzle = document.getElementsByClassName("close-mathpuzzle")[0];

// When the user clicks the button, open the modal
mathPuzzleBtn.onclick = function() {
  mathPuzzleModal.style.display = "grid";
};

// When the user clicks on <span> (x), close the modal and check whether all puzzles solved
closeMathPuzzle.onclick = function() {
  mathPuzzleModal.style.display = "none";
  verify();
};

// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
  if (event.target == mathPuzzleModal) {
    mathPuzzleModal.style.display = "none";
  }
};

// Begin Math Puzzle JavaScript (not modal)

// TODO Replace window.alerts with something else!

var positionA; //A-G store value assigned to positions in sum
var positionB;
var positionC;
var positionD;
var positionE; //F doesn't exist because = is hard wired for F.
var positionG;
var choice; //Stores value of button last pressed by user
var bPlus = true; //Switch to false if user selects minus for B
var dPlus = true; //Switch to false if user selects minus for D
var sumTotal; //Stores correct sum for comparison with final position

//Messages:
function invalidMessage() {
  document.getElementById("math-puzzle-message").innerHTML =
    "Sorry, your choice is invalid!";
}

function fullMessage() {
  document.getElementById("math-puzzle-message").innerHTML =
    "Sorry, there are no more positions to fill!";
}

function solvedMessage() {
  document.getElementById("math-puzzle-message").innerHTML =
    "Yay, you've solved this one!";
}

function wrongMessage() {
  document.getElementById("math-puzzle-message").innerHTML =
    "Oh no, you got it wrong, better try again!";
}

function resetMathPuzzle() {
  positionA = void 0;
  positionB = void 0;
  positionC = void 0;
  positionD = void 0;
  positionE = void 0;
  positionG = void 0;
  document.getElementById("math-puzzle-a").innerHTML = "Number";
  document.getElementById("math-puzzle-b").innerHTML = "Sign";
  document.getElementById("math-puzzle-c").innerHTML = "Number";
  document.getElementById("math-puzzle-d").innerHTML = "Sign";
  document.getElementById("math-puzzle-e").innerHTML = "Number";
  document.getElementById("math-puzzle-g").innerHTML = "Number";
}

function checkNumber(x) {
  //Returns true if x is a number 0 ≥ x ≤ 9
  for (var i = 0; i < 10; i++) {
    if (x == i) {
      var y = true;
      i = 10; //To stop loop
    } else {
      var y = false;
    }
  }
  return y;
}

function checkSign(x) {
  //Returns true if x is '+' or '-'
  if (x == "+" || x == "-") {
    var y = true;
  } else {
    var y = false;
  }
  return y;
}

//The assignPosition functions assign the user's choice to the position's var, after checking for validity.

function assignPositionA() {
  isChoiceValid = checkNumber(choice);
  if (isChoiceValid == true) {
    positionA = choice;
    document.getElementById("math-puzzle-a").innerHTML = choice;
  } else {
    invalidMessage();
  }
}

function assignPositionB() {
  isChoiceValid = checkSign(choice);
  if (isChoiceValid == true) {
    positionB = choice;
    document.getElementById("math-puzzle-b").innerHTML = choice;
    if (choice == "-") {
      bPlus = false;
      //console.log(bPlus);
    }
  } else {
    invalidMessage();
  }
}

function assignPositionC() {
  isChoiceValid = checkNumber(choice);
  if (isChoiceValid == true) {
    positionC = choice;
    document.getElementById("math-puzzle-c").innerHTML = choice;
  } else {
    invalidMessage();
  }
}

function assignPositionD() {
  isChoiceValid = checkSign(choice);
  if (isChoiceValid == true) {
    positionD = choice;
    document.getElementById("math-puzzle-d").innerHTML = choice;
    if (choice == "-") {
      dPlus = false;
      //console.log(dPlus);
    }
  } else {
    invalidMessage();
  }
}

function assignPositionE() {
  isChoiceValid = checkNumber(choice);
  if (isChoiceValid == true) {
    positionE = choice;
    document.getElementById("math-puzzle-e").innerHTML = choice;
  } else {
    invalidMessage();
  }
}

function assignPositionG() {
  //Also calls calculate function
  isChoiceValid = checkNumber(choice);
  if (isChoiceValid == true) {
    positionG = choice;
    document.getElementById("math-puzzle-g").innerHTML = choice;
    calculateSumTotal();
  } else {
    invalidMessage();
  }
}

function findEmptyPosition() {
  //Finds the first unfilled position
  if (positionA == undefined) {
    assignPositionA();
  } else if (positionB == undefined) {
    assignPositionB();
  } else if (positionC == undefined) {
    assignPositionC();
  } else if (positionD == undefined) {
    assignPositionD();
  } else if (positionE == undefined) {
    assignPositionE();
  } else if (positionG == undefined) {
    assignPositionG();
  } else {
    fullMessage();
  }
}

//The clicked functions record button presses by user

function oneClicked() {
  choice = 1;
  findEmptyPosition();
}

function twoClicked() {
  choice = 2;
  findEmptyPosition();
}

function threeClicked() {
  choice = 3;
  findEmptyPosition();
}

function fourClicked() {
  choice = 4;
  findEmptyPosition();
}

function fiveClicked() {
  choice = 5;
  findEmptyPosition();
}

function sixClicked() {
  choice = 6;
  findEmptyPosition();
}

function sevenClicked() {
  choice = 7;
  findEmptyPosition();
}

function eightClicked() {
  choice = 8;
  findEmptyPosition();
}

function nineClicked() {
  choice = 9;
  findEmptyPosition();
}

function zeroClicked() {
  choice = 0;
  findEmptyPosition();
}

function plusClicked() {
  choice = "+";
  findEmptyPosition();
}

function minusClicked() {
  choice = "-";
  findEmptyPosition();
}

function calculateSumTotal() {
  //Calculates correct total
  if (bPlus == true && dPlus == true) {
    sumTotal = positionA + positionC + positionE;
  } else if (bPlus == true && dPlus == false) {
    sumTotal = positionA + positionC - positionE;
  } else if (bPlus == false && dPlus == true) {
    sumTotal = positionA - positionC + positionE;
  } else if (bPlus == false && dPlus == false) {
    sumTotal = positionA - positionC - positionE;
  }
  endGame();
}

function endGame() {
  //Checks whether user is correct
  if (sumTotal == positionG) {
    solvedMessage();
    mathPuzzleSolved = true; // Global var
    //unlock 2nd lock
    // checkPadlocks('padlock1',mathPuzzleSolved);
    // document.querySelector('.unlocked').setAttribute('fill', "#cb0c59");
    document.querySelector("#padlock1 .locked").style.opacity = "0";
    document.querySelector("#padlock1 .unlocked").style.opacity = "1";
  } else {
    wrongMessage();
    resetMathPuzzle();
  }
}

//Tests for checkNumber
//var output = checkNumber(0);
//console.log(output); //true
//output = checkNumber(-1);
//console.log(output); //false
//output = checkNumber(9);
//console.log(output); //true
//output = checkNumber(10);
//console.log(output); //false
//output = checkNumber('+');
//console.log(output); //false

//Tests for checkSign:
//var output = checkSign('+');
//console.log(output); //true
//output = checkSign('-');
//console.log(output); //true
//output = checkSign(8);
//console.log(output); //false

//Tests for assignPosition functions:

//choice = 5;
//assignPositionA();
//assignPositionB(); //invalid
//assignPositionC();
//assignPositionD(); //invalid
//assignPositionE();
//assignPositionG();

//choice = '+';
//assignPositionA(); //invalid
//assignPositionB();
//assignPositionC(); //invalid
//assignPositionD();
//assignPositionE(); //invalid
//assignPositionG(); //invalid

//Tests for calculateSumTotal:
//bPlus = true;
//dPlus = true;
//positionA = 1;
//positionC = 2;
//positionE = 4;
//calculateSumTotal();
//console.log(sumTotal) //7

//bPlus = true;
//dPlus = false;
//positionA = 4;
//positionC = 2;
//positionE = 6;
//calculateSumTotal();
//console.log(sumTotal) //0

//bPlus = false;
//dPlus = true;
//positionA = 1;
//positionC = 2;
//positionE = 4;
//calculateSumTotal();
//console.log(sumTotal) //3

//bPlus = false;
//dPlus = false;
//positionA = 1;
//positionC = 1;
//positionE = 1;
//calculateSumTotal();
//console.log(sumTotal) //-1

//Tests for endGame:
//sumTotal = 9;
//positionG = 9;
//endGame(); //You win!
//sumTotal = 0;
//positionG = 9;
//endGame(); //Oh no, you're wrong!

document
  .getElementById("math-puzzle-one")
  .addEventListener("click", oneClicked, false);
document
  .getElementById("math-puzzle-two")
  .addEventListener("click", twoClicked, false);
document
  .getElementById("math-puzzle-three")
  .addEventListener("click", threeClicked, false);
document
  .getElementById("math-puzzle-four")
  .addEventListener("click", fourClicked, false);
document
  .getElementById("math-puzzle-five")
  .addEventListener("click", fiveClicked, false);
document
  .getElementById("math-puzzle-six")
  .addEventListener("click", sixClicked, false);
document
  .getElementById("math-puzzle-seven")
  .addEventListener("click", sevenClicked, false);
document
  .getElementById("math-puzzle-eight")
  .addEventListener("click", eightClicked, false);
document
  .getElementById("math-puzzle-nine")
  .addEventListener("click", nineClicked, false);
document
  .getElementById("math-puzzle-zero")
  .addEventListener("click", zeroClicked, false);
document
  .getElementById("math-puzzle-plus")
  .addEventListener("click", plusClicked, false);
document
  .getElementById("math-puzzle-minus")
  .addEventListener("click", minusClicked, false);

// End Math Puzzle JavaScript

// End Dominic Duffin - Math Puzzle

// `Paul` - Flexbox Puzzle

// Get the modal
var flexboxPuzzleModal = document.getElementById("flexboxPuzzleModal");

// Get the button that opens the modal
var flexboxPuzzleBtn = document.getElementById("flexboxPuzzleBtn");

// Get the <span> element that closes the modal
var closeFlexboxPuzzle = document.getElementsByClassName(
  "close-flexboxpuzzle"
)[0];

// When the user clicks the button, open the modal
flexboxPuzzleBtn.onclick = function() {
  flexboxPuzzleModal.style.display = "grid";
};

// When the user clicks on <span> (x), close the modal adn check whether all puzzles solved
closeFlexboxPuzzle.onclick = function() {
  flexboxPuzzleModal.style.display = "none";
  verify();
};

// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
  if (event.target == flexboxPuzzleModal) {
    flexboxPuzzleModal.style.display = "none";
  }
};

//define all variables used
let i = 0;
let subTitle = document.getElementsByClassName("heading__subtitle");
let displayFlex = document.getElementById("flexDisplay");
let directionOfFlex = document.getElementById("flexDirectn");
let justContent = document.getElementById("flexJustCont");
let flexAlign = document.getElementById("flexAlignItems");
let notification = document.querySelector(".notification");
let cubes = document.getElementsByClassName("cubes");
const containerClass = document.getElementsByClassName("flexPuzzle-container");
const flexDirections = ["row", "row-reverse", "column", "column-reverse"];
const flexJustifyContent = [
  "flex-start",
  "flex-end",
  "center",
  "space-between",
  "space-around",
  "space-evenly"
];
const flexAlignArray = [
  "stretch",
  "center",
  "flex-start",
  "flex-end",
  "baseline"
];

//buttons event listener
displayFlex.addEventListener("click", function() {
  if (containerClass[0].style.display == "block") {
    containerClass[0].style.display = "flex";
    displayFlex.innerHTML = "flex";

    //add space on cubes when flex is on
    for (i = 0; i < 5; i++) {
      cubes[i].style.padding = "125px";
    }
  } else {
    containerClass[0].style.display = "block";
    displayFlex.innerHTML = "Display Flex";

    //bring back original padding size on each cube
    for (i = 0; i < 5; i++) {
      cubes[i].style.padding = "15px";
    }
  }
  checkPuzzle();
});

let itemLength = flexDirections.length;
directionOfFlex.addEventListener("click", function() {
  // console.log(this.textContent);
  subTitle[0].innerHTML =
    "The flex-direction CSS property specifies how flex items are placed in the flex container defining the main axis and the direction (normal or reversed).";
  if (i <= itemLength) {
    
    this.textContent = flexDirections[i];
    containerClass[0].style.flexDirection = flexDirections[i];
    i++;
    
    
    
    if (
      document.querySelector(".flexPuzzle-container").style.flexDirection ===
      "column-reverse"
    ) {
      document.querySelector(".flexPuzzle-container").style.top = "1100px";
      document.querySelector("#flexboxPuzzleModal .modal-content").style.height =
      "1300px";
    }
 
  
   if (
      document.querySelector(".flexPuzzle-container").style.flexDirection ===
      "column"
    ) {
     
      document.querySelector("#flexboxPuzzleModal .modal-content").style.height =
      "1300px";
    }
  }
  
  
  if (i > itemLength) {
    document.querySelector("#flexboxPuzzleModal .modal-content").style.height =
      "745px";
    document.querySelector(".flexPuzzle-container").style.top = "300px";
    this.textContent = "Change Flex Direction";
    containerClass[0].style.flexDirection = "row";
    i = 0;
  }
  checkPuzzle();
});

let itemJustifyContLength = flexJustifyContent.length;
justContent.addEventListener("click", function() {
  // console.log(subTitle[0].innerHTML);
  subTitle[0].innerHTML =
    "justify-content property defines how the browser distributes space between and around content items along the main-axis of their container.";
  if (i <= itemJustifyContLength) {
    this.textContent = flexJustifyContent[i];
    containerClass[0].style.justifyContent = flexJustifyContent[i];
    i++;
  }
  if (i > itemJustifyContLength) {
    this.textContent = "Change Flex Direction";
    containerClass[0].style.justifyContent = "flex-start";
    i = 0;
  }
  checkPuzzle();
});

let itemAlignmentArrayLen = flexAlignArray.length;
let midItem = document.getElementsByClassName("cubes");
flexAlign.addEventListener("click", function() {
  // console.log(midItem[2].innerHTML);
  subTitle[0].innerHTML =
    "This controls the alignment of items on the Cross Axis.";
  if (i <= itemAlignmentArrayLen) {
    this.textContent = flexAlignArray[i];
    containerClass[0].style.alignItems = flexAlignArray[i];
    i++;
  }
  if (i > itemAlignmentArrayLen) {
    this.textContent = "Change Flex Direction";
    containerClass[0].style.alignItems = "flex-start";
    midItem[2].classList.remove("itemHeight");
    i = 0;
  }
  checkPuzzle();
});

function checkPuzzle() {
  if (displayFlex.innerHTML === "flex") {
    document.querySelectorAll(".front")[0].style.backgroundColor = "#7b1346";
    // document.querySelectorAll('.side')[0]].style.backgroundColor = '#7b1346';
    document.querySelectorAll(".left")[0].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".right")[0].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".bottom")[0].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".top")[0].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".back")[0].style.backgroundColor = "#7b1346";
    notification.innerHTML = "Keep going! Try changing flex direction now.";
    notification.style.color = "#0c4383";
    checkDirection();
  } else {
    document.querySelectorAll(".front")[0].style.backgroundColor = "#0c4383";
    // document.querySelectorAll('.side')[0].style.backgroundColor = '#0c4383';
    document.querySelectorAll(".left")[0].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".right")[0].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".bottom")[0].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".top")[0].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".back")[0].style.backgroundColor = "#0c4383";

    notification.innerHTML = 'Start with turning on "Display Flex"';
    notification.style.color = "#E6E6E6";
  }
  checkAllButtons();
}

function checkDirection() {
  if (displayFlex.innerHTML == "flex" && directionOfFlex.innerHTML == "row") {
    document.querySelectorAll(".front")[4].style.backgroundColor = "#7b1346";
    // document.querySelectorAll('.side')[4].style.backgroundColor = '#7b1346';
    document.querySelectorAll(".left")[4].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".right")[4].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".bottom")[4].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".top")[4].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".back")[4].style.backgroundColor = "#7b1346";
    notification.innerHTML = "Ok now, keep going...";
    notification.style.color = "#0c4383";
    checkJustifyContent();
  } else {
    document.querySelectorAll(".front")[4].style.backgroundColor = "#0c4383";
    // document.querySelectorAll('.side')[4].style.backgroundColor = '#0c4383';
    document.querySelectorAll(".left")[4].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".right")[4].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".bottom")[4].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".top")[4].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".back")[4].style.backgroundColor = "#0c4383";
  }
}

function checkJustifyContent() {
  if (
    displayFlex.innerHTML == "flex" &&
    directionOfFlex.innerHTML == "row" &&
    justContent.innerHTML == "center"
  ) {
    document.querySelectorAll(".front")[1].style.backgroundColor = "#7b1346";
    // document.querySelectorAll('.side')[1].style.backgroundColor = '#7b1346';
    document.querySelectorAll(".left")[1].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".right")[1].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".bottom")[1].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".top")[1].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".back")[1].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".front")[3].style.backgroundColor = "#7b1346";
    // document.querySelectorAll('.side')[3].style.backgroundColor = '#7b1346';
    document.querySelectorAll(".left")[3].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".right")[3].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".bottom")[3].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".top")[3].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".back")[3].style.backgroundColor = "#7b1346";
    notification.innerHTML = "Hmm, you're getting hotter.";
    notification.style.color = "#0d4383";
    checkAllButtons();
  } else {
    document.querySelectorAll(".front")[1].style.backgroundColor = "#0c4383";
    // document.querySelectorAll('.side')[1].style.backgroundColor = '#0c4383';
    document.querySelectorAll(".left")[1].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".right")[1].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".bottom")[1].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".top")[1].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".back")[1].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".front")[3].style.backgroundColor = "#0c4383";
    // document.querySelectorAll('.side')[3].style.backgroundColor = '#0c4383';
    document.querySelectorAll(".left")[3].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".right")[3].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".bottom")[3].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".top")[3].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".back")[3].style.backgroundColor = "#0c4383";
    notification.innerHTML = "Ok now, keep going...";
  }
}

function checkAllButtons() {
  if (
    displayFlex.innerHTML == "flex" &&
    directionOfFlex.innerHTML == "row" &&
    justContent.innerHTML == "center" &&
    flexAlign.innerHTML == "center"
  ) {
    document.querySelectorAll(".front")[2].style.backgroundColor = "#7b1346";
    // document.querySelectorAll('.side')[2].style.backgroundColor = '#7b1346';
    document.querySelectorAll(".left")[2].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".right")[2].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".bottom")[2].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".top")[2].style.backgroundColor = "#7b1346";
    document.querySelectorAll(".back")[2].style.backgroundColor = "#7b1346";
    notification.innerHTML = "Well done! You've solved it!";
    notification.style.color = "#0d4383";
    flexboxPuzzleSolved = true;
    //unlock 2nd padlock once puzzle is solved
    // checkPadlocks('padlock2',flexboxPuzzleSolved);
    // document.querySelector('.unlocked').setAttribute('fill', "#eb649f");
    flexboxPuzzleSolved = true;
    document.querySelector("#padlock2 .locked").style.opacity = "0";
    document.querySelector("#padlock2 .unlocked").style.opacity = "1";
  } else {
    document.querySelectorAll(".front")[2].style.backgroundColor = "#0c4383";
    // document.querySelectorAll('.side')[2].style.backgroundColor = '#0c4383';
    document.querySelectorAll(".left")[2].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".right")[2].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".bottom")[2].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".top")[2].style.backgroundColor = "#0c4383";
    document.querySelectorAll(".back")[2].style.backgroundColor = "#0c4383";
    notification.innerHTML = "Ok now, keep going...";
    flexboxPuzzleSolved = false;
    document.querySelector("#padlock2 .locked").style.opacity = "1";
    document.querySelector("#padlock2 .unlocked").style.opacity = "0";
  }
  console.log(flexboxPuzzleSolved);
}

// End Paul - Flexbox Puzzle

// Kristopher Van Sant - Mirror Puzzle

// Get the modal
var mirrorPuzzleModal = document.getElementById("mirrorPuzzleModal");

// Get the button that opens the modal
var mirrorPuzzleBtn = document.getElementById("mirrorPuzzleBtn");

// Get the <span> element that closes the modal
var closeMirrorPuzzle = document.getElementsByClassName(
  "close-mirrorpuzzle"
)[0];

// When the user clicks the button, open the modal
mirrorPuzzleBtn.onclick = function() {
  mirrorPuzzleModal.style.display = "grid";
};

// When the user clicks on <span> (x), close the modal and check whether all puzzles solved
closeMirrorPuzzle.onclick = function() {
  mirrorPuzzleModal.style.display = "none";
  verify();
};

// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
  if (event.target == mirrorPuzzleModal) {
    mirrorPuzzleModal.style.display = "none";
  }
};

// // Drag and drop note
// Draggable.create("#noteWrap", {
//   bounds:"svg"
// });

// Begin JS for Mirror Puzzle (not modal)

$(function() {
  $("#note").draggable();
});

$(function() {
  $("#note").draggable();
  $("#mmirror").droppable({
    drop: function(event, ui) {
      $("#note-text").removeClass("mirror-text");

      $("#mirror-clue").replaceWith("<p>Ah, there we go. Interesting.</p>");

      mirrorPuzzleSolved = true;

      //unlock 4th padlock once puzzle is solved
      // checkPadlocks('padlock4',mirrorPuzzleSolved);
      // document.querySelector('use#ulock4 >

      document.querySelector("#padlock4 .locked").style.opacity = "0";
      document.querySelector("#padlock4 .unlocked").style.opacity = "1";
    }
  });
});
// End JS for Mirror Puzzle

// End Kristopher Van Sant - Mirror Puzzle

// Ryan Saunders - Pipe Puzzle

// Pipe Break Timer
var myVar;

function myFunction() {
  myVar = setTimeout(function() {
    document.querySelector(
      "#pipePuzzleModal .modal-content "
    ).style.backgroundImage =
      "url('https://media.giphy.com/media/46LMaiLUFRkoU/giphy.gif')";
    document.querySelector(
      "#pipePuzzleModal .modal-content "
    ).style.backgroundSize =
      "cover";
    document.querySelector("#pipePuzzleModal .modal-content ").style.boxShadow =
      "0px 0px 30px 10px #727ab9";
    document.querySelector("#pipe-notbusted").style.display = "none";
    document.querySelector("#pipe-notbusted").style.display = "none";
    document.querySelector("#pipe-busted").style.display = "block";

    pipePuzzleSolved = true;
    document.querySelector("#padlock3 .locked").style.opacity = "0";
    document.querySelector("#padlock3 .unlocked").style.opacity = "1";
  }, 75000);
}

function myStopFunction() {
  clearTimeout(myVar);
}

// Get the modal
var pipePuzzleModal = document.getElementById("pipePuzzleModal");

// Get the button that opens the modal
var pipePuzzleBtn = document.getElementById("pipePuzzleBtn");

// Get the <span> element that closes the modal
var closePipePuzzle = document.getElementsByClassName("close-pipepuzzle")[0];

// When the user clicks the button, open the modal
pipePuzzleBtn.onclick = function() {
  pipePuzzleModal.style.display = "grid";
  myFunction();
};

// When the user clicks on <span> (x), close the modal and check whether all puzzles solved
closePipePuzzle.onclick = function() {
  pipePuzzleModal.style.display = "none";
  verify();
  myStopFunction();
};

// When the user clicks anywhere outside of the modal, close it
// window.onclick = function(event) {

//   if (event.target == pipePuzzleModal) {
//     pipePuzzleModal.style.display = "none";
//     myStopFunction2();

//   }

// }

// Begin JS for Pipe Puzzle (not Modal)

// Store our Pipes directions within an array
// NOTE: We need to look into extending this on a per row basis

let pipeDef = [];

// Set rows to have letter assigned
var rowAlpha = "A".charCodeAt(0);
var curRow = String.fromCharCode(rowAlpha++);

// Array of classes for our different types of pipe
var pipeType = ["straight", "cross", "angle", "junction", "empty"];
var pipeTypeX = [
  ["Up", "Down"],
  ["Up", "Right", "Down", "Left"],
  ["Right", "Down"],
  ["Up", "Right", "Down"],
  ["None"]
];

// Text for pipe current direction
var dirText = ["Up", "Right", "Down", "Left"];

// Set initial line count & pipe count
var lineCount = 0; // current line
var pipeCount = 0; // current pipe number

// Set the initial number of total blocks and columns
var columns = 5; // Total of 4 coluns - 4 * 4 = 16 total blocks
var totalBlocks = 25;

$(document).ready(function() {
  // Add the first row with the start point
  addStart();

  // Call our newPipe function for the total number of blocks
  for (var i = 0; i < totalBlocks; i++) newPipe();

  // Add the final end block to the screen
  addEnd();

  // When a pipe is clicked on the left half, turn counter clockwise & save the direction
  $(document).on("click touchstart", ".left", function() {
    pipeID = $(this)
      .next()
      .next()
      .attr("id")
      .substring(5);
    pipeDef[pipeID].direction -= 90;
    $(this)
      .next()
      .next()
      .css("transform", "rotate(" + pipeDef[pipeID].direction + "deg)");
  });

  // When a pipe is clicked on the right half, turn clockwise & save the direction
  $(document).on("click touchstart", ".right", function() {
    pipeID = $(this)
      .next()
      .attr("id")
      .substring(5);
    pipeDef[pipeID].direction += 90;
    $(this)
      .next()
      .css("transform", "rotate(" + pipeDef[pipeID].direction + "deg)");
  });
});

// Function to add a new pipe to the screen
function newPipe() {
  // When the current lineCount reaches the column maximum, force a clear to start a new line
  if (lineCount == columns) {
    $(".container").append($("<div>", { style: "clear: both" }));
    lineCount = 0;
    curRow = String.fromCharCode(rowAlpha++);
  }

  // Add our new 'box' div within the content div
  $(".container").append($("<div>", { class: "box" }));

  // Add the left overlaid div as a child of 'box'
  $(".box")
    .last()
    .append($("<div>", { class: "left", text: curRow }));

  // Add the right overlaid div as a child of 'box'
  $(".box")
    .last()
    .append($("<div>", { class: "right", text: lineCount + 1 }));

  // Before any specific pipe code is spat out, call function which will return the details of the pipe as an object. Pass argument of "A1" etc.

  // curRow = A | lineCount = 0 + 1 (starts on line 0)
  var curPipe = valPipe(curRow + (lineCount + 1));

  // Increase the pipeDef array to have the same number of elements as there are pipes.
  if (pipeDef.length <= pipeCount) {
    pipeDef.push(curPipe);
  }

  //alert(pipeDef[pipeCount].direction);
  //alert(curPipe.id + " " + curPipe.direction + " " + curPipe.type);

  // Here we need to put our algorithm to make this work.
  // Also need random rotation for each pipe so that they don't always start in the same direction!

  // I need to calculate the route for a win from A1 to D4.
  // So, A1, A2, B2, B3, C3, D3, D4

  //     1  2  3  4
  // A [[X][X][ ][ ]]
  // B [[ ][X][X][ ]]
  // C [[ ][ ][X][ ]]
  // D [[ ][ ][X][X]]

  // A1 is Bend, Junction or cross
  // A2 is Bend, Junction or Cross
  // B2 is Bend, Junction or Cross
  // B3 is Bend, Junction or Cross
  // C3 is Straight, Junction or Cross
  // D3 is Bend, Junction or Cross
  // D4 is Straight, Junction or Cross

  // Then we need to work out orientation of pipes

  // If pipeType = 2 for first pipe, we need to make A2 have a pipe
  // if A2 = pipeType 2 then B2 must have pipe!
  // if B2 = pipeType 2 then B1 or B3 must have pipe!

  // add our actual pipe span (Random)
  $(".box")
    .last()
    .append(
      $("<span>", {
        class: "pipeblock pipe pipe-" + pipeType[curPipe.type],
        id: "pipe-" + pipeCount,
        style: "transform: rotate(" + curPipe.direction + "deg);"
      })
    );

  // Increment the pipeCount & lineCount counters
  pipeCount += 1;
  lineCount += 1;

  // Output number of rows and columns to test area
  document.getElementById("rowCount").value = Math.ceil(pipeCount / columns);
  document.getElementById("colCount").value = columns;
}

// Add a new "Start" block/label to the first line.
function addStart() {
  // Add our new 'box' div within the content div
  $(".container").append($("<div>", { class: "box fake" }));

  // Add the end pipe as a child of 'box'
  $(".box")
    .last()
    .append($("<span>", { class: "startPipe", text: "Start" }));

  for (var i = 0; i < columns - 1; i++) {
    $(".container").append($("<div>", { class: "box fake" }));
  }

  $(".container").append($("<div>", { style: "clear: both" }));
}

// Add a new "End" block/label to the last pipe added.
function addEnd() {
  // Add our new 'box' div within the content div
  $(".container").append(
    $("<div>", {
      class: "box",
      style: "width:25px; border: none; position: absolute;"
    })
  );

  // Add the end pipe as a child of 'box'
  $(".box")
    .last()
    .append($("<span>", { class: "endPipe", text: "End" }));
}

// Function to add a new pipe to the screen
function updatePipes() {
  clearAll();
  columns = document.getElementById("colCount").value;
  totalBlocks = document.getElementById("rowCount").value * columns;

  //alert("Columns: " + columns + " | Total Blocks: " + totalBlocks + " | Rows: " + (totalBlocks / columns));

  addStart();
  for (var i = 0; i < totalBlocks; i++) newPipe();
  addEnd();
}

function clearAll() {
  //$(".container").innerHTML = '';

  // Store our Pipes directions within an array
  pipeDef = [];

  // Set initial line count & pipe count
  lineCount = 0;
  pipeCount = 0;
  document.getElementById("container").innerHTML = "";

  // reset row letters
  rowAlpha = "A".charCodeAt(0);
  curRow = String.fromCharCode(rowAlpha++);
}

function valPipe(cell) {
  var x;

  var topLeft =
    pipeCount - columns - 1 >= 0 &&
    (pipeCount - columns - 1) % columns != columns - 1
      ? pipeCount - columns - 1
      : "None";
  var top = pipeCount - columns >= 0 ? pipeCount - columns : "None";
  var topRight =
    pipeCount - columns + 1 >= 0 && (pipeCount - columns + 1) % columns != 0
      ? pipeCount - columns + 1
      : "None";
  var left =
    pipeCount - 1 >= 0 && (pipeCount - 1) % columns != columns - 1
      ? pipeCount - 1
      : "None";

  // If A1 (So if Above = Empty and Left = Empty and lineCount not final pipe) then must contain pipe (not empty)
  // If Above = empty & left = straight then pick anything.
  // If above = empty & left = bent then pick any other than empty

  // Set x to a random value between 0-4 (0-3 for first element and last element)
  // First element can be 0-3 but last needs to check various bits!
  if (cell == "A1") {
    x = Math.floor(Math.random() * 4);
  } else {
    x =
      pipeCount == 0
        ? Math.floor(Math.random() * 4)
        : pipeCount == totalBlocks - 1
          ? Math.floor(Math.random() * 4)
          : Math.floor(Math.random() * 5);
  }

  $(".bottomConsole").append("<strong>" + cell + ": </strong>");
  $(".bottomConsole").append(
    "Top Left: " +
      (topLeft != "None"
        ? pipeType[pipeDef[topLeft].type]
        : "<strong>None</strong>") +
      " | Top: " +
      (top != "None" ? pipeType[pipeDef[top].type] : "<strong>None</strong>") +
      " | Top Right: " +
      (topRight != "None"
        ? pipeType[pipeDef[topRight].type]
        : "<strong>None</strong>") +
      " | Left: " +
      (left != "None"
        ? pipeType[pipeDef[left].type]
        : "<strong>None</strong>") +
      "<br />"
  );

  $(".bottomConsole").append(
    "Top Left Pipe can Join on: " +
      (topLeft != "None"
        ? pipeTypeX[pipeDef[topLeft].type]
            .toString()
            .split(",")
            .join(", ")
        : "None") +
      "<br />"
  );

  $(".bottomConsole").append(
    "Top Pipe can Join on: " +
      (top != "None"
        ? pipeTypeX[pipeDef[top].type]
            .toString()
            .split(",")
            .join(", ")
        : "None") +
      "<br />"
  );

  $(".bottomConsole").append(
    "Top Right Pipe can Join on: " +
      (topRight != "None"
        ? pipeTypeX[pipeDef[topRight].type]
            .toString()
            .split(",")
            .join(", ")
        : "None") +
      "<br />"
  );

  $(".bottomConsole").append(
    "Left Pipe can Join on: " +
      (left != "None"
        ? pipeTypeX[pipeDef[left].type]
            .toString()
            .split(",")
            .join(", ")
        : "None") +
      "<br />"
  );

  //if (left != "None") {
  //  $('.bottomConsole').append(pipeTypeX[pipeDef[left].type].includes('Right'));
  //}

  // A1 - Still tempted to just check for cell == 'A1' here...
  if (left == "None" && top == "None") {
    // Setting direction to -90 as the images I'm using are not the same as the actual algorithm being used.
    var y = -90;
    var dirCount = 0;
    var dirCheck = "";
    var z = [];

    // This for loop swaps our directions to see which orientations are valid (Does the pipe connect?)
    for (var r = 0; r < 4; r++) {
      dirCheck = "Run " + (r + 1) + ": ";

      for (var i = 0; i < pipeTypeX[x].length; i++) {
        dirCheck +=
          (dirText.indexOf(pipeTypeX[x][i]) + r > dirText.length - 1
            ? (dirText.indexOf(pipeTypeX[x][i]) + r) % (dirText.length - 1) > 0
              ? dirText[
                  (dirText.indexOf(pipeTypeX[x][i]) + r) %
                    (dirText.length - 1) -
                    1
                ]
              : dirText[
                  (dirText.indexOf(pipeTypeX[x][i]) + r) %
                    (dirText.length - 1) +
                    2
                ]
            : dirText[dirText.indexOf(pipeTypeX[x][i]) + r]) +
          "[" +
          (dirText.indexOf(pipeTypeX[x][i]) + r > dirText.length - 1
            ? (dirText.indexOf(pipeTypeX[x][i]) + r) % (dirText.length - 1) > 0 // if out of bounds, this corrects index
              ? (dirText.indexOf(pipeTypeX[x][i]) + r) % (dirText.length - 1) -
                1
              : (dirText.indexOf(pipeTypeX[x][i]) + r) % (dirText.length - 1) +
                2
            : dirText.indexOf(pipeTypeX[x][i]) + r) + // if within bounds, this simply grabs new index
          "] ";

        // puts all current directions into string, if our count >= 2 then it's a valid pipe that
        // we can use to connect to others. If so, we +1 to our master check. At the end if our total > 0
        // the pipe is valid? I need to save f though on a "good" pipe.

        //alert("Run " + (f+1) + ": " + dirText.indexOf(pipeTypeX[x][i]) + " - " + pipeTypeX[x][i] + " Becomes: " + (((dirText.indexOf(pipeTypeX[x][i])+f) > (dirText.length -1)) ? (dirText.indexOf(pipeTypeX[x][i])+f)%(dirText.length -1)-1 : (dirText.indexOf(pipeTypeX[x][i])+f)) + " - " + (((dirText.indexOf(pipeTypeX[x][i])+f) > (dirText.length -1)) ? dirText[(dirText.indexOf(pipeTypeX[x][i])+f)%(dirText.length -1)-1] : dirText[(dirText.indexOf(pipeTypeX[x][i])+f)]));

        //alert(dirText.indexOf(pipeTypeX[x][i])+f%(dirText.length -1) + " - " + (dirText.length -1));
      }

      // These need to be dynamic based upon what's around it.
      dirCount += dirCheck.includes("Up") ? 1 : -1;
      dirCount += dirCheck.includes("Right") ? 1 : 0;
      dirCount += dirCheck.includes("Down") ? 1 : 0;
      dirCount += dirCheck.includes("Left") ? 0 : 0;

      //bleh += (pipeTypeX[x].includes('Up')) ? 1 : -1;
      //bleh += (pipeTypeX[x].includes('Right')) ? 1 : 0;
      //bleh += (pipeTypeX[x].includes('Down')) ? 1 : 0;
      //bleh += (pipeTypeX[x].includes('Left')) ? -1 : 0;

      // Add successful direction to Connection State
      if (dirCount >= 2) {
        z.push(r);
      }

      dirCount = 0;
    }
  } else {
    // Direction of pipe (When finished will be based on surrounding)
    var y = 90 * Math.floor(Math.random() * 4);
    // Shoving directions in here for now. Changing to orientation (0-3) later - can have more than 1 value
    var z = pipeTypeX[x];
  }

  $(".bottomConsole").append("<hr />");

  return {
    id: cell, // A1 (A1-E5)
    type: x, // 1 (Used in pipeType Array (0,1,2,3,4))
    direction: y, // 90 (Degrees (0,90,180,270))
    state: z // 1,2 (Orientations that are valid (0-3))
  };
}

function test() {
  $(".bottomConsole").empty();

  var dirNum;

  for (var i = 0; i < pipeDef.length; i++) {
    dirNum = pipeDef[i].direction / 360;
    dirNum = (dirNum - Math.floor(dirNum)) * 4;

    $(".bottomConsole").append(
      "Pipe ID: pipe-" +
        i +
        " | Pipe Position: " +
        pipeDef[i].id +
        " | Pipe Direction: " +
        pipeDef[i].direction +
        " ( " +
        dirText[dirNum] +
        ") | Pipe Type: " +
        pipeType[pipeDef[i].type] +
        " | Connection State: " +
        pipeDef[i].state +
        "<br />"
    );
  }
}

// NOTES:
// Make button with slider to select difficulty ?
// Easy - Normal - Hard - Extreme - Expert
// 2x2 - 3x3 - 4x4 - 5x5 - 6x6
// Multi dimensional  key-pair/array? each side has an index?
// create algorithm to generate correct "path" to win
// and based on difficulty, spit out "grid" in random
// order (avoiding solved path).
// top left & bottom right always ends. Direction is
// random based on possible solved path outcomes

// End JS for Pipe Puzzle

// End Ryan Saunders - Pipe Puzzle

// Antoine Guillien - Recursion Puzzle

// Get the modal
var recursionPuzzleModal = document.getElementById("recursionPuzzleModal");

// Get the button that opens the modal
var recursionPuzzleBtn = document.getElementById("recursionPuzzleBtn");

// Get the <span> element that closes the modal
var closeRecursionPuzzle = document.getElementsByClassName(
  "close-recursionpuzzle"
)[0];

// When the user clicks the button, open the modal
recursionPuzzleBtn.onclick = function() {
  recursionPuzzleModal.style.display = "grid";
};

// When the user clicks on <span> (x), close the modal and check whether all puzzles solved
closeRecursionPuzzle.onclick = function() {
  recursionPuzzleModal.style.display = "none";
  verify();
};

// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
  if (event.target == recursionPuzzleModal) {
    recursionPuzzleModal.style.display = "none";
    verify();
  }
  if (event.target == puzzlerModal) {
    puzzlerModal.style.display = "none";
    verify();
  }

  if (event.target == mathPuzzleModal) {
    mathPuzzleModal.style.display = "none";
    verify();
  }

  if (event.target == flexboxPuzzleModal) {
    flexboxPuzzleModal.style.display = "none";
    verify();
  }

  if (event.target == mirrorPuzzleModal) {
    mirrorPuzzleModal.style.display = "none";
    verify();
  }

  if (event.target == pipePuzzleModal) {
    pipePuzzleModal.style.display = "none";
    verify();
    myStopFunction();
  }
};

// Start JS for Recursion Puzzle
const TYPE = {
  ROOM: 0,
  CORRIDOR: 1,
  DOOR_IN: 2,
  DOOR_OUT: 3,
  OBJECT: 4,
  CONTAINER: 5,
  CAT: 6,
  THOUGHTS: 7,
  EXIT: 8
};

const config = {
  [TYPE.ROOM]: {
    seeds: () => {
      const adjectives = ["Tiny", "Big", "Dirty"];
      const colors = ["Fluorescent", "Dark", "Luminous", "Resplendant"];
      return `${_.sample(adjectives)} ${_.sample(colors)} Room`;
    },
    relations: [
      { type: TYPE.DOOR_OUT, min: 1, max: 3 },
      { type: TYPE.CONTAINER, min: 1, max: 5 },
      { type: TYPE.CAT, min: 1, max: 1, p: 0.2 }
    ]
  },
  [TYPE.CONTAINER]: {
    seeds: ["Freezer", "Fridge", "Icebox"],
    relations: [
      { type: TYPE.OBJECT, min: 1, max: 2 },
      {
        type: TYPE.EXIT,
        min: 1,
        max: 1,
        p: data => {
          const nb = countParents(data);
          if (nb > 2) {
            return 0.05 * (nb / 2);
          } else {
            return 0;
          }
        }
      }
    ]
  },
  [TYPE.OBJECT]: {
    seeds: [
      "Beans",
      "Carrots",
      "French fries",
      "Cucumber",
      "Peas",
      "Strawberries",
      "Blueberries",
      "Shrimp",
      "Pizza",
      "Broccoli",
      "Spinach",
      "Soup"
    ],
    relations: []
  },
  [TYPE.CORRIDOR]: {
    seeds: ["Corridor", "Aisle", "Passage", "Couloir", "Lobby"],
    relations: [{ type: TYPE.DOOR_IN, min: 1, max: 3 }]
  },
  [TYPE.DOOR_IN]: {
    seeds: ["A Door"],
    relations: [{ type: TYPE.ROOM, min: 1, max: 1 }]
  },
  [TYPE.DOOR_OUT]: {
    seeds: ["A Door"],
    relations: [{ type: TYPE.CORRIDOR, min: 1, max: 1 }]
  },
  [TYPE.EXIT]: {
    seeds: ["wiiiii"],
    relations: []
  },
  [TYPE.CAT]: {
    seeds: () => {
      const adjectives = ["Majestic", "Big", "Lazy"];
      const coats = ["", "Bi-Coloured", "Tabby", "Tortoiseshell", "Calico"];
      const colors = [
        "Dark",
        "White",
        "Brown",
        "Ginger",
        "Grey",
        "Cinnamon",
        ""
      ];
      return `${_.sample(adjectives)} ${_.sample(coats)} ${_.sample(
        colors
      )} Cat`;
    },
    relations: [{ type: TYPE.THOUGHTS, min: 1, max: 2 }]
  },
  [TYPE.THOUGHTS]: {
    seeds: [
      "Sharp Look",
      "Paws",
      "Tail",
      "Weird Look",
      "Thoughts Of Destruction",
      "Starvation"
    ],
    relations: []
  }
};

let tid = 0;
const generateThing = (type, parent) => {
  let name = Array.isArray(config[type].seeds)
    ? _.sample(config[type].seeds)
    : config[type].seeds();
  return {
    type: type,
    name,
    id: tid++,
    links: [],
    parent
  };
};

const countParents = data => {
  let sum = 0;
  let p = data;
  while (p.parent) {
    p = p.parent;
    sum++;
  }
  return sum;
};

const generateFromParent = parent => {
  let links = [];
  config[parent.type].relations.forEach(r => {
    let p = r.p ? (r.p instanceof Function ? r.p(parent) : r.p) : 1;
    if (r.type == TYPE.EXIT) {
      console.log(p);
    }
    if (p === 1 || Math.random() < p) {
      links = links.concat(
        Array.from({ length: _.random(r.min, r.max) }, () =>
          generateThing(r.type, parent)
        )
      );
    }
  });
  return links;
};

Vue.component("thing", {
  props: ["data", "create", "cb"],
  data: () => ({
    show: false
  }),
  methods: {
    createLinks: function() {
      let self = this;
      this.data.links = generateFromParent(this.data);
      this.cb(this.data);
    },
    handle: function() {
      if (!this.data.links.length) {
        this.createLinks();
      }
      this.show = !this.show;
    }
  },
  template: `
    <div class="thing">
      <div class="flex">
        <div>
          <span v-if="data.type == TYPE.EXIT"><i class="fa fa-ice-cream"></i></span>
          <span v-else>{{data.name}}</span>
        </div>
        <div @click="handle" v-if="[TYPE.OBJECT, TYPE.EXIT, TYPE.THOUGHTS].indexOf(data.type) === -1">
          <i v-if="show" class="fas fa-arrow-left"></i>
          <i v-else class="fas fa-arrow-right"></i>
        </div>
      </div>
      <div class="children" v-if="show">
        <div v-for="c in data.links">
          <thing :data="c" :key="c.id" :cb="cb"></thing>
        </div>
      </div>
    </div>
  `
});

const app = new Vue({
  el: "#app",
  data: {
    root: null,
    won: false,
    details: {
      clicks: 0,
      level: 0,
      opened: 0
    }
  },
  beforeMount: function() {
    this.root = generateFromParent({ type: TYPE.DOOR_IN, links: [] }).pop();
  },
  methods: {
    cb: function(data) {
      if (data.type === TYPE.CONTAINER) {
        this.details.opened++;
      }
      if (data.links.some(l => l.type === TYPE.EXIT)) {
        this.details.level = countParents(data);
        this.won = true;
        recursionPuzzleSolved = true;
        //unlock 6th padlock once puzzle is solved
        // checkPadlocks('padlock5',recursionPuzzleSolved);
        // document.querySelector(' .unlocked').setAttribute('fill', "#7b1346");
        document.querySelector("#padlock5 .locked").style.opacity = "0";
        document.querySelector("#padlock5 .unlocked").style.opacity = "1";
      }
      this.details.clicks++;
    }
  }
});

// End Antoine Guillien - Recursion Puzzle

// Padlock Functionality and Verification

// let padlocks = document.querySelectorAll('[id^=padlock]'),
// pathsToAnimate = document.querySelectorAll('[id^=ulock]');

// function checkPadlocks(whichLock,bol=false) {
//   //iterate through each path id of svg padlock
//   for(let i=0; i < 6; i++) {
//     //console.log(i + '  ' + padlocks[i].getAttribute('id'));
//     //console.log(whichLock === padlocks[i].getAttribute('id'));
//     if(whichLock === padlocks[i].getAttribute('id') && bol) {

//       // pathsToAnimate[i].setAttribute('href','#unlocked');
//       // console.log(pathsToAnimate[i]);
//       // document.querySelector(`${whichLock}.locked`).style.opacity="0";
//  // document.querySelector(`${whichLock}.unlocked`).style.opacity="1";
//       var paths = document.getElementsByTagName("path");
//       whichLock.paths[0].style.opacity = "0";
//       whichLock.paths[1].style.opacity = "1";
//     }
//   }
// }

// Start JS for verification

var haveEscaped;

function escapeNow() {
  haveEscaped = setTimeout(function() {
    //  replace door with opened version
    document.getElementById("door").style.opacity = "0";
    document.getElementById("open-door").style.opacity = "1";
    // window.alert("You may now escape!");
    document.getElementById("escaped").style.visibility = "visible";
  }, 750);
}

// Checks whether player has solved all puzzles, if yes, escape!
function verify() {
  // testing
  //   var puzzlerSolved = true; // ✅
  // var mathPuzzleSolved = true; // ✅
  // var flexboxPuzzleSolved = true; // ✅
  // var mirrorPuzzleSolved = true; // ✅
  // var pipePuzzleSolved = true; // ✅
  // var recursionPuzzleSolved = true; // ✅

  if (
    puzzlerSolved == true &&
    mathPuzzleSolved == true &&
    flexboxPuzzleSolved == true &&
    mirrorPuzzleSolved == true &&
    pipePuzzleSolved == true &&
    recursionPuzzleSolved == true
  ) {
    //ESCAPE

    escapeNow();
  }
}
verify();

// End JS for verification
Run Pen

External CSS

  1. https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.8.1/css/all.min.css

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js
  2. https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js
  3. https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.min.js
  4. https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js
  5. https://cdnjs.cloudflare.com/ajax/libs/gsap/1.20.4/TweenMax.min.js
  6. https://cdnjs.cloudflare.com/ajax/libs/gsap/1.20.4/utils/Draggable.min.js