diff --git a/README.md b/README.md deleted file mode 100644 index 2092dfa..0000000 --- a/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# Enhancing High-Resolution 3D Generation through Pixel-wise Gradient Clipping -### [[Paper]](https://arxiv.org/abs/2310.12474) | [[Project]](https://pgc-3d.github.io/) - -> [**Enhancing High-Resolution 3D Generation through Pixel-wise Gradient Clipping**](https://arxiv.org/abs/2310.12474), -> Zijie Pan, [Jiachen Lu](https://victorllu.github.io/), [Xiatian Zhu](https://surrey-uplab.github.io/), [Li Zhang](https://lzrobots.github.io) -> **Arxiv preprint** - -**Official implementation of "Enhancing High-Resolution 3D Generation through Pixel-wise Gradient Clipping".** - - -**PGC** (Pixel-wise Gradient Clipping) introduces a refined method to adapt traditional gradient clipping. By focusing on pixel-wise gradient magnitudes, it retains vital texture details. This approach acts as a versatile **plug-in**, seamlessly complementing existing **SDS and LDM-based 3D generative models**. The result is a marked improvement in high-resolution 3D texture synthesis. - -With PGC, users can: -- Address and mitigate gradient-related challenges common in LDM, elevating the quality of 3D generation. -- Employ the [**SDXL**](https://github.com/Stability-AI/generative-models) approach, previously not adaptable for 3D generation. - -## News -- We have tested the environment and common usage. This repo will offer an unified implementation for mesh optimization and reproduction of many SDS variants. Codes will be released soon. - -## Results -Incorporating the proficient and potent **PGC** implementation into SDXL guidance has led to notable advancements in 3D generation results. - -#### [Fantasia3D](https://github.com/Gorilla-Lab-SCUT/Fantasia3D) -photo - -#### Ours -photo - -https://github.com/fudan-zvg/PGC-3D/assets/84657631/a04cd157-6666-4fd3-b3a1-069f4ec8f255 - -## Tips for SDXL -- Using [sdxl-vae-fp16-fix](https://huggingface.co/madebyollin/sdxl-vae-fp16-fix) -- [Controlnet](https://huggingface.co/diffusers/controlnet-depth-sdxl-1.0) may be important to make training easier to converge - -## BibTeX -If you find our repository useful, please consider giving it a star ⭐ and citing our paper in your work: -``` -@article{pan2023enhancing, - title={Enhancing High-Resolution 3D Generation through Pixel-wise Gradient Clipping}, - author={Pan, Zijie and Lu, Jiachen and Zhu, Xiatian and Zhang, Li}, - journal={arXiv preprint arXiv 2310.12474}, - year={2023} -} -``` diff --git a/assets/css/Highlight-Clean.css b/assets/css/Highlight-Clean.css new file mode 100644 index 0000000..185933a --- /dev/null +++ b/assets/css/Highlight-Clean.css @@ -0,0 +1,64 @@ +.highlight-clean { + color: #313437; + background-color: #fff; + padding: 50px 0; +} + +.highlight-clean p { + color: #7d8285; +} + +.highlight-clean h2 { + font-weight: bold; + margin-bottom: 25px; + line-height: 1.5; + padding-top: 0; + margin-top: 0; + color: inherit; +} + +.highlight-clean .intro { + font-size: 16px; + max-width: 500px; + margin: 0 auto 25px; +} + +.highlight-clean .buttons { + text-align: center; +} + +.highlight-clean .buttons .btn { + padding: 16px 32px; + margin: 6px; + border: none; + background: none; + box-shadow: none; + text-shadow: none; + opacity: 0.90; + /*text-transform: uppercase;*/ + font-weight: bold; + font-size: 13px; + letter-spacing: 0.4px; + line-height: 1; + outline: none; + background-color: #ddd; +} + +.highlight-clean .buttons .btn:hover { + opacity: 1; +} + +.highlight-clean .buttons .btn:active { + transform: translateY(1px); +} + +.highlight-clean .buttons .btn-primary { + background-color: #055ada; + color: #fff; +} + +body { + font-family: 'Source Sans Pro', sans-serif; + padding-bottom: 50px; +} + diff --git a/assets/css/bootstrap.min.css b/assets/css/bootstrap.min.css new file mode 100644 index 0000000..5496b1d --- /dev/null +++ b/assets/css/bootstrap.min.css @@ -0,0 +1,11 @@ +@import url("https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700");/*! + * bootswatch v3.3.5 + * Homepage: http://bootswatch.com + * Copyright 2012-2015 Thomas Park + * Licensed under MIT + * Based on Bootstrap +*//*! + * Bootstrap v3.3.5 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-size:15px;line-height:1.42857143;color:#333333;background-color:#ffffff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2780e3;text-decoration:none}a:hover,a:focus{color:#165ba8;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:0}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:21px;margin-bottom:21px;border:0;border-top:1px solid #e6e6e6}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family: "Source Sans Pro";font-weight: 300;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999999}h1,.h1,h2,.h2,h3,.h3{margin-top:21px;margin-bottom:10.5px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10.5px;margin-bottom:10.5px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:39px}h2,.h2{font-size:32px}h3,.h3{font-size:26px}h4,.h4{font-size:19px}h5,.h5{font-size:15px}h6,.h6{font-size:13px}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:17px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:22.5px}}small,.small{font-size:86%}mark,.mark{background-color:#ff7518;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#999999}.text-primary{color:#2780e3}a.text-primary:hover,a.text-primary:focus{color:#1967be}.text-success{color:#ffffff}a.text-success:hover,a.text-success:focus{color:#e6e6e6}.text-info{color:#ffffff}a.text-info:hover,a.text-info:focus{color:#e6e6e6}.text-warning{color:#ffffff}a.text-warning:hover,a.text-warning:focus{color:#e6e6e6}.text-danger{color:#ffffff}a.text-danger:hover,a.text-danger:focus{color:#e6e6e6}.bg-primary{color:#fff;background-color:#2780e3}a.bg-primary:hover,a.bg-primary:focus{background-color:#1967be}.bg-success{background-color:#3fb618}a.bg-success:hover,a.bg-success:focus{background-color:#2f8912}.bg-info{background-color:#9954bb}a.bg-info:hover,a.bg-info:focus{background-color:#7e3f9d}.bg-warning{background-color:#ff7518}a.bg-warning:hover,a.bg-warning:focus{background-color:#e45c00}.bg-danger{background-color:#ff0039}a.bg-danger:hover,a.bg-danger:focus{background-color:#cc002e}.page-header{padding-bottom:9.5px;margin:42px 0 21px;border-bottom:1px solid #e6e6e6}ul,ol{margin-top:0;margin-bottom:10.5px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:21px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10.5px 21px;margin:0 0 21px;font-size:18.75px;border-left:5px solid #e6e6e6}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #e6e6e6;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:21px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:0}kbd{padding:2px 4px;font-size:90%;color:#ffffff;background-color:#333333;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:14px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #cccccc;border-radius:0}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0%}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0%}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0%}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#999999;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:21px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:#ffffff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#3fb618}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#379f15}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#9954bb}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#8d46b0}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#ff7518}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#fe6600}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#ff0039}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#e60033}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:22.5px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:11px;font-size:15px;line-height:1.42857143;color:#333333}.form-control{display:block;width:100%;height:43px;padding:10px 18px;font-size:15px;line-height:1.42857143;color:#333333;background-color:#ffffff;background-image:none;border:1px solid #cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#e6e6e6;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:43px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:31px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:64px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:21px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:11px;padding-bottom:11px;margin-bottom:0;min-height:36px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-sm{height:31px;line-height:31px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}.form-group-sm select.form-control{height:31px;line-height:31px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:31px;min-height:34px;padding:6px 10px;font-size:13px;line-height:1.5}.input-lg{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-lg{height:64px;line-height:64px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}.form-group-lg select.form-control{height:64px;line-height:64px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:64px;min-height:40px;padding:19px 30px;font-size:19px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:53.75px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:43px;height:43px;line-height:43px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:64px;height:64px;line-height:64px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:31px;height:31px;line-height:31px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#ffffff}.has-success .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-success .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#3fb618}.has-success .form-control-feedback{color:#ffffff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#ffffff}.has-warning .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-warning .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff7518}.has-warning .form-control-feedback{color:#ffffff}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ffffff}.has-error .form-control{border-color:#ffffff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#e6e6e6;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #fff}.has-error .input-group-addon{color:#ffffff;border-color:#ffffff;background-color:#ff0039}.has-error .form-control-feedback{color:#ffffff}.has-feedback label~.form-control-feedback{top:26px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:11px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:32px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:11px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:24.9999994px;font-size:19px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:13px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:10px 18px;font-size:15px;line-height:1.42857143;border-radius:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#ffffff;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#ffffff;background-color:#222222;border-color:#222222}.btn-default:focus,.btn-default.focus{color:#ffffff;background-color:#090909;border-color:#000000}.btn-default:hover{color:#ffffff;background-color:#090909;border-color:#040404}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#ffffff;background-color:#090909;border-color:#040404}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#ffffff;background-color:#000000;border-color:#000000}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#222222;border-color:#222222}.btn-default .badge{color:#222222;background-color:#ffffff}.btn-primary{color:#ffffff;background-color:#2780e3;border-color:#2780e3}.btn-primary:focus,.btn-primary.focus{color:#ffffff;background-color:#1967be;border-color:#10427b}.btn-primary:hover{color:#ffffff;background-color:#1967be;border-color:#1862b5}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#ffffff;background-color:#1967be;border-color:#1862b5}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#ffffff;background-color:#15569f;border-color:#10427b}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#2780e3;border-color:#2780e3}.btn-primary .badge{color:#2780e3;background-color:#ffffff}.btn-success{color:#ffffff;background-color:#3fb618;border-color:#3fb618}.btn-success:focus,.btn-success.focus{color:#ffffff;background-color:#2f8912;border-color:#184509}.btn-success:hover{color:#ffffff;background-color:#2f8912;border-color:#2c8011}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#ffffff;background-color:#2f8912;border-color:#2c8011}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#ffffff;background-color:#24690e;border-color:#184509}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#3fb618;border-color:#3fb618}.btn-success .badge{color:#3fb618;background-color:#ffffff}.btn-info{color:#ffffff;background-color:#9954bb;border-color:#9954bb}.btn-info:focus,.btn-info.focus{color:#ffffff;background-color:#7e3f9d;border-color:#522967}.btn-info:hover{color:#ffffff;background-color:#7e3f9d;border-color:#783c96}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#ffffff;background-color:#7e3f9d;border-color:#783c96}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#ffffff;background-color:#6a3484;border-color:#522967}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#9954bb;border-color:#9954bb}.btn-info .badge{color:#9954bb;background-color:#ffffff}.btn-warning{color:#ffffff;background-color:#ff7518;border-color:#ff7518}.btn-warning:focus,.btn-warning.focus{color:#ffffff;background-color:#e45c00;border-color:#983d00}.btn-warning:hover{color:#ffffff;background-color:#e45c00;border-color:#da5800}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#ffffff;background-color:#e45c00;border-color:#da5800}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#ffffff;background-color:#c04d00;border-color:#983d00}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#ff7518;border-color:#ff7518}.btn-warning .badge{color:#ff7518;background-color:#ffffff}.btn-danger{color:#ffffff;background-color:#ff0039;border-color:#ff0039}.btn-danger:focus,.btn-danger.focus{color:#ffffff;background-color:#cc002e;border-color:#80001c}.btn-danger:hover{color:#ffffff;background-color:#cc002e;border-color:#c2002b}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#ffffff;background-color:#cc002e;border-color:#c2002b}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#ffffff;background-color:#a80026;border-color:#80001c}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#ff0039;border-color:#ff0039}.btn-danger .badge{color:#ff0039;background-color:#ffffff}.btn-link{color:#2780e3;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#165ba8;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:13px;line-height:1.5;border-radius:0}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;-o-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:15px;text-align:left;background-color:#ffffff;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.15);border-radius:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#ffffff;background-color:#2780e3}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#2780e3}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:13px;line-height:1.42857143;color:#999999;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:64px;padding:18px 30px;font-size:19px;line-height:1.3333333;border-radius:0}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:64px;line-height:64px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:31px;padding:5px 10px;font-size:13px;line-height:1.5;border-radius:0}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:31px;line-height:31px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:10px 18px;font-size:15px;font-weight:normal;line-height:1;color:#333333;text-align:center;background-color:#e6e6e6;border:1px solid #cccccc;border-radius:0}.input-group-addon.input-sm{padding:5px 10px;font-size:13px;border-radius:0}.input-group-addon.input-lg{padding:18px 30px;font-size:19px;border-radius:0}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#e6e6e6}.nav>li.disabled>a{color:#999999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#e6e6e6;border-color:#2780e3}.nav .nav-divider{height:1px;margin:9.5px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #dddddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:0 0 0 0}.nav-tabs>li>a:hover{border-color:#e6e6e6 #e6e6e6 #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555555;background-color:#ffffff;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#ffffff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:0}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#ffffff;background-color:#2780e3}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #dddddd;border-radius:0 0 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#ffffff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:21px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:0}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:14.5px 15px;font-size:19px;line-height:21px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:0}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.25px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:21px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:21px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:14.5px;padding-bottom:14.5px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:3.5px;margin-bottom:3.5px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:3.5px;margin-bottom:3.5px}.navbar-btn.btn-sm{margin-top:9.5px;margin-bottom:9.5px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:14.5px;margin-bottom:14.5px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#222222;border-color:#121212}.navbar-default .navbar-brand{color:#ffffff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-default .navbar-text{color:#ffffff}.navbar-default .navbar-nav>li>a{color:#ffffff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#cccccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:transparent}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#090909}.navbar-default .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#121212}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#090909;color:#ffffff}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#090909}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#ffffff}.navbar-default .navbar-link:hover{color:#ffffff}.navbar-default .btn-link{color:#ffffff}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#ffffff}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#2780e3;border-color:#1967be}.navbar-inverse .navbar-brand{color:#ffffff}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#ffffff;background-color:none}.navbar-inverse .navbar-text{color:#ffffff}.navbar-inverse .navbar-nav>li>a{color:#ffffff}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#ffffff;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:transparent}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#1967be}.navbar-inverse .navbar-toggle .icon-bar{background-color:#ffffff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#1a6ecc}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#1967be;color:#ffffff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ffffff}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#ffffff;background-color:#1967be}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ffffff;background-color:transparent}}.navbar-inverse .navbar-link{color:#ffffff}.navbar-inverse .navbar-link:hover{color:#ffffff}.navbar-inverse .btn-link{color:#ffffff}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#ffffff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#ffffff}.breadcrumb{padding:8px 15px;margin-bottom:21px;list-style:none;background-color:#f5f5f5;border-radius:0}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#cccccc}.breadcrumb>.active{color:#999999}.pagination{display:inline-block;padding-left:0;margin:21px 0;border-radius:0}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:10px 18px;line-height:1.42857143;text-decoration:none;color:#2780e3;background-color:#ffffff;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:3;color:#165ba8;background-color:#e6e6e6;border-color:#dddddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#999999;background-color:#f5f5f5;border-color:#dddddd;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999999;background-color:#ffffff;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:18px 30px;font-size:19px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:13px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:0;border-top-left-radius:0}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:0;border-top-right-radius:0}.pager{padding-left:0;margin:21px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#ffffff;border:1px solid #dddddd;border-radius:0}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#e6e6e6}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999999;background-color:#ffffff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#ffffff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#ffffff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#222222}.label-default[href]:hover,.label-default[href]:focus{background-color:#090909}.label-primary{background-color:#2780e3}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1967be}.label-success{background-color:#3fb618}.label-success[href]:hover,.label-success[href]:focus{background-color:#2f8912}.label-info{background-color:#9954bb}.label-info[href]:hover,.label-info[href]:focus{background-color:#7e3f9d}.label-warning{background-color:#ff7518}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#e45c00}.label-danger{background-color:#ff0039}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#cc002e}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:13px;font-weight:bold;color:#ffffff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#2780e3;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#ffffff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2780e3;background-color:#ffffff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#e6e6e6}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:23px;font-weight:200}.jumbotron>hr{border-top-color:#cccccc}.container .jumbotron,.container-fluid .jumbotron{border-radius:0}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:68px}}.thumbnail{display:block;padding:4px;margin-bottom:21px;line-height:1.42857143;background-color:#ffffff;border:1px solid #dddddd;border-radius:0;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2780e3}.thumbnail .caption{padding:9px;color:#333333}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:0}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#3fb618;border-color:#4e9f15;color:#ffffff}.alert-success hr{border-top-color:#438912}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#9954bb;border-color:#7643a8;color:#ffffff}.alert-info hr{border-top-color:#693c96}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#ff7518;border-color:#ff4309;color:#ffffff}.alert-warning hr{border-top-color:#ee3800}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#ff0039;border-color:#f0005e;color:#ffffff}.alert-danger hr{border-top-color:#d60054}.alert-danger .alert-link{color:#e6e6e6}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:21px;margin-bottom:21px;background-color:#cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:13px;line-height:21px;color:#ffffff;text-align:center;background-color:#2780e3;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#3fb618}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#9954bb}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#ff7518}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#ff0039}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#ffffff;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#e6e6e6;color:#999999;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#999999}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#ffffff;background-color:#2780e3;border-color:#dddddd}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#dceafa}.list-group-item-success{color:#ffffff;background-color:#3fb618}a.list-group-item-success,button.list-group-item-success{color:#ffffff}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#ffffff;background-color:#379f15}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-info{color:#ffffff;background-color:#9954bb}a.list-group-item-info,button.list-group-item-info{color:#ffffff}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#ffffff;background-color:#8d46b0}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-warning{color:#ffffff;background-color:#ff7518}a.list-group-item-warning,button.list-group-item-warning{color:#ffffff}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#ffffff;background-color:#fe6600}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-danger{color:#ffffff;background-color:#ff0039}a.list-group-item-danger,button.list-group-item-danger{color:#ffffff}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#ffffff;background-color:#e60033}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#ffffff;border-color:#ffffff}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:21px;background-color:#ffffff;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:-1;border-top-left-radius:-1}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:17px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #dddddd;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:-1;border-top-left-radius:-1}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:-1;border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:-1;border-top-right-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:-1}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:-1}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:-1;border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:-1;border-bottom-right-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:-1}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:-1}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #dddddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:21px}.panel-group .panel{margin-bottom:0;border-radius:0}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#333333;background-color:#f5f5f5;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#2780e3}.panel-primary>.panel-heading{color:#ffffff;background-color:#2780e3;border-color:#2780e3}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#2780e3}.panel-primary>.panel-heading .badge{color:#2780e3;background-color:#ffffff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#2780e3}.panel-success{border-color:#4e9f15}.panel-success>.panel-heading{color:#ffffff;background-color:#3fb618;border-color:#4e9f15}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#4e9f15}.panel-success>.panel-heading .badge{color:#3fb618;background-color:#ffffff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#4e9f15}.panel-info{border-color:#7643a8}.panel-info>.panel-heading{color:#ffffff;background-color:#9954bb;border-color:#7643a8}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#7643a8}.panel-info>.panel-heading .badge{color:#9954bb;background-color:#ffffff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#7643a8}.panel-warning{border-color:#ff4309}.panel-warning>.panel-heading{color:#ffffff;background-color:#ff7518;border-color:#ff4309}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ff4309}.panel-warning>.panel-heading .badge{color:#ff7518;background-color:#ffffff}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ff4309}.panel-danger{border-color:#f0005e}.panel-danger>.panel-heading{color:#ffffff;background-color:#ff0039;border-color:#f0005e}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f0005e}.panel-danger>.panel-heading .badge{color:#ff0039;background-color:#ffffff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f0005e}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:0}.well-sm{padding:9px;border-radius:0}.close{float:right;font-size:22.5px;font-weight:bold;line-height:1;color:#ffffff;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#ffffff;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#ffffff;border:1px solid #999999;border:1px solid transparent;border-radius:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:13px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;background-color:#000000;border-radius:0}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Source Sans Pro",Calibri,Candara,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:15px;background-color:#ffffff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:15px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:-1 -1 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#ffffff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#ffffff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#ffffff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#ffffff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, from(rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #ffffff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#ffffff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#ffffff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}.navbar-inverse .badge{background-color:#fff;color:#2780e3}body{-webkit-font-smoothing:antialiased}.text-primary,.text-primary:hover{color:#2780e3}.text-success,.text-success:hover{color:#3fb618}.text-danger,.text-danger:hover{color:#ff0039}.text-warning,.text-warning:hover{color:#ff7518}.text-info,.text-info:hover{color:#9954bb}table a:not(.btn),.table a:not(.btn){text-decoration:underline}table .dropdown-menu a,.table .dropdown-menu a{text-decoration:none}table .success,.table .success,table .warning,.table .warning,table .danger,.table .danger,table .info,.table .info{color:#fff}table .success a,.table .success a,table .warning a,.table .warning a,table .danger a,.table .danger a,table .info a,.table .info a{color:#fff}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .form-control-feedback{color:#ff7518}.has-warning .form-control,.has-warning .form-control:focus,.has-warning .input-group-addon{border:1px solid #ff7518}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label,.has-error .form-control-feedback{color:#ff0039}.has-error .form-control,.has-error .form-control:focus,.has-error .input-group-addon{border:1px solid #ff0039}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .form-control-feedback{color:#3fb618}.has-success .form-control,.has-success .form-control:focus,.has-success .input-group-addon{border:1px solid #3fb618}.nav-pills>li>a{border-radius:0}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:none}.close{text-decoration:none;text-shadow:none;opacity:0.4}.close:hover,.close:focus{opacity:1}.alert{border:none}.alert .alert-link{text-decoration:underline;color:#fff}.label{border-radius:0}.progress{height:8px;-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar{font-size:8px;line-height:8px}.panel-heading,.panel-footer{border-top-right-radius:0;border-top-left-radius:0}.panel-default .close{color:#333333}a.list-group-item-success.active{background-color:#3fb618}a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{background-color:#379f15}a.list-group-item-warning.active{background-color:#ff7518}a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{background-color:#fe6600}a.list-group-item-danger.active{background-color:#ff0039}a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{background-color:#e60033}.modal .close{color:#333333}.popover{color:#333333} diff --git a/assets/css/font-awesome.min.css b/assets/css/font-awesome.min.css new file mode 100644 index 0000000..ee4e978 --- /dev/null +++ b/assets/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.4.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.4.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.4.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.4.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"} diff --git a/assets/css/styles.css b/assets/css/styles.css new file mode 100644 index 0000000..94cf852 --- /dev/null +++ b/assets/css/styles.css @@ -0,0 +1,769 @@ +.video-container { + position:relative; + padding-bottom:56.25%; + padding-top:30px; + height:0; + overflow:hidden; +} + +.video-container iframe, .video-container object, .video-container embed { + position:absolute; + top:0; + left:0; + width:100%; + height:100%; +} + +@font-face { + font-family: webflow-icons; + src: url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBiUAAAC8AAAAYGNtYXDpP+a4AAABHAAAAFxnYXNwAAAAEAAAAXgAAAAIZ2x5ZmhS2XEAAAGAAAADHGhlYWQTFw3HAAAEnAAAADZoaGVhCXYFgQAABNQAAAAkaG10eCe4A1oAAAT4AAAAMGxvY2EDtALGAAAFKAAAABptYXhwABAAPgAABUQAAAAgbmFtZSoCsMsAAAVkAAABznBvc3QAAwAAAAAHNAAAACAAAwP4AZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpAwPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAQAAAAAwACAACAAQAAQAg5gPpA//9//8AAAAAACDmAOkA//3//wAB/+MaBBcIAAMAAQAAAAAAAAAAAAAAAAABAAH//wAPAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEBIAAAAyADgAAFAAAJAQcJARcDIP5AQAGA/oBAAcABwED+gP6AQAABAOAAAALgA4AABQAAEwEXCQEH4AHAQP6AAYBAAcABwED+gP6AQAAAAwDAAOADQALAAA8AHwAvAAABISIGHQEUFjMhMjY9ATQmByEiBh0BFBYzITI2PQE0JgchIgYdARQWMyEyNj0BNCYDIP3ADRMTDQJADRMTDf3ADRMTDQJADRMTDf3ADRMTDQJADRMTAsATDSANExMNIA0TwBMNIA0TEw0gDRPAEw0gDRMTDSANEwAAAAABAJ0AtAOBApUABQAACQIHCQEDJP7r/upcAXEBcgKU/usBFVz+fAGEAAAAAAL//f+9BAMDwwAEAAkAABcBJwEXAwE3AQdpA5ps/GZsbAOabPxmbEMDmmz8ZmwDmvxmbAOabAAAAgAA/8AEAAPAAB0AOwAABSInLgEnJjU0Nz4BNzYzMTIXHgEXFhUUBw4BBwYjNTI3PgE3NjU0Jy4BJyYjMSIHDgEHBhUUFx4BFxYzAgBqXV6LKCgoKIteXWpqXV6LKCgoKIteXWpVSktvICEhIG9LSlVVSktvICEhIG9LSlVAKCiLXl1qal1eiygoKCiLXl1qal1eiygoZiEgb0tKVVVKS28gISEgb0tKVVVKS28gIQABAAABwAIAA8AAEgAAEzQ3PgE3NjMxFSIHDgEHBhUxIwAoKIteXWpVSktvICFmAcBqXV6LKChmISBvS0pVAAAAAgAA/8AFtgPAADIAOgAAARYXHgEXFhUUBw4BBwYHIxUhIicuAScmNTQ3PgE3NjMxOAExNDc+ATc2MzIXHgEXFhcVATMJATMVMzUEjD83NlAXFxYXTjU1PQL8kz01Nk8XFxcXTzY1PSIjd1BQWlJJSXInJw3+mdv+2/7c25MCUQYcHFg5OUA/ODlXHBwIAhcXTzY1PTw1Nk8XF1tQUHcjIhwcYUNDTgL+3QFt/pOTkwABAAAAAQAAmM7nP18PPPUACwQAAAAAANciZKUAAAAA1yJkpf/9/70FtgPDAAAACAACAAAAAAAAAAEAAAPA/8AAAAW3//3//QW2AAEAAAAAAAAAAAAAAAAAAAAMBAAAAAAAAAAAAAAAAgAAAAQAASAEAADgBAAAwAQAAJ0EAP/9BAAAAAQAAAAFtwAAAAAAAAAKABQAHgAyAEYAjACiAL4BFgE2AY4AAAABAAAADAA8AAMAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADQAAAAEAAAAAAAIABwCWAAEAAAAAAAMADQBIAAEAAAAAAAQADQCrAAEAAAAAAAUACwAnAAEAAAAAAAYADQBvAAEAAAAAAAoAGgDSAAMAAQQJAAEAGgANAAMAAQQJAAIADgCdAAMAAQQJAAMAGgBVAAMAAQQJAAQAGgC4AAMAAQQJAAUAFgAyAAMAAQQJAAYAGgB8AAMAAQQJAAoANADsd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==") format('truetype'); + font-weight: 400; + font-style: normal +} + +[class*=" w-icon-"], +[class^=w-icon-] { + font-family: webflow-icons !important; + speak: none; + font-style: normal; + font-weight: 400; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +.w-icon-slider-right:before { + content: "\e600"; + color: white; + text-shadow: 2px 0 0 #000, 0 -2px 0 #000, 0 2px 0 #000, -2px 0 0 #000; +} + +.w-icon-slider-left:before { + content: "\e601"; + color: white; + text-shadow: 2px 0 0 #000, 0 -2px 0 #000, 0 2px 0 #000, -2px 0 0 #000; +} + +.w-icon-nav-menu:before { + content: "\e602" +} + +.w-icon-arrow-down:before, +.w-icon-dropdown-toggle:before { + content: "\e603" +} + +.w-icon-file-upload-remove:before { + content: "\e900" +} + +.w-icon-file-upload-icon:before { + content: "\e903" +} + +.w-background-video { + position: relative; + overflow: hidden; + height: 500px; + color: #fff +} + +.w-background-video>video { + background-size: cover; + background-position: 50% 50%; + position: absolute; + margin: auto; + width: 100%; + height: 100%; + right: -100%; + bottom: -100%; + top: -100%; + left: -100%; + object-fit: cover; + z-index: -100 +} + +.w-background-video>video::-webkit-media-controls-start-playback-button { + display: none !important; + -webkit-appearance: none +} + +.w-slider { + position: relative; + /* height: 300px; */ + text-align: center; + background: #ddd; + clear: both; + -webkit-tap-highlight-color: transparent; + tap-highlight-color: rgba(0, 0, 0, 0); +} + +.w-slider-mask { + position: relative; + display: block; + overflow: hidden; + z-index: 1; + left: 0; + right: 0; + height: 100%; + white-space: nowrap +} + +.w-slide { + position: relative; + display: inline-block; + vertical-align: top; + width: 100%; + height: 98%; + padding-bottom: 30px; + white-space: normal; + text-align: left +} + +.w-slider-nav { + position: absolute; + z-index: 100; + top: auto; + right: 0; + bottom: 0; + left: 0; + margin: auto; + padding-top: 10px; + height: 40px; + text-align: center; + -webkit-tap-highlight-color: transparent; + tap-highlight-color: rgba(0, 0, 0, 0) +} + +.w-slider-nav.w-round>div { + border-radius: 100% +} + +.w-slider-nav.w-num>div { + width: auto; + height: auto; + padding: .2em .5em; + font-size: inherit; + line-height: inherit +} + +.w-slider-nav.w-shadow>div { + box-shadow: 0 0 3px rgba(51, 51, 51, .4) +} + +.w-slider-nav-invert { + color: #fff +} + +.w-slider-nav-invert>div { + background-color: rgba(34, 34, 34, .4) +} + +.w-slider-nav-invert>div.w-active { + background-color: #222 +} + +.w-slider-dot { + position: relative; + display: inline-block; + width: 1em; + height: 1em; + background-color: rgba(255, 255, 255, .4); + cursor: pointer; + margin: 0 3px .5em; + transition: background-color .1s, color .1s +} + +.w-slider-dot.w-active { + background-color: #fff +} + +.w-slider-dot:focus { + outline: 0; + box-shadow: 0 0 0 2px #fff +} + +.w-slider-dot:focus.w-active { + box-shadow: none +} + +.w-slider-arrow-left, +.w-slider-arrow-right { + position: absolute; + width: 80px; + top: 0; + right: 0; + bottom: 0; + left: 0; + margin: auto; + cursor: pointer; + overflow: hidden; + color: #fff; + font-size: 40px; + -webkit-tap-highlight-color: transparent; + tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.w-slider-arrow-left [class*=' w-icon-'], +.w-slider-arrow-left [class^=w-icon-], +.w-slider-arrow-right [class*=' w-icon-'], +.w-slider-arrow-right [class^=w-icon-] { + position: absolute +} + +.w-slider-arrow-left:focus, +.w-slider-arrow-right:focus { + outline: 0 +} + +.w-slider-arrow-left { + z-index: 3; + right: auto +} + +.w-slider-arrow-right { + z-index: 4; + left: auto +} + +.w-icon-slider-left, +.w-icon-slider-right { + top: 0; + right: 0; + bottom: 0; + left: 0; + margin: auto; + width: 1em; + height: 1em +} + +.w-slider-aria-label { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px +} + +.w-slider-force-show { + display: block !important +} + +.html-embed-2 { + width: 100%; + height: 100%; + -o-object-fit: fill; + object-fit: fill +} + +.div-block-9 { + overflow: visible; + width: 98%; + height: 100%; + margin-right: auto; + margin-left: auto +} + +.div-block-9.last_block { + position: absolute; + left: 101%; + top: 0; + right: 0; + bottom: 0; + height: 100%; + padding-bottom: 30px; +} + +.div-block-9.first_video { + position: absolute; + left: -200%; + top: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100%; + padding-bottom: 30px; +} + +.video_class { + width: auto; + height: 80%; + margin-right: auto; + margin-left: auto +} + +.video_class.last_video { + position: absolute; + left: 52%; + top: 0; + right: 0; + bottom: 0 +} + +.video_class.mobile { + display: none +} + +.slider-2 { + overflow: hidden; + height: 500px +} + +.mask { + overflow: visible; + width: 40%; + margin-right: auto; + margin-left: auto +} + +.nerf_slider_v2 { + overflow: hidden; + margin: 5px -15px 0; + background-color: rgba(56, 56, 56, 0); + padding-bottom: 36px; +} + +.nerf_slider_v2 h6, +.captioned_videos h6 { + /* font-style: italic; */ + display: flex; + margin-right: auto; + margin-left: auto; + justify-content: center; + /* align-items: center; */ + text-align: center; +} + +/* .captioned_videos { */ + /* padding-bottom: 20px; */ + /* margin-top: 16px; */ +/* } */ + +.captioned_videos h6 { + max-width: 768px; + padding-top: 6px; +} + +.nerf_slider_v2 h6 { + width: 95%; + min-height: 100px; +} + +.nerf_slider_v2 .first_video h6, +.nerf_slider_v2 .last_block h6 { + max-width: 160px; +} + +.citation { + margin-left: 10px; + /* background-color: #e9e9e9; */ + padding: 8px; +} + +.citation:not(:first-child) { + margin-top: 10px; +} + +.citation h4, +h5, +h6 { + margin: 0; + font-weight: initial; +} + +.citation b { + text-decoration: underline; + font-weight: bold; +} + +.citation ul { + padding-left: 0px; + margin: 0; +} + +.citation li { + display: inline; +} + +.citation h4 { + line-height: normal; + font-weight: bold; +} + +.citation h5 { + margin-top: 4px; + margin-bottom: 4px; + line-height: normal; + font-size: 12px; +} + +.citation h6 { + /* margin-top: 4px; */ + font-style: italic; +} + +.citation img, +.citation video { + float: right; + margin-left: 8px; +} + +.citation p { + /* color: steelblue; */ + /* font-weight: bold; */ + font-size: 12px; + margin-left: 0; + margin-right: 0; + margin-bottom: 0; + margin-top: 0; +} + +.citation .conference { + font-style: normal; + font-weight: bold; + padding-right: 5px; + padding-left: 5px; + /* background-color: PaleGreen; */ + margin-left: 0; +} + +.citation .conference.workshop { + background-color: LightSkyBlue; +} + +.citation .conference.arxiv { + background-color: Gainsboro; +} + +@media only screen and (max-width: 600px) { + .news, + .citation { + margin-left: 0; + } + .citation h4 { + font-size: 14px; + } + .citation ul { + font-size: 12px; + } + .authors h5 { + font-size: 20px; + } + .authors h6 { + font-size: 16px; + padding-bottom: 6px; + } + .show_wide { + display: none; + } +} +@media only screen and (max-width: 768px) { + .btn-search { + font-size: 16px; + padding-left: 4px; + padding-right: 4px; + } +} + +.authors { + padding-bottom: 10px; +} +.authors .col-sm-3 { + padding: 0; +} +.authors h5 { + font-size: 24px; + font-weight: 300; +} +.authors h5 { + font-size: 20px; +} + +.shadowed_text { + text-shadow: 4px 0 4px #5fb7f7, 0 -4px 4px #5fb7f7, 0 4px 4px #5fb7f7, -4px 0 4px #5fb7f7; + color: white; +} + +body { + /* font-family: et-book, Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif; */ + /* font-family: Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif; */ + font-weight: 300; + font-family: "Source Sans Pro",Calibri,Candara,Arial,sans-serif; +} + +/* code { + +} */ + +h1, h2, h3, h4, h5, h6 { + font-family: "Source Sans Pro",Calibri,Candara,Arial,sans-serif; + font-weight: 300; + line-height: 1.1; + color: inherit; +} + +p, .caption { + font-family: Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif; + margin-top: 4px; +} + +/* From Ref-NeRF */ +.video-compare-container { + width: 63%; + margin: 0 auto; + position: relative; + display: block; + line-height: 0; + overflow: hidden !important; + } + + .video { + width: 100%; + height: auto; + position: relative; + top: 0; + left: 0; + } + + .videoMerge { + position: relative; + top: 0; + left: 0; + z-index: 10; + width: 100%; + display: block; + margin: 0 auto; + background-size: cover; + } + + .cropped-video{ + width: 100%; + overflow:hidden; + display:block; + } + +/* Compositional generation */ +#compositional_tags_depth_0 { + display: none; +} +/* .compositional .video { + position: absolute; + top: 0; +} +.compositional .video .caption { + margin-bottom: 18px; +} */ +.compositional .text { + font-size: 18px; +} +.compositional .text .selectable { + padding: 0; +} +.compositional .text .selectable:last-child { + margin-bottom: 0; +} +.compositional .text .selectable span { + padding: 2px; + margin-left: 4px; + margin-right: 4px; + /* margin-top: 4px; */ +} +.compositional .text .selectable span:first-child { + margin-left: 0; +} +.compositional .text .selectable span:hover { + cursor: pointer; +} +.compositional .text .selectable span:not(:last-child)::after { + content: '|'; + padding: 2px 2px 2px 8px; + margin-right: -2px; + margin-left: 2px; + background-color: white; + color:rgb(161, 161, 161); +} +.compositional .text .selectable span:active { + cursor: pointer; + background: rgb(171, 218, 191) !important; +} +.compositional.video { + width: 100%; +} +.compositional .text .selectable span.hidden { + display: none !important; + /* color: rgb(161, 161, 161) !important; */ + /* background: white !important; */ + /* cursor: default !important; */ +} +.compositional .text .selectable span:not(.selected) { + font-weight: 300; + color: rgb(50, 50, 50); + /* background: rgb(200, 200, 200); */ + /* color: blue; */ +} +.compositional .text .selectable span:not(.selected):hover { + background: rgb(194, 247, 215); +} +/* .compositional .text .selectable span.active { */ +.compositional .text .selectable span.selected { + color: #055ada; + background: rgb(194, 247, 215); + /* font-weight: bold; */ +} +.compositional .video-compare-container { + /* background-color: black; */ + width: 100%; + max-width: 256px; + margin-right: auto; + margin-left: auto; + transition: opacity 0.75s ease-in; +} +@media screen and (max-width: 575px) { + .video-compare-container { + padding-top: 32px; + } +} +/* .compositional .text .selectable span.active::before { + content: '\a'; + white-space: pre; + background-color: white !important; +} */ +/* .compositional .text .selectable span.selected { + border: 2px black; +} */ + + +.banner { + width: 100%; + max-height: 128px; +} +@media screen and (min-width: 768px) { + .banner { + min-height: 128px; + } +} +.banner video { + max-height: 128px; + max-width: 768px; + /* text-align: center; */ + margin-right: auto; + margin-left: auto; + display: block; +} + +.btn-search { + display: block; + text-align: center; + padding: 12px 20px 12px 20px; + margin-right: auto; + margin-left: auto; +} + +.btn-search svg { + margin-right: 4px; +} + +hr.divider { + max-width: 768px; + margin-top: 32px; + margin-bottom: 32px; +} + +.row:not(:last-child):not(.authors) { + margin-bottom: 16px; +} + +.invisible { + display: none; +} + +.btn-light.disabled { + /* border: 2px black; */ + background-color: #ccc; +} + + +/* Gallery */ +.video-gallery { + padding:40px 0; +} +.column { + margin-bottom:40px; +} +.video { + max-width: 100%; +} +.card-body { + padding: 12px; +} +.search .card-body { + padding: 32px +} +#videoGallery .sticky-top { + width: 100%; + background-color: rgba(255, 255, 255, 0.9); +} +.row.search { + padding-top: 16px; + margin-top: 0; + margin-bottom: 16px; + max-width: 900px !important; + padding-bottom: 16px; +} +.row.search .col-sm-12 { + /* padding: 0; */ + max-width: 900px !important; +} + +.disappearing { + /* opacity: 0; */ + transition-property: background-color; + transition-duration: 2s; +} + +.display-none { + display: none !important; +} + +/* .loads-parent-model { + margin-right: auto; + margin-left: auto; + display: block; + margin-top: 130px; +} */ +.model-viewer { + margin-bottom: 8px; +} +/* model-viewer::after { + padding-bottom: 40px; +} +model-viewer .controls { + position: absolute; + bottom: 0; + margin-left: auto; + margin-right: auto; + left: 0; + right: 0; + text-align: center; +} */ + +.meshes .controls { + margin-left: auto; + margin-right: auto; + text-align: center; +} +.meshes .controls button:not(:last-child) { + margin-right: 4px; +} +.meshes p.caption { + text-align: center; +} \ No newline at end of file diff --git a/assets/glb/car.glb b/assets/glb/car.glb new file mode 100644 index 0000000..0e03bf1 Binary files /dev/null and b/assets/glb/car.glb differ diff --git a/assets/glb/horse.glb b/assets/glb/horse.glb new file mode 100644 index 0000000..95c561f Binary files /dev/null and b/assets/glb/horse.glb differ diff --git a/assets/glb/panda.glb b/assets/glb/panda.glb new file mode 100644 index 0000000..def40b8 Binary files /dev/null and b/assets/glb/panda.glb differ diff --git a/assets/group_photo.png b/assets/group_photo.png deleted file mode 100644 index 7536fad..0000000 Binary files a/assets/group_photo.png and /dev/null differ diff --git a/assets/group_photo_fan.png b/assets/group_photo_fan.png deleted file mode 100644 index bf0b5ff..0000000 Binary files a/assets/group_photo_fan.png and /dev/null differ diff --git a/assets/icon/icon16.png b/assets/icon/icon16.png new file mode 100644 index 0000000..9f09b61 Binary files /dev/null and b/assets/icon/icon16.png differ diff --git a/assets/icon/icon180.png b/assets/icon/icon180.png new file mode 100644 index 0000000..8c43ac0 Binary files /dev/null and b/assets/icon/icon180.png differ diff --git a/assets/icon/icon32.png b/assets/icon/icon32.png new file mode 100644 index 0000000..d4b57fb Binary files /dev/null and b/assets/icon/icon32.png differ diff --git a/assets/images/grey.jpg b/assets/images/grey.jpg new file mode 100644 index 0000000..59cad51 Binary files /dev/null and b/assets/images/grey.jpg differ diff --git a/assets/js/scripts.js b/assets/js/scripts.js new file mode 100644 index 0000000..f1ab15e --- /dev/null +++ b/assets/js/scripts.js @@ -0,0 +1,470 @@ +'use strict'; + +(function () { + // Create mesh holders. + let sharedAttributes = { + ar: true, + "ar-modes": "webxr scene-viewer quick-look", + loading: "lazy", + reveal: "manual", + // crossorigin: "anonymous", + style: "height: 300px; width: 100%;", + "camera-controls": true, + "touch-action": "pan-y", + "shadow-intensity": "1", + exposure: "1" + }; + + let meshAttributes = { + m1: { + src: "/assets/glb/JKfigure_m1.glb", + poster: "/assets/poster/JKfigure_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "JKfigure m1", + shortCaption: "JKfigure m1" + }, + m2: { + src: "/assets/glb/JKfigure_m2.glb", + poster: "/assets/poster/JKfigure_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "JKfigure m2", + shortCaption: "JKfigure m2" + }, + m3: { + src: "/assets/glb/JKfigure_m3.glb", + poster: "/assets/poster/JKfigure_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "JKfigure m3", + shortCaption: "JKfigure m3" + }, + m0: { + src: "/assets/glb/angry_cat1_m0.glb", + poster: "/assets/poster/angry_cat1_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "angry cat1 m0", + shortCaption: "angry cat1 m0" + }, + cat1_m1: { + src: "/assets/glb/angry_cat1_m1.glb", + poster: "/assets/poster/angry_cat1_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "angry cat1 m1", + shortCaption: "angry cat1 m1" + }, + cat1_m2: { + src: "/assets/glb/angry_cat1_m2.glb", + poster: "/assets/poster/angry_cat1_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "angry cat1 m2", + shortCaption: "angry cat1 m2" + }, + cat1_m3: { + src: "/assets/glb/angry_cat1_m3.glb", + poster: "/assets/poster/angry_cat1_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "angry cat1 m3", + shortCaption: "angry cat1 m3" + }, + cat2_m1: { + src: "/assets/glb/angry_cat2_m1.glb", + poster: "/assets/poster/angry_cat2_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "angry cat2 m1", + shortCaption: "angry cat2 m1" + }, + cat2_m2: { + src: "/assets/glb/angry_cat2_m2.glb", + poster: "/assets/poster/angry_cat2_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "angry cat2 m2", + shortCaption: "angry cat2 m2" + }, + cat2_m3: { + src: "/assets/glb/angry_cat2_m3.glb", + poster: "/assets/poster/angry_cat2_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "angry cat2 m3", + shortCaption: "angry cat2 m3" + }, + man_m0: { + src: "/assets/glb/armor_man_m0.glb", + poster: "/assets/poster/armor_man_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "armor man m0", + shortCaption: "armor man m0" + }, + man_m1: { + src: "/assets/glb/armor_man_m1.glb", + poster: "/assets/poster/armor_man_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "armor man m1", + shortCaption: "armor man m1" + }, + man_m2: { + src: "/assets/glb/armor_man_m2.glb", + poster: "/assets/poster/armor_man_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "armor man m2", + shortCaption: "armor man m2" + }, + man_m3: { + src: "/assets/glb/armor_man_m3.glb", + poster: "/assets/poster/armor_man_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "armor man m3", + shortCaption: "armor man m3" + }, + car_m0: { + src: "/assets/glb/castle_on_car_m0.glb", + poster: "/assets/poster/castle_on_car_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "castle on car m0", + shortCaption: "castle on car m0" + }, + car_m1: { + src: "/assets/glb/castle_on_car_m1.glb", + poster: "/assets/poster/castle_on_car_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "castle on car m1", + shortCaption: "castle on car m1" + }, + car_m2: { + src: "/assets/glb/castle_on_car_m2.glb", + poster: "/assets/poster/castle_on_car_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "castle on car m2", + shortCaption: "castle on car m2" + }, + car_m3: { + src: "/assets/glb/castle_on_car_m3.glb", + poster: "/assets/poster/castle_on_car_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "castle on car m3", + shortCaption: "castle on car m3" + }, + sword_m0: { + src: "/assets/glb/dragon_sword_m0.glb", + poster: "/assets/poster/dragon_sword_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "dragon sword m0", + shortCaption: "dragon sword m0" + }, + sword_m1: { + src: "/assets/glb/dragon_sword_m1.glb", + poster: "/assets/poster/dragon_sword_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "dragon sword m1", + shortCaption: "dragon sword m1" + }, + sword_m2: { + src: "/assets/glb/dragon_sword_m2.glb", + poster: "/assets/poster/dragon_sword_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "dragon sword m2", + shortCaption: "dragon sword m2" + }, + sword_m3: { + src: "/assets/glb/dragon_sword_m3.glb", + poster: "/assets/poster/dragon_sword_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "dragon sword m3", + shortCaption: "dragon sword m3" + }, + helmet_m0: { + src: "/assets/glb/luffy_helmet_m0.glb", + poster: "/assets/poster/luffy_helmet_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "luffy helmet m0", + shortCaption: "luffy helmet m0" + }, + helmet_m1: { + src: "/assets/glb/luffy_helmet_m1.glb", + poster: "/assets/poster/luffy_helmet_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "luffy helmet m1", + shortCaption: "luffy helmet m1" + }, + helmet_m2: { + src: "/assets/glb/luffy_helmet_m2.glb", + poster: "/assets/poster/luffy_helmet_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "luffy helmet m2", + shortCaption: "luffy helmet m2" + }, + helmet_m3: { + src: "/assets/glb/luffy_helmet_m3.glb", + poster: "/assets/poster/luffy_helmet_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "luffy helmet m3", + shortCaption: "luffy helmet m3" + }, + camera_m0: { + src: "/assets/glb/man_camera_m0.glb", + poster: "/assets/poster/man_camera_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "man camera m0", + shortCaption: "man camera m0" + }, + camera_m1: { + src: "/assets/glb/man_camera_m1.glb", + poster: "/assets/poster/man_camera_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "man camera m1", + shortCaption: "man camera m1" + }, + camera_m2: { + src: "/assets/glb/man_camera_m2.glb", + poster: "/assets/poster/man_camera_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "man camera m2", + shortCaption: "man camera m2" + }, + old_man_m0: { + src: "/assets/glb/old_man_m0.glb", + poster: "/assets/poster/old_man_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "old man m0", + shortCaption: "old man m0" + }, + old_man_m1: { + src: "/assets/glb/old_man_m1.glb", + poster: "/assets/poster/old_man_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "old man m1", + shortCaption: "old man m1" + }, + old_man_m2: { + src: "/assets/glb/old_man_m2.glb", + poster: "/assets/poster/old_man_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "old man m2", + shortCaption: "old man m2" + }, + old_man_m3: { + src: "/assets/glb/old_man_m3.glb", + poster: "/assets/poster/old_man_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "old man m3", + shortCaption: "old man m3" + }, + shield_m0: { + src: "/assets/glb/panda_spear_shield_m0.glb", + poster: "/assets/poster/panda_spear_shield_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "panda spear shield m0", + shortCaption: "panda spear shield m0" + }, + shield_m1: { + src: "/assets/glb/panda_spear_shield_m1.glb", + poster: "/assets/poster/panda_spear_shield_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "panda spear shield m1", + shortCaption: "panda spear shield m1" + }, + shield_m2: { + src: "/assets/glb/panda_spear_shield_m2.glb", + poster: "/assets/poster/panda_spear_shield_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "panda spear shield m2", + shortCaption: "panda spear shield m2" + }, + shield_m3: { + src: "/assets/glb/panda_spear_shield_m3.glb", + poster: "/assets/poster/panda_spear_shield_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "panda spear shield m3", + shortCaption: "panda spear shield m3" + }, + archer_m0: { + src: "/assets/glb/wolfman_archer_m0.glb", + poster: "/assets/poster/wolfman_archer_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wolfman archer m0", + shortCaption: "wolfman archer m0" + }, + archer_m1: { + src: "/assets/glb/wolfman_archer_m1.glb", + poster: "/assets/poster/wolfman_archer_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wolfman archer m1", + shortCaption: "wolfman archer m1" + }, + archer_m2: { + src: "/assets/glb/wolfman_archer_m2.glb", + poster: "/assets/poster/wolfman_archer_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wolfman archer m2", + shortCaption: "wolfman archer m2" + }, + archer_m3: { + src: "/assets/glb/wolfman_archer_m3.glb", + poster: "/assets/poster/wolfman_archer_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wolfman archer m3", + shortCaption: "wolfman archer m3" + }, + wooden_car_m0: { + src: "/assets/glb/wooden_car_m0.glb", + poster: "/assets/poster/wooden_car_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wooden car m0", + shortCaption: "wooden car m0" + }, + wooden_car_m1: { + src: "/assets/glb/wooden_car_m1.glb", + poster: "/assets/poster/wooden_car_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wooden car m1", + shortCaption: "wooden car m1" + }, + wooden_car_m2: { + src: "/assets/glb/wooden_car_m2.glb", + poster: "/assets/poster/wooden_car_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wooden car m2", + shortCaption: "wooden car m2" + }, + wooden_car_m3: { + src: "/assets/glb/wooden_car_m3.glb", + poster: "/assets/poster/wooden_car_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wooden car m3", + shortCaption: "wooden car m3" + }, + + + }; + + let meshRows = [ + ['m1', 'm2', 'm3'], + // ['m0', 'cat1_m1', 'cat1_m2', 'cat1_m3'], + // ['cat2_m1', 'cat2_m2', 'cat2_m3'], + // ['man_m0', 'man_m1', 'man_m2', 'man_m3'], + // ['car_m0', 'car_m1', 'car_m2', 'car_m3'], + // ['sword_m0', 'sword_m1', 'sword_m2', 'sword_m3'], + // ['helmet_m0', 'helmet_m1', 'helmet_m2', 'helmet_m3'], + // ['camera_m0', 'camera_m1', 'camera_m2', 'old_man_m0'], + // ['old_man_m1', 'old_man_m2', 'old_man_m3', 'shield_m0'], + // ['shield_m1', 'shield_m2', 'shield_m3', 'archer_m0'], + // ['archer_m1', 'archer_m2', 'archer_m3', 'wooden_car_m0'], + ]; + + let container = document.getElementById("meshContainer"); + meshRows.forEach((meshIds) => { + let row = document.createElement("DIV"); + row.classList = "row"; + + meshIds.forEach((meshId) => { + let col = document.createElement("DIV"); + col.classList = "col-md-6 col-sm-6 my-auto"; + + // Model viewer. + let model = document.createElement("model-viewer"); + for (const attr in sharedAttributes) { + if (attr != "caption" && attr != "shortCaption") + model.setAttribute(attr, sharedAttributes[attr]); + } + for (const attrCustom in meshAttributes[meshId]) { + if (attrCustom != "caption" && attrCustom != "shortCaption") + model.setAttribute(attrCustom, meshAttributes[meshId][attrCustom]); + } + model.id = 'mesh-' + meshId; + + // Controls. + let controls = document.createElement("div"); + controls.className = "controls"; + let buttonLoad = document.createElement("button"); + buttonLoad.classList = "btn btn-primary loads-model"; + buttonLoad.setAttribute("data-controls", model.id); + buttonLoad.appendChild(document.createTextNode("Load 3D model")); + // let buttonToggle = document.createElement("button"); + // buttonToggle.classList = "btn btn-primary toggles-texture"; + // buttonToggle.setAttribute("data-controls", model.id); + // buttonToggle.appendChild(document.createTextNode("Toggle texture")); + controls.appendChild(buttonLoad); + controls.appendChild(buttonToggle); + + // Caption. + let caption = document.createElement("p"); + caption.classList = "caption"; + caption.title = meshAttributes[meshId]["caption"] || ""; + caption.appendChild(document.createTextNode(meshAttributes[meshId]["shortCaption"] || caption.title)); + + col.appendChild(model); + col.appendChild(controls); + col.appendChild(caption); + row.appendChild(col); + }); + + container.appendChild(row); + }); + + // Toggle texture handlers. + document.querySelectorAll('button.toggles-texture').forEach((button) => { + button.addEventListener('click', () => { + let model = document.getElementById(button.getAttribute("data-controls")); + + console.log(model.model); + let material = model.model.materials[0]; + let metallic = material.pbrMetallicRoughness; + let originalTexture = metallic.pbrMetallicRoughness.baseColorTexture; + let originalBaseColor = metallic.pbrMetallicRoughness.baseColorFactor; + console.log('model load', model.model, material, 'metallic', metallic, originalTexture); + + let textureButton = model.querySelector('.toggles-parent-texture'); + console.log('texture button', textureButton); + // if (originalTexture && textureButton) { + let textureOn = true; + textureButton.onclick = () => { + if (textureOn) { + // model.model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(null); + // model.model.materials[0].pbrMetallicRoughness.setBaseColorFactor([1., 1., 1., 1.]); + // textureOn = false; + // console.log('toggle texture off'); + } else { + // model.model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(originalTexture) ; + // model.model.materials[0].pbrMetallicRoughness.setBaseColorFactor(originalBaseColor); + // textureOn = true; + // console.log('toggle texture on'); + } + }; + }); + }); + + // Click to load handlers for 3D meshes. + document.querySelectorAll('button.loads-model').forEach((button) => { + button.setAttribute('data-action', 'load'); + button.addEventListener('click', () => { + // button.classList = button.classList + " disappearing"; + // let model = button.parentElement.parentElement; + let model = document.getElementById(button.getAttribute("data-controls")); + + if (button.getAttribute('data-action') == 'load') { + model.dismissPoster(); + button.classList = "btn btn-disabled"; + button.innerHTML = "Hide 3D model"; + button.setAttribute('data-action', 'unload'); + } else { + model.showPoster(); + button.classList = "btn btn-primary"; + button.innerHTML = "Load 3D model"; + button.setAttribute('data-action', 'load'); + } + ; + }); + }); + // document.querySelectorAll('button.toggles-parent-texture').forEach((button) => { + // let model = button.parentElement.parentElement; + // let originalTexture = model.materials[0].pbrMetallicRoughness.baseColorTexture; + // let textureOn = true; + // button.addEventListener('click', () => { + // if (textureOn) { + // model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(null); + // textureOn = false; + // } else { + // model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(originalTexture) ; + // textureOn = true; + // } + // }); + // }); +})(); diff --git a/assets/js/scripts2.js b/assets/js/scripts2.js new file mode 100644 index 0000000..3703040 --- /dev/null +++ b/assets/js/scripts2.js @@ -0,0 +1,175 @@ +'use strict'; + + +(function () { + // Create mesh holders. + let sharedAttributes = { + ar: true, + "ar-modes": "webxr scene-viewer quick-look", + loading: "lazy", + reveal: "manual", + // crossorigin: "anonymous", + style: "height: 300px; width: 100%;", + "camera-controls": true, + "touch-action": "pan-y", + "shadow-intensity": "1", + exposure: "1" + }; + + let meshAttributes = { + m1: { + src: "/assets/glb/car.glb", + poster: "/assets/poster/car.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/lightroom_14b.hdr", + caption: "A wooden car", + shortCaption: "A wooden car" + }, + m2: { + src: "/assets/glb/horse.glb", + poster: "/assets/poster/horse.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/lightroom_14b.hdr", + caption: "An astronaut riding a horse", + shortCaption: "An astronaut riding a horse" + }, + m3: { + src: "/assets/glb/panda.glb", + poster: "/assets/poster/panda.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/lightroom_14b.hdr", + caption: "A panda is dressed in armor, holding a spear in one hand and a shield in the other", + shortCaption: "A panda holding a spear and a shield" + }, + + + }; + + let meshRows = [ + ['m1', 'm2', 'm3', ''], + ]; + let container = document.getElementById("meshContainer2"); + meshRows.forEach((meshIds) => { + let row = document.createElement("DIV"); + row.classList = "row"; + + meshIds.forEach((meshId) => { + let col = document.createElement("DIV"); + col.classList = "col-md-3 col-sm-3 my-auto"; + if (meshId == "") { + // Model viewer. + let model = document.createElement("model-viewer"); + col.appendChild(model); + row.appendChild(col); + } + else { + + + // Model viewer. + let model = document.createElement("model-viewer"); + for (const attr in sharedAttributes) { + if (attr != "caption" && attr != "shortCaption") + model.setAttribute(attr, sharedAttributes[attr]); + } + for (const attrCustom in meshAttributes[meshId]) { + if (attrCustom != "caption" && attrCustom != "shortCaption") + model.setAttribute(attrCustom, meshAttributes[meshId][attrCustom]); + } + model.id = 'mesh-' + meshId; + + // Controls. + let controls = document.createElement("div"); + controls.className = "controls"; + let buttonLoad = document.createElement("button"); + buttonLoad.classList = "btn btn-primary loads-model"; + buttonLoad.setAttribute("data-controls", model.id); + buttonLoad.appendChild(document.createTextNode("Load 3D model")); + // let buttonToggle = document.createElement("button"); + // buttonToggle.classList = "btn btn-primary toggles-texture"; + // buttonToggle.setAttribute("data-controls", model.id); + // buttonToggle.appendChild(document.createTextNode("Toggle texture")); + controls.appendChild(buttonLoad); + // controls.appendChild(buttonToggle); + + // Caption. + let caption = document.createElement("p"); + caption.classList = "caption"; + caption.title = meshAttributes[meshId]["caption"] || ""; + caption.appendChild(document.createTextNode(meshAttributes[meshId]["shortCaption"] || caption.title)); + + col.appendChild(model); + col.appendChild(controls); + col.appendChild(caption); + row.appendChild(col); + + } + }); + + container.appendChild(row); + }); + + // Toggle texture handlers. + document.querySelectorAll('button.toggles-texture').forEach((button) => { + button.addEventListener('click', () => { + let model = document.getElementById(button.getAttribute("data-controls")); + + console.log(model.model); + let material = model.model.materials[0]; + let metallic = material.pbrMetallicRoughness; + let originalTexture = metallic.pbrMetallicRoughness.baseColorTexture; + let originalBaseColor = metallic.pbrMetallicRoughness.baseColorFactor; + console.log('model load', model.model, material, 'metallic', metallic, originalTexture); + + let textureButton = model.querySelector('.toggles-parent-texture'); + console.log('texture button', textureButton); + // if (originalTexture && textureButton) { + let textureOn = true; + textureButton.onclick = () => { + if (textureOn) { + // model.model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(null); + // model.model.materials[0].pbrMetallicRoughness.setBaseColorFactor([1., 1., 1., 1.]); + // textureOn = false; + // console.log('toggle texture off'); + } else { + // model.model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(originalTexture) ; + // model.model.materials[0].pbrMetallicRoughness.setBaseColorFactor(originalBaseColor); + // textureOn = true; + // console.log('toggle texture on'); + } + }; + }); + }); + + // Click to load handlers for 3D meshes. + document.querySelectorAll('button.loads-model').forEach((button) => { + button.setAttribute('data-action', 'load'); + button.addEventListener('click', () => { + // button.classList = button.classList + " disappearing"; + // let model = button.parentElement.parentElement; + let model = document.getElementById(button.getAttribute("data-controls")); + + if (button.getAttribute('data-action') == 'load') { + model.dismissPoster(); + button.classList = "btn btn-disabled"; + button.innerHTML = "Hide 3D model"; + button.setAttribute('data-action', 'unload'); + } else { + model.showPoster(); + button.classList = "btn btn-primary"; + button.innerHTML = "Load 3D model"; + button.setAttribute('data-action', 'load'); + }; + }); + }); + // document.querySelectorAll('button.toggles-parent-texture').forEach((button) => { + // let model = button.parentElement.parentElement; + // let originalTexture = model.materials[0].pbrMetallicRoughness.baseColorTexture; + // let textureOn = true; + // button.addEventListener('click', () => { + // if (textureOn) { + // model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(null); + // textureOn = false; + // } else { + // model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(originalTexture) ; + // textureOn = true; + // } + // }); + // }); +})(); diff --git a/assets/js/scripts801.js b/assets/js/scripts801.js new file mode 100644 index 0000000..2e79810 --- /dev/null +++ b/assets/js/scripts801.js @@ -0,0 +1,1215 @@ +'use strict'; + +// (function() { +// // Format video selector for compositional prompts. +// let captions = ["a DSLR photo of a squirrel chopping vegetables", +// "a DSLR photo of a squirrel dancing", +// "a DSLR photo of a squirrel eating a hamburger", +// "a DSLR photo of a squirrel playing the saxophone", +// "a DSLR photo of a squirrel reading a book", +// "a DSLR photo of a squirrel ", +// "a DSLR photo of a squirrel riding a motorcycle", +// "a DSLR photo of a squirrel riding a skateboard", +// "a DSLR photo of a squirrel sitting at a pottery wheel shaping a clay bowl", +// "a DSLR photo of a squirrel wearing a kimono chopping vegetables", +// "a DSLR photo of a squirrel wearing a kimono dancing", +// "a DSLR photo of a squirrel wearing a kimono eating a hamburger", +// "a DSLR photo of a squirrel wearing a kimono playing the saxophone", +// "a DSLR photo of a squirrel wearing a kimono reading a book", +// "a DSLR photo of a squirrel wearing a kimono ", +// "a DSLR photo of a squirrel wearing a kimono riding a motorcycle", +// "a DSLR photo of a squirrel wearing a kimono riding a skateboard", +// "a DSLR photo of a squirrel wearing a kimono sitting at a pottery wheel shaping a clay bowl", +// "a DSLR photo of a squirrel wearing a kimono wielding a katana", +// "a DSLR photo of a squirrel wearing a medieval suit of armor chopping vegetables", +// "a DSLR photo of a squirrel wearing a medieval suit of armor dancing", +// "a DSLR photo of a squirrel wearing a medieval suit of armor eating a hamburger", +// "a DSLR photo of a squirrel wearing a medieval suit of armor playing the saxophone", +// "a DSLR photo of a squirrel wearing a medieval suit of armor reading a book", +// "a DSLR photo of a squirrel wearing a medieval suit of armor ", +// "a DSLR photo of a squirrel wearing a medieval suit of armor riding a motorcycle", +// "a DSLR photo of a squirrel wearing a medieval suit of armor riding a skateboard", +// "a DSLR photo of a squirrel wearing a medieval suit of armor sitting at a pottery wheel shaping a clay bowl", +// "a DSLR photo of a squirrel wearing a medieval suit of armor wielding a katana", +// "a DSLR photo of a squirrel wearing an elegant ballgown chopping vegetables", +// "a DSLR photo of a squirrel wearing an elegant ballgown dancing", +// "a DSLR photo of a squirrel wearing an elegant ballgown eating a hamburger", +// "a DSLR photo of a squirrel wearing an elegant ballgown playing the saxophone", +// "a DSLR photo of a squirrel wearing an elegant ballgown reading a book", +// "a DSLR photo of a squirrel wearing an elegant ballgown ", +// "a DSLR photo of a squirrel wearing an elegant ballgown riding a motorcycle", +// "a DSLR photo of a squirrel wearing an elegant ballgown riding a skateboard", +// "a DSLR photo of a squirrel wearing an elegant ballgown sitting at a pottery wheel shaping a clay bowl", +// "a DSLR photo of a squirrel wearing an elegant ballgown wielding a katana", +// "a DSLR photo of a squirrel wearing a purple hoodie chopping vegetables", +// "a DSLR photo of a squirrel wearing a purple hoodie dancing", +// "a DSLR photo of a squirrel wearing a purple hoodie eating a hamburger", +// "a DSLR photo of a squirrel wearing a purple hoodie playing the saxophone", +// "a DSLR photo of a squirrel wearing a purple hoodie reading a book", +// "a DSLR photo of a squirrel wearing a purple hoodie ", +// "a DSLR photo of a squirrel wearing a purple hoodie riding a motorcycle", +// "a DSLR photo of a squirrel wearing a purple hoodie riding a skateboard", +// "a DSLR photo of a squirrel wearing a purple hoodie sitting at a pottery wheel shaping a clay bowl", +// "a DSLR photo of a squirrel wearing a purple hoodie wielding a katana", +// "a DSLR photo of a squirrel wielding a katana", +// "a highly detailed metal sculpture of a squirrel chopping vegetables", +// "a highly detailed metal sculpture of a squirrel dancing", +// "a highly detailed metal sculpture of a squirrel eating a hamburger", +// "a highly detailed metal sculpture of a squirrel playing the saxophone", +// "a highly detailed metal sculpture of a squirrel reading a book", +// "a highly detailed metal sculpture of a squirrel ", +// "a highly detailed metal sculpture of a squirrel riding a motorcycle", +// "a highly detailed metal sculpture of a squirrel riding a skateboard", +// "a highly detailed metal sculpture of a squirrel sitting at a pottery wheel shaping a clay bowl", +// "a highly detailed metal sculpture of a squirrel wearing a kimono chopping vegetables", +// "a highly detailed metal sculpture of a squirrel wearing a kimono dancing", +// "a highly detailed metal sculpture of a squirrel wearing a kimono eating a hamburger", +// "a highly detailed metal sculpture of a squirrel wearing a kimono playing the saxophone", +// "a highly detailed metal sculpture of a squirrel wearing a kimono reading a book", +// "a highly detailed metal sculpture of a squirrel wearing a kimono ", +// "a highly detailed metal sculpture of a squirrel wearing a kimono riding a motorcycle", +// "a highly detailed metal sculpture of a squirrel wearing a kimono riding a skateboard", +// "a highly detailed metal sculpture of a squirrel wearing a kimono sitting at a pottery wheel shaping a clay bowl", +// "a highly detailed metal sculpture of a squirrel wearing a kimono wielding a katana", +// "a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor chopping vegetables", +// "a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor dancing", +// "a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor eating a hamburger", +// "a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor playing the saxophone", +// "a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor reading a book", +// "a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor ", +// "a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor riding a motorcycle", +// "a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor riding a skateboard", +// "a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor sitting at a pottery wheel shaping a clay bowl", +// "a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor wielding a katana", +// "a highly detailed metal sculpture of a squirrel wearing an elegant ballgown chopping vegetables", +// "a highly detailed metal sculpture of a squirrel wearing an elegant ballgown dancing", +// "a highly detailed metal sculpture of a squirrel wearing an elegant ballgown eating a hamburger", +// "a highly detailed metal sculpture of a squirrel wearing an elegant ballgown playing the saxophone", +// "a highly detailed metal sculpture of a squirrel wearing an elegant ballgown reading a book", +// "a highly detailed metal sculpture of a squirrel wearing an elegant ballgown ", +// "a highly detailed metal sculpture of a squirrel wearing an elegant ballgown riding a motorcycle", +// "a highly detailed metal sculpture of a squirrel wearing an elegant ballgown riding a skateboard", +// "a highly detailed metal sculpture of a squirrel wearing an elegant ballgown sitting at a pottery wheel shaping a clay bowl", +// "a highly detailed metal sculpture of a squirrel wearing an elegant ballgown wielding a katana", +// "a highly detailed metal sculpture of a squirrel wearing a purple hoodie chopping vegetables", +// "a highly detailed metal sculpture of a squirrel wearing a purple hoodie dancing", +// "a highly detailed metal sculpture of a squirrel wearing a purple hoodie eating a hamburger", +// "a highly detailed metal sculpture of a squirrel wearing a purple hoodie playing the saxophone", +// "a highly detailed metal sculpture of a squirrel wearing a purple hoodie reading a book", +// "a highly detailed metal sculpture of a squirrel wearing a purple hoodie ", +// "a highly detailed metal sculpture of a squirrel wearing a purple hoodie riding a motorcycle", +// "a highly detailed metal sculpture of a squirrel wearing a purple hoodie riding a skateboard", +// "a highly detailed metal sculpture of a squirrel wearing a purple hoodie sitting at a pottery wheel shaping a clay bowl", +// "a highly detailed metal sculpture of a squirrel wearing a purple hoodie wielding a katana", +// "a highly detailed metal sculpture of a squirrel wielding a katana", +// "an intricate wooden carving of a squirrel chopping vegetables", +// "an intricate wooden carving of a squirrel dancing", +// "an intricate wooden carving of a squirrel eating a hamburger", +// "an intricate wooden carving of a squirrel playing the saxophone", +// "an intricate wooden carving of a squirrel reading a book", +// "an intricate wooden carving of a squirrel ", +// "an intricate wooden carving of a squirrel riding a motorcycle", +// "an intricate wooden carving of a squirrel riding a skateboard", +// "an intricate wooden carving of a squirrel sitting at a pottery wheel shaping a clay bowl", +// "an intricate wooden carving of a squirrel wearing a kimono chopping vegetables", +// "an intricate wooden carving of a squirrel wearing a kimono dancing", +// "an intricate wooden carving of a squirrel wearing a kimono eating a hamburger", +// "an intricate wooden carving of a squirrel wearing a kimono playing the saxophone", +// "an intricate wooden carving of a squirrel wearing a kimono reading a book", +// "an intricate wooden carving of a squirrel wearing a kimono ", +// "an intricate wooden carving of a squirrel wearing a kimono riding a motorcycle", +// "an intricate wooden carving of a squirrel wearing a kimono riding a skateboard", +// "an intricate wooden carving of a squirrel wearing a kimono sitting at a pottery wheel shaping a clay bowl", +// "an intricate wooden carving of a squirrel wearing a kimono wielding a katana", +// "an intricate wooden carving of a squirrel wearing a medieval suit of armor chopping vegetables", +// "an intricate wooden carving of a squirrel wearing a medieval suit of armor dancing", +// "an intricate wooden carving of a squirrel wearing a medieval suit of armor eating a hamburger", +// "an intricate wooden carving of a squirrel wearing a medieval suit of armor playing the saxophone", +// "an intricate wooden carving of a squirrel wearing a medieval suit of armor reading a book", +// "an intricate wooden carving of a squirrel wearing a medieval suit of armor ", +// "an intricate wooden carving of a squirrel wearing a medieval suit of armor riding a motorcycle", +// "an intricate wooden carving of a squirrel wearing a medieval suit of armor riding a skateboard", +// "an intricate wooden carving of a squirrel wearing a medieval suit of armor sitting at a pottery wheel shaping a clay bowl", +// "an intricate wooden carving of a squirrel wearing a medieval suit of armor wielding a katana", +// "an intricate wooden carving of a squirrel wearing an elegant ballgown chopping vegetables", +// "an intricate wooden carving of a squirrel wearing an elegant ballgown dancing", +// "an intricate wooden carving of a squirrel wearing an elegant ballgown eating a hamburger", +// "an intricate wooden carving of a squirrel wearing an elegant ballgown playing the saxophone", +// "an intricate wooden carving of a squirrel wearing an elegant ballgown reading a book", +// "an intricate wooden carving of a squirrel wearing an elegant ballgown ", +// "an intricate wooden carving of a squirrel wearing an elegant ballgown riding a motorcycle", +// "an intricate wooden carving of a squirrel wearing an elegant ballgown riding a skateboard", +// "an intricate wooden carving of a squirrel wearing an elegant ballgown sitting at a pottery wheel shaping a clay bowl", +// "an intricate wooden carving of a squirrel wearing an elegant ballgown wielding a katana", +// "an intricate wooden carving of a squirrel wearing a purple hoodie chopping vegetables", +// "an intricate wooden carving of a squirrel wearing a purple hoodie dancing", +// "an intricate wooden carving of a squirrel wearing a purple hoodie eating a hamburger", +// "an intricate wooden carving of a squirrel wearing a purple hoodie playing the saxophone", +// "an intricate wooden carving of a squirrel wearing a purple hoodie reading a book", +// "an intricate wooden carving of a squirrel wearing a purple hoodie ", +// "an intricate wooden carving of a squirrel wearing a purple hoodie riding a motorcycle", +// "an intricate wooden carving of a squirrel wearing a purple hoodie riding a skateboard", +// "an intricate wooden carving of a squirrel wearing a purple hoodie sitting at a pottery wheel shaping a clay bowl", +// "an intricate wooden carving of a squirrel wearing a purple hoodie wielding a katana", +// "an intricate wooden carving of a squirrel wielding a katana"]; +// +// let imagen_pieces = [ +// ["a DSLR photo of a squirrel", "an intricate wooden carving of a squirrel", "a highly detailed metal sculpture of a squirrel"], +// ["", "wearing a kimono", "wearing a medieval suit of armor", "wearing a purple hoodie", "wearing an elegant ballgown"], +// ["", "reading a book", "riding a motorcycle", "playing the saxophone", "chopping vegetables", "sitting at a pottery wheel shaping a clay bowl", +// "riding a skateboard", "wielding a katana", "eating a hamburger", "dancing"], +// ]; +// +// const updateCompositionVideo = () => { +// let phrase = ""; +// for (let depth = 1; depth <= imagen_pieces.length; depth++) { +// let tagContainer = document.getElementById('compositional_tags_depth_' + depth); +// let selected = tagContainer.querySelectorAll('.selected'); +// +// // Make sure at most one item is selected at this level. +// if (selected.length > 1) { +// // Too many tags selected at this level. Shouldn't have happened, but unselect them. +// selected.slice(1, selected.length).forEach((chunk) => { +// chunk.classList = ""; +// }); +// } +// +// // Make sure at least one item is selected at this level. +// if (selected.length == 0) { +// tagContainer.querySelector('span').classList = "selected"; +// updateCompositionVideo(); +// return; +// } +// +// let segment = selected[0].getAttribute("data-segment"); +// phrase = phrase + segment; +// } +// +// if (captions.includes(phrase)) { +// let compositionalVideo = document.getElementById('compositionalVideo'); +// let container = compositionalVideo.parentNode; +// let videoName = phrase.replaceAll(' ', '_') + '_rgbdn_hq_15000.mp4'; +// let sourceURL = "https://dreamfusion-cdn.ajayj.com/journey_sept28/cropped/full_continuous/" + videoName; +// console.log('phrase found: ', phrase, sourceURL); +// +// let width = compositionalVideo.offsetWidth; +// let height = compositionalVideo.offsetHeight; +// +// let oldSourceEl = document.getElementById('compositionalVideoSrc'); +// oldSourceEl.src = sourceURL; +// +// container.style = "opacity: 0;"; +// setTimeout(() => { +// container.style = "opacity: 1;"; +// compositionalVideo.load(); +// }, 750); +// +// let captionEl = document.getElementById('compositionalCaption'); +// if (captionEl) +// captionEl.innerHTML = phrase; +// } else { +// console.log('phrase NOT found: ' + phrase); +// } +// }; +// +// const deselect = (element) => { +// element.classList = ("" + element.classList).replace('selected', ' '); // not clean, what about spaces? +// } +// +// const tagClicked = (event) => { +// event.target.parentNode.querySelectorAll('.selected').forEach(deselect); +// event.target.classList = "selected"; +// updateCompositionVideo(); +// }; +// +// let phraseContainer = document.querySelector('.compositional .text'); +// imagen_pieces.forEach((phrases, depth) => { +// depth = depth + 1; +// let tagContainer = document.createElement("P"); +// tagContainer.classList = "selectable left"; +// tagContainer.id = "compositional_tags_depth_" + depth; +// +// phrases.forEach((segment, i) => { +// if (depth > 1) { +// segment = " " + segment; +// } +// +// let tag = document.createElement("SPAN"); +// let text = segment.trim(); +// if (!text) +// text = '[...]'; +// +// tag.appendChild(document.createTextNode(text)); +// tag.setAttribute("data-segment", segment); +// tag.onclick = tagClicked; +// if (i == 0) +// tag.classList = "selected"; +// +// tagContainer.appendChild(tag); +// }); +// +// phraseContainer.appendChild(tagContainer); +// }); +// +// })(); + + +// (function() { +// // Populate random videos. +// var videoPaths = [ +// "a_20-sided_die_made_out_of_glass.mp4", +// "a_bald_eagle_carved_out_of_wood.mp4", +// "a_banana_peeling_itself.mp4", +// "a_beagle_in_a_detective's_outfit.mp4", +// "a_beautiful_dress_made_out_of_fruit,_on_a_mannequin._Studio_lighting,_high_quality,_high_resolution.mp4", +// "a_beautiful_dress_made_out_of_garbage_bags,_on_a_mannequin._Studio_lighting,_high_quality,_high_resolution.mp4", +// "a_beautiful_rainbow_fish.mp4", +// "a_bichon_frise_wearing_academic_regalia.mp4", +// "a_blue_motorcycle.mp4", +// "a_blue_poison-dart_frog_sitting_on_a_water_lily.mp4", +// "a_brightly_colored_mushroom_growing_on_a_log.mp4", +// "a_bumblebee_sitting_on_a_pink_flower.mp4", +// "a_bunch_of_colorful_marbles_spilling_out_of_a_red_velvet_bag.mp4", +// "a_capybara_wearing_a_top_hat,_low_poly.mp4", +// "a_cat_with_a_mullet.mp4", +// "a_ceramic_lion.mp4", +// "a_ceramic_upside_down_yellow_octopus_holding_a_blue_green_ceramic_cup.mp4", +// "a_chihuahua_wearing_a_tutu.mp4", +// "a_chimpanzee_holding_a_peeled_banana.mp4", +// "a_chimpanzee_looking_through_a_telescope.mp4", +// "a_chimpanzee_stirring_a_bubbling_purple_potion_in_a_cauldron.mp4", +// "a_chimpanzee_with_a_big_grin.mp4", +// "a_completely_destroyed_car.mp4", +// "a_confused_beagle_sitting_at_a_desk_working_on_homework.mp4", +// "a_corgi_taking_a_selfie.mp4", +// "a_crab,_low_poly.mp4", +// "a_crocodile_playing_a_drum_set.mp4", +// "a_cute_steampunk_elephant.mp4", +// "a_dachsund_dressed_up_in_a_hotdog_costume.mp4", +// "a_delicious_hamburger.mp4", +// "a_dragon-cat_hybrid.mp4", +// "a_DSLR_photo_of_a_baby_dragon_drinking_boba.mp4", +// "a_DSLR_photo_of_a_baby_dragon_hatching_out_of_a_stone_egg.mp4", +// "a_DSLR_photo_of_a_baby_grand_piano_viewed_from_far_away.mp4", +// "a_DSLR_photo_of_a_bagel_filled_with_cream_cheese_and_lox.mp4", +// "a_DSLR_photo_of_a_bald_eagle.mp4", +// "a_DSLR_photo_of_a_barbecue_grill_cooking_sausages_and_burger_patties.mp4", +// "a_DSLR_photo_of_a_basil_plant.mp4", +// "a_DSLR_photo_of_a_bear_dancing_ballet.mp4", +// "a_DSLR_photo_of_a_bear_dressed_as_a_lumberjack.mp4", +// "a_DSLR_photo_of_a_bear_dressed_in_medieval_armor.mp4", +// "a_DSLR_photo_of_a_beautiful_violin_sitting_flat_on_a_table.mp4", +// "a_DSLR_photo_of_a_blue_jay_standing_on_a_large_basket_of_rainbow_macarons.mp4", +// "a_DSLR_photo_of_a_bulldozer_clearing_away_a_pile_of_snow.mp4", +// "a_DSLR_photo_of_a_bulldozer.mp4", +// "a_DSLR_photo_of_a_cake_covered_in_colorful_frosting_with_a_slice_being_taken_out,_high_resolution.mp4", +// "a_DSLR_photo_of_a_candelabra_with_many_candles_on_a_red_velvet_tablecloth.mp4", +// "a_DSLR_photo_of_a_car_made_out_of_cheese.mp4", +// "a_DSLR_photo_of_A_car_made_out_of_sushi.mp4", +// "a_DSLR_photo_of_a_car_made_out_pizza.mp4", +// "a_DSLR_photo_of_a_cat_lying_on_its_side_batting_at_a_ball_of_yarn.mp4", +// "a_DSLR_photo_of_a_cat_magician_making_a_white_dove_appear.mp4", +// "a_DSLR_photo_of_a_cat_wearing_a_bee_costume.mp4", +// "a_DSLR_photo_of_a_cat_wearing_a_lion_costume.mp4", +// "a_DSLR_photo_of_a_cauldron_full_of_gold_coins.mp4", +// "a_DSLR_photo_of_a_chimpanzee_dressed_like_Henry_VIII_king_of_England.mp4", +// "a_DSLR_photo_of_a_chimpanzee_dressed_like_Napoleon_Bonaparte.mp4", +// "a_DSLR_photo_of_a_chow_chow_puppy.mp4", +// "a_DSLR_photo_of_a_Christmas_tree_with_donuts_as_decorations.mp4", +// "a_DSLR_photo_of_a_chrome-plated_duck_with_a_golden_beak_arguing_with_an_angry_turtle_in_a_forest.mp4", +// "a_DSLR_photo_of_a_classic_Packard_car.mp4", +// "a_DSLR_photo_of_a_cocker_spaniel_wearing_a_crown.mp4", +// "a_DSLR_photo_of_a_corgi_lying_on_its_back_with_its_tongue_lolling_out.mp4", +// "a_DSLR_photo_of_a_corgi_puppy.mp4", +// "a_DSLR_photo_of_a_corgi_sneezing.mp4", +// "a_DSLR_photo_of_a_corgi_standing_up_drinking_boba.mp4", +// "a_DSLR_photo_of_a_corgi_taking_a_selfie.mp4", +// "a_DSLR_photo_of_a_corgi_wearing_a_beret_and_holding_a_baguette,_standing_up_on_two_hind_legs.mp4", +// "a_DSLR_photo_of_a_covered_wagon.mp4", +// "a_DSLR_photo_of_a_cracked_egg_with_the_yolk_spilling_out_on_a_wooden_table.mp4", +// "a_DSLR_photo_of_a_cup_full_of_pens_and_pencils.mp4", +// "a_DSLR_photo_of_a_dalmation_wearing_a_fireman's_hat.mp4", +// "a_DSLR_photo_of_a_delicious_chocolate_brownie_dessert_with_ice_cream_on_the_side.mp4", +// "a_DSLR_photo_of_a_delicious_croissant.mp4", +// "a_DSLR_photo_of_A_DMC_Delorean_car.mp4", +// "a_DSLR_photo_of_a_dog_made_out_of_salad.mp4", +// "a_DSLR_photo_of_a_drum_set_made_of_cheese.mp4", +// "a_DSLR_photo_of_a_drying_rack_covered_in_clothes.mp4", +// "a_DSLR_photo_of_aerial_view_of_a_ruined_castle.mp4", +// "a_DSLR_photo_of_a_football_helmet.mp4", +// "a_DSLR_photo_of_a_fox_holding_a_videogame_controller.mp4", +// "a_DSLR_photo_of_a_fox_taking_a_photograph_using_a_DSLR.mp4", +// "a_DSLR_photo_of_a_frazer_nash_super_sport_car.mp4", +// "a_DSLR_photo_of_a_frog_wearing_a_sweater.mp4", +// "a_DSLR_photo_of_a_ghost_eating_a_hamburger.mp4", +// "a_DSLR_photo_of_a_giant_worm_emerging_from_the_sand_in_the_middle_of_the_desert.mp4", +// "a_DSLR_photo_of_a_goose_made_out_of_gold.mp4", +// "a_DSLR_photo_of_a_green_monster_truck.mp4", +// "a_DSLR_photo_of_a_group_of_dogs_eating_pizza.mp4", +// "a_DSLR_photo_of_a_group_of_dogs_playing_poker.mp4", +// "a_DSLR_photo_of_a_gummy_bear_playing_the_saxophone.mp4", +// "a_DSLR_photo_of_a_hippo_wearing_a_sweater.mp4", +// "a_DSLR_photo_of_a_humanoid_robot_holding_a_human_brain.mp4", +// "a_DSLR_photo_of_a_humanoid_robot_playing_solitaire.mp4", +// "a_DSLR_photo_of_a_humanoid_robot_playing_the_cello.mp4", +// "a_DSLR_photo_of_a_humanoid_robot_using_a_laptop.mp4", +// "a_DSLR_photo_of_a_humanoid_robot_using_a_rolling_pin_to_roll_out_dough.mp4", +// "a_DSLR_photo_of_a_human_skull.mp4", +// "a_DSLR_photo_of_a_kitten_standing_on_top_of_a_giant_tortoise.mp4", +// "a_DSLR_photo_of_a_knight_chopping_wood.mp4", +// "a_DSLR_photo_of_a_knight_holding_a_lance_and_sitting_on_an_armored_horse.mp4", +// "a_DSLR_photo_of_a_koala_wearing_a_party_hat_and_blowing_out_birthday_candles_on_a_cake.mp4", +// "a_DSLR_photo_of_a_lemur_taking_notes_in_a_journal.mp4", +// "a_DSLR_photo_of_a_lion_reading_the_newspaper.mp4", +// "a_DSLR_photo_of_a_mandarin_duck_swimming_in_a_pond.mp4", +// "a_DSLR_photo_of_a_model_of_the_eiffel_tower_made_out_of_toothpicks.mp4", +// "a_DSLR_photo_of_a_mouse_playing_the_tuba.mp4", +// "a_DSLR_photo_of_a_mug_of_hot_chocolate_with_whipped_cream_and_marshmallows.mp4", +// "a_DSLR_photo_of_an_adorable_piglet_in_a_field.mp4", +// "a_DSLR_photo_of_an_airplane_taking_off_from_the_runway.mp4", +// "a_DSLR_photo_of_an_astronaut_standing_on_the_surface_of_mars.mp4", +// "a_DSLR_photo_of_an_eggshell_broken_in_two_with_an_adorable_chick_standing_next_to_it.mp4", +// "a_DSLR_photo_of_an_elephant_skull.mp4", +// "a_DSLR_photo_of_an_exercise_bike_in_a_well_lit_room.mp4", +// "a_DSLR_photo_of_an_extravagant_mansion,_aerial_view.mp4", +// "a_DSLR_photo_of_an_ice_cream_sundae.mp4", +// "a_DSLR_photo_of_an_iguana_holding_a_balloon.mp4", +// "a_DSLR_photo_of_an_intricate_and_complex_dish_from_a_michelin_star_restaurant.mp4", +// "a_DSLR_photo_of_An_iridescent_steampunk_patterned_millipede_with_bison_horns.mp4", +// "a_DSLR_photo_of_an_octopus_playing_the_piano.mp4", +// "a_DSLR_photo_of_an_old_car_overgrown_by_vines_and_weeds.mp4", +// "a_DSLR_photo_of_an_old_vintage_car.mp4", +// "a_DSLR_photo_of_an_orangutan_making_a_clay_bowl_on_a_throwing_wheel.mp4", +// "a_DSLR_photo_of_an_orc_forging_a_hammer_on_an_anvil.mp4", +// "a_DSLR_photo_of_an_origami_motorcycle.mp4", +// "a_DSLR_photo_of_an_ornate_silver_gravy_boat_sitting_on_a_patterned_tablecloth.mp4", +// "a_DSLR_photo_of_an_overstuffed_pastrami_sandwich.mp4", +// "a_DSLR_photo_of_an_unstable_rock_cairn_in_the_middle_of_a_stream.mp4", +// "a_DSLR_photo_of_a_pair_of_headphones_sitting_on_a_desk.mp4", +// "a_DSLR_photo_of_a_pair_of_tan_cowboy_boots,_studio_lighting,_product_photography.mp4", +// "a_DSLR_photo_of_a_peacock_on_a_surfboard.mp4", +// "a_DSLR_photo_of_a_pigeon_reading_a_book.mp4", +// "a_DSLR_photo_of_a_piglet_sitting_in_a_teacup.mp4", +// "a_DSLR_photo_of_a_pig_playing_a_drum_set.mp4", +// "a_DSLR_photo_of_a_pile_of_dice_on_a_green_tabletop_next_to_some_playing_cards.mp4", +// "a_DSLR_photo_of_a_pirate_collie_dog,_high_resolution.mp4", +// "a_DSLR_photo_of_a_plate_of_fried_chicken_and_waffles_with_maple_syrup_on_them.mp4", +// "a_DSLR_photo_of_a_plate_piled_high_with_chocolate_chip_cookies.mp4", +// "a_DSLR_photo_of_a_plush_t-rex_dinosaur_toy,_studio_lighting,_high_resolution.mp4", +// "a_DSLR_photo_of_a_plush_triceratops_toy,_studio_lighting,_high_resolution.mp4", +// "a_DSLR_photo_of_a_pomeranian_dog.mp4", +// "a_DSLR_photo_of_a_porcelain_dragon.mp4", +// "a_DSLR_photo_of_a_praying_mantis_wearing_roller_skates.mp4", +// "a_DSLR_photo_of_a_puffin_standing_on_a_rock.mp4", +// "a_DSLR_photo_of_a_pug_made_out_of_metal.mp4", +// "a_DSLR_photo_of_a_pug_wearing_a_bee_costume.mp4", +// "a_DSLR_photo_of_a_quill_and_ink_sitting_on_a_desk.mp4", +// "a_DSLR_photo_of_a_raccoon_stealing_a_pie.mp4", +// "a_DSLR_photo_of_a_red_cardinal_bird_singing.mp4", +// "a_DSLR_photo_of_a_red_convertible_car_with_the_top_down.mp4", +// "a_DSLR_photo_of_a_red-eyed_tree_frog.mp4", +// "a_DSLR_photo_of_a_red_pickup_truck_driving_across_a_stream.mp4", +// "a_DSLR_photo_of_a_red_wheelbarrow_with_a_shovel_in_it.mp4", +// "a_DSLR_photo_of_a_roast_turkey_on_a_platter.mp4", +// "a_DSLR_photo_of_a_robot_and_dinosaur_playing_chess,_high_resolution.mp4", +// "a_DSLR_photo_of_a_robot_arm_picking_up_a_colorful_block_from_a_table.mp4", +// "a_DSLR_photo_of_a_robot_cat_knocking_over_a_chess_piece_on_a_board.mp4", +// "a_DSLR_photo_of_a_robot_dinosaur.mp4", +// "a_DSLR_photo_of_a_robot_made_out_of_vegetables.mp4", +// "a_DSLR_photo_of_a_robot_stegosaurus.mp4", +// "a_DSLR_photo_of_a_robot_tiger.mp4", +// "a_DSLR_photo_of_a_rolling_pin_on_top_of_bread_dough.mp4", +// "a_DSLR_photo_of_a_sheepdog_running.mp4", +// "a_DSLR_photo_of_a_shiba_inu_playing_golf_wearing_tartan_golf_clothes_and_hat.mp4", +// "a_DSLR_photo_of_a_shiny_silver_robot_cat.mp4", +// "a_DSLR_photo_of_a_silverback_gorilla_holding_a_golden_trophy.mp4", +// "a_DSLR_photo_of_a_silver_humanoid_robot_flipping_a_coin.mp4", +// "a_DSLR_photo_of_a_small_cherry_tomato_plant_in_a_pot_with_a_few_red_tomatoes_growing_on_it.mp4", +// "a_DSLR_photo_of_a_small_saguaro_cactus_planted_in_a_clay_pot.mp4", +// "a_DSLR_photo_of_a_Space_Shuttle.mp4", +// "a_DSLR_photo_of_a_squirrel_dressed_like_a_clown.mp4", +// "a_DSLR_photo_of_a_squirrel_flying_a_biplane.mp4", +// "a_DSLR_photo_of_a_squirrel_giving_a_lecture_writing_on_a_chalkboard.mp4", +// "a_DSLR_photo_of_a_squirrel_holding_a_bowling_ball.mp4", +// "a_DSLR_photo_of_a_squirrel-lizard_hybrid.mp4", +// "a_DSLR_photo_of_a_squirrel_made_out_of_fruit.mp4", +// "a_DSLR_photo_of_a_squirrel-octopus_hybrid.mp4", +// "a_DSLR_photo_of_a_stack_of_pancakes_covered_in_maple_syrup.mp4", +// "a_DSLR_photo_of_a_steam_engine_train,_high_resolution.mp4", +// "a_DSLR_photo_of_a_steaming_basket_full_of_dumplings.mp4", +// "a_DSLR_photo_of_a_steaming_hot_plate_piled_high_with_spaghetti_and_meatballs.mp4", +// "a_DSLR_photo_of_a_steampunk_space_ship_designed_in_the_18th_century.mp4", +// "a_DSLR_photo_of_a_straw_basket_with_a_cobra_coming_out_of_it.mp4", +// "a_DSLR_photo_of_a_swan_and_its_cygnets_swimming_in_a_pond.mp4", +// "a_DSLR_photo_of_a_tarantula,_highly_detailed.mp4", +// "a_DSLR_photo_of_a_teal_moped.mp4", +// "a_DSLR_photo_of_a_teapot_shaped_like_an_elephant_head_where_its_snout_acts_as_the_spout.mp4", +// "a_DSLR_photo_of_a_teddy_bear_taking_a_selfie.mp4", +// "a_DSLR_photo_of_a_terracotta_bunny.mp4", +// "a_DSLR_photo_of_a_tiger_dressed_as_a_doctor.mp4", +// "a_DSLR_photo_of_a_tiger_made_out_of_yarn.mp4", +// "a_DSLR_photo_of_a_toilet_made_out_of_gold.mp4", +// "a_DSLR_photo_of_a_toy_robot.mp4", +// "a_DSLR_photo_of_a_train_engine_made_out_of_clay.mp4", +// "a_DSLR_photo_of_a_tray_of_Sushi_containing_pugs.mp4", +// "a_DSLR_photo_of_a_tree_stump_with_an_axe_buried_in_it.mp4", +// "a_DSLR_photo_of_a_turtle_standing_on_its_hind_legs,_wearing_a_top_hat_and_holding_a_cane.mp4", +// "a_DSLR_photo_of_a_very_beautiful_small_organic_sculpture_made_of_fine_clockwork_and_gears_with_tiny_ruby_bearings,_very_intricate,_caved,_curved._Studio_lighting,_High_resolution,_white_background.mp4", +// "a_DSLR_photo_of_A_very_beautiful_tiny_human_heart_organic_sculpture_made_of_copper_wire_and_threaded_pipes,_very_intricate,_curved,_Studio_lighting,_high_resolution.mp4", +// "a_DSLR_photo_of_a_very_cool_and_trendy_pair_of_sneakers,_studio_lighting.mp4", +// "a_DSLR_photo_of_a_vintage_record_player.mp4", +// "a_DSLR_photo_of_a_wine_bottle_and_full_wine_glass_on_a_chessboard.mp4", +// "a_DSLR_photo_of_a_wooden_desk_and_chair_from_an_elementary_school.mp4", +// "a_DSLR_photo_of_a_yorkie_dog_eating_a_donut.mp4", +// "a_DSLR_photo_of_a_yorkie_dog_wearing_extremely_cool_sneakers.mp4", +// "a_DSLR_photo_of_baby_elephant_jumping_on_a_trampoline.mp4", +// "a_DSLR_photo_of_cat_wearing_virtual_reality_headset_in_renaissance_oil_painting_high_detail_caravaggio.mp4", +// "a_DSLR_photo_of_edible_typewriter_made_out_of_vegetables.mp4", +// "a_DSLR_photo_of_Mont_Saint-Michel,_France,_aerial_view.mp4", +// "a_DSLR_photo_of_Mount_Fuji,_aerial_view.mp4", +// "a_DSLR_photo_of_Neuschwanstein_Castle,_aerial_view.mp4", +// "A_DSLR_photo_of___pyramid_shaped_burrito_with_a_slice_cut_out_of_it.mp4", +// "a_DSLR_photo_of_the_Imperial_State_Crown_of_England.mp4", +// "a_DSLR_photo_of_the_leaning_tower_of_Pisa,_aerial_view.mp4", +// "a_DSLR_photo_of_the_Statue_of_Liberty,_aerial_view.mp4", +// "a_DSLR_photo_of_Two_locomotives_playing_tug_of_war.mp4", +// "a_DSLR_photo_of_two_macaw_parrots_sharing_a_milkshake_with_two_straws.mp4", +// "a_DSLR_photo_of_Westminster_Abbey,_aerial_view.mp4", +// "a_ficus_planted_in_a_pot.mp4", +// "a_flower_made_out_of_metal.mp4", +// "a_fluffy_cat_lying_on_its_back_in_a_patch_of_sunlight.mp4", +// "a_fox_and_a_hare_tangoing_together.mp4", +// "a_fox_holding_a_videogame_controller.mp4", +// "a_fox_playing_the_cello.mp4", +// "a_frazer_nash_super_sport_car.mp4", +// "a_freshly_baked_loaf_of_sourdough_bread_on_a_cutting_board.mp4", +// "a_goat_drinking_beer.mp4", +// "a_golden_goblet,_low_poly.mp4", +// "a_green_dragon_breathing_fire.mp4", +// "a_green_tractor_farming_corn_fields.mp4", +// "a_highland_cow.mp4", +// "a_hotdog_in_a_tutu_skirt.mp4", +// "a_humanoid_robot_laying_on_the_couch_while_on_a_laptop.mp4", +// "a_humanoid_robot_playing_the_violin.mp4", +// "a_humanoid_robot_sitting_looking_at_a_Go_board_with_some_pieces_on_it.mp4", +// "a_human_skeleton_drinking_a_glass_of_red_wine.mp4", +// "a_human_skull_with_a_vine_growing_through_one_of_the_eye_sockets.mp4", +// "a_kitten_looking_at_a_goldfish_in_a_bowl.mp4", +// "a_lemur_drinking_boba.mp4", +// "a_lemur_taking_notes_in_a_journal.mp4", +// "a_lionfish.mp4", +// "a_llama_wearing_a_suit.mp4", +// "a_marble_bust_of_a_mouse.mp4", +// "a_metal_sculpture_of_a_lion's_head,_highly_detailed.mp4", +// "a_mojito_in_a_beach_chair.mp4", +// "a_monkey-rabbit_hybrid.mp4", +// "an_airplane_made_out_of_wood.mp4", +// "an_amigurumi_bulldozer.mp4", +// "An_anthropomorphic_tomato_eating_another_tomato.mp4", +// "an_astronaut_playing_the_violin.mp4", +// "an_astronaut_riding_a_kangaroo.mp4", +// "an_English_castle,_aerial_view.mp4", +// "an_erupting_volcano,_aerial_view.mp4", +// "a_nest_with_a_few_white_eggs_and_one_golden_egg.mp4", +// "an_exercise_bike.mp4", +// "an_iridescent_metal_scorpion.mp4", +// "An_octopus_and_a_giraffe_having_cheesecake.mp4", +// "an_octopus_playing_the_harp.mp4", +// "an_old_vintage_car.mp4", +// "an_opulent_couch_from_the_palace_of_Versailles.mp4", +// "an_orange_road_bike.mp4", +// "an_orangutan_holding_a_paint_palette_in_one_hand_and_a_paintbrush_in_the_other.mp4", +// "an_orangutan_playing_accordion_with_its_hands_spread_wide.mp4", +// "an_orangutan_using_chopsticks_to_eat_ramen.mp4", +// "an_orchid_flower_planted_in_a_clay_pot.mp4", +// "a_palm_tree,_low_poly_3d_model.mp4", +// "a_panda_rowing_a_boat_in_a_pond.mp4", +// "a_panda_wearing_a_necktie_and_sitting_in_an_office_chair.mp4", +// "A_Panther_De_Ville_car.mp4", +// "a_pig_wearing_a_backpack.mp4", +// "a_plate_of_delicious_tacos.mp4", +// "a_plush_dragon_toy.mp4", +// "a_plush_toy_of_a_corgi_nurse.mp4", +// "a_rabbit,_animated_movie_character,_high_detail_3d_model.mp4", +// "a_rabbit_cutting_grass_with_a_lawnmower.mp4", +// "a_red_eyed_tree_frog,_low_poly.mp4", +// "a_red_panda.mp4", +// "a_ripe_strawberry.mp4", +// "a_roulette_wheel.mp4", +// "a_shiny_red_stand_mixer.mp4", +// "a_silver_platter_piled_high_with_fruits.mp4", +// "a_sliced_loaf_of_fresh_bread.mp4", +// "a_snail_on_a_leaf.mp4", +// "a_spanish_galleon_sailing_on_the_open_sea.mp4", +// "a_squirrel_dressed_like_Henry_VIII_king_of_England.mp4", +// "a_squirrel_gesturing_in_front_of_an_easel_showing_colorful_pie_charts.mp4", +// "a_squirrel_wearing_a_tuxedo_and_holding_a_conductor's_baton.mp4", +// "a_team_of_butterflies_playing_soccer_on_a_field.mp4", +// "a_teddy_bear_pushing_a_shopping_cart_full_of_fruits_and_vegetables.mp4", +// "a_tiger_dressed_as_a_military_general.mp4", +// "a_tiger_karate_master.mp4", +// "a_tiger_playing_the_violin.mp4", +// "a_tiger_waiter_at_a_fancy_restaurant.mp4", +// "a_tiger_wearing_a_tuxedo.mp4", +// "a_t-rex_roaring_up_into_the_air.mp4", +// "a_turtle_standing_on_its_hind_legs,_wearing_a_top_hat_and_holding_a_cane.mp4", +// "a_typewriter.mp4", +// "a_walrus_smoking_a_pipe.mp4", +// "a_wedge_of_cheese_on_a_silver_platter.mp4", +// "a_wide_angle_DSLR_photo_of_a_colorful_rooster.mp4", +// "a_wide_angle_DSLR_photo_of_a_humanoid_banana_sitting_at_a_desk_doing_homework.mp4", +// "a_wide_angle_DSLR_photo_of_a_mythical_troll_stirring_a_cauldron.mp4", +// "a_wide_angle_DSLR_photo_of_a_squirrel_in_samurai_armor_wielding_a_katana.mp4", +// "a_wide_angle_zoomed_out_DSLR_photo_of_A_red_dragon_dressed_in_a_tuxedo_and_playing_chess._The_chess_pieces_are_fashioned_after_robots.mp4", +// "a_wide_angle_zoomed_out_DSLR_photo_of_a_skiing_penguin_wearing_a_puffy_jacket.mp4", +// "a_wide_angle_zoomed_out_DSLR_photo_of_zoomed_out_view_of_Tower_Bridge_made_out_of_gingerbread_and_candy.mp4", +// "a_woolly_mammoth_standing_on_ice.mp4", +// "a_yellow_schoolbus.mp4", +// "a_zoomed_out_DSLR_photo_of_a_3d_model_of_an_adorable_cottage_with_a_thatched_roof.mp4", +// "a_zoomed_out_DSLR_photo_of_a_baby_bunny_sitting_on_top_of_a_stack_of_pancakes.mp4", +// "a_zoomed_out_DSLR_photo_of_a_baby_dragon.mp4", +// "a_zoomed_out_DSLR_photo_of_a_baby_monkey_riding_on_a_pig.mp4", +// "a_zoomed_out_DSLR_photo_of_a_badger_wearing_a_party_hat_and_blowing_out_birthday_candles_on_a_cake.mp4", +// "a_zoomed_out_DSLR_photo_of_a_beagle_eating_a_donut.mp4", +// "a_zoomed_out_DSLR_photo_of_a_bear_playing_electric_bass.mp4", +// "a_zoomed_out_DSLR_photo_of_a_beautifully_carved_wooden_knight_chess_piece.mp4", +// "a_zoomed_out_DSLR_photo_of_a_beautiful_suit_made_out_of_moss,_on_a_mannequin._Studio_lighting,_high_quality,_high_resolution.mp4", +// "a_zoomed_out_DSLR_photo_of_a_blue_lobster.mp4", +// "a_zoomed_out_DSLR_photo_of_a_blue_tulip.mp4", +// "a_zoomed_out_DSLR_photo_of_a_bowl_of_cereal_and_milk_with_a_spoon_in_it.mp4", +// "a_zoomed_out_DSLR_photo_of_a_brain_in_a_jar.mp4", +// "a_zoomed_out_DSLR_photo_of_a_bulldozer_made_out_of_toy_bricks.mp4", +// "a_zoomed_out_DSLR_photo_of_a_cake_in_the_shape_of_a_train.mp4", +// "a_zoomed_out_DSLR_photo_of_a_chihuahua_lying_in_a_pool_ring.mp4", +// "a_zoomed_out_DSLR_photo_of_a_chimpanzee_dressed_as_a_football_player.mp4", +// "a_zoomed_out_DSLR_photo_of_a_chimpanzee_holding_a_cup_of_hot_coffee.mp4", +// "a_zoomed_out_DSLR_photo_of_a_chimpanzee_wearing_headphones.mp4", +// "a_zoomed_out_DSLR_photo_of_a_colorful_camping_tent_in_a_patch_of_grass.mp4", +// "a_zoomed_out_DSLR_photo_of_a_complex_movement_from_an_expensive_watch_with_many_shiny_gears,_sitting_on_a_table.mp4", +// "a_zoomed_out_DSLR_photo_of_a_construction_excavator.mp4", +// "a_zoomed_out_DSLR_photo_of_a_corgi_wearing_a_top_hat.mp4", +// "a_zoomed_out_DSLR_photo_of_a_corn_cob_and_a_banana_playing_poker.mp4", +// "a_zoomed_out_DSLR_photo_of_a_dachsund_riding_a_unicycle.mp4", +// "a_zoomed_out_DSLR_photo_of_a_dachsund_wearing_a_boater_hat.mp4", +// "a_zoomed_out_DSLR_photo_of_a_few_pool_balls_sitting_on_a_pool_table.mp4", +// "a_zoomed_out_DSLR_photo_of_a_fox_working_on_a_jigsaw_puzzle.mp4", +// "a_zoomed_out_DSLR_photo_of_a_fresh_cinnamon_roll_covered_in_glaze.mp4", +// "a_zoomed_out_DSLR_photo_of_a_green_tractor.mp4", +// "a_zoomed_out_DSLR_photo_of_a_greyhound_dog_racing_down_the_track.mp4", +// "a_zoomed_out_DSLR_photo_of_a_group_of_squirrels_rowing_crew.mp4", +// "a_zoomed_out_DSLR_photo_of_a_gummy_bear_driving_a_convertible.mp4", +// "a_zoomed_out_DSLR_photo_of_a_hermit_crab_with_a_colorful_shell.mp4", +// "a_zoomed_out_DSLR_photo_of_a_hippo_biting_through_a_watermelon.mp4", +// "a_zoomed_out_DSLR_photo_of_a_hippo_made_out_of_chocolate.mp4", +// "a_zoomed_out_DSLR_photo_of_a_humanoid_robot_lying_on_a_couch_using_a_laptop.mp4", +// "a_zoomed_out_DSLR_photo_of_a_humanoid_robot_sitting_on_a_chair_drinking_a_cup_of_coffee.mp4", +// "a_zoomed_out_DSLR_photo_of_a_human_skeleton_relaxing_in_a_lounge_chair.mp4", +// "a_zoomed_out_DSLR_photo_of_a_kangaroo_sitting_on_a_bench_playing_the_accordion.mp4", +// "a_zoomed_out_DSLR_photo_of_a_kingfisher_bird.mp4", +// "a_zoomed_out_DSLR_photo_of_a_ladybug.mp4", +// "a_zoomed_out_DSLR_photo_of_a_lion's_mane_jellyfish.mp4", +// "a_zoomed_out_DSLR_photo_of_a_lobster_playing_the_saxophone.mp4", +// "a_zoomed_out_DSLR_photo_of_a_majestic_sailboat.mp4", +// "a_zoomed_out_DSLR_photo_of_a_marble_bust_of_a_cat,_a_real_mouse_is_sitting_on_its_head.mp4", +// "a_zoomed_out_DSLR_photo_of_a_marble_bust_of_a_fox_head.mp4", +// "a_zoomed_out_DSLR_photo_of_a_model_of_a_house_in_Tudor_style.mp4", +// "a_zoomed_out_DSLR_photo_of_a_monkey-rabbit_hybrid.mp4", +// "a_zoomed_out_DSLR_photo_of_a_monkey_riding_a_bike.mp4", +// "a_zoomed_out_DSLR_photo_of_a_mountain_goat_standing_on_a_boulder.mp4", +// "a_zoomed_out_DSLR_photo_of_a_mouse_holding_a_candlestick.mp4", +// "a_zoomed_out_DSLR_photo_of_an_adorable_kitten_lying_next_to_a_flower.mp4", +// "a_zoomed_out_DSLR_photo_of_an_all-utility_vehicle_driving_across_a_stream.mp4", +// "a_zoomed_out_DSLR_photo_of_an_amigurumi_motorcycle.mp4", +// "a_zoomed_out_DSLR_photo_of_an_astronaut_chopping_vegetables_in_a_sunlit_kitchen.mp4", +// "a_zoomed_out_DSLR_photo_of_an_egg_cracked_open_with_a_newborn_chick_hatching_out_of_it.mp4", +// "a_zoomed_out_DSLR_photo_of_an_expensive_office_chair.mp4", +// "a_zoomed_out_DSLR_photo_of_an_origami_bulldozer_sitting_on_the_ground.mp4", +// "a_zoomed_out_DSLR_photo_of_an_origami_crane.mp4", +// "a_zoomed_out_DSLR_photo_of_an_origami_hippo_in_a_river.mp4", +// "a_zoomed_out_DSLR_photo_of_an_otter_lying_on_its_back_in_the_water_holding_a_flower.mp4", +// "a_zoomed_out_DSLR_photo_of_a_pair_of_floating_chopsticks_picking_up_noodles_out_of_a_bowl_of_ramen.mp4", +// "a_zoomed_out_DSLR_photo_of_a_panda_throwing_wads_of_cash_into_the_air.mp4", +// "a_zoomed_out_DSLR_photo_of_a_panda_wearing_a_chef's_hat_and_kneading_bread_dough_on_a_countertop.mp4", +// "a_zoomed_out_DSLR_photo_of_a_pigeon_standing_on_a_manhole_cover.mp4", +// "a_zoomed_out_DSLR_photo_of_a_pig_playing_the_saxophone.mp4", +// "a_zoomed_out_DSLR_photo_of_a_pile_of_dice_on_a_green_tabletop.mp4", +// "a_zoomed_out_DSLR_photo_of_a_pita_bread_full_of_hummus_and_falafel_and_vegetables.mp4", +// "a_zoomed_out_DSLR_photo_of_a_pug_made_out_of_modeling_clay.mp4", +// "a_zoomed_out_DSLR_photo_of_A_punk_rock_squirrel_in_a_studded_leather_jacket_shouting_into_a_microphone_while_standing_on_a_stump_and_holding_a_beer.mp4", +// "a_zoomed_out_DSLR_photo_of_a_rabbit_cutting_grass_with_a_lawnmower.mp4", +// "a_zoomed_out_DSLR_photo_of_a_rabbit_digging_a_hole_with_a_shovel.mp4", +// "a_zoomed_out_DSLR_photo_of_a_raccoon_astronaut_holding_his_helmet.mp4", +// "a_zoomed_out_DSLR_photo_of_a_rainforest_bird_mating_ritual_dance.mp4", +// "a_zoomed_out_DSLR_photo_of_a_recliner_chair.mp4", +// "a_zoomed_out_DSLR_photo_of_a_red_rotary_telephone.mp4", +// "a_zoomed_out_DSLR_photo_of_a_robot_couple_fine_dining.mp4", +// "a_zoomed_out_DSLR_photo_of_a_rotary_telephone_carved_out_of_wood.mp4", +// "a_zoomed_out_DSLR_photo_of_a_shiny_beetle.mp4", +// "a_zoomed_out_DSLR_photo_of_a_silver_candelabra_sitting_on_a_red_velvet_tablecloth,_only_one_candle_is_lit.mp4", +// "a_zoomed_out_DSLR_photo_of_a_squirrel_DJing.mp4", +// "a_zoomed_out_DSLR_photo_of_a_squirrel_dressed_up_like_a_Victorian_woman.mp4", +// "a_zoomed_out_DSLR_photo_of_a_table_with_dim_sum_on_it.mp4", +// "a_zoomed_out_DSLR_photo_of_a_tiger_dressed_as_a_maid.mp4", +// "a_zoomed_out_DSLR_photo_of_a_tiger_dressed_as_a_military_general.mp4", +// "a_zoomed_out_DSLR_photo_of_a_tiger_eating_an_ice_cream_cone.mp4", +// "a_zoomed_out_DSLR_photo_of_a_tiger_wearing_sunglasses_and_a_leather_jacket,_riding_a_motorcycle.mp4", +// "a_zoomed_out_DSLR_photo_of_a_toad_catching_a_fly_with_its_tongue.mp4", +// "a_zoomed_out_DSLR_photo_of_a_wizard_raccoon_casting_a_spell.mp4", +// "a_zoomed_out_DSLR_photo_of_a_yorkie_dog_dressed_as_a_maid.mp4", +// "a_zoomed_out_DSLR_photo_of_cats_wearing_eyeglasses.mp4", +// "a_zoomed_out_DSLR_photo_of_miniature_schnauzer_wooden_sculpture,_high_quality_studio_photo.mp4", +// "A_zoomed_out_DSLR_photo_of___phoenix_made_of_splashing_water_.mp4", +// "a_zoomed_out_DSLR_photo_of_Sydney_opera_house,_aerial_view.mp4", +// "a_zoomed_out_DSLR_photo_of_two_foxes_tango_dancing.mp4", +// "a_zoomed_out_DSLR_photo_of_two_raccoons_playing_poker.mp4", +// "Chichen_Itza,_aerial_view.mp4", +// "__Coffee_cup_with_many_holes.mp4", +// "fries_and_a_hamburger.mp4", +// "__Luminescent_wild_horses.mp4", +// "Michelangelo_style_statue_of_an_astronaut.mp4", +// "Michelangelo_style_statue_of_dog_reading_news_on_a_cellphone.mp4", +// "the_titanic,_aerial_view.mp4", +// "two_gummy_bears_playing_dominoes.mp4", +// "two_macaw_parrots_playing_chess.mp4", +// "Wedding_dress_made_of_tentacles.mp4", +// ]; +// +// const omitPhrases = [ +// 'a wide angle DSLR photo of', +// 'a zoomed out DSLR photo of', +// 'a DSLR photo of', +// ]; +// +// const shuffleArray = array => { +// for (let i = array.length - 1; i > 0; i--) { +// const j = Math.floor(Math.random() * (i + 1)); +// const temp = array[i]; +// array[i] = array[j]; +// array[j] = temp; +// } +// }; +// +// shuffleArray(videoPaths); +// let thumbnails = document.getElementById("randomVideos"); +// +// // videoPaths = videoPaths.slice(0, 3); +// for (let i = 0; i < 3; i++) { +// let outer = document.createElement("DIV"); +// outer.classList = "col-4"; +// let inner = document.createElement("DIV"); +// inner.classList = "video-compare-container"; +// inner.style = "width: 100%;" +// +// let videoPath = videoPaths[i]; +// let caption = videoPath.replace("_rgbdn_hq_15000.mp4", "").replace("_rgbdn_hq_partial_15000.mp4", "").replace('.mp4', "").replaceAll("_", " "); +// let captionShort = caption; +// for (let i = 0; i < omitPhrases.length; i++) { +// captionShort = captionShort.replace(omitPhrases[i], '[...]'); +// } +// +// let componentVideo = document.createElement("VIDEO"); +// componentVideo.onplay = () => { +// resizeAndPlay(componentVideo); +// }; +// componentVideo.muted = true; +// componentVideo.autoplay = true; +// componentVideo.loop = true; +// componentVideo.width = "300"; +// componentVideo.playsinline = true; +// componentVideo.controls = false; +// componentVideo.style = "width: 200%; max-width: none; overflow: hidden"; +// componentVideo.classList = "video"; +// componentVideo.id = "ex" + i; +// let componentSource = document.createElement("SOURCE") +// componentSource.type = "video/mp4" +// componentSource.setAttribute('src', +// "https://dreamfusion-cdn.ajayj.com/gallery_sept28/crf20/" + videoPath); +// componentSource.type = "video/mp4"; +// componentVideo.appendChild(componentSource); +// +// let componentCanvas = document.createElement("CANVAS") +// // componentCanvas.style = "display: none"; +// componentCanvas.height = "752"; +// componentCanvas.width = "1002"; +// componentCanvas.classList = "videoMerge"; +// componentCanvas.id = "ex" + i + "Merge"; +// inner.appendChild(componentVideo); +// inner.appendChild(componentCanvas); +// +// let componentCaption = document.createElement("h6"); +// componentCaption.classList = "caption"; +// componentCaption.title = caption; +// componentCaption.appendChild(document.createTextNode(captionShort)); +// inner.appendChild(componentCaption); +// +// outer.appendChild(inner); +// thumbnails.appendChild(outer); +// } +// })(); + +(function() { + // Create mesh holders. + let sharedAttributes = { + ar: true, + "ar-modes": "webxr scene-viewer quick-look", + loading: "lazy", + reveal: "manual", + // crossorigin: "anonymous", + style: "height: 300px; width: 100%;", + "camera-controls": true, + "touch-action": "pan-y", + "shadow-intensity": "1", + exposure: "1" + }; + + let meshAttributes = { + m1: { + src: "/assets/glb/JKfigure_m1.glb", + poster: "/assets/poster/JKfigure_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "JKfigure m1", + shortCaption: "JKfigure m1" + }, + m2: { + src: "/assets/glb/JKfigure_m2.glb", + poster: "/assets/poster/JKfigure_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "JKfigure m2", + shortCaption: "JKfigure m2" + }, + m3: { + src: "/assets/glb/JKfigure_m3.glb", + poster: "/assets/poster/JKfigure_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "JKfigure m3", + shortCaption: "JKfigure m3" + }, + m0: { + src: "/assets/glb/angry_cat1_m0.glb", + poster: "/assets/poster/angry_cat1_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "angry cat1 m0", + shortCaption: "angry cat1 m0" + }, + cat1_m1: { + src: "/assets/glb/angry_cat1_m1.glb", + poster: "/assets/poster/angry_cat1_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "angry cat1 m1", + shortCaption: "angry cat1 m1" + }, + cat1_m2: { + src: "/assets/glb/angry_cat1_m2.glb", + poster: "/assets/poster/angry_cat1_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "angry cat1 m2", + shortCaption: "angry cat1 m2" + }, + cat1_m3: { + src: "/assets/glb/angry_cat1_m3.glb", + poster: "/assets/poster/angry_cat1_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "angry cat1 m3", + shortCaption: "angry cat1 m3" + }, + cat2_m1: { + src: "/assets/glb/angry_cat2_m1.glb", + poster: "/assets/poster/angry_cat2_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "angry cat2 m1", + shortCaption: "angry cat2 m1" + }, + cat2_m2: { + src: "/assets/glb/angry_cat2_m2.glb", + poster: "/assets/poster/angry_cat2_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "angry cat2 m2", + shortCaption: "angry cat2 m2" + }, + cat2_m3: { + src: "/assets/glb/angry_cat2_m3.glb", + poster: "/assets/poster/angry_cat2_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "angry cat2 m3", + shortCaption: "angry cat2 m3" + }, + man_m0: { + src: "/assets/glb/armor_man_m0.glb", + poster: "/assets/poster/armor_man_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "armor man m0", + shortCaption: "armor man m0" + }, + man_m1: { + src: "/assets/glb/armor_man_m1.glb", + poster: "/assets/poster/armor_man_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "armor man m1", + shortCaption: "armor man m1" + }, + man_m2: { + src: "/assets/glb/armor_man_m2.glb", + poster: "/assets/poster/armor_man_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "armor man m2", + shortCaption: "armor man m2" + }, + man_m3: { + src: "/assets/glb/armor_man_m3.glb", + poster: "/assets/poster/armor_man_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "armor man m3", + shortCaption: "armor man m3" + }, + car_m0: { + src: "/assets/glb/castle_on_car_m0.glb", + poster: "/assets/poster/castle_on_car_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "castle on car m0", + shortCaption: "castle on car m0" + }, + car_m1: { + src: "/assets/glb/castle_on_car_m1.glb", + poster: "/assets/poster/castle_on_car_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "castle on car m1", + shortCaption: "castle on car m1" + }, + car_m2: { + src: "/assets/glb/castle_on_car_m2.glb", + poster: "/assets/poster/castle_on_car_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "castle on car m2", + shortCaption: "castle on car m2" + }, + car_m3: { + src: "/assets/glb/castle_on_car_m3.glb", + poster: "/assets/poster/castle_on_car_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "castle on car m3", + shortCaption: "castle on car m3" + }, + sword_m0: { + src: "/assets/glb/dragon_sword_m0.glb", + poster: "/assets/poster/dragon_sword_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "dragon sword m0", + shortCaption: "dragon sword m0" + }, + sword_m1: { + src: "/assets/glb/dragon_sword_m1.glb", + poster: "/assets/poster/dragon_sword_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "dragon sword m1", + shortCaption: "dragon sword m1" + }, + sword_m2: { + src: "/assets/glb/dragon_sword_m2.glb", + poster: "/assets/poster/dragon_sword_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "dragon sword m2", + shortCaption: "dragon sword m2" + }, + sword_m3: { + src: "/assets/glb/dragon_sword_m3.glb", + poster: "/assets/poster/dragon_sword_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "dragon sword m3", + shortCaption: "dragon sword m3" + }, + helmet_m0: { + src: "/assets/glb/luffy_helmet_m0.glb", + poster: "/assets/poster/luffy_helmet_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "luffy helmet m0", + shortCaption: "luffy helmet m0" + }, + helmet_m1: { + src: "/assets/glb/luffy_helmet_m1.glb", + poster: "/assets/poster/luffy_helmet_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "luffy helmet m1", + shortCaption: "luffy helmet m1" + }, + helmet_m2: { + src: "/assets/glb/luffy_helmet_m2.glb", + poster: "/assets/poster/luffy_helmet_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "luffy helmet m2", + shortCaption: "luffy helmet m2" + }, + helmet_m3: { + src: "/assets/glb/luffy_helmet_m3.glb", + poster: "/assets/poster/luffy_helmet_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "luffy helmet m3", + shortCaption: "luffy helmet m3" + }, + camera_m0: { + src: "/assets/glb/man_camera_m0.glb", + poster: "/assets/poster/man_camera_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "man camera m0", + shortCaption: "man camera m0" + }, + camera_m1: { + src: "/assets/glb/man_camera_m1.glb", + poster: "/assets/poster/man_camera_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "man camera m1", + shortCaption: "man camera m1" + }, + camera_m2: { + src: "/assets/glb/man_camera_m2.glb", + poster: "/assets/poster/man_camera_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "man camera m2", + shortCaption: "man camera m2" + }, + old_man_m0: { + src: "/assets/glb/old_man_m0.glb", + poster: "/assets/poster/old_man_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "old man m0", + shortCaption: "old man m0" + }, + old_man_m1: { + src: "/assets/glb/old_man_m1.glb", + poster: "/assets/poster/old_man_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "old man m1", + shortCaption: "old man m1" + }, + old_man_m2: { + src: "/assets/glb/old_man_m2.glb", + poster: "/assets/poster/old_man_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "old man m2", + shortCaption: "old man m2" + }, + old_man_m3: { + src: "/assets/glb/old_man_m3.glb", + poster: "/assets/poster/old_man_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "old man m3", + shortCaption: "old man m3" + }, + shield_m0: { + src: "/assets/glb/panda_spear_shield_m0.glb", + poster: "/assets/poster/panda_spear_shield_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "panda spear shield m0", + shortCaption: "panda spear shield m0" + }, + shield_m1: { + src: "/assets/glb/panda_spear_shield_m1.glb", + poster: "/assets/poster/panda_spear_shield_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "panda spear shield m1", + shortCaption: "panda spear shield m1" + }, + shield_m2: { + src: "/assets/glb/panda_spear_shield_m2.glb", + poster: "/assets/poster/panda_spear_shield_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "panda spear shield m2", + shortCaption: "panda spear shield m2" + }, + shield_m3: { + src: "/assets/glb/panda_spear_shield_m3.glb", + poster: "/assets/poster/panda_spear_shield_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "panda spear shield m3", + shortCaption: "panda spear shield m3" + }, + archer_m0: { + src: "/assets/glb/wolfman_archer_m0.glb", + poster: "/assets/poster/wolfman_archer_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wolfman archer m0", + shortCaption: "wolfman archer m0" + }, + archer_m1: { + src: "/assets/glb/wolfman_archer_m1.glb", + poster: "/assets/poster/wolfman_archer_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wolfman archer m1", + shortCaption: "wolfman archer m1" + }, + archer_m2: { + src: "/assets/glb/wolfman_archer_m2.glb", + poster: "/assets/poster/wolfman_archer_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wolfman archer m2", + shortCaption: "wolfman archer m2" + }, + archer_m3: { + src: "/assets/glb/wolfman_archer_m3.glb", + poster: "/assets/poster/wolfman_archer_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wolfman archer m3", + shortCaption: "wolfman archer m3" + }, + wooden_car_m0: { + src: "/assets/glb/wooden_car_m0.glb", + poster: "/assets/poster/wooden_car_m0.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wooden car m0", + shortCaption: "wooden car m0" + }, + wooden_car_m1: { + src: "/assets/glb/wooden_car_m1.glb", + poster: "/assets/poster/wooden_car_m1.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wooden car m1", + shortCaption: "wooden car m1" + }, + wooden_car_m2: { + src: "/assets/glb/wooden_car_m2.glb", + poster: "/assets/poster/wooden_car_m2.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wooden car m2", + shortCaption: "wooden car m2" + }, + wooden_car_m3: { + src: "/assets/glb/wooden_car_m3.glb", + poster: "/assets/poster/wooden_car_m3.png", + "environment-image": "https://modelviewer.dev/shared-assets/environments/spruit_sunrise_1k_HDR.hdr", + caption: "wooden car m3", + shortCaption: "wooden car m3" + }, + + + }; + + let meshRows = [ + ['m1', 'm2', 'm3'], + ['m0', 'cat1_m1', 'cat1_m2', 'cat1_m3'], + ['cat2_m1', 'cat2_m2', 'cat2_m3'], + ['man_m0', 'man_m1', 'man_m2', 'man_m3'], + ['car_m0', 'car_m1', 'car_m2', 'car_m3'], + ['sword_m0', 'sword_m1', 'sword_m2', 'sword_m3'], + ['helmet_m0', 'helmet_m1', 'helmet_m2', 'helmet_m3'], + ['camera_m0', 'camera_m1', 'camera_m2', 'old_man_m0'], + ['old_man_m1', 'old_man_m2', 'old_man_m3', 'shield_m0'], + ['shield_m1', 'shield_m2', 'shield_m3', 'archer_m0'], + ['archer_m1', 'archer_m2', 'archer_m3', 'wooden_car_m0'], + ]; + let container = document.getElementById("meshContainer"); + meshRows.forEach((meshIds) => { + let row = document.createElement("DIV"); + row.classList = "row"; + + meshIds.forEach((meshId) => { + let col = document.createElement("DIV"); + col.classList = "col-md-6 col-sm-6 my-auto"; + + // Model viewer. + let model = document.createElement("model-viewer"); + for (const attr in sharedAttributes) { + if (attr != "caption" && attr != "shortCaption") + model.setAttribute(attr, sharedAttributes[attr]); + } + for (const attrCustom in meshAttributes[meshId]) { + if (attrCustom != "caption" && attrCustom != "shortCaption") + model.setAttribute(attrCustom, meshAttributes[meshId][attrCustom]); + } + model.id = 'mesh-' + meshId; + + // Controls. + let controls = document.createElement("div"); + controls.className = "controls"; + let buttonLoad = document.createElement("button"); + buttonLoad.classList = "btn btn-primary loads-model"; + buttonLoad.setAttribute("data-controls", model.id); + buttonLoad.appendChild(document.createTextNode("Load 3D model")); + // let buttonToggle = document.createElement("button"); + // buttonToggle.classList = "btn btn-primary toggles-texture"; + // buttonToggle.setAttribute("data-controls", model.id); + // buttonToggle.appendChild(document.createTextNode("Toggle texture")); + controls.appendChild(buttonLoad); + // controls.appendChild(buttonToggle); + + // Caption. + let caption = document.createElement("p"); + caption.classList = "caption"; + caption.title = meshAttributes[meshId]["caption"] || ""; + caption.appendChild(document.createTextNode(meshAttributes[meshId]["shortCaption"] || caption.title)); + + col.appendChild(model); + col.appendChild(controls); + col.appendChild(caption); + row.appendChild(col); + }); + + container.appendChild(row); + }); + + // Toggle texture handlers. + document.querySelectorAll('button.toggles-texture').forEach((button) => { + button.addEventListener('click', () => { + let model = document.getElementById(button.getAttribute("data-controls")); + + console.log(model.model); + let material = model.model.materials[0]; + let metallic = material.pbrMetallicRoughness; + let originalTexture = metallic.pbrMetallicRoughness.baseColorTexture; + let originalBaseColor = metallic.pbrMetallicRoughness.baseColorFactor; + console.log('model load', model.model, material, 'metallic', metallic, originalTexture); + + let textureButton = model.querySelector('.toggles-parent-texture'); + console.log('texture button', textureButton); + // if (originalTexture && textureButton) { + let textureOn = true; + textureButton.onclick = () => { + if (textureOn) { + // model.model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(null); + // model.model.materials[0].pbrMetallicRoughness.setBaseColorFactor([1., 1., 1., 1.]); + // textureOn = false; + // console.log('toggle texture off'); + } else { + // model.model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(originalTexture) ; + // model.model.materials[0].pbrMetallicRoughness.setBaseColorFactor(originalBaseColor); + // textureOn = true; + // console.log('toggle texture on'); + } + }; + }); + }); + + // Click to load handlers for 3D meshes. + document.querySelectorAll('button.loads-model').forEach((button) => { + button.setAttribute('data-action', 'load'); + button.addEventListener('click', () => { + // button.classList = button.classList + " disappearing"; + // let model = button.parentElement.parentElement; + let model = document.getElementById(button.getAttribute("data-controls")); + + if (button.getAttribute('data-action') == 'load') { + model.dismissPoster(); + button.classList = "btn btn-disabled"; + button.innerHTML = "Hide 3D model"; + button.setAttribute('data-action', 'unload'); + } else { + model.showPoster(); + button.classList = "btn btn-primary"; + button.innerHTML = "Load 3D model"; + button.setAttribute('data-action', 'load'); + }; + }); + }); + // document.querySelectorAll('button.toggles-parent-texture').forEach((button) => { + // let model = button.parentElement.parentElement; + // let originalTexture = model.materials[0].pbrMetallicRoughness.baseColorTexture; + // let textureOn = true; + // button.addEventListener('click', () => { + // if (textureOn) { + // model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(null); + // textureOn = false; + // } else { + // model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(originalTexture) ; + // textureOn = true; + // } + // }); + // }); +})(); diff --git a/assets/js/scripts_v1.js b/assets/js/scripts_v1.js new file mode 100644 index 0000000..0b5c277 --- /dev/null +++ b/assets/js/scripts_v1.js @@ -0,0 +1,753 @@ +'use strict'; + + +// we start with the TrieNode +function TrieNode(key) { + // the "key" value will be the character in sequence + this.key = key; + + // we keep a reference to parent + this.parent = null; + + // we have hash of children + this.children = {}; + + // check to see if the node is at the end + this.end = false; +} + +// iterates through the parents to get the word. +// time complexity: O(k), k = word length +TrieNode.prototype.getWord = function() { + var output = []; + var node = this; + + while (node !== null) { + output.unshift(node.key); + node = node.parent; + } + + return output.join(''); +}; + +// ----------------------------------------- + +// we implement Trie with just a simple root with null value. +function Trie() { + this.root = new TrieNode(null); +} + +// inserts a word into the trie. +// time complexity: O(k), k = word length +Trie.prototype.insert = function(word) { + var node = this.root; // we start at the root 😬 + + // for every character in the word + for(var i = 0; i < word.length; i++) { + // check to see if character node exists in children. + if (!node.children[word[i]]) { + // if it doesn't exist, we then create it. + node.children[word[i]] = new TrieNode(word[i]); + + // we also assign the parent to the child node. + node.children[word[i]].parent = node; + } + + // proceed to the next depth in the trie. + node = node.children[word[i]]; + + // finally, we check to see if it's the last word. + if (i == word.length-1) { + // if it is, we set the end flag to true. + node.end = true; + } + } +}; + +// check if it contains a whole word. +// time complexity: O(k), k = word length +Trie.prototype.contains = function(word) { + var node = this.root; + + // for every character in the word + for(var i = 0; i < word.length; i++) { + // check to see if character node exists in children. + if (node.children[word[i]]) { + // if it exists, proceed to the next depth of the trie. + node = node.children[word[i]]; + } else { + // doesn't exist, return false since it's not a valid word. + return false; + } + } + + // we finished going through all the words, but is it a whole word? + return node.end; +}; + +// returns every word with given prefix +// time complexity: O(p + n), p = prefix length, n = number of child paths +Trie.prototype.find = function(prefix) { + var node = this.root; + var output = []; + + // for every character in the prefix + for(var i = 0; i < prefix.length; i++) { + // make sure prefix actually has words + if (node.children[prefix[i]]) { + node = node.children[prefix[i]]; + } else { + // there's none. just return it. + return output; + } + } + + // recursively find all words in the node + findAllWords(node, output); + + return output; +}; + +// recursive function to find all words in the given node. +function findAllWords(node, arr) { + // base case, if node is at a word, push to output + if (node.end) { + arr.unshift(node.getWord()); + } + + // iterate through each children, call recursive findAllWords + for (var child in node.children) { + findAllWords(node.children[child], arr); + } +} + +(function() { + // Format video selector for compositional prompts. + // var captions = [ + // "a 3D model of a squirrel", + // "a DSLR photo of a squirrel", + // "a DSLR photo of a squirrel wearing a colorful sweater", + // "a DSLR photo of a squirrel wearing a kimono", + // "a DSLR photo of a squirrel wearing a leather jacket ice skating", + // "a DSLR photo of a squirrel wearing a leather jacket on rollerblades", + // "a DSLR photo of a squirrel wearing a leather jacket playing the cello", + // "a DSLR photo of a squirrel wearing a leather jacket playing the electric bass", + // "a DSLR photo of a squirrel wearing a leather jacket reading a book", + // "a DSLR photo of a squirrel wearing a leather jacket reading the newspaper", + // "a DSLR photo of a squirrel wearing a leather jacket", + // "a DSLR photo of a squirrel wearing a leather jacket riding a motorcycle in the desert", + // "a DSLR photo of a squirrel wearing a leather jacket riding a motorcycle on a dirt road", + // "a DSLR photo of a squirrel wearing a leather jacket riding a motorcycle on a road made of ice", + // "a DSLR photo of a squirrel wearing a leather jacket riding a motorcycle on the beach", + // "a DSLR photo of a squirrel wearing a leather jacket riding a motorcycle on the highway", + // "a DSLR photo of a squirrel wearing a leather jacket riding a motorcycle on the moon", + // "a DSLR photo of a squirrel wearing a leather jacket riding a motorcycle", + // "a DSLR photo of a squirrel wearing a leather jacket riding a motorcycle through a field of lava", + // "a DSLR photo of a squirrel wearing a leather jacket riding a skateboard", + // "a DSLR photo of a squirrel wearing a leather jacket riding a unicycle", + // "a DSLR photo of a squirrel wearing a puffy jacket", + // "a DSLR photo of a squirrel wearing a suit of medieval armor", + // "a koala", + // "an orangutan", + // "a panda", + // "a porcelain squirrel", + // "a raccoon", + // "a squirrel carved out of wood", + // "a squirrel made out of marbles", + // "a squirrel" + // ] + + // var journey = { + // "a DSLR photo of a squirrel": { + // // " wearing a colorful sweater": true, + // // " wearing a kimono": true, + // // " wearing a puffy jacket": true, + // // " wearing a suit of medieval armor": true, + // " wearing a leather jacket": { + // // "##self##": true, + // " riding a motorcycle": { + // // "##self##": true, + // " in the desert": true, + // " through a field of lava": true, + // " on a dirt road": true, + // " on a road made of ice": true, + // " on the beach": true, + // " on the highway": true, + // " on the moon": true + // }, + // " riding a unicycle": true, + // " riding a skateboard": true, + // " ice skating": true, + // " on rollerblades": true, + // " playing the cello": true, + // " playing the electric bass": true, + // " reading a book": true, + // " reading the newspaper": true, + // } + // }, + // // "a 3D model of a squirrel": true, + // "a squirrel": { + // // "##self##": true, + // " carved out of wood": true, + // " made out of marbles": true, + // }, + // // "a koala": false, + // // "an orangutan": false, + // // "a panda": false, + // // "a porcelain squirrel": false, + // // "a raccoon": false + // }; + + let captions = ["a DSLR photo of a squirrel chopping vegetables", +"a DSLR photo of a squirrel dancing", +"a DSLR photo of a squirrel eating a hamburger", +"a DSLR photo of a squirrel playing the saxophone", +"a DSLR photo of a squirrel reading a book", +"a DSLR photo of a squirrel ", +"a DSLR photo of a squirrel riding a motorcycle", +"a DSLR photo of a squirrel riding a skateboard", +"a DSLR photo of a squirrel sitting at a pottery wheel shaping a clay bowl", +"a DSLR photo of a squirrel wearing a kimono chopping vegetables", +"a DSLR photo of a squirrel wearing a kimono dancing", +"a DSLR photo of a squirrel wearing a kimono eating a hamburger", +"a DSLR photo of a squirrel wearing a kimono playing the saxophone", +"a DSLR photo of a squirrel wearing a kimono reading a book", +"a DSLR photo of a squirrel wearing a kimono ", +"a DSLR photo of a squirrel wearing a kimono riding a motorcycle", +"a DSLR photo of a squirrel wearing a kimono riding a skateboard", +"a DSLR photo of a squirrel wearing a kimono sitting at a pottery wheel shaping a clay bowl", +"a DSLR photo of a squirrel wearing a kimono wielding a katana", +"a DSLR photo of a squirrel wearing a medieval suit of armor chopping vegetables", +"a DSLR photo of a squirrel wearing a medieval suit of armor dancing", +"a DSLR photo of a squirrel wearing a medieval suit of armor eating a hamburger", +"a DSLR photo of a squirrel wearing a medieval suit of armor playing the saxophone", +"a DSLR photo of a squirrel wearing a medieval suit of armor reading a book", +"a DSLR photo of a squirrel wearing a medieval suit of armor ", +"a DSLR photo of a squirrel wearing a medieval suit of armor riding a motorcycle", +"a DSLR photo of a squirrel wearing a medieval suit of armor riding a skateboard", +"a DSLR photo of a squirrel wearing a medieval suit of armor sitting at a pottery wheel shaping a clay bowl", +"a DSLR photo of a squirrel wearing a medieval suit of armor wielding a katana", +"a DSLR photo of a squirrel wearing an elegant ballgown chopping vegetables", +"a DSLR photo of a squirrel wearing an elegant ballgown dancing", +"a DSLR photo of a squirrel wearing an elegant ballgown eating a hamburger", +"a DSLR photo of a squirrel wearing an elegant ballgown playing the saxophone", +"a DSLR photo of a squirrel wearing an elegant ballgown reading a book", +"a DSLR photo of a squirrel wearing an elegant ballgown ", +"a DSLR photo of a squirrel wearing an elegant ballgown riding a motorcycle", +"a DSLR photo of a squirrel wearing an elegant ballgown riding a skateboard", +"a DSLR photo of a squirrel wearing an elegant ballgown sitting at a pottery wheel shaping a clay bowl", +"a DSLR photo of a squirrel wearing an elegant ballgown wielding a katana", +"a DSLR photo of a squirrel wearing a purple hoodie chopping vegetables", +"a DSLR photo of a squirrel wearing a purple hoodie dancing", +"a DSLR photo of a squirrel wearing a purple hoodie eating a hamburger", +"a DSLR photo of a squirrel wearing a purple hoodie playing the saxophone", +"a DSLR photo of a squirrel wearing a purple hoodie reading a book", +"a DSLR photo of a squirrel wearing a purple hoodie ", +"a DSLR photo of a squirrel wearing a purple hoodie riding a motorcycle", +"a DSLR photo of a squirrel wearing a purple hoodie riding a skateboard", +"a DSLR photo of a squirrel wearing a purple hoodie sitting at a pottery wheel shaping a clay bowl", +"a DSLR photo of a squirrel wearing a purple hoodie wielding a katana", +"a DSLR photo of a squirrel wielding a katana", +"a highly detailed metal sculpture of a squirrel chopping vegetables", +"a highly detailed metal sculpture of a squirrel dancing", +"a highly detailed metal sculpture of a squirrel eating a hamburger", +"a highly detailed metal sculpture of a squirrel playing the saxophone", +"a highly detailed metal sculpture of a squirrel reading a book", +"a highly detailed metal sculpture of a squirrel ", +"a highly detailed metal sculpture of a squirrel riding a motorcycle", +"a highly detailed metal sculpture of a squirrel riding a skateboard", +"a highly detailed metal sculpture of a squirrel sitting at a pottery wheel shaping a clay bowl", +"a highly detailed metal sculpture of a squirrel wearing a kimono chopping vegetables", +"a highly detailed metal sculpture of a squirrel wearing a kimono dancing", +"a highly detailed metal sculpture of a squirrel wearing a kimono eating a hamburger", +"a highly detailed metal sculpture of a squirrel wearing a kimono playing the saxophone", +"a highly detailed metal sculpture of a squirrel wearing a kimono reading a book", +"a highly detailed metal sculpture of a squirrel wearing a kimono ", +"a highly detailed metal sculpture of a squirrel wearing a kimono riding a motorcycle", +"a highly detailed metal sculpture of a squirrel wearing a kimono riding a skateboard", +"a highly detailed metal sculpture of a squirrel wearing a kimono sitting at a pottery wheel shaping a clay bowl", +"a highly detailed metal sculpture of a squirrel wearing a kimono wielding a katana", +"a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor chopping vegetables", +"a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor dancing", +"a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor eating a hamburger", +"a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor playing the saxophone", +"a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor reading a book", +"a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor ", +"a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor riding a motorcycle", +"a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor riding a skateboard", +"a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor sitting at a pottery wheel shaping a clay bowl", +"a highly detailed metal sculpture of a squirrel wearing a medieval suit of armor wielding a katana", +"a highly detailed metal sculpture of a squirrel wearing an elegant ballgown chopping vegetables", +"a highly detailed metal sculpture of a squirrel wearing an elegant ballgown dancing", +"a highly detailed metal sculpture of a squirrel wearing an elegant ballgown eating a hamburger", +"a highly detailed metal sculpture of a squirrel wearing an elegant ballgown playing the saxophone", +"a highly detailed metal sculpture of a squirrel wearing an elegant ballgown reading a book", +"a highly detailed metal sculpture of a squirrel wearing an elegant ballgown ", +"a highly detailed metal sculpture of a squirrel wearing an elegant ballgown riding a motorcycle", +"a highly detailed metal sculpture of a squirrel wearing an elegant ballgown riding a skateboard", +"a highly detailed metal sculpture of a squirrel wearing an elegant ballgown sitting at a pottery wheel shaping a clay bowl", +"a highly detailed metal sculpture of a squirrel wearing an elegant ballgown wielding a katana", +"a highly detailed metal sculpture of a squirrel wearing a purple hoodie chopping vegetables", +"a highly detailed metal sculpture of a squirrel wearing a purple hoodie dancing", +"a highly detailed metal sculpture of a squirrel wearing a purple hoodie eating a hamburger", +"a highly detailed metal sculpture of a squirrel wearing a purple hoodie playing the saxophone", +"a highly detailed metal sculpture of a squirrel wearing a purple hoodie reading a book", +"a highly detailed metal sculpture of a squirrel wearing a purple hoodie ", +"a highly detailed metal sculpture of a squirrel wearing a purple hoodie riding a motorcycle", +"a highly detailed metal sculpture of a squirrel wearing a purple hoodie riding a skateboard", +"a highly detailed metal sculpture of a squirrel wearing a purple hoodie sitting at a pottery wheel shaping a clay bowl", +"a highly detailed metal sculpture of a squirrel wearing a purple hoodie wielding a katana", +"a highly detailed metal sculpture of a squirrel wielding a katana", +"an intricate wooden carving of a squirrel chopping vegetables", +"an intricate wooden carving of a squirrel dancing", +"an intricate wooden carving of a squirrel eating a hamburger", +"an intricate wooden carving of a squirrel playing the saxophone", +"an intricate wooden carving of a squirrel reading a book", +"an intricate wooden carving of a squirrel ", +"an intricate wooden carving of a squirrel riding a motorcycle", +"an intricate wooden carving of a squirrel riding a skateboard", +"an intricate wooden carving of a squirrel sitting at a pottery wheel shaping a clay bowl", +"an intricate wooden carving of a squirrel wearing a kimono chopping vegetables", +"an intricate wooden carving of a squirrel wearing a kimono dancing", +"an intricate wooden carving of a squirrel wearing a kimono eating a hamburger", +"an intricate wooden carving of a squirrel wearing a kimono playing the saxophone", +"an intricate wooden carving of a squirrel wearing a kimono reading a book", +"an intricate wooden carving of a squirrel wearing a kimono ", +"an intricate wooden carving of a squirrel wearing a kimono riding a motorcycle", +"an intricate wooden carving of a squirrel wearing a kimono riding a skateboard", +"an intricate wooden carving of a squirrel wearing a kimono sitting at a pottery wheel shaping a clay bowl", +"an intricate wooden carving of a squirrel wearing a kimono wielding a katana", +"an intricate wooden carving of a squirrel wearing a medieval suit of armor chopping vegetables", +"an intricate wooden carving of a squirrel wearing a medieval suit of armor dancing", +"an intricate wooden carving of a squirrel wearing a medieval suit of armor eating a hamburger", +"an intricate wooden carving of a squirrel wearing a medieval suit of armor playing the saxophone", +"an intricate wooden carving of a squirrel wearing a medieval suit of armor reading a book", +"an intricate wooden carving of a squirrel wearing a medieval suit of armor ", +"an intricate wooden carving of a squirrel wearing a medieval suit of armor riding a motorcycle", +"an intricate wooden carving of a squirrel wearing a medieval suit of armor riding a skateboard", +"an intricate wooden carving of a squirrel wearing a medieval suit of armor sitting at a pottery wheel shaping a clay bowl", +"an intricate wooden carving of a squirrel wearing a medieval suit of armor wielding a katana", +"an intricate wooden carving of a squirrel wearing an elegant ballgown chopping vegetables", +"an intricate wooden carving of a squirrel wearing an elegant ballgown dancing", +"an intricate wooden carving of a squirrel wearing an elegant ballgown eating a hamburger", +"an intricate wooden carving of a squirrel wearing an elegant ballgown playing the saxophone", +"an intricate wooden carving of a squirrel wearing an elegant ballgown reading a book", +"an intricate wooden carving of a squirrel wearing an elegant ballgown ", +"an intricate wooden carving of a squirrel wearing an elegant ballgown riding a motorcycle", +"an intricate wooden carving of a squirrel wearing an elegant ballgown riding a skateboard", +"an intricate wooden carving of a squirrel wearing an elegant ballgown sitting at a pottery wheel shaping a clay bowl", +"an intricate wooden carving of a squirrel wearing an elegant ballgown wielding a katana", +"an intricate wooden carving of a squirrel wearing a purple hoodie chopping vegetables", +"an intricate wooden carving of a squirrel wearing a purple hoodie dancing", +"an intricate wooden carving of a squirrel wearing a purple hoodie eating a hamburger", +"an intricate wooden carving of a squirrel wearing a purple hoodie playing the saxophone", +"an intricate wooden carving of a squirrel wearing a purple hoodie reading a book", +"an intricate wooden carving of a squirrel wearing a purple hoodie ", +"an intricate wooden carving of a squirrel wearing a purple hoodie riding a motorcycle", +"an intricate wooden carving of a squirrel wearing a purple hoodie riding a skateboard", +"an intricate wooden carving of a squirrel wearing a purple hoodie sitting at a pottery wheel shaping a clay bowl", +"an intricate wooden carving of a squirrel wearing a purple hoodie wielding a katana", +"an intricate wooden carving of a squirrel wielding a katana"]; + + // let imagen_pieces = [ + // ["a DSLR photo of a squirrel", "an intricate wooden carving of a squirrel", "a highly detailed metal sculpture of a squirrel"], + // ["", "wearing a kimono", "wearing a medieval suit of armor", "wearing a purple hoodie", "wearing an elegant ballgown"], + // ["", "reading a book", "riding a motorcycle", "playing the saxophone", "chopping vegetables", "sitting at a pottery wheel shaping a clay bowl", + // "riding a skateboard", "wielding a katana", "eating a hamburger", "dancing"], + // ]; + + let journey = { + "a DSLR photo of a squirrel": { + " ": true, + " wearing a kimono": { + " ": true, + " reading a book": true, + " riding a motorcycle": true, + " playing the saxophone": true, + " chopping vegetables": true, + " sitting at a pottery wheel shaping a clay bowl": true, + " riding a skateboard": true, + " wielding a katana": true, + " eating a hamburger": true, + " dancing": true, + }, + " wearing a medieval suit of armor": { + " ": true, + " reading a book": true, + " riding a motorcycle": true, + " playing the saxophone": true, + " chopping vegetables": true, + " sitting at a pottery wheel shaping a clay bowl": true, + " riding a skateboard": true, + " wielding a katana": true, + " eating a hamburger": true, + " dancing": true, + }, + " wearing a purple hoodie": { + " ": true, + " reading a book": true, + " riding a motorcycle": true, + " playing the saxophone": true, + " chopping vegetables": true, + " sitting at a pottery wheel shaping a clay bowl": true, + " riding a skateboard": true, + " wielding a katana": true, + " eating a hamburger": true, + " dancing": true, + }, + " wearing a elegant ballgown": { + " ": true, + " reading a book": true, + " riding a motorcycle": true, + " playing the saxophone": true, + " chopping vegetables": true, + " sitting at a pottery wheel shaping a clay bowl": true, + " riding a skateboard": true, + " wielding a katana": true, + " eating a hamburger": true, + " dancing": true, + }, + }, + "a highly detailed metal sculpture of a squirrel": { + " ": true, + " wearing a kimono": { + " ": true, + " reading a book": true, + " riding a motorcycle": true, + " playing the saxophone": true, + " chopping vegetables": true, + " sitting at a pottery wheel shaping a clay bowl": true, + " riding a skateboard": true, + " wielding a katana": true, + " eating a hamburger": true, + " dancing": true, + }, + " wearing a medieval suit of armor": { + " ": true, + " reading a book": true, + " riding a motorcycle": true, + " playing the saxophone": true, + " chopping vegetables": true, + " sitting at a pottery wheel shaping a clay bowl": true, + " riding a skateboard": true, + " wielding a katana": true, + " eating a hamburger": true, + " dancing": true, + }, + " wearing a purple hoodie": { + " ": true, + " reading a book": true, + " riding a motorcycle": true, + " playing the saxophone": true, + " chopping vegetables": true, + " sitting at a pottery wheel shaping a clay bowl": true, + " riding a skateboard": true, + " wielding a katana": true, + " eating a hamburger": true, + " dancing": true, + }, + " wearing a elegant ballgown": { + " ": true, + " reading a book": true, + " riding a motorcycle": true, + " playing the saxophone": true, + " chopping vegetables": true, + " sitting at a pottery wheel shaping a clay bowl": true, + " riding a skateboard": true, + " wielding a katana": true, + " eating a hamburger": true, + " dancing": true, + }, + }, + "an intricate wooden carving of a squirrel": { + " ": true, + " wearing a kimono": { + " ": true, + " reading a book": true, + " riding a motorcycle": true, + " playing the saxophone": true, + " chopping vegetables": true, + " sitting at a pottery wheel shaping a clay bowl": true, + " riding a skateboard": true, + " wielding a katana": true, + " eating a hamburger": true, + " dancing": true, + }, + " wearing a medieval suit of armor": { + " ": true, + " reading a book": true, + " riding a motorcycle": true, + " playing the saxophone": true, + " chopping vegetables": true, + " sitting at a pottery wheel shaping a clay bowl": true, + " riding a skateboard": true, + " wielding a katana": true, + " eating a hamburger": true, + " dancing": true, + }, + " wearing a purple hoodie": { + " ": true, + " reading a book": true, + " riding a motorcycle": true, + " playing the saxophone": true, + " chopping vegetables": true, + " sitting at a pottery wheel shaping a clay bowl": true, + " riding a skateboard": true, + " wielding a katana": true, + " eating a hamburger": true, + " dancing": true, + }, + " wearing a elegant ballgown": { + " ": true, + " reading a book": true, + " riding a motorcycle": true, + " playing the saxophone": true, + " chopping vegetables": true, + " sitting at a pottery wheel shaping a clay bowl": true, + " riding a skateboard": true, + " wielding a katana": true, + " eating a hamburger": true, + " dancing": true, + }, + } + }; + + // var trie = new Trie(); + // captions.forEach((caption) => { + // trie.insert(caption); + // }); + // console.log('trie', trie); + + var N_LEVELS = 1; + + // Array.prototype.extend = function (other_array) { + // /* You should include a test to check whether other_array really is an array */ + // other_array.forEach(function(v) {this.push(v)}, this); + // } + + function getTagDOM(node) { + var classes = ""; + // console.log('getTagDOM node', node); + if (!node.parent || !node.visible) + // Hide if this is the root node or the node is not marked visible. + classes = classes + "hidden "; + + if (node.selected) + classes = classes + "selected "; + + if (node.active) + classes = classes + "active "; + + node.htmlNode.classList = classes; + return node.htmlNode; + }; + + function getDOM(node, tags) { + var tag = [getTagDOM(node), node.depth]; + tags.push(tag); + // console.log('getDOM prefix', node.prefix, 'children:', node.children); + for (var i = 0; i < node.children.length; i++) { + var child = node.children[i]; + // console.log('getting dom for child', child.prefix) + getDOM(child, tags); + } + return tags; + }; + + function treeMap(node, fn, maxdepth) { + fn(node); + if (maxdepth > 1) { + for (var i = 0; i < node.children.length; i++) + treeMap(node.children[i], fn, maxdepth-1); + } + } + + function deactivate(node) { + node.active = false; + } + + function unselect(node) { + node.selected = false; + } + + function hide(node) { + node.visible = false; + } + + function show(node) { + node.visible = true; + } + + function getOnSelect(node) { + return function() { + // Unselect and hide all nodes in the tree. + var root = node; + while (root.parent) + root = root.parent; + treeMap(root, deactivate, 999); + treeMap(root, unselect, 999); + treeMap(root, hide, 999); + + // Hide siblings using the parent pointer. + // for (var i = 0; i < node.parent.children.length; i++) { + // node.parent.children[i].visible = false; + // node.parent.children[i].selected = false; + // } + + // Reveal this node. + node.selected = true; + node.active = true; + + // Reveal parents and set active. + var parent = node; + while (parent) { + parent.visible = true; + parent.active = true; + parent = parent.parent; + } + + // Reveal siblings of parent. + // if (node.parent) + // treeMap(node.parent, show, 2); + + // console.log('prefix', node.prefix, 'children len', node.children.length); + // for (var j = 0; j < node.children.length; j++) { + // console.log('revealing child', node.children[j].prefix); + // node.children[j].visible = true; + // } + treeMap(node, show, 999); + // console.log('selected', node); + + // Set video source. + if (node.videoURL) { + var video_src_el = document.getElementById("compositionalVideoSrc") + // video_el.src = node.videoURL; + video_src_el.setAttribute('data-src', node.videoURL); + } + + redraw(); + } + } + + class Node { + constructor(parent, prefix, segment, depth) { + this.depth = depth; + this.parent = parent; + this.prefix = prefix; + this.segment = segment; + if (captions.includes(this.prefix)) { + this.videoURL = ( + 'https://pub-b1f092b6867f4495b8f149d222a3bffe.r2.dev/journey_sept28/full/' + + prefix.replaceAll(' ', '_') + '_rgbdn_hq_15000.mp4'); + // console.log(this.videoURL); + } + this.selected = false; + // this.htmlNode = document.createElement("SPAN"); + // this.htmlNode.appendChild(document.createTextNode(this.segment)); + // this.htmlNode.onclick = this.select; + this.children = []; + + this.htmlNode = document.createElement("SPAN"); + this.htmlNode.appendChild(document.createTextNode(this.segment.trim())); + this.htmlNode.addEventListener("click", getOnSelect(this)); + } + } + + var tree = new Node(undefined, "", "", 0); + function addNodes(root, children_journey) { + N_LEVELS = Math.max(N_LEVELS, root.depth); + for (var segment in children_journey) { + // console.log('adding segment', segment); + var prefix = root.prefix + segment; + N_LEVELS = Math.max(N_LEVELS, root.depth + 1); + var node = new Node(root, prefix, segment, root.depth + 1); + root.children.push(node); + var grandchildJourney = children_journey[segment] + if (!(grandchildJourney == true || grandchildJourney == false)) + addNodes(node, children_journey[segment]); + } + } + addNodes(tree, journey); + + function redraw() { + var scroll = document.documentElement.scrollTop; + + // Clear tags from the DOM. + for (var depth = 0; depth < N_LEVELS; depth++) { + var tags_el = document.getElementById("compositional_tags_depth_" + depth); + // tags_el.innerHTML = ""; + while (tags_el.lastElementChild) { + tags_el.removeChild(tags_el.lastElementChild); + } + } + + // Add in updated tags. + var dom = []; + getDOM(tree, dom); + for (var i = 0; i < dom.length; i++) { + var tags_el = document.getElementById("compositional_tags_depth_" + dom[i][1]); + tags_el.appendChild(dom[i][0]); + } + + // Reset scroll position to prevent jumping. + document.documentElement.scrollTop = scroll; + } + + // console.log(tree); + // tree.htmlNode.click(); + tree.children[0].htmlNode.click(); + // redraw(); +})(); + + + +(function() { + // Click to load handlers for 3D meshes. + document.querySelectorAll('button.loads-parent-model').forEach((button) => { + button.addEventListener('click', () => { + // button.classList = button.classList + " disappearing"; + let model = button.parentElement.parentElement; + model.dismissPoster(); + button.classList = "btn btn-disabled"; + + // model.addEventListener('poster-dismissed', () => { + // let originalTexture = model.model.materials[0].pbrMetallicRoughness.baseColorTexture; + // let originalBaseColor = model.model.materials[0].pbrMetallicRoughness.baseColorFactor; + // console.log('model load', model, originalTexture); + + // let textureButton = model.querySelector('.toggles-parent-texture'); + // console.log('texture button', textureButton); + // // if (originalTexture && textureButton) { + // let textureOn = true; + // textureButton.onclick = () => { + // if (textureOn) { + // model.model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(null); + // model.model.materials[0].pbrMetallicRoughness.setBaseColorFactor([1., 1., 1., 1.]); + // textureOn = false; + // console.log('toggle texture off'); + // } else { + // model.model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(originalTexture) ; + // model.model.materials[0].pbrMetallicRoughness.setBaseColorFactor(originalBaseColor); + // textureOn = true; + // console.log('toggle texture on'); + // } + // }; + // // } + // }); + }); + }); + // document.querySelectorAll('button.toggles-parent-texture').forEach((button) => { + // let model = button.parentElement.parentElement; + // let originalTexture = model.materials[0].pbrMetallicRoughness.baseColorTexture; + // let textureOn = true; + // button.addEventListener('click', () => { + // if (textureOn) { + // model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(null); + // textureOn = false; + // } else { + // model.materials[0].pbrMetallicRoughness.baseColorTexture.setTexture(originalTexture) ; + // textureOn = true; + // } + // }); + // }); +})(); diff --git a/assets/js/stopExecutationTimeout.js b/assets/js/stopExecutationTimeout.js new file mode 100644 index 0000000..12a73e4 --- /dev/null +++ b/assets/js/stopExecutationTimeout.js @@ -0,0 +1,2 @@ +// https://cpwebassets.codepen.io/assets/common/stopExecutionOnTimeout-1b93190375e9ccc259df3a57c1abc0e64599724ae30d7ea4c6877eb615f89387.js +window.HUB_EVENTS={ASSET_ADDED:"ASSET_ADDED",ASSET_DELETED:"ASSET_DELETED",ASSET_DESELECTED:"ASSET_DESELECTED",ASSET_SELECTED:"ASSET_SELECTED",ASSET_UPDATED:"ASSET_UPDATED",CONSOLE_CHANGE:"CONSOLE_CHANGE",CONSOLE_CLOSED:"CONSOLE_CLOSED",CONSOLE_EVENT:"CONSOLE_EVENT",CONSOLE_OPENED:"CONSOLE_OPENED",CONSOLE_RUN_COMMAND:"CONSOLE_RUN_COMMAND",CONSOLE_SERVER_CHANGE:"CONSOLE_SERVER_CHANGE",EMBED_ACTIVE_PEN_CHANGE:"EMBED_ACTIVE_PEN_CHANGE",EMBED_ACTIVE_THEME_CHANGE:"EMBED_ACTIVE_THEME_CHANGE",EMBED_ATTRIBUTE_CHANGE:"EMBED_ATTRIBUTE_CHANGE",EMBED_RESHOWN:"EMBED_RESHOWN",FORMAT_FINISH:"FORMAT_FINISH",FORMAT_ERROR:"FORMAT_ERROR",FORMAT_START:"FORMAT_START",IFRAME_PREVIEW_RELOAD_CSS:"IFRAME_PREVIEW_RELOAD_CSS",IFRAME_PREVIEW_URL_CHANGE:"IFRAME_PREVIEW_URL_CHANGE",KEY_PRESS:"KEY_PRESS",LINTER_FINISH:"LINTER_FINISH",LINTER_START:"LINTER_START",PEN_CHANGE_SERVER:"PEN_CHANGE_SERVER",PEN_CHANGE:"PEN_CHANGE",PEN_EDITOR_CLOSE:"PEN_EDITOR_CLOSE",PEN_EDITOR_CODE_FOLD:"PEN_EDITOR_CODE_FOLD",PEN_EDITOR_ERRORS:"PEN_EDITOR_ERRORS",PEN_EDITOR_EXPAND:"PEN_EDITOR_EXPAND",PEN_EDITOR_FOLD_ALL:"PEN_EDITOR_FOLD_ALL",PEN_EDITOR_LOADED:"PEN_EDITOR_LOADED",PEN_EDITOR_REFRESH_REQUEST:"PEN_EDITOR_REFRESH_REQUEST",PEN_EDITOR_RESET_SIZES:"PEN_EDITOR_RESET_SIZES",PEN_EDITOR_SIZES_CHANGE:"PEN_EDITOR_SIZES_CHANGE",PEN_EDITOR_UI_CHANGE_SERVER:"PEN_EDITOR_UI_CHANGE_SERVER",PEN_EDITOR_UI_CHANGE:"PEN_EDITOR_UI_CHANGE",PEN_EDITOR_UI_DISABLE:"PEN_EDITOR_UI_DISABLE",PEN_EDITOR_UI_ENABLE:"PEN_EDITOR_UI_ENABLE",PEN_EDITOR_UNFOLD_ALL:"PEN_EDITOR_UNFOLD_ALL",PEN_ERROR_INFINITE_LOOP:"PEN_ERROR_INFINITE_LOOP",PEN_ERROR_RUNTIME:"PEN_ERROR_RUNTIME",PEN_ERRORS:"PEN_ERRORS",PEN_LIVE_CHANGE:"PEN_LIVE_CHANGE",PEN_LOGS:"PEN_LOGS",PEN_MANIFEST_CHANGE:"PEN_MANIFEST_CHANGE",PEN_MANIFEST_FULL:"PEN_MANIFEST_FULL",PEN_PREVIEW_FINISH:"PEN_PREVIEW_FINISH",PEN_PREVIEW_START:"PEN_PREVIEW_START",PEN_SAVED:"PEN_SAVED",POPUP_CLOSE:"POPUP_CLOSE",POPUP_OPEN:"POPUP_OPEN",POST_CHANGE:"POST_CHANGE",POST_SAVED:"POST_SAVED",PROCESSING_FINISH:"PROCESSING_FINISH",PROCESSING_START:"PROCESSED_STARTED"},"object"!=typeof window.CP&&(window.CP={}),window.CP.PenTimer={programNoLongerBeingMonitored:!1,timeOfFirstCallToShouldStopLoop:0,_loopExits:{},_loopTimers:{},START_MONITORING_AFTER:2e3,STOP_ALL_MONITORING_TIMEOUT:5e3,MAX_TIME_IN_LOOP_WO_EXIT:2200,exitedLoop:function(E){this._loopExits[E]=!0},shouldStopLoop:function(E){if(this.programKilledSoStopMonitoring)return!0;if(this.programNoLongerBeingMonitored)return!1;if(this._loopExits[E])return!1;var _=this._getTime();if(0===this.timeOfFirstCallToShouldStopLoop)return this.timeOfFirstCallToShouldStopLoop=_,!1;var o=_-this.timeOfFirstCallToShouldStopLoop;if(othis.STOP_ALL_MONITORING_TIMEOUT)return this.programNoLongerBeingMonitored=!0,!1;try{this._checkOnInfiniteLoop(E,_)}catch(N){return this._sendErrorMessageToEditor(),this.programKilledSoStopMonitoring=!0,!0}return!1},_sendErrorMessageToEditor:function(){try{if(this._shouldPostMessage()){var E={topic:HUB_EVENTS.PEN_ERROR_INFINITE_LOOP,data:{line:this._findAroundLineNumber()}};parent.postMessage(E,"*")}else this._throwAnErrorToStopPen()}catch(_){this._throwAnErrorToStopPen()}},_shouldPostMessage:function(){return document.location.href.match(/boomboom/)},_throwAnErrorToStopPen:function(){throw"We found an infinite loop in your Pen. We've stopped the Pen from running. More details and workarounds at https://blog.codepen.io/2016/06/08/can-adjust-infinite-loop-protection-timing/"},_findAroundLineNumber:function(){var E=new Error,_=0;if(E.stack){var o=E.stack.match(/boomboom\S+:(\d+):\d+/);o&&(_=o[1])}return _},_checkOnInfiniteLoop:function(E,_){if(!this._loopTimers[E])return this._loopTimers[E]=_,!1;var o;if(_-this._loopTimers[E]>this.MAX_TIME_IN_LOOP_WO_EXIT)throw"Infinite Loop found on loop: "+E},_getTime:function(){return+new Date}},window.CP.shouldStopExecution=function(E){var _=window.CP.PenTimer.shouldStopLoop(E);return!0===_&&console.warn("[CodePen]: An infinite loop (or a loop taking too long) was detected, so we stopped its execution. More details at https://blog.codepen.io/2016/06/08/can-adjust-infinite-loop-protection-timing/"),_},window.CP.exitedLoop=function(E){window.CP.PenTimer.exitedLoop(E)}; \ No newline at end of file diff --git a/assets/js/video_comparison.js b/assets/js/video_comparison.js new file mode 100644 index 0000000..cefa3e2 --- /dev/null +++ b/assets/js/video_comparison.js @@ -0,0 +1,115 @@ +// From https://dorverbin.github.io/refnerf/. +// This is based on: http://thenewcode.com/364/Interactive-Before-and-After-Video-Comparison-in-HTML5-Canvas +// With additional modifications based on: https://jsfiddle.net/7sk5k4gp/13/ + +function playVids(videoId) { + var videoMerge = document.getElementById(videoId + "Merge"); + var vid = document.getElementById(videoId); + + var position = 0.75; + var vidWidth = vid.videoWidth/2; + var vidHeight = vid.videoHeight; + + var mergeContext = videoMerge.getContext("2d"); + + + if (vid.readyState > 3) { + vid.play(); + + function trackLocation(e) { + // Normalize to [0, 1] + bcr = videoMerge.getBoundingClientRect(); + position = ((e.pageX - bcr.x) / bcr.width); + // videoMerge.setAttribute('data-position', position); + } + function trackLocationTouch(e) { + // Normalize to [0, 1] + bcr = videoMerge.getBoundingClientRect(); + position = ((e.touches[0].pageX - bcr.x) / bcr.width); + } + + videoMerge.addEventListener("mousemove", trackLocation, false); + videoMerge.addEventListener("touchstart", trackLocationTouch, false); + videoMerge.addEventListener("touchmove", trackLocationTouch, false); + + + function drawLoop() { + mergeContext.drawImage(vid, 0, 0, vidWidth, vidHeight, 0, 0, vidWidth, vidHeight); + var colStart = (vidWidth * position).clamp(0.0, vidWidth); + var colWidth = (vidWidth - (vidWidth * position)).clamp(0.0, vidWidth); + mergeContext.drawImage(vid, colStart+vidWidth, 0, colWidth, vidHeight, colStart, 0, colWidth, vidHeight); + requestAnimationFrame(drawLoop); + + + var arrowLength = 0.09 * vidHeight; + var arrowheadWidth = 0.025 * vidHeight; + var arrowheadLength = 0.04 * vidHeight; + var arrowPosY = vidHeight / 10; + var arrowWidth = 0.007 * vidHeight; + var currX = vidWidth * position; + + // Draw circle + mergeContext.arc(currX, arrowPosY, arrowLength*0.7, 0, Math.PI * 2, false); + mergeContext.fillStyle = "#FFD79340"; + mergeContext.fill() + //mergeContext.strokeStyle = "#444444"; + //mergeContext.stroke() + + // Draw border + mergeContext.beginPath(); + mergeContext.moveTo(vidWidth*position, 0); + mergeContext.lineTo(vidWidth*position, vidHeight); + mergeContext.closePath() + mergeContext.strokeStyle = "#444444"; + mergeContext.lineWidth = 5; + mergeContext.stroke(); + + // Draw arrow + mergeContext.beginPath(); + mergeContext.moveTo(currX, arrowPosY - arrowWidth/2); + + // Move right until meeting arrow head + mergeContext.lineTo(currX + arrowLength/2 - arrowheadLength/2, arrowPosY - arrowWidth/2); + + // Draw right arrow head + mergeContext.lineTo(currX + arrowLength/2 - arrowheadLength/2, arrowPosY - arrowheadWidth/2); + mergeContext.lineTo(currX + arrowLength/2, arrowPosY); + mergeContext.lineTo(currX + arrowLength/2 - arrowheadLength/2, arrowPosY + arrowheadWidth/2); + mergeContext.lineTo(currX + arrowLength/2 - arrowheadLength/2, arrowPosY + arrowWidth/2); + + // Go back to the left until meeting left arrow head + mergeContext.lineTo(currX - arrowLength/2 + arrowheadLength/2, arrowPosY + arrowWidth/2); + + // Draw left arrow head + mergeContext.lineTo(currX - arrowLength/2 + arrowheadLength/2, arrowPosY + arrowheadWidth/2); + mergeContext.lineTo(currX - arrowLength/2, arrowPosY); + mergeContext.lineTo(currX - arrowLength/2 + arrowheadLength/2, arrowPosY - arrowheadWidth/2); + mergeContext.lineTo(currX - arrowLength/2 + arrowheadLength/2, arrowPosY); + + mergeContext.lineTo(currX - arrowLength/2 + arrowheadLength/2, arrowPosY - arrowWidth/2); + mergeContext.lineTo(currX, arrowPosY - arrowWidth/2); + + mergeContext.closePath(); + + mergeContext.fillStyle = "#444444"; + mergeContext.fill(); + } + requestAnimationFrame(drawLoop); + } +} + +Number.prototype.clamp = function(min, max) { + return Math.min(Math.max(this, min), max); +}; + + +function resizeAndPlay(element) +{ + var cv = document.getElementById(element.id + "Merge"); + cv.width = element.videoWidth/2; + cv.height = element.videoHeight; + element.play(); + element.style.height = "0px"; // Hide video without stopping it + + playVids(element.id); +} diff --git a/assets/js/yall.js b/assets/js/yall.js new file mode 100644 index 0000000..e030a2f --- /dev/null +++ b/assets/js/yall.js @@ -0,0 +1,3 @@ +// https://raw.githubusercontent.com/malchata/yall.js/main/dist/yall.js +function e(e,o){for(const t in o){const n=o[t];e.addEventListener(t,n.listener||n,n.options||void 0)}}const o="IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype,t=/baidu|(?:google|bing|yandex|duckduck)bot/i.test(navigator.userAgent),n=["src","poster"];function r(e,o){for(const t of n)t in e.dataset&&(e.setAttribute(t,e.dataset[t]),e.classList.contains(o)&&e.classList.remove(o))}function s(e,o,t,n){if("VIDEO"==e.nodeName){const t=Array.from(e.querySelectorAll("source"));for(const e of t)r(e,o);e.load()}r(e,o);const s=e.classList;s.contains(t)&&(s.remove(t),s.add(n))}function i(n){const r=n?.lazyClass||"lazy",i=n?.lazyBackgroundClass||"lazy-bg",c=n?.lazyBackgroundLoaded||"lazy-bg-loaded",a=n?.threshold||200,l=n?.events||{},d=n?.observeChanges||!1,f=n?.observeRootSelector||"body",u=n?.mutationObserverOptions||{childList:!0,subtree:!0},b=`video.${r},.${i}`;let v=Array.from(document.querySelectorAll(b));for(const o of v)e(o,l);if(!0===o&&!1===t){var y=new IntersectionObserver(e=>{for(const o of e)if(o.isIntersecting||o.intersectionRatio){const{target:e}=o;s(e,r,i,c),y.unobserve(e),v=v.filter(o=>o!=e),0===v.length&&!1===d&&y.disconnect()}},{rootMargin:`${a}px 0%`});for(const e of v)y.observe(e);d&&new MutationObserver(()=>{const n=document.querySelectorAll(b);for(const r of n)!1===v.includes(r)&&(v.push(r),e(r,l),!0===o&&!1===t&&y.observe(r))}).observe(document.querySelector(f),u)}else if(t)for(const e of v)s(e,r,i,c)} window.yall = i; +//# sourceMappingURL=yall.js.map diff --git a/assets/js/yall.js.map b/assets/js/yall.js.map new file mode 100644 index 0000000..8e41aec --- /dev/null +++ b/assets/js/yall.js.map @@ -0,0 +1 @@ +{"version":3,"file":"yall.js","sources":["../src/lib/yall-bind-events.js","../src/lib/constants.js","../src/lib/yall-flip-data-attrs.js","../src/lib/yall-load.js","../src/index.js"],"sourcesContent":["export function yallBindEvents (element, events) {\n for (const eventIndex in events) {\n const eventObject = events[eventIndex];\n\n element.addEventListener(eventIndex, eventObject.listener || eventObject, eventObject.options || undefined);\n }\n}\n","export const INTERSECTION_OBSERVER_SUPPORTED = \"IntersectionObserver\" in window && \"IntersectionObserverEntry\" in window && \"intersectionRatio\" in window.IntersectionObserverEntry.prototype;\nexport const CRAWLER = /baidu|(?:google|bing|yandex|duckduck)bot/i.test(navigator.userAgent);\nexport const DATA_ATTRS = [\"src\", \"poster\"];\n","// App-specific\nimport { DATA_ATTRS } from \"./constants.js\";\n\nexport function yallFlipDataAttrs (element, lazyClass) {\n for (const dataAttr of DATA_ATTRS) {\n if (dataAttr in element.dataset) {\n element.setAttribute(dataAttr, element.dataset[dataAttr]);\n\n if (element.classList.contains(lazyClass)) {\n element.classList.remove(lazyClass);\n }\n }\n }\n}\n","// App-specific\nimport { yallFlipDataAttrs } from \"./yall-flip-data-attrs.js\";\n\nexport function yallLoad (element, lazyClass, lazyBackgroundClass, lazyBackgroundLoaded) {\n if (element.nodeName == \"VIDEO\") {\n const sourceElements = Array.from(element.querySelectorAll(\"source\"));\n\n for (const sourceElement of sourceElements) {\n yallFlipDataAttrs(sourceElement, lazyClass);\n }\n\n element.load();\n }\n\n yallFlipDataAttrs(element, lazyClass);\n\n const classList = element.classList;\n\n // Lazy load CSS background images\n if (classList.contains(lazyBackgroundClass)) {\n classList.remove(lazyBackgroundClass);\n classList.add(lazyBackgroundLoaded);\n }\n}\n","// App-specific\nimport { yallBindEvents } from \"./lib/yall-bind-events.js\";\nimport { yallLoad } from \"./lib/yall-load.js\";\nimport { INTERSECTION_OBSERVER_SUPPORTED, CRAWLER } from \"./lib/constants.js\";\n\nexport function yall (options) {\n const lazyClass = options?.lazyClass || \"lazy\";\n const lazyBackgroundClass = options?.lazyBackgroundClass || \"lazy-bg\";\n const lazyBackgroundLoaded = options?.lazyBackgroundLoaded || \"lazy-bg-loaded\";\n const threshold = options?.threshold || 200;\n const events = options?.events || {};\n const observeChanges = options?.observeChanges || false;\n const observeRootSelector = options?.observeRootSelector || \"body\";\n const mutationObserverOptions = options?.mutationObserverOptions || {\n childList: true,\n subtree: true\n };\n const lazySelector = `video.${lazyClass},.${lazyBackgroundClass}`;\n let lazyElements = Array.from(document.querySelectorAll(lazySelector));\n\n for (const lazyElement of lazyElements) {\n yallBindEvents(lazyElement, events);\n }\n\n // First we check if IntersectionObserver is supported. If the\n // current user agent is a known crawler we just load everything.\n if (INTERSECTION_OBSERVER_SUPPORTED === true && CRAWLER === false) {\n var intersectionListener = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n if (entry.isIntersecting || entry.intersectionRatio) {\n const { target } = entry;\n\n yallLoad(target, lazyClass, lazyBackgroundClass, lazyBackgroundLoaded);\n\n intersectionListener.unobserve(target);\n lazyElements = lazyElements.filter(lazyElement => lazyElement != target);\n\n // If all the elements that were detected at load time are all loaded\n // and we're not observing for changes, we're all done here.\n if (lazyElements.length === 0 && observeChanges === false) {\n intersectionListener.disconnect();\n }\n }\n }\n }, {\n rootMargin: `${threshold}px 0%`\n });\n\n for (const lazyElement of lazyElements) {\n intersectionListener.observe(lazyElement);\n }\n\n if (observeChanges) {\n new MutationObserver(() => {\n const newElements = document.querySelectorAll(lazySelector);\n\n for (const newElement of newElements) {\n if (lazyElements.includes(newElement) === false) {\n lazyElements.push(newElement);\n yallBindEvents(newElement, events);\n\n if (INTERSECTION_OBSERVER_SUPPORTED === true && CRAWLER === false) {\n intersectionListener.observe(newElement);\n }\n }\n }\n }).observe(document.querySelector(observeRootSelector), mutationObserverOptions);\n }\n } else if (CRAWLER) {\n for (const lazyElement of lazyElements) {\n yallLoad(lazyElement, lazyClass, lazyBackgroundClass, lazyBackgroundLoaded);\n }\n }\n}\n"],"names":["yallBindEvents","element","events","eventIndex","eventObject","addEventListener","listener","options","undefined","INTERSECTION_OBSERVER_SUPPORTED","window","IntersectionObserverEntry","prototype","CRAWLER","test","navigator","userAgent","yallFlipDataAttrs","lazyClass","dataAttr","DATA_ATTRS","dataset","setAttribute","classList","contains","remove","yallLoad","lazyBackgroundClass","lazyBackgroundLoaded","nodeName","sourceElements","Array","from","querySelectorAll","sourceElement","load","add","yall","threshold","observeChanges","observeRootSelector","mutationObserverOptions","childList","subtree","lazySelector","lazyElements","document","lazyElement","entries","entry","isIntersecting","intersectionRatio","target","intersectionListener","unobserve","filter","length","disconnect","rootMargin","observe","MutationObserver","newElements","includes","newElement","push","querySelector"],"mappings":"SAAOA,EAAyBC,EAASC,GACvC,IAAK,MAAMC,KAAXD,EAAiC,CAC/B,MAAME,EAAcF,EAAOC,GAE3BF,EAAQI,iBAAiBF,EAAYC,EAAYE,UAAYF,EAAaA,EAAYG,cAAWC,UCJzDC,EAAG,yBAA0BC,QAAU,8BAA+BA,QAAU,6BAA8BC,0BAA0BC,UAChKC,EAAG,4CAA4CC,KAAKC,UAAUC,aACxD,CAAC,MAAO,UCC3B,SAAAC,EAA4BhB,EAASiB,GAC1C,IAAK,MAAMC,KAAYC,EACjBD,KAAYlB,EAAQoB,UACtBpB,EAAQqB,aAAaH,EAAUlB,EAAQoB,QAAQF,IAE3ClB,EAAQsB,UAAUC,SAASN,IAC7BjB,EAAQsB,UAAUE,OAAOP,ICNjBQ,SAAAA,EAAUzB,EAASiB,EAAWS,EAAqBC,GACjE,GAAwB,SAApB3B,EAAQ4B,SAAqB,CAC/B,MAAoBC,EAAGC,MAAMC,KAAK/B,EAAQgC,iBAAiB,WAE3D,IAAK,MAAMC,KAAiBJ,EAC1Bb,EAAkBiB,EAAehB,GAGnCjB,EAAQkC,OAGVlB,EAAkBhB,EAASiB,GAE3B,MAAMK,EAAYtB,EAAQsB,UAGtBA,EAAUC,SAASG,KACrBJ,EAAUE,OAAOE,GACjBJ,EAAUa,IAAIR,aChBXS,EAAe9B,GACpB,MAAMW,EAAYX,GAASW,WAAa,OAClCS,EAAsBpB,GAASoB,qBAAuB,UACtDC,EAAuBrB,GAASqB,sBAAwB,mBAC5CrB,GAAS+B,WAAa,MACzB/B,GAASL,QAAU,GACdqC,EAAGhC,GAASgC,iBAAkB,EACzBC,EAAGjC,GAASiC,qBAAuB,OAC/BC,EAAGlC,GAASkC,yBAA2B,CAClEC,WAAW,EACXC,SAAS,GAEOC,EAAI,SAAQ1B,MAAcS,IAC5C,IAAIkB,EAAed,MAAMC,KAAKc,SAASb,iBAAiBW,IAExD,IAAK,WAAqBC,EACxB7C,EAAe+C,EAAa7C,GAK9B,IAAwC,IAApCO,IAAwD,IAAZI,EAAmB,CACjE,MAA2B,yBAA0BmC,IACnD,IAAK,MAAMC,KAAXD,EACE,GAAIC,EAAMC,gBAAkBD,EAAME,kBAAmB,CACnD,MAAMC,OAAEA,GAAWH,EAEnBvB,EAAS0B,EAAQlC,EAAWS,EAAqBC,GAEjDyB,EAAqBC,UAAUF,GAC/BP,EAAeA,EAAaU,OAAOR,GAAeA,GAAeK,GAIrC,IAAxBP,EAAaW,SAAmC,IAAnBjB,GAC/Bc,EAAqBI,eAI1B,CACDC,WAAa,GAAEpB,WAGjB,IAAK,MAALS,OACEM,EAAqBM,QAAQZ,GAG3BR,GACF,IAAAqB,iBAAqB,KACnB,QAAoBd,SAASb,iBAAiBW,GAE9C,IAAK,WAAoBiB,GACmB,IAAtChB,EAAaiB,SAASC,KACxBlB,EAAamB,KAAKD,GAClB/D,EAAe+D,EAAY7D,IAEa,IAApCO,IAAwD,IAAZI,GAC9CwC,EAAqBM,QAAQI,MAIlCJ,QAAQb,SAASmB,cAAczB,GAAsBC,QAErD,GAAI5B,EACT,IAAK,WAAqBgC,EACxBnB,EAASqB,EAAa7B,EAAWS,EAAqBC"} \ No newline at end of file diff --git a/assets/nopgc.png b/assets/nopgc.png deleted file mode 100644 index ec7d4a2..0000000 Binary files a/assets/nopgc.png and /dev/null differ diff --git a/assets/pgc.png b/assets/pgc.png deleted file mode 100644 index 00d3dbd..0000000 Binary files a/assets/pgc.png and /dev/null differ diff --git a/assets/poster/car.png b/assets/poster/car.png new file mode 100644 index 0000000..647680e Binary files /dev/null and b/assets/poster/car.png differ diff --git a/assets/poster/horse.png b/assets/poster/horse.png new file mode 100644 index 0000000..68529bc Binary files /dev/null and b/assets/poster/horse.png differ diff --git a/assets/poster/panda.png b/assets/poster/panda.png new file mode 100644 index 0000000..5b3437b Binary files /dev/null and b/assets/poster/panda.png differ diff --git a/assets/video/mergevideo.py b/assets/video/mergevideo.py new file mode 100644 index 0000000..1b4047e --- /dev/null +++ b/assets/video/mergevideo.py @@ -0,0 +1,26 @@ +import pdb +import moviepy.editor as mp +import os +file_list = [ + 'a_asian_Santa_Claus.mp4', + 'a_metal_bunny_sitting_on_top_of_a_stack_of_chocolate_cookie.mp4', + 'Beautifully_designed_hyper-realistic_futuristic_electric_vehicle_for_elderly_people_highest_poly_count_highest_contrast_highest_detail_highest_quality_UHD.mp4', + 'Beautifully_designed_hyper-realistic_psychedelic_bee-concept_futuristic_fighter_jet_aircraft_highest_contrast_highest_poly_count_highest_detail_highest_quality_UHD.mp4' +] +method_list = [ + 'magic3d', + 'prolific', + 'ours' +] + +for file in file_list: + + video1 = mp.VideoFileClip(os.path.join(method_list[0], file)) + video2 = mp.VideoFileClip(os.path.join(method_list[1], file)) + video3 = mp.VideoFileClip(os.path.join(method_list[2], file)) + + # 将三个视频水平拼接成一个 + final_video = mp.clips_array([[video1, video2, video3]]) + + # 保存拼接后的视频 + final_video.write_videofile(file, codec='libx264') diff --git a/assets/video/more_examples/bear.mp4 b/assets/video/more_examples/bear.mp4 new file mode 100644 index 0000000..d14389e Binary files /dev/null and b/assets/video/more_examples/bear.mp4 differ diff --git a/assets/video/more_examples/bed.mp4 b/assets/video/more_examples/bed.mp4 new file mode 100644 index 0000000..d013e60 Binary files /dev/null and b/assets/video/more_examples/bed.mp4 differ diff --git a/assets/video/more_examples/cherry_tree.mp4 b/assets/video/more_examples/cherry_tree.mp4 new file mode 100644 index 0000000..d30d651 Binary files /dev/null and b/assets/video/more_examples/cherry_tree.mp4 differ diff --git a/assets/video/more_examples/pikachu.mp4 b/assets/video/more_examples/pikachu.mp4 new file mode 100644 index 0000000..e807214 Binary files /dev/null and b/assets/video/more_examples/pikachu.mp4 differ diff --git a/assets/video/more_examples/tree_chair.mp4 b/assets/video/more_examples/tree_chair.mp4 new file mode 100644 index 0000000..b11aa4f Binary files /dev/null and b/assets/video/more_examples/tree_chair.mp4 differ diff --git a/assets/video/more_examples/women.mp4 b/assets/video/more_examples/women.mp4 new file mode 100644 index 0000000..5a792f8 Binary files /dev/null and b/assets/video/more_examples/women.mp4 differ diff --git a/assets/video/sd+pgc/camera.mp4 b/assets/video/sd+pgc/camera.mp4 new file mode 100644 index 0000000..51b5294 Binary files /dev/null and b/assets/video/sd+pgc/camera.mp4 differ diff --git a/assets/video/sd+pgc/car.mp4 b/assets/video/sd+pgc/car.mp4 new file mode 100644 index 0000000..152a8f3 Binary files /dev/null and b/assets/video/sd+pgc/car.mp4 differ diff --git a/assets/video/sd+pgc/cat.mp4 b/assets/video/sd+pgc/cat.mp4 new file mode 100644 index 0000000..776275d Binary files /dev/null and b/assets/video/sd+pgc/cat.mp4 differ diff --git a/assets/video/sd+pgc/dragon.mp4 b/assets/video/sd+pgc/dragon.mp4 new file mode 100644 index 0000000..8dfa87a Binary files /dev/null and b/assets/video/sd+pgc/dragon.mp4 differ diff --git a/assets/video/sd+pgc/luffy.mp4 b/assets/video/sd+pgc/luffy.mp4 new file mode 100644 index 0000000..d531002 Binary files /dev/null and b/assets/video/sd+pgc/luffy.mp4 differ diff --git a/assets/video/sd+pgc/man.mp4 b/assets/video/sd+pgc/man.mp4 new file mode 100644 index 0000000..5cdc636 Binary files /dev/null and b/assets/video/sd+pgc/man.mp4 differ diff --git a/assets/video/sd+pgc/wolfman.mp4 b/assets/video/sd+pgc/wolfman.mp4 new file mode 100644 index 0000000..0f09359 Binary files /dev/null and b/assets/video/sd+pgc/wolfman.mp4 differ diff --git a/assets/video/sd/camera.mp4 b/assets/video/sd/camera.mp4 new file mode 100644 index 0000000..9d40396 Binary files /dev/null and b/assets/video/sd/camera.mp4 differ diff --git a/assets/video/sd/car.mp4 b/assets/video/sd/car.mp4 new file mode 100644 index 0000000..1bd52bf Binary files /dev/null and b/assets/video/sd/car.mp4 differ diff --git a/assets/video/sd/cat.mp4 b/assets/video/sd/cat.mp4 new file mode 100644 index 0000000..2d16a50 Binary files /dev/null and b/assets/video/sd/cat.mp4 differ diff --git a/assets/video/sd/dragon.mp4 b/assets/video/sd/dragon.mp4 new file mode 100644 index 0000000..bed5f36 Binary files /dev/null and b/assets/video/sd/dragon.mp4 differ diff --git a/assets/video/sd/luffy.mp4 b/assets/video/sd/luffy.mp4 new file mode 100644 index 0000000..b41fee8 Binary files /dev/null and b/assets/video/sd/luffy.mp4 differ diff --git a/assets/video/sd/man.mp4 b/assets/video/sd/man.mp4 new file mode 100644 index 0000000..0736e0d Binary files /dev/null and b/assets/video/sd/man.mp4 differ diff --git a/assets/video/sd/wolfman.mp4 b/assets/video/sd/wolfman.mp4 new file mode 100644 index 0000000..845a176 Binary files /dev/null and b/assets/video/sd/wolfman.mp4 differ diff --git a/assets/video/sdxl+pgc/camera.mp4 b/assets/video/sdxl+pgc/camera.mp4 new file mode 100644 index 0000000..da3690f Binary files /dev/null and b/assets/video/sdxl+pgc/camera.mp4 differ diff --git a/assets/video/sdxl+pgc/car.mp4 b/assets/video/sdxl+pgc/car.mp4 new file mode 100644 index 0000000..2d122a9 Binary files /dev/null and b/assets/video/sdxl+pgc/car.mp4 differ diff --git a/assets/video/sdxl+pgc/cat.mp4 b/assets/video/sdxl+pgc/cat.mp4 new file mode 100644 index 0000000..a180d34 Binary files /dev/null and b/assets/video/sdxl+pgc/cat.mp4 differ diff --git a/assets/video/sdxl+pgc/dragon.mp4 b/assets/video/sdxl+pgc/dragon.mp4 new file mode 100644 index 0000000..7f922f8 Binary files /dev/null and b/assets/video/sdxl+pgc/dragon.mp4 differ diff --git a/assets/video/sdxl+pgc/luffy.mp4 b/assets/video/sdxl+pgc/luffy.mp4 new file mode 100644 index 0000000..23eca9e Binary files /dev/null and b/assets/video/sdxl+pgc/luffy.mp4 differ diff --git a/assets/video/sdxl+pgc/man.mp4 b/assets/video/sdxl+pgc/man.mp4 new file mode 100644 index 0000000..27ced6e Binary files /dev/null and b/assets/video/sdxl+pgc/man.mp4 differ diff --git a/assets/video/sdxl+pgc/wolfman.mp4 b/assets/video/sdxl+pgc/wolfman.mp4 new file mode 100644 index 0000000..08bc8cc Binary files /dev/null and b/assets/video/sdxl+pgc/wolfman.mp4 differ diff --git a/assets/video/sdxl/camera.mp4 b/assets/video/sdxl/camera.mp4 new file mode 100644 index 0000000..dd39023 Binary files /dev/null and b/assets/video/sdxl/camera.mp4 differ diff --git a/assets/video/sdxl/car.mp4 b/assets/video/sdxl/car.mp4 new file mode 100644 index 0000000..098100e Binary files /dev/null and b/assets/video/sdxl/car.mp4 differ diff --git a/assets/video/sdxl/cat.mp4 b/assets/video/sdxl/cat.mp4 new file mode 100644 index 0000000..041befa Binary files /dev/null and b/assets/video/sdxl/cat.mp4 differ diff --git a/assets/video/sdxl/dragon.mp4 b/assets/video/sdxl/dragon.mp4 new file mode 100644 index 0000000..d57a5bc Binary files /dev/null and b/assets/video/sdxl/dragon.mp4 differ diff --git a/assets/video/sdxl/luffy.mp4 b/assets/video/sdxl/luffy.mp4 new file mode 100644 index 0000000..a7f8a7e Binary files /dev/null and b/assets/video/sdxl/luffy.mp4 differ diff --git a/assets/video/sdxl/man.mp4 b/assets/video/sdxl/man.mp4 new file mode 100644 index 0000000..2ade192 Binary files /dev/null and b/assets/video/sdxl/man.mp4 differ diff --git a/assets/video/sdxl/wolfman.mp4 b/assets/video/sdxl/wolfman.mp4 new file mode 100644 index 0000000..5f67cb9 Binary files /dev/null and b/assets/video/sdxl/wolfman.mp4 differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..9fd0f02 --- /dev/null +++ b/index.html @@ -0,0 +1,659 @@ + + + + + + + + + + + PGC-3D + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

Enhancing High-Resolution 3D Generation through Pixel-wise Gradient Clipping

+
+
+
+
+
Zijie Pan1, Jiachen Lu1, Xiatian Zhu2, Li Zhang1
+
1Fudan University 2University of Surrey
+
+
+
+
+ +
+ +
+ +
+
+
+
+

+
Abstract
+

+

+ + High-resolution 3D object generation remains a challenging task primarily due to the limited availability of comprehensive annotated training data. Recent advancements have aimed to overcome this constraint by harnessing image generative models, pretrained on extensive curated web datasets, using knowledge transfer techniques like Score Distillation Sampling (SDS). +Efficiently addressing the requirements of high-resolution rendering often necessitates the adoption of latent representation-based models, such as the Latent Diffusion Model (LDM). In this framework, a significant challenge arises: +To compute gradients for individual image pixels, it is necessary to backpropagate gradients from the designated latent space through the frozen components of the image model, such as the VAE encoder used within LDM. However, this gradient propagation pathway has never been optimized, remaining uncontrolled during training. +We find that the unregulated gradients adversely affect the 3D model's capacity in acquiring texture-related information from the image generative model, +leading to poor quality appearance synthesis. +To address this overarching challenge, we propose an innovative operation termed Pixel-wise Gradient Clipping (PGC) designed for seamless integration into existing 3D generative models, thereby enhancing their synthesis quality. Specifically, +we control the magnitude of stochastic gradients by clipping the pixel-wise gradients efficiently, +while preserving crucial texture-related gradient directions. +Despite this simplicity and minimal extra cost, extensive experiments demonstrate the efficacy of our PGC +in enhancing the performance of existing 3D generative models +for high-resolution object rendering.

+
+
+
+ + +
+ +
+
+

+
With PGC, high-quality and high-resolution 3D models/textures can be generated from given text prompts.
+

+
+
+ + +

a wooden car

+
+
+ + +

an astronaut riding a horse

+ +
+
+ + +

A panda is dressed in armor, holding a spear in one hand and a shield in the other

+
+
+
+
+ +
+
+
+
+

+
Comparisons and ablation studies
+

+
+
+
+
+
+
+

+ By optimizing SDF field and texture field as Fantasia3D with different LDMs, we show a marked improvement in high-resolution 3D texture synthesis using our proposed PGC.

+
+
+
+ +
+
+
+ +
SD v2.1-base
+
+ +
+ +
+PGC
+
+ +
+ +
SDXL v0.9
+
+ +
+ +
+PGC
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+ + +
+
+ +
an angry cat
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+ + +
+
+ +
a black people taking pictures with a camera
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+ + +
+
+ +
a dragon holding a sword
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+ + +
+
+ +
a castle on a car
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+ + +
+
+ +
an old man
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+ + +
+
+ +
a werewolf archer
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+
+ + +
+
+ +
Luffy wearing a motorcycle helmet
+
+
+ +
+ +
+
+
+
+

More results

+
+
+
+
+
+
+
+ +
A realistic double bed
+
+
+
+
+ +
A blossoming pink cherry tree
+
+
+
+
+ +
a chair that looks like a tree
+
+
+
+ +
+
+
+ +
a walking asian woman in red dress
+
+
+
+
+ +
a Pikachu Samurai with white headband
+
+
+
+
+ +
A brown bear is dressed in armor, holding a spear in one hand and a shield in the other.
+
+
+
+
+ + +
+
+
+

+ Citation +

+ +
+@article{pan2023enhancing,
+  title={Enhancing High-Resolution 3D Generation through Pixel-wise Gradient Clipping},
+  author={Pan, Zijie and Lu, Jiachen and Zhu, Xiatian and Zhang, Li},
+  journal={arXiv preprint arXiv 2310.12474},
+  year={2023}
+}
+
+              
+
+
+
+
+ +
+
+ +
+ + + + diff --git a/site.webmanifest b/site.webmanifest new file mode 100644 index 0000000..a793000 --- /dev/null +++ b/site.webmanifest @@ -0,0 +1 @@ +{"name":"DreamFusion: Text-to-3D with 2D Diffusion","short_name":"DreamFusion","icons":[{"src":"/assets/icon/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}