From bf190a98e81b8836246e0bcd92f60a1a51b3f95a Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 16 Sep 2019 23:26:59 -0500 Subject: [PATCH] Added mathjax and problem markdown editor --- codebox/controllers/admin/problem/edit.moon | 2 +- codebox/static/coffee/admin_problem.coffee | 14 + codebox/static/css/core.css | 2 +- codebox/static/css/core.css.map | 2 +- codebox/static/js/admin_problem.js | 18 +- codebox/static/js/admin_problem.js.map | 4 +- codebox/static/js/vendor/ace/mode-markdown.js | 3189 +++++++++++++++++ codebox/static/scss/core.scss | 4 + codebox/views/admin/problem/edit.moon | 46 +- codebox/views/problem/problem.moon | 6 +- 10 files changed, 3258 insertions(+), 29 deletions(-) create mode 100644 codebox/static/js/vendor/ace/mode-markdown.js diff --git a/codebox/controllers/admin/problem/edit.moon b/codebox/controllers/admin/problem/edit.moon index fda4193..f39ca46 100644 --- a/codebox/controllers/admin/problem/edit.moon +++ b/codebox/controllers/admin/problem/edit.moon @@ -8,7 +8,7 @@ make_controller middleware: { 'logged_in', 'admin_required' } - scripts: { 'admin_problem' } + scripts: { 'admin_problem', 'vendor/ace/ace' } get: capture_errors_json => @flow 'csrf_setup' diff --git a/codebox/static/coffee/admin_problem.coffee b/codebox/static/coffee/admin_problem.coffee index 0fc07b5..346b235 100644 --- a/codebox/static/coffee/admin_problem.coffee +++ b/codebox/static/coffee/admin_problem.coffee @@ -48,6 +48,20 @@ setup_handlers = -> alert "Deleted #{problem_name}." window.location.reload() + $('input[type=submit]').click (e) -> + e.preventDefault() + fields = {} + for f in $('form').serializeArray() + fields[f.name] = f.value + + edit = ace.edit 'code-editor' + fields.description = edit.getValue() + + $.post window.location.pathname, fields, -> + alert 'Updated problem info' + window.location.reload() + + $(document).ready -> setup_handlers() diff --git a/codebox/static/css/core.css b/codebox/static/css/core.css index c9c1a53..ac4da03 100644 --- a/codebox/static/css/core.css +++ b/codebox/static/css/core.css @@ -1 +1 @@ -.navbar{z-index:10000;width:100%;background:#0077c2;height:47px;position:relative;box-shadow:0px 0px 10px 0px rgba(0,0,0,.7);display:grid;grid-template-columns:1fr 6fr 1fr}.navbar .navbar-logo{padding-left:8px;text-align:center}.navbar .navbar-logo img{max-height:calc(47px - 2px);display:inline}.navbar ul{display:block;text-align:center;font-size:0}.navbar ul a li{margin:0;display:inline-block;cursor:pointer;font-size:24px;list-style:none;line-height:40px;padding-left:30px;padding-right:30px;padding-top:4px;color:#f2f2f2;border-top-color:#0077c2;transition:200ms all}.navbar ul a li.selected,.navbar ul a li:hover{border-bottom:2px solid #ffe766;color:#fff}.navbar .navbar-username{position:relative;max-height:47px;font-size:24px;line-height:40px;text-align:center;padding-top:4px;cursor:pointer;background-color:#00385c;transition:background-color 150ms}.navbar .navbar-username:hover,.navbar .navbar-username.selected{background-color:#00588f}.navbar .navbar-username:hover .navbar-username-dropdown,.navbar .navbar-username.selected .navbar-username-dropdown{display:block}.navbar .navbar-username a{display:block;width:100%}.navbar .navbar-username .navbar-username-dropdown{display:none;position:absolute;top:100%;left:0;width:100%}.navbar .navbar-username .navbar-username-dropdown .navbar-username-dropdown-option{border-bottom:1px solid #00588f;background:#00385c}.navbar .navbar-username .navbar-username-dropdown .navbar-username-dropdown-option:last-child{border-bottom:none}.navbar .navbar-username .navbar-username-dropdown .navbar-username-dropdown-option:hover{background-color:#00588f}.content,.error-list{width:100%;padding:10px 10%}.right{float:right}.left{float:left}.hidden{visibility:hidden}a{text-decoration:none;color:inherit}.split-2{display:grid;grid-template-columns:repeat(2, 1fr)}.split-2>*:first-child{margin-right:12px}.split-2>*:last-child{margin-left:12px}.split-3{display:grid;grid-template-columns:repeat(3, 1fr)}.split-4{display:grid;grid-template-columns:repeat(4, 1fr)}.split-lr{display:grid;grid-template-columns:1fr 1fr}.split-lr>*:first-child{text-align:left}.split-lr>*:last-child{text-align:right}.split-1-1{display:grid;grid-template-columns:1fr 1fr}.split-1-2{display:grid;grid-template-columns:1fr 2fr}.split-1-3{display:grid;grid-template-columns:1fr 3fr}.split-1-4{display:grid;grid-template-columns:1fr 4fr}.split-2-1{display:grid;grid-template-columns:2fr 1fr}.split-2-2{display:grid;grid-template-columns:2fr 2fr}.split-2-3{display:grid;grid-template-columns:2fr 3fr}.split-2-4{display:grid;grid-template-columns:2fr 4fr}.split-3-1{display:grid;grid-template-columns:3fr 1fr}.split-3-2{display:grid;grid-template-columns:3fr 2fr}.split-3-3{display:grid;grid-template-columns:3fr 3fr}.split-3-4{display:grid;grid-template-columns:3fr 4fr}.split-4-1{display:grid;grid-template-columns:4fr 1fr}.split-4-2{display:grid;grid-template-columns:4fr 2fr}.split-4-3{display:grid;grid-template-columns:4fr 3fr}.split-4-4{display:grid;grid-template-columns:4fr 4fr}pre{box-shadow:0px 2px 6px .5px rgba(0,0,0,.5);font-size:1rem}pre .hljs-ln td{padding-right:8px}pre .hljs-ln-line{max-width:200px !important}.fixed-half-split{display:grid;grid-template-columns:275px 1fr}.tabbed-split{display:grid !important}.tabbed-split.tab-12{grid-template-columns:12px 1fr}.tabbed-split.tab-16{grid-template-columns:16px 1fr}.tabbed-split.tab-24{grid-template-columns:24px 1fr}.tabbed-split.tab-32{grid-template-columns:32px 1fr}.tabbed-split.tab-48{grid-template-columns:48px 1fr}.tabbed-split.tab-64{grid-template-columns:64px 1fr}.tabbed-split.primary>span{background-color:#42a5f5}.tabbed-split.primary-light>span{background-color:#80d6ff}.tabbed-split.primary-dark>span{background-color:#0077c2}.tabbed-split.secondary>span{background-color:gold}.tabbed-split.secondary-light>span{background-color:#ffe766}.tabbed-split.secondary-dark>span{background-color:#998100}.tabbed-split.success>span{background-color:lime}.tabbed-split.error>span{background-color:#d00}.tabbed-split.error-light>span{background-color:#f44}.tabbed-split.error-dark>span{background-color:#700}.box{box-shadow:0px 2px 6px .5px rgba(0,0,0,.5);background-color:#111}.box .highlight:hover{background-color:#333}.w50{width:50%}.w100{width:100%}.pad-1{padding:1px !important}.pad-l-1{padding-left:1px !important}.pad-r-1{padding-right:1px !important}.pad-t-1{padding-top:1px !important}.pad-b-1{padding-bottom:1px !important}.mar-1{margin:1px !important}.mar-l-1{margin-left:1px !important}.mar-r-1{margin-right:1px !important}.mar-t-1{margin-top:1px !important}.mar-b-1{margin-bottom:1px !important}.pad-2{padding:2px !important}.pad-l-2{padding-left:2px !important}.pad-r-2{padding-right:2px !important}.pad-t-2{padding-top:2px !important}.pad-b-2{padding-bottom:2px !important}.mar-2{margin:2px !important}.mar-l-2{margin-left:2px !important}.mar-r-2{margin-right:2px !important}.mar-t-2{margin-top:2px !important}.mar-b-2{margin-bottom:2px !important}.pad-3{padding:3px !important}.pad-l-3{padding-left:3px !important}.pad-r-3{padding-right:3px !important}.pad-t-3{padding-top:3px !important}.pad-b-3{padding-bottom:3px !important}.mar-3{margin:3px !important}.mar-l-3{margin-left:3px !important}.mar-r-3{margin-right:3px !important}.mar-t-3{margin-top:3px !important}.mar-b-3{margin-bottom:3px !important}.pad-4{padding:4px !important}.pad-l-4{padding-left:4px !important}.pad-r-4{padding-right:4px !important}.pad-t-4{padding-top:4px !important}.pad-b-4{padding-bottom:4px !important}.mar-4{margin:4px !important}.mar-l-4{margin-left:4px !important}.mar-r-4{margin-right:4px !important}.mar-t-4{margin-top:4px !important}.mar-b-4{margin-bottom:4px !important}.pad-5{padding:5px !important}.pad-l-5{padding-left:5px !important}.pad-r-5{padding-right:5px !important}.pad-t-5{padding-top:5px !important}.pad-b-5{padding-bottom:5px !important}.mar-5{margin:5px !important}.mar-l-5{margin-left:5px !important}.mar-r-5{margin-right:5px !important}.mar-t-5{margin-top:5px !important}.mar-b-5{margin-bottom:5px !important}.pad-6{padding:6px !important}.pad-l-6{padding-left:6px !important}.pad-r-6{padding-right:6px !important}.pad-t-6{padding-top:6px !important}.pad-b-6{padding-bottom:6px !important}.mar-6{margin:6px !important}.mar-l-6{margin-left:6px !important}.mar-r-6{margin-right:6px !important}.mar-t-6{margin-top:6px !important}.mar-b-6{margin-bottom:6px !important}.pad-7{padding:7px !important}.pad-l-7{padding-left:7px !important}.pad-r-7{padding-right:7px !important}.pad-t-7{padding-top:7px !important}.pad-b-7{padding-bottom:7px !important}.mar-7{margin:7px !important}.mar-l-7{margin-left:7px !important}.mar-r-7{margin-right:7px !important}.mar-t-7{margin-top:7px !important}.mar-b-7{margin-bottom:7px !important}.pad-8{padding:8px !important}.pad-l-8{padding-left:8px !important}.pad-r-8{padding-right:8px !important}.pad-t-8{padding-top:8px !important}.pad-b-8{padding-bottom:8px !important}.mar-8{margin:8px !important}.mar-l-8{margin-left:8px !important}.mar-r-8{margin-right:8px !important}.mar-t-8{margin-top:8px !important}.mar-b-8{margin-bottom:8px !important}.pad-9{padding:9px !important}.pad-l-9{padding-left:9px !important}.pad-r-9{padding-right:9px !important}.pad-t-9{padding-top:9px !important}.pad-b-9{padding-bottom:9px !important}.mar-9{margin:9px !important}.mar-l-9{margin-left:9px !important}.mar-r-9{margin-right:9px !important}.mar-t-9{margin-top:9px !important}.mar-b-9{margin-bottom:9px !important}.pad-10{padding:10px !important}.pad-l-10{padding-left:10px !important}.pad-r-10{padding-right:10px !important}.pad-t-10{padding-top:10px !important}.pad-b-10{padding-bottom:10px !important}.mar-10{margin:10px !important}.mar-l-10{margin-left:10px !important}.mar-r-10{margin-right:10px !important}.mar-t-10{margin-top:10px !important}.mar-b-10{margin-bottom:10px !important}.pad-11{padding:11px !important}.pad-l-11{padding-left:11px !important}.pad-r-11{padding-right:11px !important}.pad-t-11{padding-top:11px !important}.pad-b-11{padding-bottom:11px !important}.mar-11{margin:11px !important}.mar-l-11{margin-left:11px !important}.mar-r-11{margin-right:11px !important}.mar-t-11{margin-top:11px !important}.mar-b-11{margin-bottom:11px !important}.pad-12{padding:12px !important}.pad-l-12{padding-left:12px !important}.pad-r-12{padding-right:12px !important}.pad-t-12{padding-top:12px !important}.pad-b-12{padding-bottom:12px !important}.mar-12{margin:12px !important}.mar-l-12{margin-left:12px !important}.mar-r-12{margin-right:12px !important}.mar-t-12{margin-top:12px !important}.mar-b-12{margin-bottom:12px !important}.pad-13{padding:13px !important}.pad-l-13{padding-left:13px !important}.pad-r-13{padding-right:13px !important}.pad-t-13{padding-top:13px !important}.pad-b-13{padding-bottom:13px !important}.mar-13{margin:13px !important}.mar-l-13{margin-left:13px !important}.mar-r-13{margin-right:13px !important}.mar-t-13{margin-top:13px !important}.mar-b-13{margin-bottom:13px !important}.pad-14{padding:14px !important}.pad-l-14{padding-left:14px !important}.pad-r-14{padding-right:14px !important}.pad-t-14{padding-top:14px !important}.pad-b-14{padding-bottom:14px !important}.mar-14{margin:14px !important}.mar-l-14{margin-left:14px !important}.mar-r-14{margin-right:14px !important}.mar-t-14{margin-top:14px !important}.mar-b-14{margin-bottom:14px !important}.pad-15{padding:15px !important}.pad-l-15{padding-left:15px !important}.pad-r-15{padding-right:15px !important}.pad-t-15{padding-top:15px !important}.pad-b-15{padding-bottom:15px !important}.mar-15{margin:15px !important}.mar-l-15{margin-left:15px !important}.mar-r-15{margin-right:15px !important}.mar-t-15{margin-top:15px !important}.mar-b-15{margin-bottom:15px !important}.pad-16{padding:16px !important}.pad-l-16{padding-left:16px !important}.pad-r-16{padding-right:16px !important}.pad-t-16{padding-top:16px !important}.pad-b-16{padding-bottom:16px !important}.mar-16{margin:16px !important}.mar-l-16{margin-left:16px !important}.mar-r-16{margin-right:16px !important}.mar-t-16{margin-top:16px !important}.mar-b-16{margin-bottom:16px !important}.pad-17{padding:17px !important}.pad-l-17{padding-left:17px !important}.pad-r-17{padding-right:17px !important}.pad-t-17{padding-top:17px !important}.pad-b-17{padding-bottom:17px !important}.mar-17{margin:17px !important}.mar-l-17{margin-left:17px !important}.mar-r-17{margin-right:17px !important}.mar-t-17{margin-top:17px !important}.mar-b-17{margin-bottom:17px !important}.pad-18{padding:18px !important}.pad-l-18{padding-left:18px !important}.pad-r-18{padding-right:18px !important}.pad-t-18{padding-top:18px !important}.pad-b-18{padding-bottom:18px !important}.mar-18{margin:18px !important}.mar-l-18{margin-left:18px !important}.mar-r-18{margin-right:18px !important}.mar-t-18{margin-top:18px !important}.mar-b-18{margin-bottom:18px !important}.pad-19{padding:19px !important}.pad-l-19{padding-left:19px !important}.pad-r-19{padding-right:19px !important}.pad-t-19{padding-top:19px !important}.pad-b-19{padding-bottom:19px !important}.mar-19{margin:19px !important}.mar-l-19{margin-left:19px !important}.mar-r-19{margin-right:19px !important}.mar-t-19{margin-top:19px !important}.mar-b-19{margin-bottom:19px !important}.pad-20{padding:20px !important}.pad-l-20{padding-left:20px !important}.pad-r-20{padding-right:20px !important}.pad-t-20{padding-top:20px !important}.pad-b-20{padding-bottom:20px !important}.mar-20{margin:20px !important}.mar-l-20{margin-left:20px !important}.mar-r-20{margin-right:20px !important}.mar-t-20{margin-top:20px !important}.mar-b-20{margin-bottom:20px !important}.pad-21{padding:21px !important}.pad-l-21{padding-left:21px !important}.pad-r-21{padding-right:21px !important}.pad-t-21{padding-top:21px !important}.pad-b-21{padding-bottom:21px !important}.mar-21{margin:21px !important}.mar-l-21{margin-left:21px !important}.mar-r-21{margin-right:21px !important}.mar-t-21{margin-top:21px !important}.mar-b-21{margin-bottom:21px !important}.pad-22{padding:22px !important}.pad-l-22{padding-left:22px !important}.pad-r-22{padding-right:22px !important}.pad-t-22{padding-top:22px !important}.pad-b-22{padding-bottom:22px !important}.mar-22{margin:22px !important}.mar-l-22{margin-left:22px !important}.mar-r-22{margin-right:22px !important}.mar-t-22{margin-top:22px !important}.mar-b-22{margin-bottom:22px !important}.pad-23{padding:23px !important}.pad-l-23{padding-left:23px !important}.pad-r-23{padding-right:23px !important}.pad-t-23{padding-top:23px !important}.pad-b-23{padding-bottom:23px !important}.mar-23{margin:23px !important}.mar-l-23{margin-left:23px !important}.mar-r-23{margin-right:23px !important}.mar-t-23{margin-top:23px !important}.mar-b-23{margin-bottom:23px !important}.pad-24{padding:24px !important}.pad-l-24{padding-left:24px !important}.pad-r-24{padding-right:24px !important}.pad-t-24{padding-top:24px !important}.pad-b-24{padding-bottom:24px !important}.mar-24{margin:24px !important}.mar-l-24{margin-left:24px !important}.mar-r-24{margin-right:24px !important}.mar-t-24{margin-top:24px !important}.mar-b-24{margin-bottom:24px !important}.pad-25{padding:25px !important}.pad-l-25{padding-left:25px !important}.pad-r-25{padding-right:25px !important}.pad-t-25{padding-top:25px !important}.pad-b-25{padding-bottom:25px !important}.mar-25{margin:25px !important}.mar-l-25{margin-left:25px !important}.mar-r-25{margin-right:25px !important}.mar-t-25{margin-top:25px !important}.mar-b-25{margin-bottom:25px !important}.pad-26{padding:26px !important}.pad-l-26{padding-left:26px !important}.pad-r-26{padding-right:26px !important}.pad-t-26{padding-top:26px !important}.pad-b-26{padding-bottom:26px !important}.mar-26{margin:26px !important}.mar-l-26{margin-left:26px !important}.mar-r-26{margin-right:26px !important}.mar-t-26{margin-top:26px !important}.mar-b-26{margin-bottom:26px !important}.pad-27{padding:27px !important}.pad-l-27{padding-left:27px !important}.pad-r-27{padding-right:27px !important}.pad-t-27{padding-top:27px !important}.pad-b-27{padding-bottom:27px !important}.mar-27{margin:27px !important}.mar-l-27{margin-left:27px !important}.mar-r-27{margin-right:27px !important}.mar-t-27{margin-top:27px !important}.mar-b-27{margin-bottom:27px !important}.pad-28{padding:28px !important}.pad-l-28{padding-left:28px !important}.pad-r-28{padding-right:28px !important}.pad-t-28{padding-top:28px !important}.pad-b-28{padding-bottom:28px !important}.mar-28{margin:28px !important}.mar-l-28{margin-left:28px !important}.mar-r-28{margin-right:28px !important}.mar-t-28{margin-top:28px !important}.mar-b-28{margin-bottom:28px !important}.pad-29{padding:29px !important}.pad-l-29{padding-left:29px !important}.pad-r-29{padding-right:29px !important}.pad-t-29{padding-top:29px !important}.pad-b-29{padding-bottom:29px !important}.mar-29{margin:29px !important}.mar-l-29{margin-left:29px !important}.mar-r-29{margin-right:29px !important}.mar-t-29{margin-top:29px !important}.mar-b-29{margin-bottom:29px !important}.pad-30{padding:30px !important}.pad-l-30{padding-left:30px !important}.pad-r-30{padding-right:30px !important}.pad-t-30{padding-top:30px !important}.pad-b-30{padding-bottom:30px !important}.mar-30{margin:30px !important}.mar-l-30{margin-left:30px !important}.mar-r-30{margin-right:30px !important}.mar-t-30{margin-top:30px !important}.mar-b-30{margin-bottom:30px !important}.pad-31{padding:31px !important}.pad-l-31{padding-left:31px !important}.pad-r-31{padding-right:31px !important}.pad-t-31{padding-top:31px !important}.pad-b-31{padding-bottom:31px !important}.mar-31{margin:31px !important}.mar-l-31{margin-left:31px !important}.mar-r-31{margin-right:31px !important}.mar-t-31{margin-top:31px !important}.mar-b-31{margin-bottom:31px !important}.pad-32{padding:32px !important}.pad-l-32{padding-left:32px !important}.pad-r-32{padding-right:32px !important}.pad-t-32{padding-top:32px !important}.pad-b-32{padding-bottom:32px !important}.mar-32{margin:32px !important}.mar-l-32{margin-left:32px !important}.mar-r-32{margin-right:32px !important}.mar-t-32{margin-top:32px !important}.mar-b-32{margin-bottom:32px !important}.pad-33{padding:33px !important}.pad-l-33{padding-left:33px !important}.pad-r-33{padding-right:33px !important}.pad-t-33{padding-top:33px !important}.pad-b-33{padding-bottom:33px !important}.mar-33{margin:33px !important}.mar-l-33{margin-left:33px !important}.mar-r-33{margin-right:33px !important}.mar-t-33{margin-top:33px !important}.mar-b-33{margin-bottom:33px !important}.pad-34{padding:34px !important}.pad-l-34{padding-left:34px !important}.pad-r-34{padding-right:34px !important}.pad-t-34{padding-top:34px !important}.pad-b-34{padding-bottom:34px !important}.mar-34{margin:34px !important}.mar-l-34{margin-left:34px !important}.mar-r-34{margin-right:34px !important}.mar-t-34{margin-top:34px !important}.mar-b-34{margin-bottom:34px !important}.pad-35{padding:35px !important}.pad-l-35{padding-left:35px !important}.pad-r-35{padding-right:35px !important}.pad-t-35{padding-top:35px !important}.pad-b-35{padding-bottom:35px !important}.mar-35{margin:35px !important}.mar-l-35{margin-left:35px !important}.mar-r-35{margin-right:35px !important}.mar-t-35{margin-top:35px !important}.mar-b-35{margin-bottom:35px !important}.pad-36{padding:36px !important}.pad-l-36{padding-left:36px !important}.pad-r-36{padding-right:36px !important}.pad-t-36{padding-top:36px !important}.pad-b-36{padding-bottom:36px !important}.mar-36{margin:36px !important}.mar-l-36{margin-left:36px !important}.mar-r-36{margin-right:36px !important}.mar-t-36{margin-top:36px !important}.mar-b-36{margin-bottom:36px !important}.pad-37{padding:37px !important}.pad-l-37{padding-left:37px !important}.pad-r-37{padding-right:37px !important}.pad-t-37{padding-top:37px !important}.pad-b-37{padding-bottom:37px !important}.mar-37{margin:37px !important}.mar-l-37{margin-left:37px !important}.mar-r-37{margin-right:37px !important}.mar-t-37{margin-top:37px !important}.mar-b-37{margin-bottom:37px !important}.pad-38{padding:38px !important}.pad-l-38{padding-left:38px !important}.pad-r-38{padding-right:38px !important}.pad-t-38{padding-top:38px !important}.pad-b-38{padding-bottom:38px !important}.mar-38{margin:38px !important}.mar-l-38{margin-left:38px !important}.mar-r-38{margin-right:38px !important}.mar-t-38{margin-top:38px !important}.mar-b-38{margin-bottom:38px !important}.pad-39{padding:39px !important}.pad-l-39{padding-left:39px !important}.pad-r-39{padding-right:39px !important}.pad-t-39{padding-top:39px !important}.pad-b-39{padding-bottom:39px !important}.mar-39{margin:39px !important}.mar-l-39{margin-left:39px !important}.mar-r-39{margin-right:39px !important}.mar-t-39{margin-top:39px !important}.mar-b-39{margin-bottom:39px !important}.pad-40{padding:40px !important}.pad-l-40{padding-left:40px !important}.pad-r-40{padding-right:40px !important}.pad-t-40{padding-top:40px !important}.pad-b-40{padding-bottom:40px !important}.mar-40{margin:40px !important}.mar-l-40{margin-left:40px !important}.mar-r-40{margin-right:40px !important}.mar-t-40{margin-top:40px !important}.mar-b-40{margin-bottom:40px !important}.pad-41{padding:41px !important}.pad-l-41{padding-left:41px !important}.pad-r-41{padding-right:41px !important}.pad-t-41{padding-top:41px !important}.pad-b-41{padding-bottom:41px !important}.mar-41{margin:41px !important}.mar-l-41{margin-left:41px !important}.mar-r-41{margin-right:41px !important}.mar-t-41{margin-top:41px !important}.mar-b-41{margin-bottom:41px !important}.pad-42{padding:42px !important}.pad-l-42{padding-left:42px !important}.pad-r-42{padding-right:42px !important}.pad-t-42{padding-top:42px !important}.pad-b-42{padding-bottom:42px !important}.mar-42{margin:42px !important}.mar-l-42{margin-left:42px !important}.mar-r-42{margin-right:42px !important}.mar-t-42{margin-top:42px !important}.mar-b-42{margin-bottom:42px !important}.pad-43{padding:43px !important}.pad-l-43{padding-left:43px !important}.pad-r-43{padding-right:43px !important}.pad-t-43{padding-top:43px !important}.pad-b-43{padding-bottom:43px !important}.mar-43{margin:43px !important}.mar-l-43{margin-left:43px !important}.mar-r-43{margin-right:43px !important}.mar-t-43{margin-top:43px !important}.mar-b-43{margin-bottom:43px !important}.pad-44{padding:44px !important}.pad-l-44{padding-left:44px !important}.pad-r-44{padding-right:44px !important}.pad-t-44{padding-top:44px !important}.pad-b-44{padding-bottom:44px !important}.mar-44{margin:44px !important}.mar-l-44{margin-left:44px !important}.mar-r-44{margin-right:44px !important}.mar-t-44{margin-top:44px !important}.mar-b-44{margin-bottom:44px !important}.pad-45{padding:45px !important}.pad-l-45{padding-left:45px !important}.pad-r-45{padding-right:45px !important}.pad-t-45{padding-top:45px !important}.pad-b-45{padding-bottom:45px !important}.mar-45{margin:45px !important}.mar-l-45{margin-left:45px !important}.mar-r-45{margin-right:45px !important}.mar-t-45{margin-top:45px !important}.mar-b-45{margin-bottom:45px !important}.pad-46{padding:46px !important}.pad-l-46{padding-left:46px !important}.pad-r-46{padding-right:46px !important}.pad-t-46{padding-top:46px !important}.pad-b-46{padding-bottom:46px !important}.mar-46{margin:46px !important}.mar-l-46{margin-left:46px !important}.mar-r-46{margin-right:46px !important}.mar-t-46{margin-top:46px !important}.mar-b-46{margin-bottom:46px !important}.pad-47{padding:47px !important}.pad-l-47{padding-left:47px !important}.pad-r-47{padding-right:47px !important}.pad-t-47{padding-top:47px !important}.pad-b-47{padding-bottom:47px !important}.mar-47{margin:47px !important}.mar-l-47{margin-left:47px !important}.mar-r-47{margin-right:47px !important}.mar-t-47{margin-top:47px !important}.mar-b-47{margin-bottom:47px !important}.pad-48{padding:48px !important}.pad-l-48{padding-left:48px !important}.pad-r-48{padding-right:48px !important}.pad-t-48{padding-top:48px !important}.pad-b-48{padding-bottom:48px !important}.mar-48{margin:48px !important}.mar-l-48{margin-left:48px !important}.mar-r-48{margin-right:48px !important}.mar-t-48{margin-top:48px !important}.mar-b-48{margin-bottom:48px !important}.pad-49{padding:49px !important}.pad-l-49{padding-left:49px !important}.pad-r-49{padding-right:49px !important}.pad-t-49{padding-top:49px !important}.pad-b-49{padding-bottom:49px !important}.mar-49{margin:49px !important}.mar-l-49{margin-left:49px !important}.mar-r-49{margin-right:49px !important}.mar-t-49{margin-top:49px !important}.mar-b-49{margin-bottom:49px !important}.problem-info{float:right;width:300px}.sidebar-problem-list{z-index:50;box-shadow:0 10px 0 0 transparent,0 10px 0 0 transparent,10px 0 0 0 transparent,0 8px 8px 2px rgba(0,0,0,.5);background:#003252;position:relative;min-height:calc(100vh - 47px)}.sidebar-problem-list .sidebar-problem{width:100%;display:grid;grid-template-columns:32px 1fr;border-left-width:24px;border-left-style:solid;border-left-color:#0077c2;transition:background-color 200ms ease-in-out;transition:width 200ms ease-in-out;background-color:inherit;cursor:pointer}.sidebar-problem-list .sidebar-problem[correct]{border-left-color:lime}.sidebar-problem-list .sidebar-problem[wrong]{border-left-color:red}.sidebar-problem-list .sidebar-problem[selected],.sidebar-problem-list .sidebar-problem:hover{width:calc(100% + 24px)}.sidebar-problem-list .sidebar-problem[selected]{background-color:#42a5f5 !important}.sidebar-problem-list .sidebar-problem:hover{background-color:#128ef2}.sidebar-problem-list .sidebar-problem-letter{text-align:center;background-color:#001929;padding-top:20px;padding-bottom:20px;font-size:1.2rem}.sidebar-problem-list .sidebar-problem-name{text-align:left;font-size:1.2rem;padding-left:5px;padding-top:20px;padding-bottom:20px;margin-left:10px;margin-right:10px}.rect-auto,.c100.p100 .slice,.c100.p99 .slice,.c100.p98 .slice,.c100.p97 .slice,.c100.p96 .slice,.c100.p95 .slice,.c100.p94 .slice,.c100.p93 .slice,.c100.p92 .slice,.c100.p91 .slice,.c100.p90 .slice,.c100.p89 .slice,.c100.p88 .slice,.c100.p87 .slice,.c100.p86 .slice,.c100.p85 .slice,.c100.p84 .slice,.c100.p83 .slice,.c100.p82 .slice,.c100.p81 .slice,.c100.p80 .slice,.c100.p79 .slice,.c100.p78 .slice,.c100.p77 .slice,.c100.p76 .slice,.c100.p75 .slice,.c100.p74 .slice,.c100.p73 .slice,.c100.p72 .slice,.c100.p71 .slice,.c100.p70 .slice,.c100.p69 .slice,.c100.p68 .slice,.c100.p67 .slice,.c100.p66 .slice,.c100.p65 .slice,.c100.p64 .slice,.c100.p63 .slice,.c100.p62 .slice,.c100.p61 .slice,.c100.p60 .slice,.c100.p59 .slice,.c100.p58 .slice,.c100.p57 .slice,.c100.p56 .slice,.c100.p55 .slice,.c100.p54 .slice,.c100.p53 .slice,.c100.p52 .slice,.c100.p51 .slice{clip:rect(auto, auto, auto, auto)}.pie,.c100.p100 .fill,.c100.p99 .fill,.c100.p98 .fill,.c100.p97 .fill,.c100.p96 .fill,.c100.p95 .fill,.c100.p94 .fill,.c100.p93 .fill,.c100.p92 .fill,.c100.p91 .fill,.c100.p90 .fill,.c100.p89 .fill,.c100.p88 .fill,.c100.p87 .fill,.c100.p86 .fill,.c100.p85 .fill,.c100.p84 .fill,.c100.p83 .fill,.c100.p82 .fill,.c100.p81 .fill,.c100.p80 .fill,.c100.p79 .fill,.c100.p78 .fill,.c100.p77 .fill,.c100.p76 .fill,.c100.p75 .fill,.c100.p74 .fill,.c100.p73 .fill,.c100.p72 .fill,.c100.p71 .fill,.c100.p70 .fill,.c100.p69 .fill,.c100.p68 .fill,.c100.p67 .fill,.c100.p66 .fill,.c100.p65 .fill,.c100.p64 .fill,.c100.p63 .fill,.c100.p62 .fill,.c100.p61 .fill,.c100.p60 .fill,.c100.p59 .fill,.c100.p58 .fill,.c100.p57 .fill,.c100.p56 .fill,.c100.p55 .fill,.c100.p54 .fill,.c100.p53 .fill,.c100.p52 .fill,.c100.p51 .fill,.c100 .bar{position:absolute;border:.08em solid #307bbb;width:.84em;height:.84em;clip:rect(0em, 0.5em, 1em, 0em);border-radius:50%;-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}.pie-fill,.c100.p100 .fill,.c100.p100.bar:after,.c100.p99 .fill,.c100.p99.bar:after,.c100.p98 .fill,.c100.p98.bar:after,.c100.p97 .fill,.c100.p97.bar:after,.c100.p96 .fill,.c100.p96.bar:after,.c100.p95 .fill,.c100.p95.bar:after,.c100.p94 .fill,.c100.p94.bar:after,.c100.p93 .fill,.c100.p93.bar:after,.c100.p92 .fill,.c100.p92.bar:after,.c100.p91 .fill,.c100.p91.bar:after,.c100.p90 .fill,.c100.p90.bar:after,.c100.p89 .fill,.c100.p89.bar:after,.c100.p88 .fill,.c100.p88.bar:after,.c100.p87 .fill,.c100.p87.bar:after,.c100.p86 .fill,.c100.p86.bar:after,.c100.p85 .fill,.c100.p85.bar:after,.c100.p84 .fill,.c100.p84.bar:after,.c100.p83 .fill,.c100.p83.bar:after,.c100.p82 .fill,.c100.p82.bar:after,.c100.p81 .fill,.c100.p81.bar:after,.c100.p80 .fill,.c100.p80.bar:after,.c100.p79 .fill,.c100.p79.bar:after,.c100.p78 .fill,.c100.p78.bar:after,.c100.p77 .fill,.c100.p77.bar:after,.c100.p76 .fill,.c100.p76.bar:after,.c100.p75 .fill,.c100.p75.bar:after,.c100.p74 .fill,.c100.p74.bar:after,.c100.p73 .fill,.c100.p73.bar:after,.c100.p72 .fill,.c100.p72.bar:after,.c100.p71 .fill,.c100.p71.bar:after,.c100.p70 .fill,.c100.p70.bar:after,.c100.p69 .fill,.c100.p69.bar:after,.c100.p68 .fill,.c100.p68.bar:after,.c100.p67 .fill,.c100.p67.bar:after,.c100.p66 .fill,.c100.p66.bar:after,.c100.p65 .fill,.c100.p65.bar:after,.c100.p64 .fill,.c100.p64.bar:after,.c100.p63 .fill,.c100.p63.bar:after,.c100.p62 .fill,.c100.p62.bar:after,.c100.p61 .fill,.c100.p61.bar:after,.c100.p60 .fill,.c100.p60.bar:after,.c100.p59 .fill,.c100.p59.bar:after,.c100.p58 .fill,.c100.p58.bar:after,.c100.p57 .fill,.c100.p57.bar:after,.c100.p56 .fill,.c100.p56.bar:after,.c100.p55 .fill,.c100.p55.bar:after,.c100.p54 .fill,.c100.p54.bar:after,.c100.p53 .fill,.c100.p53.bar:after,.c100.p52 .fill,.c100.p52.bar:after,.c100.p51 .fill,.c100.p51.bar:after{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.c100{position:relative;font-size:120px;width:1em;height:1em;border-radius:50%;float:left;background-color:#ccc}.c100 *,.c100 *:before,.c100 *:after{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.c100.center{float:none;margin:0 auto}.c100.big{font-size:240px}.c100.small{font-size:80px}.c100>span{position:absolute;width:100%;z-index:1;left:0;top:0;width:5em;line-height:5em;font-size:.2em;color:#ccc;display:block;text-align:center;white-space:nowrap;-webkit-transition-property:all;-moz-transition-property:all;-o-transition-property:all;transition-property:all;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out}.c100:after{position:absolute;top:.08em;left:.08em;display:block;content:" ";border-radius:50%;background-color:#f5f5f5;width:.84em;height:.84em;-webkit-transition-property:all;-moz-transition-property:all;-o-transition-property:all;transition-property:all;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:ease-in;-moz-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in}.c100 .slice{position:absolute;width:1em;height:1em;clip:rect(0em, 1em, 1em, 0.5em)}.c100.p1 .bar{-webkit-transform:rotate(3.6deg);-moz-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);-o-transform:rotate(3.6deg);transform:rotate(3.6deg)}.c100.p2 .bar{-webkit-transform:rotate(7.2deg);-moz-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);-o-transform:rotate(7.2deg);transform:rotate(7.2deg)}.c100.p3 .bar{-webkit-transform:rotate(10.8deg);-moz-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);-o-transform:rotate(10.8deg);transform:rotate(10.8deg)}.c100.p4 .bar{-webkit-transform:rotate(14.4deg);-moz-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);-o-transform:rotate(14.4deg);transform:rotate(14.4deg)}.c100.p5 .bar{-webkit-transform:rotate(18deg);-moz-transform:rotate(18deg);-ms-transform:rotate(18deg);-o-transform:rotate(18deg);transform:rotate(18deg)}.c100.p6 .bar{-webkit-transform:rotate(21.6deg);-moz-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);-o-transform:rotate(21.6deg);transform:rotate(21.6deg)}.c100.p7 .bar{-webkit-transform:rotate(25.2deg);-moz-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);-o-transform:rotate(25.2deg);transform:rotate(25.2deg)}.c100.p8 .bar{-webkit-transform:rotate(28.8deg);-moz-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);-o-transform:rotate(28.8deg);transform:rotate(28.8deg)}.c100.p9 .bar{-webkit-transform:rotate(32.4deg);-moz-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);-o-transform:rotate(32.4deg);transform:rotate(32.4deg)}.c100.p10 .bar{-webkit-transform:rotate(36deg);-moz-transform:rotate(36deg);-ms-transform:rotate(36deg);-o-transform:rotate(36deg);transform:rotate(36deg)}.c100.p11 .bar{-webkit-transform:rotate(39.6deg);-moz-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);-o-transform:rotate(39.6deg);transform:rotate(39.6deg)}.c100.p12 .bar{-webkit-transform:rotate(43.2deg);-moz-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);-o-transform:rotate(43.2deg);transform:rotate(43.2deg)}.c100.p13 .bar{-webkit-transform:rotate(46.8deg);-moz-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);-o-transform:rotate(46.8deg);transform:rotate(46.8deg)}.c100.p14 .bar{-webkit-transform:rotate(50.4deg);-moz-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);-o-transform:rotate(50.4deg);transform:rotate(50.4deg)}.c100.p15 .bar{-webkit-transform:rotate(54deg);-moz-transform:rotate(54deg);-ms-transform:rotate(54deg);-o-transform:rotate(54deg);transform:rotate(54deg)}.c100.p16 .bar{-webkit-transform:rotate(57.6deg);-moz-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);-o-transform:rotate(57.6deg);transform:rotate(57.6deg)}.c100.p17 .bar{-webkit-transform:rotate(61.2deg);-moz-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);-o-transform:rotate(61.2deg);transform:rotate(61.2deg)}.c100.p18 .bar{-webkit-transform:rotate(64.8deg);-moz-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);-o-transform:rotate(64.8deg);transform:rotate(64.8deg)}.c100.p19 .bar{-webkit-transform:rotate(68.4deg);-moz-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);-o-transform:rotate(68.4deg);transform:rotate(68.4deg)}.c100.p20 .bar{-webkit-transform:rotate(72deg);-moz-transform:rotate(72deg);-ms-transform:rotate(72deg);-o-transform:rotate(72deg);transform:rotate(72deg)}.c100.p21 .bar{-webkit-transform:rotate(75.6deg);-moz-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);-o-transform:rotate(75.6deg);transform:rotate(75.6deg)}.c100.p22 .bar{-webkit-transform:rotate(79.2deg);-moz-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);-o-transform:rotate(79.2deg);transform:rotate(79.2deg)}.c100.p23 .bar{-webkit-transform:rotate(82.8deg);-moz-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);-o-transform:rotate(82.8deg);transform:rotate(82.8deg)}.c100.p24 .bar{-webkit-transform:rotate(86.4deg);-moz-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);-o-transform:rotate(86.4deg);transform:rotate(86.4deg)}.c100.p25 .bar{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.c100.p26 .bar{-webkit-transform:rotate(93.6deg);-moz-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);-o-transform:rotate(93.6deg);transform:rotate(93.6deg)}.c100.p27 .bar{-webkit-transform:rotate(97.2deg);-moz-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);-o-transform:rotate(97.2deg);transform:rotate(97.2deg)}.c100.p28 .bar{-webkit-transform:rotate(100.8deg);-moz-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);-o-transform:rotate(100.8deg);transform:rotate(100.8deg)}.c100.p29 .bar{-webkit-transform:rotate(104.4deg);-moz-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);-o-transform:rotate(104.4deg);transform:rotate(104.4deg)}.c100.p30 .bar{-webkit-transform:rotate(108deg);-moz-transform:rotate(108deg);-ms-transform:rotate(108deg);-o-transform:rotate(108deg);transform:rotate(108deg)}.c100.p31 .bar{-webkit-transform:rotate(111.6deg);-moz-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);-o-transform:rotate(111.6deg);transform:rotate(111.6deg)}.c100.p32 .bar{-webkit-transform:rotate(115.2deg);-moz-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);-o-transform:rotate(115.2deg);transform:rotate(115.2deg)}.c100.p33 .bar{-webkit-transform:rotate(118.8deg);-moz-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);-o-transform:rotate(118.8deg);transform:rotate(118.8deg)}.c100.p34 .bar{-webkit-transform:rotate(122.4deg);-moz-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);-o-transform:rotate(122.4deg);transform:rotate(122.4deg)}.c100.p35 .bar{-webkit-transform:rotate(126deg);-moz-transform:rotate(126deg);-ms-transform:rotate(126deg);-o-transform:rotate(126deg);transform:rotate(126deg)}.c100.p36 .bar{-webkit-transform:rotate(129.6deg);-moz-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);-o-transform:rotate(129.6deg);transform:rotate(129.6deg)}.c100.p37 .bar{-webkit-transform:rotate(133.2deg);-moz-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);-o-transform:rotate(133.2deg);transform:rotate(133.2deg)}.c100.p38 .bar{-webkit-transform:rotate(136.8deg);-moz-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);-o-transform:rotate(136.8deg);transform:rotate(136.8deg)}.c100.p39 .bar{-webkit-transform:rotate(140.4deg);-moz-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);-o-transform:rotate(140.4deg);transform:rotate(140.4deg)}.c100.p40 .bar{-webkit-transform:rotate(144deg);-moz-transform:rotate(144deg);-ms-transform:rotate(144deg);-o-transform:rotate(144deg);transform:rotate(144deg)}.c100.p41 .bar{-webkit-transform:rotate(147.6deg);-moz-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);-o-transform:rotate(147.6deg);transform:rotate(147.6deg)}.c100.p42 .bar{-webkit-transform:rotate(151.2deg);-moz-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);-o-transform:rotate(151.2deg);transform:rotate(151.2deg)}.c100.p43 .bar{-webkit-transform:rotate(154.8deg);-moz-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);-o-transform:rotate(154.8deg);transform:rotate(154.8deg)}.c100.p44 .bar{-webkit-transform:rotate(158.4deg);-moz-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);-o-transform:rotate(158.4deg);transform:rotate(158.4deg)}.c100.p45 .bar{-webkit-transform:rotate(162deg);-moz-transform:rotate(162deg);-ms-transform:rotate(162deg);-o-transform:rotate(162deg);transform:rotate(162deg)}.c100.p46 .bar{-webkit-transform:rotate(165.6deg);-moz-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);-o-transform:rotate(165.6deg);transform:rotate(165.6deg)}.c100.p47 .bar{-webkit-transform:rotate(169.2deg);-moz-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);-o-transform:rotate(169.2deg);transform:rotate(169.2deg)}.c100.p48 .bar{-webkit-transform:rotate(172.8deg);-moz-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);-o-transform:rotate(172.8deg);transform:rotate(172.8deg)}.c100.p49 .bar{-webkit-transform:rotate(176.4deg);-moz-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);-o-transform:rotate(176.4deg);transform:rotate(176.4deg)}.c100.p50 .bar{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.c100.p51 .bar{-webkit-transform:rotate(183.6deg);-moz-transform:rotate(183.6deg);-ms-transform:rotate(183.6deg);-o-transform:rotate(183.6deg);transform:rotate(183.6deg)}.c100.p52 .bar{-webkit-transform:rotate(187.2deg);-moz-transform:rotate(187.2deg);-ms-transform:rotate(187.2deg);-o-transform:rotate(187.2deg);transform:rotate(187.2deg)}.c100.p53 .bar{-webkit-transform:rotate(190.8deg);-moz-transform:rotate(190.8deg);-ms-transform:rotate(190.8deg);-o-transform:rotate(190.8deg);transform:rotate(190.8deg)}.c100.p54 .bar{-webkit-transform:rotate(194.4deg);-moz-transform:rotate(194.4deg);-ms-transform:rotate(194.4deg);-o-transform:rotate(194.4deg);transform:rotate(194.4deg)}.c100.p55 .bar{-webkit-transform:rotate(198deg);-moz-transform:rotate(198deg);-ms-transform:rotate(198deg);-o-transform:rotate(198deg);transform:rotate(198deg)}.c100.p56 .bar{-webkit-transform:rotate(201.6deg);-moz-transform:rotate(201.6deg);-ms-transform:rotate(201.6deg);-o-transform:rotate(201.6deg);transform:rotate(201.6deg)}.c100.p57 .bar{-webkit-transform:rotate(205.2deg);-moz-transform:rotate(205.2deg);-ms-transform:rotate(205.2deg);-o-transform:rotate(205.2deg);transform:rotate(205.2deg)}.c100.p58 .bar{-webkit-transform:rotate(208.8deg);-moz-transform:rotate(208.8deg);-ms-transform:rotate(208.8deg);-o-transform:rotate(208.8deg);transform:rotate(208.8deg)}.c100.p59 .bar{-webkit-transform:rotate(212.4deg);-moz-transform:rotate(212.4deg);-ms-transform:rotate(212.4deg);-o-transform:rotate(212.4deg);transform:rotate(212.4deg)}.c100.p60 .bar{-webkit-transform:rotate(216deg);-moz-transform:rotate(216deg);-ms-transform:rotate(216deg);-o-transform:rotate(216deg);transform:rotate(216deg)}.c100.p61 .bar{-webkit-transform:rotate(219.6deg);-moz-transform:rotate(219.6deg);-ms-transform:rotate(219.6deg);-o-transform:rotate(219.6deg);transform:rotate(219.6deg)}.c100.p62 .bar{-webkit-transform:rotate(223.2deg);-moz-transform:rotate(223.2deg);-ms-transform:rotate(223.2deg);-o-transform:rotate(223.2deg);transform:rotate(223.2deg)}.c100.p63 .bar{-webkit-transform:rotate(226.8deg);-moz-transform:rotate(226.8deg);-ms-transform:rotate(226.8deg);-o-transform:rotate(226.8deg);transform:rotate(226.8deg)}.c100.p64 .bar{-webkit-transform:rotate(230.4deg);-moz-transform:rotate(230.4deg);-ms-transform:rotate(230.4deg);-o-transform:rotate(230.4deg);transform:rotate(230.4deg)}.c100.p65 .bar{-webkit-transform:rotate(234deg);-moz-transform:rotate(234deg);-ms-transform:rotate(234deg);-o-transform:rotate(234deg);transform:rotate(234deg)}.c100.p66 .bar{-webkit-transform:rotate(237.6deg);-moz-transform:rotate(237.6deg);-ms-transform:rotate(237.6deg);-o-transform:rotate(237.6deg);transform:rotate(237.6deg)}.c100.p67 .bar{-webkit-transform:rotate(241.2deg);-moz-transform:rotate(241.2deg);-ms-transform:rotate(241.2deg);-o-transform:rotate(241.2deg);transform:rotate(241.2deg)}.c100.p68 .bar{-webkit-transform:rotate(244.8deg);-moz-transform:rotate(244.8deg);-ms-transform:rotate(244.8deg);-o-transform:rotate(244.8deg);transform:rotate(244.8deg)}.c100.p69 .bar{-webkit-transform:rotate(248.4deg);-moz-transform:rotate(248.4deg);-ms-transform:rotate(248.4deg);-o-transform:rotate(248.4deg);transform:rotate(248.4deg)}.c100.p70 .bar{-webkit-transform:rotate(252deg);-moz-transform:rotate(252deg);-ms-transform:rotate(252deg);-o-transform:rotate(252deg);transform:rotate(252deg)}.c100.p71 .bar{-webkit-transform:rotate(255.6deg);-moz-transform:rotate(255.6deg);-ms-transform:rotate(255.6deg);-o-transform:rotate(255.6deg);transform:rotate(255.6deg)}.c100.p72 .bar{-webkit-transform:rotate(259.2deg);-moz-transform:rotate(259.2deg);-ms-transform:rotate(259.2deg);-o-transform:rotate(259.2deg);transform:rotate(259.2deg)}.c100.p73 .bar{-webkit-transform:rotate(262.8deg);-moz-transform:rotate(262.8deg);-ms-transform:rotate(262.8deg);-o-transform:rotate(262.8deg);transform:rotate(262.8deg)}.c100.p74 .bar{-webkit-transform:rotate(266.4deg);-moz-transform:rotate(266.4deg);-ms-transform:rotate(266.4deg);-o-transform:rotate(266.4deg);transform:rotate(266.4deg)}.c100.p75 .bar{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.c100.p76 .bar{-webkit-transform:rotate(273.6deg);-moz-transform:rotate(273.6deg);-ms-transform:rotate(273.6deg);-o-transform:rotate(273.6deg);transform:rotate(273.6deg)}.c100.p77 .bar{-webkit-transform:rotate(277.2deg);-moz-transform:rotate(277.2deg);-ms-transform:rotate(277.2deg);-o-transform:rotate(277.2deg);transform:rotate(277.2deg)}.c100.p78 .bar{-webkit-transform:rotate(280.8deg);-moz-transform:rotate(280.8deg);-ms-transform:rotate(280.8deg);-o-transform:rotate(280.8deg);transform:rotate(280.8deg)}.c100.p79 .bar{-webkit-transform:rotate(284.4deg);-moz-transform:rotate(284.4deg);-ms-transform:rotate(284.4deg);-o-transform:rotate(284.4deg);transform:rotate(284.4deg)}.c100.p80 .bar{-webkit-transform:rotate(288deg);-moz-transform:rotate(288deg);-ms-transform:rotate(288deg);-o-transform:rotate(288deg);transform:rotate(288deg)}.c100.p81 .bar{-webkit-transform:rotate(291.6deg);-moz-transform:rotate(291.6deg);-ms-transform:rotate(291.6deg);-o-transform:rotate(291.6deg);transform:rotate(291.6deg)}.c100.p82 .bar{-webkit-transform:rotate(295.2deg);-moz-transform:rotate(295.2deg);-ms-transform:rotate(295.2deg);-o-transform:rotate(295.2deg);transform:rotate(295.2deg)}.c100.p83 .bar{-webkit-transform:rotate(298.8deg);-moz-transform:rotate(298.8deg);-ms-transform:rotate(298.8deg);-o-transform:rotate(298.8deg);transform:rotate(298.8deg)}.c100.p84 .bar{-webkit-transform:rotate(302.4deg);-moz-transform:rotate(302.4deg);-ms-transform:rotate(302.4deg);-o-transform:rotate(302.4deg);transform:rotate(302.4deg)}.c100.p85 .bar{-webkit-transform:rotate(306deg);-moz-transform:rotate(306deg);-ms-transform:rotate(306deg);-o-transform:rotate(306deg);transform:rotate(306deg)}.c100.p86 .bar{-webkit-transform:rotate(309.6deg);-moz-transform:rotate(309.6deg);-ms-transform:rotate(309.6deg);-o-transform:rotate(309.6deg);transform:rotate(309.6deg)}.c100.p87 .bar{-webkit-transform:rotate(313.2deg);-moz-transform:rotate(313.2deg);-ms-transform:rotate(313.2deg);-o-transform:rotate(313.2deg);transform:rotate(313.2deg)}.c100.p88 .bar{-webkit-transform:rotate(316.8deg);-moz-transform:rotate(316.8deg);-ms-transform:rotate(316.8deg);-o-transform:rotate(316.8deg);transform:rotate(316.8deg)}.c100.p89 .bar{-webkit-transform:rotate(320.4deg);-moz-transform:rotate(320.4deg);-ms-transform:rotate(320.4deg);-o-transform:rotate(320.4deg);transform:rotate(320.4deg)}.c100.p90 .bar{-webkit-transform:rotate(324deg);-moz-transform:rotate(324deg);-ms-transform:rotate(324deg);-o-transform:rotate(324deg);transform:rotate(324deg)}.c100.p91 .bar{-webkit-transform:rotate(327.6deg);-moz-transform:rotate(327.6deg);-ms-transform:rotate(327.6deg);-o-transform:rotate(327.6deg);transform:rotate(327.6deg)}.c100.p92 .bar{-webkit-transform:rotate(331.2deg);-moz-transform:rotate(331.2deg);-ms-transform:rotate(331.2deg);-o-transform:rotate(331.2deg);transform:rotate(331.2deg)}.c100.p93 .bar{-webkit-transform:rotate(334.8deg);-moz-transform:rotate(334.8deg);-ms-transform:rotate(334.8deg);-o-transform:rotate(334.8deg);transform:rotate(334.8deg)}.c100.p94 .bar{-webkit-transform:rotate(338.4deg);-moz-transform:rotate(338.4deg);-ms-transform:rotate(338.4deg);-o-transform:rotate(338.4deg);transform:rotate(338.4deg)}.c100.p95 .bar{-webkit-transform:rotate(342deg);-moz-transform:rotate(342deg);-ms-transform:rotate(342deg);-o-transform:rotate(342deg);transform:rotate(342deg)}.c100.p96 .bar{-webkit-transform:rotate(345.6deg);-moz-transform:rotate(345.6deg);-ms-transform:rotate(345.6deg);-o-transform:rotate(345.6deg);transform:rotate(345.6deg)}.c100.p97 .bar{-webkit-transform:rotate(349.2deg);-moz-transform:rotate(349.2deg);-ms-transform:rotate(349.2deg);-o-transform:rotate(349.2deg);transform:rotate(349.2deg)}.c100.p98 .bar{-webkit-transform:rotate(352.8deg);-moz-transform:rotate(352.8deg);-ms-transform:rotate(352.8deg);-o-transform:rotate(352.8deg);transform:rotate(352.8deg)}.c100.p99 .bar{-webkit-transform:rotate(356.4deg);-moz-transform:rotate(356.4deg);-ms-transform:rotate(356.4deg);-o-transform:rotate(356.4deg);transform:rotate(356.4deg)}.c100.p100 .bar{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}.c100:hover{cursor:default}.c100:hover>span{width:3.33em;line-height:3.33em;font-size:.3em;color:#307bbb}.c100:hover:after{top:.04em;left:.04em;width:.92em;height:.92em}.c100.dark{background-color:#0077c2}.c100.dark .bar,.c100.dark .fill{border-color:#80d6ff !important}.c100.dark>span{color:#0077c2}.c100.dark:after{background-color:#111}.c100.dark:hover>span{color:#80d6ff}.c100.error{background-color:#700}.c100.error .bar,.c100.error .fill{border-color:#d00 !important}.c100.error:hover>span{color:#d00}.c100.error>span{color:#700}.c100.success{background-color:#000}.c100.success .bar,.c100.success .fill{border-color:lime !important}.c100.success:hover>span{color:lime}.c100.success>span{color:#090}*{margin:0;padding:0;box-sizing:border-box}:root{font-size:16px}h1{width:100%;margin-top:12px;text-align:center}body{font-family:sans-serif;background:url(/static/imgs/grain_background.png);background-color:#111;background-repeat:repeat;color:#fff}button,a.button{box-shadow:0px 2px 6px .5px rgba(0,0,0,.7);border:1px solid #0077c2;background-color:#0077c2;color:#fff;font-size:1rem;padding:.75rem;margin-bottom:12px;display:inline-block;cursor:pointer}button+button,button+a.button,a.button+button,a.button+a.button{margin-left:12px}input,textarea,select{border:none;background-color:#111;color:#fff;font-size:1rem;display:inline-block;padding:.25rem}input::placeholder,textarea::placeholder,select::placeholder{color:#999}input[type=submit]{cursor:pointer;background-color:#0077c2}form input,form textarea,form select{z-index:20;box-shadow:0px 2px 6px .5px rgba(0,0,0,.7);padding:.75rem;width:100%}form input~label,form textarea~label,form select~label{margin-top:24px}form textarea{background-color:#111;height:50vh}form label{z-index:30;box-shadow:0px 2px 6px .5px rgba(0,0,0,.7);background-color:#0077c2;width:100%;line-height:44px;display:inline-block;padding:4px 12px 4px;margin-top:12px}.error-list ul li{box-shadow:0px 2px 6px .5px rgba(0,0,0,.5);list-style:none;background-color:#998100;padding:.5rem;margin-bottom:.5rem}.error-list ul li.success{background-color:#0077c2}.split{display:grid;grid-template-columns:1fr 1fr}.test-case{outline:none;box-shadow:0px 2px 6px .5px rgba(0,0,0,.5);resize:none;border:none;height:200px;padding:8px;background-color:#111;color:#fff}.test-case:first-child{border-right:2px solid #0077c2}.header-line,.option-line{box-shadow:0px 2px 6px .5px rgba(0,0,0,.5);background-color:#0077c2;padding:4px 12px 4px;margin-top:12px;display:inline-block;width:100%}.header-line>*,.option-line>*{line-height:44px;display:inline-block}.option-line{display:grid;grid-template-columns:1fr 1fr}.option-line>*:last-child{text-align:right}.button-list>*{margin:0px 8px 0px;background-color:#42a5f5;box-shadow:none;border:none;color:#fff;font-size:1rem;line-height:1.2rem;padding:4px 12px 4px;display:inline-block;cursor:pointer}.sidebar-page-container{display:grid;grid-template-columns:minmax(250px, 1fr) 5fr}#code-editor{position:relative;width:100%;min-height:24rem}/*# sourceMappingURL=core.css.map */ +.navbar{z-index:10000;width:100%;background:#0077c2;height:47px;position:relative;box-shadow:0px 0px 10px 0px rgba(0,0,0,.7);display:grid;grid-template-columns:1fr 6fr 1fr}.navbar .navbar-logo{padding-left:8px;text-align:center}.navbar .navbar-logo img{max-height:calc(47px - 2px);display:inline}.navbar ul{display:block;text-align:center;font-size:0}.navbar ul a li{margin:0;display:inline-block;cursor:pointer;font-size:24px;list-style:none;line-height:40px;padding-left:30px;padding-right:30px;padding-top:4px;color:#f2f2f2;border-top-color:#0077c2;transition:200ms all}.navbar ul a li.selected,.navbar ul a li:hover{border-bottom:2px solid #ffe766;color:#fff}.navbar .navbar-username{position:relative;max-height:47px;font-size:24px;line-height:40px;text-align:center;padding-top:4px;cursor:pointer;background-color:#00385c;transition:background-color 150ms}.navbar .navbar-username:hover,.navbar .navbar-username.selected{background-color:#00588f}.navbar .navbar-username:hover .navbar-username-dropdown,.navbar .navbar-username.selected .navbar-username-dropdown{display:block}.navbar .navbar-username a{display:block;width:100%}.navbar .navbar-username .navbar-username-dropdown{display:none;position:absolute;top:100%;left:0;width:100%}.navbar .navbar-username .navbar-username-dropdown .navbar-username-dropdown-option{border-bottom:1px solid #00588f;background:#00385c}.navbar .navbar-username .navbar-username-dropdown .navbar-username-dropdown-option:last-child{border-bottom:none}.navbar .navbar-username .navbar-username-dropdown .navbar-username-dropdown-option:hover{background-color:#00588f}.content,.error-list{width:100%;padding:10px 10%}.right{float:right}.left{float:left}.hidden{visibility:hidden}a{text-decoration:none;color:inherit}.split-2{display:grid;grid-template-columns:repeat(2, 1fr)}.split-2>*:first-child{margin-right:12px}.split-2>*:last-child{margin-left:12px}.split-3{display:grid;grid-template-columns:repeat(3, 1fr)}.split-4{display:grid;grid-template-columns:repeat(4, 1fr)}.split-lr{display:grid;grid-template-columns:1fr 1fr}.split-lr>*:first-child{text-align:left}.split-lr>*:last-child{text-align:right}.split-1-1{display:grid;grid-template-columns:1fr 1fr}.split-1-2{display:grid;grid-template-columns:1fr 2fr}.split-1-3{display:grid;grid-template-columns:1fr 3fr}.split-1-4{display:grid;grid-template-columns:1fr 4fr}.split-2-1{display:grid;grid-template-columns:2fr 1fr}.split-2-2{display:grid;grid-template-columns:2fr 2fr}.split-2-3{display:grid;grid-template-columns:2fr 3fr}.split-2-4{display:grid;grid-template-columns:2fr 4fr}.split-3-1{display:grid;grid-template-columns:3fr 1fr}.split-3-2{display:grid;grid-template-columns:3fr 2fr}.split-3-3{display:grid;grid-template-columns:3fr 3fr}.split-3-4{display:grid;grid-template-columns:3fr 4fr}.split-4-1{display:grid;grid-template-columns:4fr 1fr}.split-4-2{display:grid;grid-template-columns:4fr 2fr}.split-4-3{display:grid;grid-template-columns:4fr 3fr}.split-4-4{display:grid;grid-template-columns:4fr 4fr}pre{box-shadow:0px 2px 6px .5px rgba(0,0,0,.5);font-size:1rem}pre .hljs-ln td{padding-right:8px}pre .hljs-ln-line{max-width:200px !important}.fixed-half-split{display:grid;grid-template-columns:275px 1fr}.tabbed-split{display:grid !important}.tabbed-split.tab-12{grid-template-columns:12px 1fr}.tabbed-split.tab-16{grid-template-columns:16px 1fr}.tabbed-split.tab-24{grid-template-columns:24px 1fr}.tabbed-split.tab-32{grid-template-columns:32px 1fr}.tabbed-split.tab-48{grid-template-columns:48px 1fr}.tabbed-split.tab-64{grid-template-columns:64px 1fr}.tabbed-split.primary>span{background-color:#42a5f5}.tabbed-split.primary-light>span{background-color:#80d6ff}.tabbed-split.primary-dark>span{background-color:#0077c2}.tabbed-split.secondary>span{background-color:gold}.tabbed-split.secondary-light>span{background-color:#ffe766}.tabbed-split.secondary-dark>span{background-color:#998100}.tabbed-split.success>span{background-color:lime}.tabbed-split.error>span{background-color:#d00}.tabbed-split.error-light>span{background-color:#f44}.tabbed-split.error-dark>span{background-color:#700}.box{box-shadow:0px 2px 6px .5px rgba(0,0,0,.5);background-color:#111}.box .highlight:hover{background-color:#333}.w50{width:50%}.w100{width:100%}.pad-1{padding:1px !important}.pad-l-1{padding-left:1px !important}.pad-r-1{padding-right:1px !important}.pad-t-1{padding-top:1px !important}.pad-b-1{padding-bottom:1px !important}.mar-1{margin:1px !important}.mar-l-1{margin-left:1px !important}.mar-r-1{margin-right:1px !important}.mar-t-1{margin-top:1px !important}.mar-b-1{margin-bottom:1px !important}.pad-2{padding:2px !important}.pad-l-2{padding-left:2px !important}.pad-r-2{padding-right:2px !important}.pad-t-2{padding-top:2px !important}.pad-b-2{padding-bottom:2px !important}.mar-2{margin:2px !important}.mar-l-2{margin-left:2px !important}.mar-r-2{margin-right:2px !important}.mar-t-2{margin-top:2px !important}.mar-b-2{margin-bottom:2px !important}.pad-3{padding:3px !important}.pad-l-3{padding-left:3px !important}.pad-r-3{padding-right:3px !important}.pad-t-3{padding-top:3px !important}.pad-b-3{padding-bottom:3px !important}.mar-3{margin:3px !important}.mar-l-3{margin-left:3px !important}.mar-r-3{margin-right:3px !important}.mar-t-3{margin-top:3px !important}.mar-b-3{margin-bottom:3px !important}.pad-4{padding:4px !important}.pad-l-4{padding-left:4px !important}.pad-r-4{padding-right:4px !important}.pad-t-4{padding-top:4px !important}.pad-b-4{padding-bottom:4px !important}.mar-4{margin:4px !important}.mar-l-4{margin-left:4px !important}.mar-r-4{margin-right:4px !important}.mar-t-4{margin-top:4px !important}.mar-b-4{margin-bottom:4px !important}.pad-5{padding:5px !important}.pad-l-5{padding-left:5px !important}.pad-r-5{padding-right:5px !important}.pad-t-5{padding-top:5px !important}.pad-b-5{padding-bottom:5px !important}.mar-5{margin:5px !important}.mar-l-5{margin-left:5px !important}.mar-r-5{margin-right:5px !important}.mar-t-5{margin-top:5px !important}.mar-b-5{margin-bottom:5px !important}.pad-6{padding:6px !important}.pad-l-6{padding-left:6px !important}.pad-r-6{padding-right:6px !important}.pad-t-6{padding-top:6px !important}.pad-b-6{padding-bottom:6px !important}.mar-6{margin:6px !important}.mar-l-6{margin-left:6px !important}.mar-r-6{margin-right:6px !important}.mar-t-6{margin-top:6px !important}.mar-b-6{margin-bottom:6px !important}.pad-7{padding:7px !important}.pad-l-7{padding-left:7px !important}.pad-r-7{padding-right:7px !important}.pad-t-7{padding-top:7px !important}.pad-b-7{padding-bottom:7px !important}.mar-7{margin:7px !important}.mar-l-7{margin-left:7px !important}.mar-r-7{margin-right:7px !important}.mar-t-7{margin-top:7px !important}.mar-b-7{margin-bottom:7px !important}.pad-8{padding:8px !important}.pad-l-8{padding-left:8px !important}.pad-r-8{padding-right:8px !important}.pad-t-8{padding-top:8px !important}.pad-b-8{padding-bottom:8px !important}.mar-8{margin:8px !important}.mar-l-8{margin-left:8px !important}.mar-r-8{margin-right:8px !important}.mar-t-8{margin-top:8px !important}.mar-b-8{margin-bottom:8px !important}.pad-9{padding:9px !important}.pad-l-9{padding-left:9px !important}.pad-r-9{padding-right:9px !important}.pad-t-9{padding-top:9px !important}.pad-b-9{padding-bottom:9px !important}.mar-9{margin:9px !important}.mar-l-9{margin-left:9px !important}.mar-r-9{margin-right:9px !important}.mar-t-9{margin-top:9px !important}.mar-b-9{margin-bottom:9px !important}.pad-10{padding:10px !important}.pad-l-10{padding-left:10px !important}.pad-r-10{padding-right:10px !important}.pad-t-10{padding-top:10px !important}.pad-b-10{padding-bottom:10px !important}.mar-10{margin:10px !important}.mar-l-10{margin-left:10px !important}.mar-r-10{margin-right:10px !important}.mar-t-10{margin-top:10px !important}.mar-b-10{margin-bottom:10px !important}.pad-11{padding:11px !important}.pad-l-11{padding-left:11px !important}.pad-r-11{padding-right:11px !important}.pad-t-11{padding-top:11px !important}.pad-b-11{padding-bottom:11px !important}.mar-11{margin:11px !important}.mar-l-11{margin-left:11px !important}.mar-r-11{margin-right:11px !important}.mar-t-11{margin-top:11px !important}.mar-b-11{margin-bottom:11px !important}.pad-12{padding:12px !important}.pad-l-12{padding-left:12px !important}.pad-r-12{padding-right:12px !important}.pad-t-12{padding-top:12px !important}.pad-b-12{padding-bottom:12px !important}.mar-12{margin:12px !important}.mar-l-12{margin-left:12px !important}.mar-r-12{margin-right:12px !important}.mar-t-12{margin-top:12px !important}.mar-b-12{margin-bottom:12px !important}.pad-13{padding:13px !important}.pad-l-13{padding-left:13px !important}.pad-r-13{padding-right:13px !important}.pad-t-13{padding-top:13px !important}.pad-b-13{padding-bottom:13px !important}.mar-13{margin:13px !important}.mar-l-13{margin-left:13px !important}.mar-r-13{margin-right:13px !important}.mar-t-13{margin-top:13px !important}.mar-b-13{margin-bottom:13px !important}.pad-14{padding:14px !important}.pad-l-14{padding-left:14px !important}.pad-r-14{padding-right:14px !important}.pad-t-14{padding-top:14px !important}.pad-b-14{padding-bottom:14px !important}.mar-14{margin:14px !important}.mar-l-14{margin-left:14px !important}.mar-r-14{margin-right:14px !important}.mar-t-14{margin-top:14px !important}.mar-b-14{margin-bottom:14px !important}.pad-15{padding:15px !important}.pad-l-15{padding-left:15px !important}.pad-r-15{padding-right:15px !important}.pad-t-15{padding-top:15px !important}.pad-b-15{padding-bottom:15px !important}.mar-15{margin:15px !important}.mar-l-15{margin-left:15px !important}.mar-r-15{margin-right:15px !important}.mar-t-15{margin-top:15px !important}.mar-b-15{margin-bottom:15px !important}.pad-16{padding:16px !important}.pad-l-16{padding-left:16px !important}.pad-r-16{padding-right:16px !important}.pad-t-16{padding-top:16px !important}.pad-b-16{padding-bottom:16px !important}.mar-16{margin:16px !important}.mar-l-16{margin-left:16px !important}.mar-r-16{margin-right:16px !important}.mar-t-16{margin-top:16px !important}.mar-b-16{margin-bottom:16px !important}.pad-17{padding:17px !important}.pad-l-17{padding-left:17px !important}.pad-r-17{padding-right:17px !important}.pad-t-17{padding-top:17px !important}.pad-b-17{padding-bottom:17px !important}.mar-17{margin:17px !important}.mar-l-17{margin-left:17px !important}.mar-r-17{margin-right:17px !important}.mar-t-17{margin-top:17px !important}.mar-b-17{margin-bottom:17px !important}.pad-18{padding:18px !important}.pad-l-18{padding-left:18px !important}.pad-r-18{padding-right:18px !important}.pad-t-18{padding-top:18px !important}.pad-b-18{padding-bottom:18px !important}.mar-18{margin:18px !important}.mar-l-18{margin-left:18px !important}.mar-r-18{margin-right:18px !important}.mar-t-18{margin-top:18px !important}.mar-b-18{margin-bottom:18px !important}.pad-19{padding:19px !important}.pad-l-19{padding-left:19px !important}.pad-r-19{padding-right:19px !important}.pad-t-19{padding-top:19px !important}.pad-b-19{padding-bottom:19px !important}.mar-19{margin:19px !important}.mar-l-19{margin-left:19px !important}.mar-r-19{margin-right:19px !important}.mar-t-19{margin-top:19px !important}.mar-b-19{margin-bottom:19px !important}.pad-20{padding:20px !important}.pad-l-20{padding-left:20px !important}.pad-r-20{padding-right:20px !important}.pad-t-20{padding-top:20px !important}.pad-b-20{padding-bottom:20px !important}.mar-20{margin:20px !important}.mar-l-20{margin-left:20px !important}.mar-r-20{margin-right:20px !important}.mar-t-20{margin-top:20px !important}.mar-b-20{margin-bottom:20px !important}.pad-21{padding:21px !important}.pad-l-21{padding-left:21px !important}.pad-r-21{padding-right:21px !important}.pad-t-21{padding-top:21px !important}.pad-b-21{padding-bottom:21px !important}.mar-21{margin:21px !important}.mar-l-21{margin-left:21px !important}.mar-r-21{margin-right:21px !important}.mar-t-21{margin-top:21px !important}.mar-b-21{margin-bottom:21px !important}.pad-22{padding:22px !important}.pad-l-22{padding-left:22px !important}.pad-r-22{padding-right:22px !important}.pad-t-22{padding-top:22px !important}.pad-b-22{padding-bottom:22px !important}.mar-22{margin:22px !important}.mar-l-22{margin-left:22px !important}.mar-r-22{margin-right:22px !important}.mar-t-22{margin-top:22px !important}.mar-b-22{margin-bottom:22px !important}.pad-23{padding:23px !important}.pad-l-23{padding-left:23px !important}.pad-r-23{padding-right:23px !important}.pad-t-23{padding-top:23px !important}.pad-b-23{padding-bottom:23px !important}.mar-23{margin:23px !important}.mar-l-23{margin-left:23px !important}.mar-r-23{margin-right:23px !important}.mar-t-23{margin-top:23px !important}.mar-b-23{margin-bottom:23px !important}.pad-24{padding:24px !important}.pad-l-24{padding-left:24px !important}.pad-r-24{padding-right:24px !important}.pad-t-24{padding-top:24px !important}.pad-b-24{padding-bottom:24px !important}.mar-24{margin:24px !important}.mar-l-24{margin-left:24px !important}.mar-r-24{margin-right:24px !important}.mar-t-24{margin-top:24px !important}.mar-b-24{margin-bottom:24px !important}.pad-25{padding:25px !important}.pad-l-25{padding-left:25px !important}.pad-r-25{padding-right:25px !important}.pad-t-25{padding-top:25px !important}.pad-b-25{padding-bottom:25px !important}.mar-25{margin:25px !important}.mar-l-25{margin-left:25px !important}.mar-r-25{margin-right:25px !important}.mar-t-25{margin-top:25px !important}.mar-b-25{margin-bottom:25px !important}.pad-26{padding:26px !important}.pad-l-26{padding-left:26px !important}.pad-r-26{padding-right:26px !important}.pad-t-26{padding-top:26px !important}.pad-b-26{padding-bottom:26px !important}.mar-26{margin:26px !important}.mar-l-26{margin-left:26px !important}.mar-r-26{margin-right:26px !important}.mar-t-26{margin-top:26px !important}.mar-b-26{margin-bottom:26px !important}.pad-27{padding:27px !important}.pad-l-27{padding-left:27px !important}.pad-r-27{padding-right:27px !important}.pad-t-27{padding-top:27px !important}.pad-b-27{padding-bottom:27px !important}.mar-27{margin:27px !important}.mar-l-27{margin-left:27px !important}.mar-r-27{margin-right:27px !important}.mar-t-27{margin-top:27px !important}.mar-b-27{margin-bottom:27px !important}.pad-28{padding:28px !important}.pad-l-28{padding-left:28px !important}.pad-r-28{padding-right:28px !important}.pad-t-28{padding-top:28px !important}.pad-b-28{padding-bottom:28px !important}.mar-28{margin:28px !important}.mar-l-28{margin-left:28px !important}.mar-r-28{margin-right:28px !important}.mar-t-28{margin-top:28px !important}.mar-b-28{margin-bottom:28px !important}.pad-29{padding:29px !important}.pad-l-29{padding-left:29px !important}.pad-r-29{padding-right:29px !important}.pad-t-29{padding-top:29px !important}.pad-b-29{padding-bottom:29px !important}.mar-29{margin:29px !important}.mar-l-29{margin-left:29px !important}.mar-r-29{margin-right:29px !important}.mar-t-29{margin-top:29px !important}.mar-b-29{margin-bottom:29px !important}.pad-30{padding:30px !important}.pad-l-30{padding-left:30px !important}.pad-r-30{padding-right:30px !important}.pad-t-30{padding-top:30px !important}.pad-b-30{padding-bottom:30px !important}.mar-30{margin:30px !important}.mar-l-30{margin-left:30px !important}.mar-r-30{margin-right:30px !important}.mar-t-30{margin-top:30px !important}.mar-b-30{margin-bottom:30px !important}.pad-31{padding:31px !important}.pad-l-31{padding-left:31px !important}.pad-r-31{padding-right:31px !important}.pad-t-31{padding-top:31px !important}.pad-b-31{padding-bottom:31px !important}.mar-31{margin:31px !important}.mar-l-31{margin-left:31px !important}.mar-r-31{margin-right:31px !important}.mar-t-31{margin-top:31px !important}.mar-b-31{margin-bottom:31px !important}.pad-32{padding:32px !important}.pad-l-32{padding-left:32px !important}.pad-r-32{padding-right:32px !important}.pad-t-32{padding-top:32px !important}.pad-b-32{padding-bottom:32px !important}.mar-32{margin:32px !important}.mar-l-32{margin-left:32px !important}.mar-r-32{margin-right:32px !important}.mar-t-32{margin-top:32px !important}.mar-b-32{margin-bottom:32px !important}.pad-33{padding:33px !important}.pad-l-33{padding-left:33px !important}.pad-r-33{padding-right:33px !important}.pad-t-33{padding-top:33px !important}.pad-b-33{padding-bottom:33px !important}.mar-33{margin:33px !important}.mar-l-33{margin-left:33px !important}.mar-r-33{margin-right:33px !important}.mar-t-33{margin-top:33px !important}.mar-b-33{margin-bottom:33px !important}.pad-34{padding:34px !important}.pad-l-34{padding-left:34px !important}.pad-r-34{padding-right:34px !important}.pad-t-34{padding-top:34px !important}.pad-b-34{padding-bottom:34px !important}.mar-34{margin:34px !important}.mar-l-34{margin-left:34px !important}.mar-r-34{margin-right:34px !important}.mar-t-34{margin-top:34px !important}.mar-b-34{margin-bottom:34px !important}.pad-35{padding:35px !important}.pad-l-35{padding-left:35px !important}.pad-r-35{padding-right:35px !important}.pad-t-35{padding-top:35px !important}.pad-b-35{padding-bottom:35px !important}.mar-35{margin:35px !important}.mar-l-35{margin-left:35px !important}.mar-r-35{margin-right:35px !important}.mar-t-35{margin-top:35px !important}.mar-b-35{margin-bottom:35px !important}.pad-36{padding:36px !important}.pad-l-36{padding-left:36px !important}.pad-r-36{padding-right:36px !important}.pad-t-36{padding-top:36px !important}.pad-b-36{padding-bottom:36px !important}.mar-36{margin:36px !important}.mar-l-36{margin-left:36px !important}.mar-r-36{margin-right:36px !important}.mar-t-36{margin-top:36px !important}.mar-b-36{margin-bottom:36px !important}.pad-37{padding:37px !important}.pad-l-37{padding-left:37px !important}.pad-r-37{padding-right:37px !important}.pad-t-37{padding-top:37px !important}.pad-b-37{padding-bottom:37px !important}.mar-37{margin:37px !important}.mar-l-37{margin-left:37px !important}.mar-r-37{margin-right:37px !important}.mar-t-37{margin-top:37px !important}.mar-b-37{margin-bottom:37px !important}.pad-38{padding:38px !important}.pad-l-38{padding-left:38px !important}.pad-r-38{padding-right:38px !important}.pad-t-38{padding-top:38px !important}.pad-b-38{padding-bottom:38px !important}.mar-38{margin:38px !important}.mar-l-38{margin-left:38px !important}.mar-r-38{margin-right:38px !important}.mar-t-38{margin-top:38px !important}.mar-b-38{margin-bottom:38px !important}.pad-39{padding:39px !important}.pad-l-39{padding-left:39px !important}.pad-r-39{padding-right:39px !important}.pad-t-39{padding-top:39px !important}.pad-b-39{padding-bottom:39px !important}.mar-39{margin:39px !important}.mar-l-39{margin-left:39px !important}.mar-r-39{margin-right:39px !important}.mar-t-39{margin-top:39px !important}.mar-b-39{margin-bottom:39px !important}.pad-40{padding:40px !important}.pad-l-40{padding-left:40px !important}.pad-r-40{padding-right:40px !important}.pad-t-40{padding-top:40px !important}.pad-b-40{padding-bottom:40px !important}.mar-40{margin:40px !important}.mar-l-40{margin-left:40px !important}.mar-r-40{margin-right:40px !important}.mar-t-40{margin-top:40px !important}.mar-b-40{margin-bottom:40px !important}.pad-41{padding:41px !important}.pad-l-41{padding-left:41px !important}.pad-r-41{padding-right:41px !important}.pad-t-41{padding-top:41px !important}.pad-b-41{padding-bottom:41px !important}.mar-41{margin:41px !important}.mar-l-41{margin-left:41px !important}.mar-r-41{margin-right:41px !important}.mar-t-41{margin-top:41px !important}.mar-b-41{margin-bottom:41px !important}.pad-42{padding:42px !important}.pad-l-42{padding-left:42px !important}.pad-r-42{padding-right:42px !important}.pad-t-42{padding-top:42px !important}.pad-b-42{padding-bottom:42px !important}.mar-42{margin:42px !important}.mar-l-42{margin-left:42px !important}.mar-r-42{margin-right:42px !important}.mar-t-42{margin-top:42px !important}.mar-b-42{margin-bottom:42px !important}.pad-43{padding:43px !important}.pad-l-43{padding-left:43px !important}.pad-r-43{padding-right:43px !important}.pad-t-43{padding-top:43px !important}.pad-b-43{padding-bottom:43px !important}.mar-43{margin:43px !important}.mar-l-43{margin-left:43px !important}.mar-r-43{margin-right:43px !important}.mar-t-43{margin-top:43px !important}.mar-b-43{margin-bottom:43px !important}.pad-44{padding:44px !important}.pad-l-44{padding-left:44px !important}.pad-r-44{padding-right:44px !important}.pad-t-44{padding-top:44px !important}.pad-b-44{padding-bottom:44px !important}.mar-44{margin:44px !important}.mar-l-44{margin-left:44px !important}.mar-r-44{margin-right:44px !important}.mar-t-44{margin-top:44px !important}.mar-b-44{margin-bottom:44px !important}.pad-45{padding:45px !important}.pad-l-45{padding-left:45px !important}.pad-r-45{padding-right:45px !important}.pad-t-45{padding-top:45px !important}.pad-b-45{padding-bottom:45px !important}.mar-45{margin:45px !important}.mar-l-45{margin-left:45px !important}.mar-r-45{margin-right:45px !important}.mar-t-45{margin-top:45px !important}.mar-b-45{margin-bottom:45px !important}.pad-46{padding:46px !important}.pad-l-46{padding-left:46px !important}.pad-r-46{padding-right:46px !important}.pad-t-46{padding-top:46px !important}.pad-b-46{padding-bottom:46px !important}.mar-46{margin:46px !important}.mar-l-46{margin-left:46px !important}.mar-r-46{margin-right:46px !important}.mar-t-46{margin-top:46px !important}.mar-b-46{margin-bottom:46px !important}.pad-47{padding:47px !important}.pad-l-47{padding-left:47px !important}.pad-r-47{padding-right:47px !important}.pad-t-47{padding-top:47px !important}.pad-b-47{padding-bottom:47px !important}.mar-47{margin:47px !important}.mar-l-47{margin-left:47px !important}.mar-r-47{margin-right:47px !important}.mar-t-47{margin-top:47px !important}.mar-b-47{margin-bottom:47px !important}.pad-48{padding:48px !important}.pad-l-48{padding-left:48px !important}.pad-r-48{padding-right:48px !important}.pad-t-48{padding-top:48px !important}.pad-b-48{padding-bottom:48px !important}.mar-48{margin:48px !important}.mar-l-48{margin-left:48px !important}.mar-r-48{margin-right:48px !important}.mar-t-48{margin-top:48px !important}.mar-b-48{margin-bottom:48px !important}.pad-49{padding:49px !important}.pad-l-49{padding-left:49px !important}.pad-r-49{padding-right:49px !important}.pad-t-49{padding-top:49px !important}.pad-b-49{padding-bottom:49px !important}.mar-49{margin:49px !important}.mar-l-49{margin-left:49px !important}.mar-r-49{margin-right:49px !important}.mar-t-49{margin-top:49px !important}.mar-b-49{margin-bottom:49px !important}.problem-info{float:right;width:300px}.sidebar-problem-list{z-index:50;box-shadow:0 10px 0 0 transparent,0 10px 0 0 transparent,10px 0 0 0 transparent,0 8px 8px 2px rgba(0,0,0,.5);background:#003252;position:relative;min-height:calc(100vh - 47px)}.sidebar-problem-list .sidebar-problem{width:100%;display:grid;grid-template-columns:32px 1fr;border-left-width:24px;border-left-style:solid;border-left-color:#0077c2;transition:background-color 200ms ease-in-out;transition:width 200ms ease-in-out;background-color:inherit;cursor:pointer}.sidebar-problem-list .sidebar-problem[correct]{border-left-color:lime}.sidebar-problem-list .sidebar-problem[wrong]{border-left-color:red}.sidebar-problem-list .sidebar-problem[selected],.sidebar-problem-list .sidebar-problem:hover{width:calc(100% + 24px)}.sidebar-problem-list .sidebar-problem[selected]{background-color:#42a5f5 !important}.sidebar-problem-list .sidebar-problem:hover{background-color:#128ef2}.sidebar-problem-list .sidebar-problem-letter{text-align:center;background-color:#001929;padding-top:20px;padding-bottom:20px;font-size:1.2rem}.sidebar-problem-list .sidebar-problem-name{text-align:left;font-size:1.2rem;padding-left:5px;padding-top:20px;padding-bottom:20px;margin-left:10px;margin-right:10px}.rect-auto,.c100.p100 .slice,.c100.p99 .slice,.c100.p98 .slice,.c100.p97 .slice,.c100.p96 .slice,.c100.p95 .slice,.c100.p94 .slice,.c100.p93 .slice,.c100.p92 .slice,.c100.p91 .slice,.c100.p90 .slice,.c100.p89 .slice,.c100.p88 .slice,.c100.p87 .slice,.c100.p86 .slice,.c100.p85 .slice,.c100.p84 .slice,.c100.p83 .slice,.c100.p82 .slice,.c100.p81 .slice,.c100.p80 .slice,.c100.p79 .slice,.c100.p78 .slice,.c100.p77 .slice,.c100.p76 .slice,.c100.p75 .slice,.c100.p74 .slice,.c100.p73 .slice,.c100.p72 .slice,.c100.p71 .slice,.c100.p70 .slice,.c100.p69 .slice,.c100.p68 .slice,.c100.p67 .slice,.c100.p66 .slice,.c100.p65 .slice,.c100.p64 .slice,.c100.p63 .slice,.c100.p62 .slice,.c100.p61 .slice,.c100.p60 .slice,.c100.p59 .slice,.c100.p58 .slice,.c100.p57 .slice,.c100.p56 .slice,.c100.p55 .slice,.c100.p54 .slice,.c100.p53 .slice,.c100.p52 .slice,.c100.p51 .slice{clip:rect(auto, auto, auto, auto)}.pie,.c100.p100 .fill,.c100.p99 .fill,.c100.p98 .fill,.c100.p97 .fill,.c100.p96 .fill,.c100.p95 .fill,.c100.p94 .fill,.c100.p93 .fill,.c100.p92 .fill,.c100.p91 .fill,.c100.p90 .fill,.c100.p89 .fill,.c100.p88 .fill,.c100.p87 .fill,.c100.p86 .fill,.c100.p85 .fill,.c100.p84 .fill,.c100.p83 .fill,.c100.p82 .fill,.c100.p81 .fill,.c100.p80 .fill,.c100.p79 .fill,.c100.p78 .fill,.c100.p77 .fill,.c100.p76 .fill,.c100.p75 .fill,.c100.p74 .fill,.c100.p73 .fill,.c100.p72 .fill,.c100.p71 .fill,.c100.p70 .fill,.c100.p69 .fill,.c100.p68 .fill,.c100.p67 .fill,.c100.p66 .fill,.c100.p65 .fill,.c100.p64 .fill,.c100.p63 .fill,.c100.p62 .fill,.c100.p61 .fill,.c100.p60 .fill,.c100.p59 .fill,.c100.p58 .fill,.c100.p57 .fill,.c100.p56 .fill,.c100.p55 .fill,.c100.p54 .fill,.c100.p53 .fill,.c100.p52 .fill,.c100.p51 .fill,.c100 .bar{position:absolute;border:.08em solid #307bbb;width:.84em;height:.84em;clip:rect(0em, 0.5em, 1em, 0em);border-radius:50%;-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-o-transform:rotate(0deg);transform:rotate(0deg)}.pie-fill,.c100.p100 .fill,.c100.p100.bar:after,.c100.p99 .fill,.c100.p99.bar:after,.c100.p98 .fill,.c100.p98.bar:after,.c100.p97 .fill,.c100.p97.bar:after,.c100.p96 .fill,.c100.p96.bar:after,.c100.p95 .fill,.c100.p95.bar:after,.c100.p94 .fill,.c100.p94.bar:after,.c100.p93 .fill,.c100.p93.bar:after,.c100.p92 .fill,.c100.p92.bar:after,.c100.p91 .fill,.c100.p91.bar:after,.c100.p90 .fill,.c100.p90.bar:after,.c100.p89 .fill,.c100.p89.bar:after,.c100.p88 .fill,.c100.p88.bar:after,.c100.p87 .fill,.c100.p87.bar:after,.c100.p86 .fill,.c100.p86.bar:after,.c100.p85 .fill,.c100.p85.bar:after,.c100.p84 .fill,.c100.p84.bar:after,.c100.p83 .fill,.c100.p83.bar:after,.c100.p82 .fill,.c100.p82.bar:after,.c100.p81 .fill,.c100.p81.bar:after,.c100.p80 .fill,.c100.p80.bar:after,.c100.p79 .fill,.c100.p79.bar:after,.c100.p78 .fill,.c100.p78.bar:after,.c100.p77 .fill,.c100.p77.bar:after,.c100.p76 .fill,.c100.p76.bar:after,.c100.p75 .fill,.c100.p75.bar:after,.c100.p74 .fill,.c100.p74.bar:after,.c100.p73 .fill,.c100.p73.bar:after,.c100.p72 .fill,.c100.p72.bar:after,.c100.p71 .fill,.c100.p71.bar:after,.c100.p70 .fill,.c100.p70.bar:after,.c100.p69 .fill,.c100.p69.bar:after,.c100.p68 .fill,.c100.p68.bar:after,.c100.p67 .fill,.c100.p67.bar:after,.c100.p66 .fill,.c100.p66.bar:after,.c100.p65 .fill,.c100.p65.bar:after,.c100.p64 .fill,.c100.p64.bar:after,.c100.p63 .fill,.c100.p63.bar:after,.c100.p62 .fill,.c100.p62.bar:after,.c100.p61 .fill,.c100.p61.bar:after,.c100.p60 .fill,.c100.p60.bar:after,.c100.p59 .fill,.c100.p59.bar:after,.c100.p58 .fill,.c100.p58.bar:after,.c100.p57 .fill,.c100.p57.bar:after,.c100.p56 .fill,.c100.p56.bar:after,.c100.p55 .fill,.c100.p55.bar:after,.c100.p54 .fill,.c100.p54.bar:after,.c100.p53 .fill,.c100.p53.bar:after,.c100.p52 .fill,.c100.p52.bar:after,.c100.p51 .fill,.c100.p51.bar:after{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.c100{position:relative;font-size:120px;width:1em;height:1em;border-radius:50%;float:left;background-color:#ccc}.c100 *,.c100 *:before,.c100 *:after{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.c100.center{float:none;margin:0 auto}.c100.big{font-size:240px}.c100.small{font-size:80px}.c100>span{position:absolute;width:100%;z-index:1;left:0;top:0;width:5em;line-height:5em;font-size:.2em;color:#ccc;display:block;text-align:center;white-space:nowrap;-webkit-transition-property:all;-moz-transition-property:all;-o-transition-property:all;transition-property:all;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out}.c100:after{position:absolute;top:.08em;left:.08em;display:block;content:" ";border-radius:50%;background-color:#f5f5f5;width:.84em;height:.84em;-webkit-transition-property:all;-moz-transition-property:all;-o-transition-property:all;transition-property:all;-webkit-transition-duration:.2s;-moz-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:ease-in;-moz-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in}.c100 .slice{position:absolute;width:1em;height:1em;clip:rect(0em, 1em, 1em, 0.5em)}.c100.p1 .bar{-webkit-transform:rotate(3.6deg);-moz-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);-o-transform:rotate(3.6deg);transform:rotate(3.6deg)}.c100.p2 .bar{-webkit-transform:rotate(7.2deg);-moz-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);-o-transform:rotate(7.2deg);transform:rotate(7.2deg)}.c100.p3 .bar{-webkit-transform:rotate(10.8deg);-moz-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);-o-transform:rotate(10.8deg);transform:rotate(10.8deg)}.c100.p4 .bar{-webkit-transform:rotate(14.4deg);-moz-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);-o-transform:rotate(14.4deg);transform:rotate(14.4deg)}.c100.p5 .bar{-webkit-transform:rotate(18deg);-moz-transform:rotate(18deg);-ms-transform:rotate(18deg);-o-transform:rotate(18deg);transform:rotate(18deg)}.c100.p6 .bar{-webkit-transform:rotate(21.6deg);-moz-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);-o-transform:rotate(21.6deg);transform:rotate(21.6deg)}.c100.p7 .bar{-webkit-transform:rotate(25.2deg);-moz-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);-o-transform:rotate(25.2deg);transform:rotate(25.2deg)}.c100.p8 .bar{-webkit-transform:rotate(28.8deg);-moz-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);-o-transform:rotate(28.8deg);transform:rotate(28.8deg)}.c100.p9 .bar{-webkit-transform:rotate(32.4deg);-moz-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);-o-transform:rotate(32.4deg);transform:rotate(32.4deg)}.c100.p10 .bar{-webkit-transform:rotate(36deg);-moz-transform:rotate(36deg);-ms-transform:rotate(36deg);-o-transform:rotate(36deg);transform:rotate(36deg)}.c100.p11 .bar{-webkit-transform:rotate(39.6deg);-moz-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);-o-transform:rotate(39.6deg);transform:rotate(39.6deg)}.c100.p12 .bar{-webkit-transform:rotate(43.2deg);-moz-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);-o-transform:rotate(43.2deg);transform:rotate(43.2deg)}.c100.p13 .bar{-webkit-transform:rotate(46.8deg);-moz-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);-o-transform:rotate(46.8deg);transform:rotate(46.8deg)}.c100.p14 .bar{-webkit-transform:rotate(50.4deg);-moz-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);-o-transform:rotate(50.4deg);transform:rotate(50.4deg)}.c100.p15 .bar{-webkit-transform:rotate(54deg);-moz-transform:rotate(54deg);-ms-transform:rotate(54deg);-o-transform:rotate(54deg);transform:rotate(54deg)}.c100.p16 .bar{-webkit-transform:rotate(57.6deg);-moz-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);-o-transform:rotate(57.6deg);transform:rotate(57.6deg)}.c100.p17 .bar{-webkit-transform:rotate(61.2deg);-moz-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);-o-transform:rotate(61.2deg);transform:rotate(61.2deg)}.c100.p18 .bar{-webkit-transform:rotate(64.8deg);-moz-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);-o-transform:rotate(64.8deg);transform:rotate(64.8deg)}.c100.p19 .bar{-webkit-transform:rotate(68.4deg);-moz-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);-o-transform:rotate(68.4deg);transform:rotate(68.4deg)}.c100.p20 .bar{-webkit-transform:rotate(72deg);-moz-transform:rotate(72deg);-ms-transform:rotate(72deg);-o-transform:rotate(72deg);transform:rotate(72deg)}.c100.p21 .bar{-webkit-transform:rotate(75.6deg);-moz-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);-o-transform:rotate(75.6deg);transform:rotate(75.6deg)}.c100.p22 .bar{-webkit-transform:rotate(79.2deg);-moz-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);-o-transform:rotate(79.2deg);transform:rotate(79.2deg)}.c100.p23 .bar{-webkit-transform:rotate(82.8deg);-moz-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);-o-transform:rotate(82.8deg);transform:rotate(82.8deg)}.c100.p24 .bar{-webkit-transform:rotate(86.4deg);-moz-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);-o-transform:rotate(86.4deg);transform:rotate(86.4deg)}.c100.p25 .bar{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.c100.p26 .bar{-webkit-transform:rotate(93.6deg);-moz-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);-o-transform:rotate(93.6deg);transform:rotate(93.6deg)}.c100.p27 .bar{-webkit-transform:rotate(97.2deg);-moz-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);-o-transform:rotate(97.2deg);transform:rotate(97.2deg)}.c100.p28 .bar{-webkit-transform:rotate(100.8deg);-moz-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);-o-transform:rotate(100.8deg);transform:rotate(100.8deg)}.c100.p29 .bar{-webkit-transform:rotate(104.4deg);-moz-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);-o-transform:rotate(104.4deg);transform:rotate(104.4deg)}.c100.p30 .bar{-webkit-transform:rotate(108deg);-moz-transform:rotate(108deg);-ms-transform:rotate(108deg);-o-transform:rotate(108deg);transform:rotate(108deg)}.c100.p31 .bar{-webkit-transform:rotate(111.6deg);-moz-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);-o-transform:rotate(111.6deg);transform:rotate(111.6deg)}.c100.p32 .bar{-webkit-transform:rotate(115.2deg);-moz-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);-o-transform:rotate(115.2deg);transform:rotate(115.2deg)}.c100.p33 .bar{-webkit-transform:rotate(118.8deg);-moz-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);-o-transform:rotate(118.8deg);transform:rotate(118.8deg)}.c100.p34 .bar{-webkit-transform:rotate(122.4deg);-moz-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);-o-transform:rotate(122.4deg);transform:rotate(122.4deg)}.c100.p35 .bar{-webkit-transform:rotate(126deg);-moz-transform:rotate(126deg);-ms-transform:rotate(126deg);-o-transform:rotate(126deg);transform:rotate(126deg)}.c100.p36 .bar{-webkit-transform:rotate(129.6deg);-moz-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);-o-transform:rotate(129.6deg);transform:rotate(129.6deg)}.c100.p37 .bar{-webkit-transform:rotate(133.2deg);-moz-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);-o-transform:rotate(133.2deg);transform:rotate(133.2deg)}.c100.p38 .bar{-webkit-transform:rotate(136.8deg);-moz-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);-o-transform:rotate(136.8deg);transform:rotate(136.8deg)}.c100.p39 .bar{-webkit-transform:rotate(140.4deg);-moz-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);-o-transform:rotate(140.4deg);transform:rotate(140.4deg)}.c100.p40 .bar{-webkit-transform:rotate(144deg);-moz-transform:rotate(144deg);-ms-transform:rotate(144deg);-o-transform:rotate(144deg);transform:rotate(144deg)}.c100.p41 .bar{-webkit-transform:rotate(147.6deg);-moz-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);-o-transform:rotate(147.6deg);transform:rotate(147.6deg)}.c100.p42 .bar{-webkit-transform:rotate(151.2deg);-moz-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);-o-transform:rotate(151.2deg);transform:rotate(151.2deg)}.c100.p43 .bar{-webkit-transform:rotate(154.8deg);-moz-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);-o-transform:rotate(154.8deg);transform:rotate(154.8deg)}.c100.p44 .bar{-webkit-transform:rotate(158.4deg);-moz-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);-o-transform:rotate(158.4deg);transform:rotate(158.4deg)}.c100.p45 .bar{-webkit-transform:rotate(162deg);-moz-transform:rotate(162deg);-ms-transform:rotate(162deg);-o-transform:rotate(162deg);transform:rotate(162deg)}.c100.p46 .bar{-webkit-transform:rotate(165.6deg);-moz-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);-o-transform:rotate(165.6deg);transform:rotate(165.6deg)}.c100.p47 .bar{-webkit-transform:rotate(169.2deg);-moz-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);-o-transform:rotate(169.2deg);transform:rotate(169.2deg)}.c100.p48 .bar{-webkit-transform:rotate(172.8deg);-moz-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);-o-transform:rotate(172.8deg);transform:rotate(172.8deg)}.c100.p49 .bar{-webkit-transform:rotate(176.4deg);-moz-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);-o-transform:rotate(176.4deg);transform:rotate(176.4deg)}.c100.p50 .bar{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.c100.p51 .bar{-webkit-transform:rotate(183.6deg);-moz-transform:rotate(183.6deg);-ms-transform:rotate(183.6deg);-o-transform:rotate(183.6deg);transform:rotate(183.6deg)}.c100.p52 .bar{-webkit-transform:rotate(187.2deg);-moz-transform:rotate(187.2deg);-ms-transform:rotate(187.2deg);-o-transform:rotate(187.2deg);transform:rotate(187.2deg)}.c100.p53 .bar{-webkit-transform:rotate(190.8deg);-moz-transform:rotate(190.8deg);-ms-transform:rotate(190.8deg);-o-transform:rotate(190.8deg);transform:rotate(190.8deg)}.c100.p54 .bar{-webkit-transform:rotate(194.4deg);-moz-transform:rotate(194.4deg);-ms-transform:rotate(194.4deg);-o-transform:rotate(194.4deg);transform:rotate(194.4deg)}.c100.p55 .bar{-webkit-transform:rotate(198deg);-moz-transform:rotate(198deg);-ms-transform:rotate(198deg);-o-transform:rotate(198deg);transform:rotate(198deg)}.c100.p56 .bar{-webkit-transform:rotate(201.6deg);-moz-transform:rotate(201.6deg);-ms-transform:rotate(201.6deg);-o-transform:rotate(201.6deg);transform:rotate(201.6deg)}.c100.p57 .bar{-webkit-transform:rotate(205.2deg);-moz-transform:rotate(205.2deg);-ms-transform:rotate(205.2deg);-o-transform:rotate(205.2deg);transform:rotate(205.2deg)}.c100.p58 .bar{-webkit-transform:rotate(208.8deg);-moz-transform:rotate(208.8deg);-ms-transform:rotate(208.8deg);-o-transform:rotate(208.8deg);transform:rotate(208.8deg)}.c100.p59 .bar{-webkit-transform:rotate(212.4deg);-moz-transform:rotate(212.4deg);-ms-transform:rotate(212.4deg);-o-transform:rotate(212.4deg);transform:rotate(212.4deg)}.c100.p60 .bar{-webkit-transform:rotate(216deg);-moz-transform:rotate(216deg);-ms-transform:rotate(216deg);-o-transform:rotate(216deg);transform:rotate(216deg)}.c100.p61 .bar{-webkit-transform:rotate(219.6deg);-moz-transform:rotate(219.6deg);-ms-transform:rotate(219.6deg);-o-transform:rotate(219.6deg);transform:rotate(219.6deg)}.c100.p62 .bar{-webkit-transform:rotate(223.2deg);-moz-transform:rotate(223.2deg);-ms-transform:rotate(223.2deg);-o-transform:rotate(223.2deg);transform:rotate(223.2deg)}.c100.p63 .bar{-webkit-transform:rotate(226.8deg);-moz-transform:rotate(226.8deg);-ms-transform:rotate(226.8deg);-o-transform:rotate(226.8deg);transform:rotate(226.8deg)}.c100.p64 .bar{-webkit-transform:rotate(230.4deg);-moz-transform:rotate(230.4deg);-ms-transform:rotate(230.4deg);-o-transform:rotate(230.4deg);transform:rotate(230.4deg)}.c100.p65 .bar{-webkit-transform:rotate(234deg);-moz-transform:rotate(234deg);-ms-transform:rotate(234deg);-o-transform:rotate(234deg);transform:rotate(234deg)}.c100.p66 .bar{-webkit-transform:rotate(237.6deg);-moz-transform:rotate(237.6deg);-ms-transform:rotate(237.6deg);-o-transform:rotate(237.6deg);transform:rotate(237.6deg)}.c100.p67 .bar{-webkit-transform:rotate(241.2deg);-moz-transform:rotate(241.2deg);-ms-transform:rotate(241.2deg);-o-transform:rotate(241.2deg);transform:rotate(241.2deg)}.c100.p68 .bar{-webkit-transform:rotate(244.8deg);-moz-transform:rotate(244.8deg);-ms-transform:rotate(244.8deg);-o-transform:rotate(244.8deg);transform:rotate(244.8deg)}.c100.p69 .bar{-webkit-transform:rotate(248.4deg);-moz-transform:rotate(248.4deg);-ms-transform:rotate(248.4deg);-o-transform:rotate(248.4deg);transform:rotate(248.4deg)}.c100.p70 .bar{-webkit-transform:rotate(252deg);-moz-transform:rotate(252deg);-ms-transform:rotate(252deg);-o-transform:rotate(252deg);transform:rotate(252deg)}.c100.p71 .bar{-webkit-transform:rotate(255.6deg);-moz-transform:rotate(255.6deg);-ms-transform:rotate(255.6deg);-o-transform:rotate(255.6deg);transform:rotate(255.6deg)}.c100.p72 .bar{-webkit-transform:rotate(259.2deg);-moz-transform:rotate(259.2deg);-ms-transform:rotate(259.2deg);-o-transform:rotate(259.2deg);transform:rotate(259.2deg)}.c100.p73 .bar{-webkit-transform:rotate(262.8deg);-moz-transform:rotate(262.8deg);-ms-transform:rotate(262.8deg);-o-transform:rotate(262.8deg);transform:rotate(262.8deg)}.c100.p74 .bar{-webkit-transform:rotate(266.4deg);-moz-transform:rotate(266.4deg);-ms-transform:rotate(266.4deg);-o-transform:rotate(266.4deg);transform:rotate(266.4deg)}.c100.p75 .bar{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.c100.p76 .bar{-webkit-transform:rotate(273.6deg);-moz-transform:rotate(273.6deg);-ms-transform:rotate(273.6deg);-o-transform:rotate(273.6deg);transform:rotate(273.6deg)}.c100.p77 .bar{-webkit-transform:rotate(277.2deg);-moz-transform:rotate(277.2deg);-ms-transform:rotate(277.2deg);-o-transform:rotate(277.2deg);transform:rotate(277.2deg)}.c100.p78 .bar{-webkit-transform:rotate(280.8deg);-moz-transform:rotate(280.8deg);-ms-transform:rotate(280.8deg);-o-transform:rotate(280.8deg);transform:rotate(280.8deg)}.c100.p79 .bar{-webkit-transform:rotate(284.4deg);-moz-transform:rotate(284.4deg);-ms-transform:rotate(284.4deg);-o-transform:rotate(284.4deg);transform:rotate(284.4deg)}.c100.p80 .bar{-webkit-transform:rotate(288deg);-moz-transform:rotate(288deg);-ms-transform:rotate(288deg);-o-transform:rotate(288deg);transform:rotate(288deg)}.c100.p81 .bar{-webkit-transform:rotate(291.6deg);-moz-transform:rotate(291.6deg);-ms-transform:rotate(291.6deg);-o-transform:rotate(291.6deg);transform:rotate(291.6deg)}.c100.p82 .bar{-webkit-transform:rotate(295.2deg);-moz-transform:rotate(295.2deg);-ms-transform:rotate(295.2deg);-o-transform:rotate(295.2deg);transform:rotate(295.2deg)}.c100.p83 .bar{-webkit-transform:rotate(298.8deg);-moz-transform:rotate(298.8deg);-ms-transform:rotate(298.8deg);-o-transform:rotate(298.8deg);transform:rotate(298.8deg)}.c100.p84 .bar{-webkit-transform:rotate(302.4deg);-moz-transform:rotate(302.4deg);-ms-transform:rotate(302.4deg);-o-transform:rotate(302.4deg);transform:rotate(302.4deg)}.c100.p85 .bar{-webkit-transform:rotate(306deg);-moz-transform:rotate(306deg);-ms-transform:rotate(306deg);-o-transform:rotate(306deg);transform:rotate(306deg)}.c100.p86 .bar{-webkit-transform:rotate(309.6deg);-moz-transform:rotate(309.6deg);-ms-transform:rotate(309.6deg);-o-transform:rotate(309.6deg);transform:rotate(309.6deg)}.c100.p87 .bar{-webkit-transform:rotate(313.2deg);-moz-transform:rotate(313.2deg);-ms-transform:rotate(313.2deg);-o-transform:rotate(313.2deg);transform:rotate(313.2deg)}.c100.p88 .bar{-webkit-transform:rotate(316.8deg);-moz-transform:rotate(316.8deg);-ms-transform:rotate(316.8deg);-o-transform:rotate(316.8deg);transform:rotate(316.8deg)}.c100.p89 .bar{-webkit-transform:rotate(320.4deg);-moz-transform:rotate(320.4deg);-ms-transform:rotate(320.4deg);-o-transform:rotate(320.4deg);transform:rotate(320.4deg)}.c100.p90 .bar{-webkit-transform:rotate(324deg);-moz-transform:rotate(324deg);-ms-transform:rotate(324deg);-o-transform:rotate(324deg);transform:rotate(324deg)}.c100.p91 .bar{-webkit-transform:rotate(327.6deg);-moz-transform:rotate(327.6deg);-ms-transform:rotate(327.6deg);-o-transform:rotate(327.6deg);transform:rotate(327.6deg)}.c100.p92 .bar{-webkit-transform:rotate(331.2deg);-moz-transform:rotate(331.2deg);-ms-transform:rotate(331.2deg);-o-transform:rotate(331.2deg);transform:rotate(331.2deg)}.c100.p93 .bar{-webkit-transform:rotate(334.8deg);-moz-transform:rotate(334.8deg);-ms-transform:rotate(334.8deg);-o-transform:rotate(334.8deg);transform:rotate(334.8deg)}.c100.p94 .bar{-webkit-transform:rotate(338.4deg);-moz-transform:rotate(338.4deg);-ms-transform:rotate(338.4deg);-o-transform:rotate(338.4deg);transform:rotate(338.4deg)}.c100.p95 .bar{-webkit-transform:rotate(342deg);-moz-transform:rotate(342deg);-ms-transform:rotate(342deg);-o-transform:rotate(342deg);transform:rotate(342deg)}.c100.p96 .bar{-webkit-transform:rotate(345.6deg);-moz-transform:rotate(345.6deg);-ms-transform:rotate(345.6deg);-o-transform:rotate(345.6deg);transform:rotate(345.6deg)}.c100.p97 .bar{-webkit-transform:rotate(349.2deg);-moz-transform:rotate(349.2deg);-ms-transform:rotate(349.2deg);-o-transform:rotate(349.2deg);transform:rotate(349.2deg)}.c100.p98 .bar{-webkit-transform:rotate(352.8deg);-moz-transform:rotate(352.8deg);-ms-transform:rotate(352.8deg);-o-transform:rotate(352.8deg);transform:rotate(352.8deg)}.c100.p99 .bar{-webkit-transform:rotate(356.4deg);-moz-transform:rotate(356.4deg);-ms-transform:rotate(356.4deg);-o-transform:rotate(356.4deg);transform:rotate(356.4deg)}.c100.p100 .bar{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}.c100:hover{cursor:default}.c100:hover>span{width:3.33em;line-height:3.33em;font-size:.3em;color:#307bbb}.c100:hover:after{top:.04em;left:.04em;width:.92em;height:.92em}.c100.dark{background-color:#0077c2}.c100.dark .bar,.c100.dark .fill{border-color:#80d6ff !important}.c100.dark>span{color:#0077c2}.c100.dark:after{background-color:#111}.c100.dark:hover>span{color:#80d6ff}.c100.error{background-color:#700}.c100.error .bar,.c100.error .fill{border-color:#d00 !important}.c100.error:hover>span{color:#d00}.c100.error>span{color:#700}.c100.success{background-color:#000}.c100.success .bar,.c100.success .fill{border-color:lime !important}.c100.success:hover>span{color:lime}.c100.success>span{color:#090}*{margin:0;padding:0;box-sizing:border-box}:root{font-size:16px}h1{width:100%;margin-top:12px;text-align:center}body{font-family:sans-serif;background:url(/static/imgs/grain_background.png);background-color:#111;background-repeat:repeat;color:#fff}button,a.button{box-shadow:0px 2px 6px .5px rgba(0,0,0,.7);border:1px solid #0077c2;background-color:#0077c2;color:#fff;font-size:1rem;padding:.75rem;margin-bottom:12px;display:inline-block;cursor:pointer}button+button,button+a.button,a.button+button,a.button+a.button{margin-left:12px}input,textarea,select{border:none;background-color:#111;color:#fff;font-size:1rem;display:inline-block;padding:.25rem}input::placeholder,textarea::placeholder,select::placeholder{color:#999}input[type=submit]{cursor:pointer;background-color:#0077c2}form input,form textarea,form select{z-index:20;box-shadow:0px 2px 6px .5px rgba(0,0,0,.7);padding:.75rem;width:100%}form input~label,form textarea~label,form select~label{margin-top:24px}form textarea{background-color:#111;height:50vh}form label{z-index:30;box-shadow:0px 2px 6px .5px rgba(0,0,0,.7);background-color:#0077c2;width:100%;line-height:44px;display:inline-block;padding:4px 12px 4px;margin-top:12px}.error-list ul li{box-shadow:0px 2px 6px .5px rgba(0,0,0,.5);list-style:none;background-color:#998100;padding:.5rem;margin-bottom:.5rem}.error-list ul li.success{background-color:#0077c2}.split{display:grid;grid-template-columns:1fr 1fr}.test-case{outline:none;box-shadow:0px 2px 6px .5px rgba(0,0,0,.5);resize:none;border:none;height:200px;padding:8px;background-color:#111;color:#fff}.test-case:first-child{border-right:2px solid #0077c2}.header-line,.option-line{box-shadow:0px 2px 6px .5px rgba(0,0,0,.5);background-color:#0077c2;padding:4px 12px 4px;margin-top:12px;display:inline-block;width:100%}.header-line>*,.option-line>*{line-height:44px;display:inline-block}.option-line{display:grid;grid-template-columns:1fr 1fr}.option-line>*:last-child{text-align:right}.button-list>*{margin:0px 8px 0px;background-color:#42a5f5;box-shadow:none;border:none;color:#fff;font-size:1rem;line-height:1.2rem;padding:4px 12px 4px;display:inline-block;cursor:pointer}.sidebar-page-container{display:grid;grid-template-columns:minmax(250px, 1fr) 5fr}#code-editor{position:relative;width:100%;min-height:24rem}.problem-description{font-size:1.2rem}/*# sourceMappingURL=core.css.map */ diff --git a/codebox/static/css/core.css.map b/codebox/static/css/core.css.map index a9d89fc..b78a14b 100644 --- a/codebox/static/css/core.css.map +++ b/codebox/static/css/core.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../scss/_navbar.scss","../scss/_vars.scss","../scss/_utils.scss","../scss/_elevate.scss","../scss/problem/_info.scss","../scss/problem/_sidebar.scss","../scss/vendor/circle.scss","../scss/vendor/_mixins.scss","../scss/vendor/_variables.scss","../scss/core.scss"],"names":[],"mappings":"AAAA,QACC,cACA,WACA,WCIc,QDHd,OCoBe,KDnBf,kBAEA,2CAEA,aACA,kCAEA,qBACC,iBACA,kBAEA,yBACC,4BACA,eAIF,WACC,cACA,kBACA,YAEA,gBACC,SACA,qBACA,eAEA,eAEA,gBACA,iBACA,kBACA,mBACA,gBAEA,cACA,iBClCY,QDoCZ,qBAEA,+CACC,gCACA,WAKH,yBACO,kBACA,WC9BQ,KDgCR,eACA,iBAEA,kBACA,gBAEA,eAEA,yBACN,kCAEM,iEACI,yBAEA,qHACR,cAII,2BACI,cACA,WAGJ,mDACL,aAES,kBACA,SACA,OACT,WAES,oFACI,gCAKA,mBAJA,+FACI,mBAIJ,0FACI,yBEhGpB,qBACC,WACA,iBAGD,OACC,YAGD,MACC,WAGD,QACC,kBAGD,EACC,qBACA,cAIA,SACC,aACA,qCAGC,uBACC,kBAGD,sBACC,iBAVH,SACC,aACA,qCAFD,SACC,aACA,qCAcF,UACC,aACA,8BAGC,wBACC,gBAGD,uBACC,iBAOD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAKH,IC9DI,2CDgEH,eAGC,gBAEC,kBAIF,kBAGC,2BAIF,kBACC,aACA,gCAGD,cACC,wBAEA,oDACA,oDACA,oDACA,oDACA,oDACA,oDAEY,4CD3FH,QC4FS,kDD3FH,QC4FE,iDD3FH,QC6FA,8CD3FH,KC4FS,oDD3FH,QC4FE,mDD3FH,QC6FJ,iDAEF,0CD7FH,KC8FS,gDD7FH,KC8FE,+CD7FH,KCgGb,KC9GI,2CDgHH,sBAEA,sBACC,sBAIF,KACC,UAGD,MACC,WAIA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCE3ID,cACI,YACA,YCFJ,sBACC,WACA,6GACA,mBACA,kBACA,8BAEA,uCACC,WAEA,aACA,+BAEA,uBACA,wBACA,kBJRa,QIUb,8CACA,mCACA,yBAEA,eAEA,gDACC,uBAGD,8CACC,sBAGD,8FACC,wBAGD,iDACC,oCAGD,6CACC,yBAIF,8CACC,kBACA,yBACA,iBACA,oBACA,iBAGD,4CACC,gBACA,iBAEA,iBACA,iBACA,oBAEA,iBACA,kBCvDF,81BACI,kCAGJ,izBACI,kBACA,2BACA,YACA,aACA,gCACA,kBCNA,+BACA,4BACA,2BACA,0BACA,uBDMJ,oxDCVI,iCACA,8BACA,6BACA,4BACA,yBDWJ,MAMI,kBACA,gBACA,UACA,WACA,kBACA,WACA,iBEjCc,KFsBd,qCCRA,mBDWwB,YCVxB,gBDUwB,YCTxB,WDSwB,YAUxB,aACI,WACA,cAGJ,UACI,gBAGJ,YACI,eAGJ,WACI,kBACA,WACA,UACA,OACA,MACA,UACA,gBACA,eACA,MEzDU,KF0DV,cACA,kBACA,mBCzCJ,4BD0CiC,ICzCjC,yBDyCiC,ICxCjC,uBDwCiC,ICvCjC,oBDuCiC,ICnCjC,4BDoCiC,ICnCjC,yBDmCiC,IClCjC,uBDkCiC,ICjCjC,oBDiCiC,IC7BjC,mCD8BwC,SC7BxC,gCD6BwC,SC5BxC,8BD4BwC,SC3BxC,2BD2BwC,SAGxC,YACI,kBACA,IExEO,MFyEP,KEzEO,MF0EP,cACA,YACA,kBACA,iBExEG,QFyEH,YACA,aCxDJ,4BDyDiC,ICxDjC,yBDwDiC,ICvDjC,uBDuDiC,ICtDjC,oBDsDiC,IClDjC,4BDmDiC,IClDjC,yBDkDiC,ICjDjC,uBDiDiC,IChDjC,oBDgDiC,IC5CjC,mCD6CwC,QC5CxC,gCD4CwC,QC3CxC,8BD2CwC,QC1CxC,2BD0CwC,QAGxC,aACI,kBACA,UACA,WACA,gCAuBA,cCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,cCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,cCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,cCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,cCtGJ,gCACA,6BACA,4BACA,2BACA,wBDkGI,cCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,cCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,cCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,cCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,gCACA,6BACA,4BACA,2BACA,wBDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,gCACA,6BACA,4BACA,2BACA,wBDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,gCACA,6BACA,4BACA,2BACA,wBDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,gCACA,6BACA,4BACA,2BACA,wBDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,gBCtGJ,iCACA,8BACA,6BACA,4BACA,yBDwGA,YACI,eACA,iBACI,aACA,mBACA,eACA,MEzHI,QF2HR,kBACI,IE9HS,MF+HT,KE/HS,MFgIT,YACA,aAIR,WACI,iBLhIO,QKiIP,iCAEI,gCAEJ,gBACI,MLtIG,QKwIP,iBACI,iBErII,KFwIJ,sBACI,ML9IA,QKkJZ,YACF,iBL1IW,KK2IL,mCAEI,6BAGA,uBACI,MLnJR,KKsJN,iBACC,MLrJU,KKwJT,cACI,sBACA,uCAEI,6BAGA,yBACI,WAGR,mBACI,WG3KZ,EACC,SACA,UACA,sBAGD,MACC,eAGD,GACC,WACA,gBACA,kBAGD,KACC,uBAEA,kDACA,sBACA,yBACA,WAGD,gBNhCI,2CMkCH,yBACA,iBR7Bc,QQ8Bd,WAEA,eACA,eACA,mBACA,qBAEA,eAEA,gEACC,iBAIF,sBACC,YACA,sBACA,WAEA,eACA,qBACA,eAEA,6DACC,WAIF,mBACC,eACA,iBR5Dc,QQgEd,qCACC,WNvEE,2CM0EF,eACA,WAEA,uDACC,gBAIF,cACC,sBACA,YAGD,WACC,WNxFE,2CM0FF,iBRpFa,QQqFb,WACA,iBAEA,qBACA,qBACA,gBAOD,kBNvGG,2CM0GF,gBACA,iBRjGe,QQkGf,cACA,oBAEA,0BACC,iBR1GY,QQ+Gf,OACC,aACA,8BAGD,WAKC,aN/HG,2CMkIH,YACA,YAEA,aACA,YACA,sBACA,MRzIO,KQ4HP,uBACC,+BAeF,0BN3II,2CM8IH,iBRxIc,QQyId,qBACA,gBACA,qBACA,WAEA,8BACC,iBACA,qBAIF,aAGC,aACA,8BAEA,0BACC,iBAKD,eACC,mBACA,iBRpKQ,QQqKR,gBACA,YACA,WAEA,eACA,mBACA,qBACA,qBAEA,eAIF,wBACC,aACA,6CAGD,aACC,kBACA,WACA","file":"core.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../scss/_navbar.scss","../scss/_vars.scss","../scss/_utils.scss","../scss/_elevate.scss","../scss/problem/_info.scss","../scss/problem/_sidebar.scss","../scss/vendor/circle.scss","../scss/vendor/_mixins.scss","../scss/vendor/_variables.scss","../scss/core.scss"],"names":[],"mappings":"AAAA,QACC,cACA,WACA,WCIc,QDHd,OCoBe,KDnBf,kBAEA,2CAEA,aACA,kCAEA,qBACC,iBACA,kBAEA,yBACC,4BACA,eAIF,WACC,cACA,kBACA,YAEA,gBACC,SACA,qBACA,eAEA,eAEA,gBACA,iBACA,kBACA,mBACA,gBAEA,cACA,iBClCY,QDoCZ,qBAEA,+CACC,gCACA,WAKH,yBACO,kBACA,WC9BQ,KDgCR,eACA,iBAEA,kBACA,gBAEA,eAEA,yBACN,kCAEM,iEACI,yBAEA,qHACR,cAII,2BACI,cACA,WAGJ,mDACL,aAES,kBACA,SACA,OACT,WAES,oFACI,gCAKA,mBAJA,+FACI,mBAIJ,0FACI,yBEhGpB,qBACC,WACA,iBAGD,OACC,YAGD,MACC,WAGD,QACC,kBAGD,EACC,qBACA,cAIA,SACC,aACA,qCAGC,uBACC,kBAGD,sBACC,iBAVH,SACC,aACA,qCAFD,SACC,aACA,qCAcF,UACC,aACA,8BAGC,wBACC,gBAGD,uBACC,iBAOD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAFD,WACC,aACA,8BAKH,IC9DI,2CDgEH,eAGC,gBAEC,kBAIF,kBAGC,2BAIF,kBACC,aACA,gCAGD,cACC,wBAEA,oDACA,oDACA,oDACA,oDACA,oDACA,oDAEY,4CD3FH,QC4FS,kDD3FH,QC4FE,iDD3FH,QC6FA,8CD3FH,KC4FS,oDD3FH,QC4FE,mDD3FH,QC6FJ,iDAEF,0CD7FH,KC8FS,gDD7FH,KC8FE,+CD7FH,KCgGb,KC9GI,2CDgHH,sBAEA,sBACC,sBAIF,KACC,UAGD,MACC,WAIA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,8BACA,qCACA,sCACA,oCACA,uCAEA,6BACA,oCACA,qCACA,mCACA,sCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCAVA,gCACA,uCACA,wCACA,sCACA,yCAEA,+BACA,sCACA,uCACA,qCACA,wCE3ID,cACI,YACA,YCFJ,sBACC,WACA,6GACA,mBACA,kBACA,8BAEA,uCACC,WAEA,aACA,+BAEA,uBACA,wBACA,kBJRa,QIUb,8CACA,mCACA,yBAEA,eAEA,gDACC,uBAGD,8CACC,sBAGD,8FACC,wBAGD,iDACC,oCAGD,6CACC,yBAIF,8CACC,kBACA,yBACA,iBACA,oBACA,iBAGD,4CACC,gBACA,iBAEA,iBACA,iBACA,oBAEA,iBACA,kBCvDF,81BACI,kCAGJ,izBACI,kBACA,2BACA,YACA,aACA,gCACA,kBCNA,+BACA,4BACA,2BACA,0BACA,uBDMJ,oxDCVI,iCACA,8BACA,6BACA,4BACA,yBDWJ,MAMI,kBACA,gBACA,UACA,WACA,kBACA,WACA,iBEjCc,KFsBd,qCCRA,mBDWwB,YCVxB,gBDUwB,YCTxB,WDSwB,YAUxB,aACI,WACA,cAGJ,UACI,gBAGJ,YACI,eAGJ,WACI,kBACA,WACA,UACA,OACA,MACA,UACA,gBACA,eACA,MEzDU,KF0DV,cACA,kBACA,mBCzCJ,4BD0CiC,ICzCjC,yBDyCiC,ICxCjC,uBDwCiC,ICvCjC,oBDuCiC,ICnCjC,4BDoCiC,ICnCjC,yBDmCiC,IClCjC,uBDkCiC,ICjCjC,oBDiCiC,IC7BjC,mCD8BwC,SC7BxC,gCD6BwC,SC5BxC,8BD4BwC,SC3BxC,2BD2BwC,SAGxC,YACI,kBACA,IExEO,MFyEP,KEzEO,MF0EP,cACA,YACA,kBACA,iBExEG,QFyEH,YACA,aCxDJ,4BDyDiC,ICxDjC,yBDwDiC,ICvDjC,uBDuDiC,ICtDjC,oBDsDiC,IClDjC,4BDmDiC,IClDjC,yBDkDiC,ICjDjC,uBDiDiC,IChDjC,oBDgDiC,IC5CjC,mCD6CwC,QC5CxC,gCD4CwC,QC3CxC,8BD2CwC,QC1CxC,2BD0CwC,QAGxC,aACI,kBACA,UACA,WACA,gCAuBA,cCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,cCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,cCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,cCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,cCtGJ,gCACA,6BACA,4BACA,2BACA,wBDkGI,cCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,cCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,cCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,cCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,gCACA,6BACA,4BACA,2BACA,wBDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,gCACA,6BACA,4BACA,2BACA,wBDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,gCACA,6BACA,4BACA,2BACA,wBDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,gCACA,6BACA,4BACA,2BACA,wBDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,kCACA,+BACA,8BACA,6BACA,0BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,iCACA,8BACA,6BACA,4BACA,yBDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,eCtGJ,mCACA,gCACA,+BACA,8BACA,2BDkGI,gBCtGJ,iCACA,8BACA,6BACA,4BACA,yBDwGA,YACI,eACA,iBACI,aACA,mBACA,eACA,MEzHI,QF2HR,kBACI,IE9HS,MF+HT,KE/HS,MFgIT,YACA,aAIR,WACI,iBLhIO,QKiIP,iCAEI,gCAEJ,gBACI,MLtIG,QKwIP,iBACI,iBErII,KFwIJ,sBACI,ML9IA,QKkJZ,YACF,iBL1IW,KK2IL,mCAEI,6BAGA,uBACI,MLnJR,KKsJN,iBACC,MLrJU,KKwJT,cACI,sBACA,uCAEI,6BAGA,yBACI,WAGR,mBACI,WG3KZ,EACC,SACA,UACA,sBAGD,MACC,eAGD,GACC,WACA,gBACA,kBAGD,KACC,uBAEA,kDACA,sBACA,yBACA,WAGD,gBNhCI,2CMkCH,yBACA,iBR7Bc,QQ8Bd,WAEA,eACA,eACA,mBACA,qBAEA,eAEA,gEACC,iBAIF,sBACC,YACA,sBACA,WAEA,eACA,qBACA,eAEA,6DACC,WAIF,mBACC,eACA,iBR5Dc,QQgEd,qCACC,WNvEE,2CM0EF,eACA,WAEA,uDACC,gBAIF,cACC,sBACA,YAGD,WACC,WNxFE,2CM0FF,iBRpFa,QQqFb,WACA,iBAEA,qBACA,qBACA,gBAOD,kBNvGG,2CM0GF,gBACA,iBRjGe,QQkGf,cACA,oBAEA,0BACC,iBR1GY,QQ+Gf,OACC,aACA,8BAGD,WAKC,aN/HG,2CMkIH,YACA,YAEA,aACA,YACA,sBACA,MRzIO,KQ4HP,uBACC,+BAeF,0BN3II,2CM8IH,iBRxIc,QQyId,qBACA,gBACA,qBACA,WAEA,8BACC,iBACA,qBAIF,aAGC,aACA,8BAEA,0BACC,iBAKD,eACC,mBACA,iBRpKQ,QQqKR,gBACA,YACA,WAEA,eACA,mBACA,qBACA,qBAEA,eAIF,wBACC,aACA,6CAGD,aACC,kBACA,WACA,iBAGD,qBACC","file":"core.css"} \ No newline at end of file diff --git a/codebox/static/js/admin_problem.js b/codebox/static/js/admin_problem.js index 44d5bf2..c25185c 100644 --- a/codebox/static/js/admin_problem.js +++ b/codebox/static/js/admin_problem.js @@ -56,7 +56,7 @@ return $('.test-cases').after(data.html); }); }); - return $('[data-problem-delete]').click(function(e) { + $('[data-problem-delete]').click(function(e) { var problem_name; if (!confirm('Are you sure you want to delete this problem?')) { return; @@ -69,6 +69,22 @@ return window.location.reload(); }); }); + return $('input[type=submit]').click(function(e) { + var edit, f, fields, i, len, ref; + e.preventDefault(); + fields = {}; + ref = $('form').serializeArray(); + for (i = 0, len = ref.length; i < len; i++) { + f = ref[i]; + fields[f.name] = f.value; + } + edit = ace.edit('code-editor'); + fields.description = edit.getValue(); + return $.post(window.location.pathname, fields, function() { + alert('Updated problem info'); + return window.location.reload(); + }); + }); }; $(document).ready(function() { diff --git a/codebox/static/js/admin_problem.js.map b/codebox/static/js/admin_problem.js.map index 6a9ee2c..ef976d9 100644 --- a/codebox/static/js/admin_problem.js.map +++ b/codebox/static/js/admin_problem.js.map @@ -6,8 +6,8 @@ "coffee/admin_problem.coffee" ], "names": [], - "mappings": ";AAAA;AAAA,MAAA,aAAA,EAAA;;EAAA,aAAA,GAAgB,QAAA,CAAC,YAAD,CAAA;AACf,QAAA,KAAA,EAAA,KAAA,EAAA;IAAA,KAAA,GAAQ,CAAA,CAAE,CAAA,mBAAA,CAAA,CAAuB,YAAvB,CAAoC,EAApC,CAAF,CAA2C,CAAC,GAA5C,CAAA;IACR,MAAA,GAAS,CAAA,CAAE,CAAA,oBAAA,CAAA,CAAwB,YAAxB,CAAqC,EAArC,CAAF,CAA4C,CAAC,GAA7C,CAAA;IACT,KAAA,GAAQ,CAAA,CAAE,CAAA,mBAAA,CAAA,CAAuB,YAAvB,CAAoC,EAApC,CAAF,CAA2C,CAAC,GAA5C,CAAA;WAER,CAAC,CAAC,IAAF,CAAO,uBAAP,EAAgC;MAC/B,cAAA,EAAgB,YADe;MAE/B,OAAA,EAAS,KAAA,IAAS,EAFa;MAG/B,QAAA,EAAU,MAAA,IAAU,EAHW;MAI/B,OAAA,EAAS;IAJsB,CAAhC,EAKG,QAAA,CAAC,IAAD,CAAA;aACF,OAAO,CAAC,GAAR,CAAY,IAAZ;IADE,CALH;EALe;;EAahB,cAAA,GAAiB,QAAA,CAAA,CAAA;IAChB,CAAA,CAAE,oBAAF,CAAuB,CAAC,KAAxB,CAA8B,QAAA,CAAA,CAAA;AAC7B,UAAA;MAAA,QAAA,GAAW,CAAA,CAAE,gBAAF;MACX,QAAQ,CAAC,IAAT,CAAc,QAAA,CAAC,CAAD,EAAI,CAAJ,CAAA;AACb,YAAA;QAAA,YAAA,GAAe,CAAA,CAAE,CAAF,CAAI,CAAC,IAAL,CAAU,cAAV;eACf,aAAA,CAAc,YAAd;MAFa,CAAd;MAIA,KAAA,CAAM,sBAAN;aACA,MAAM,CAAC,QAAQ,CAAC,MAAhB,CAAA;IAP6B,CAA9B;IASA,CAAA,CAAE,gBAAF,CAAmB,CAAC,KAApB,CAA0B,QAAA,CAAC,CAAD,CAAA;AACzB,UAAA;MAAA,YAAA,GAAe,CAAA,CAAE,CAAC,CAAC,MAAJ,CAAW,CAAC,IAAZ,CAAiB,cAAjB;MACf,aAAA,CAAc,YAAd;MACA,KAAA,CAAM,iBAAN;aACA,MAAM,CAAC,QAAQ,CAAC,MAAhB,CAAA;IAJyB,CAA1B;IAMA,CAAA,CAAE,kBAAF,CAAqB,CAAC,KAAtB,CAA4B,QAAA,CAAC,CAAD,CAAA;AAC3B,UAAA;MAAA,YAAA,GAAe,CAAA,CAAE,CAAC,CAAC,MAAJ,CAAW,CAAC,IAAZ,CAAiB,gBAAjB;aACf,CAAC,CAAC,IAAF,CAAO,yBAAP,EAAkC;QAAE,cAAA,EAAgB;MAAlB,CAAlC,EAAoE,QAAA,CAAC,IAAD,CAAA;QACnE,CAAA,CAAE,CAAA,gBAAA,CAAA,CAAoB,YAApB,CAAiC,EAAjC,CAAF,CAAwC,CAAC,MAAzC,CAAA;eACA,OAAO,CAAC,GAAR,CAAY,IAAZ;MAFmE,CAApE;IAF2B,CAA5B;IAMA,CAAA,CAAE,eAAF,CAAkB,CAAC,KAAnB,CAAyB,QAAA,CAAC,CAAD,CAAA;AACxB,UAAA;MAAA,YAAA,GAAe,CAAA,CAAE,CAAC,CAAC,MAAJ,CAAW,CAAC,IAAZ,CAAiB,aAAjB;aACf,CAAC,CAAC,IAAF,CAAO,sBAAP,EAA+B;QAAE,UAAA,EAAY;MAAd,CAA/B,EAA6D,QAAA,CAAC,IAAD,CAAA;QAC5D,OAAO,CAAC,GAAR,CAAY,IAAZ;eACA,CAAA,CAAE,aAAF,CAAgB,CAAC,KAAjB,CAAuB,IAAI,CAAC,IAA5B;MAF4D,CAA7D;IAFwB,CAAzB;WAMA,CAAA,CAAE,uBAAF,CAA0B,CAAC,KAA3B,CAAiC,QAAA,CAAC,CAAD,CAAA;AAChC,UAAA;MAAA,IAAG,CAAI,OAAA,CAAQ,+CAAR,CAAP;AACC,eADD;;MAEA,YAAA,GAAe,CAAA,CAAE,CAAC,CAAC,MAAJ,CAAW,CAAC,IAAZ,CAAiB,qBAAjB;aAEf,CAAC,CAAC,IAAF,CAAO,wBAAP,EAAiC;QAAE,UAAA,EAAY;MAAd,CAAjC,EAA+D,QAAA,CAAC,IAAD,CAAA;QAC9D,KAAA,CAAM,CAAA,QAAA,CAAA,CAAW,YAAX,CAAwB,CAAxB,CAAN;eACA,MAAM,CAAC,QAAQ,CAAC,MAAhB,CAAA;MAF8D,CAA/D;IALgC,CAAjC;EA5BgB;;EAqCjB,CAAA,CAAE,QAAF,CAAW,CAAC,KAAZ,CAAkB,QAAA,CAAA,CAAA;WACjB,cAAA,CAAA;EADiB,CAAlB;AAlDA", + "mappings": ";AAAA;AAAA,MAAA,aAAA,EAAA;;EAAA,aAAA,GAAgB,QAAA,CAAC,YAAD,CAAA;AACf,QAAA,KAAA,EAAA,KAAA,EAAA;IAAA,KAAA,GAAQ,CAAA,CAAE,CAAA,mBAAA,CAAA,CAAuB,YAAvB,CAAoC,EAApC,CAAF,CAA2C,CAAC,GAA5C,CAAA;IACR,MAAA,GAAS,CAAA,CAAE,CAAA,oBAAA,CAAA,CAAwB,YAAxB,CAAqC,EAArC,CAAF,CAA4C,CAAC,GAA7C,CAAA;IACT,KAAA,GAAQ,CAAA,CAAE,CAAA,mBAAA,CAAA,CAAuB,YAAvB,CAAoC,EAApC,CAAF,CAA2C,CAAC,GAA5C,CAAA;WAER,CAAC,CAAC,IAAF,CAAO,uBAAP,EAAgC;MAC/B,cAAA,EAAgB,YADe;MAE/B,OAAA,EAAS,KAAA,IAAS,EAFa;MAG/B,QAAA,EAAU,MAAA,IAAU,EAHW;MAI/B,OAAA,EAAS;IAJsB,CAAhC,EAKG,QAAA,CAAC,IAAD,CAAA;aACF,OAAO,CAAC,GAAR,CAAY,IAAZ;IADE,CALH;EALe;;EAahB,cAAA,GAAiB,QAAA,CAAA,CAAA;IAChB,CAAA,CAAE,oBAAF,CAAuB,CAAC,KAAxB,CAA8B,QAAA,CAAA,CAAA;AAC7B,UAAA;MAAA,QAAA,GAAW,CAAA,CAAE,gBAAF;MACX,QAAQ,CAAC,IAAT,CAAc,QAAA,CAAC,CAAD,EAAI,CAAJ,CAAA;AACb,YAAA;QAAA,YAAA,GAAe,CAAA,CAAE,CAAF,CAAI,CAAC,IAAL,CAAU,cAAV;eACf,aAAA,CAAc,YAAd;MAFa,CAAd;MAIA,KAAA,CAAM,sBAAN;aACA,MAAM,CAAC,QAAQ,CAAC,MAAhB,CAAA;IAP6B,CAA9B;IASA,CAAA,CAAE,gBAAF,CAAmB,CAAC,KAApB,CAA0B,QAAA,CAAC,CAAD,CAAA;AACzB,UAAA;MAAA,YAAA,GAAe,CAAA,CAAE,CAAC,CAAC,MAAJ,CAAW,CAAC,IAAZ,CAAiB,cAAjB;MACf,aAAA,CAAc,YAAd;MACA,KAAA,CAAM,iBAAN;aACA,MAAM,CAAC,QAAQ,CAAC,MAAhB,CAAA;IAJyB,CAA1B;IAMA,CAAA,CAAE,kBAAF,CAAqB,CAAC,KAAtB,CAA4B,QAAA,CAAC,CAAD,CAAA;AAC3B,UAAA;MAAA,YAAA,GAAe,CAAA,CAAE,CAAC,CAAC,MAAJ,CAAW,CAAC,IAAZ,CAAiB,gBAAjB;aACf,CAAC,CAAC,IAAF,CAAO,yBAAP,EAAkC;QAAE,cAAA,EAAgB;MAAlB,CAAlC,EAAoE,QAAA,CAAC,IAAD,CAAA;QACnE,CAAA,CAAE,CAAA,gBAAA,CAAA,CAAoB,YAApB,CAAiC,EAAjC,CAAF,CAAwC,CAAC,MAAzC,CAAA;eACA,OAAO,CAAC,GAAR,CAAY,IAAZ;MAFmE,CAApE;IAF2B,CAA5B;IAMA,CAAA,CAAE,eAAF,CAAkB,CAAC,KAAnB,CAAyB,QAAA,CAAC,CAAD,CAAA;AACxB,UAAA;MAAA,YAAA,GAAe,CAAA,CAAE,CAAC,CAAC,MAAJ,CAAW,CAAC,IAAZ,CAAiB,aAAjB;aACf,CAAC,CAAC,IAAF,CAAO,sBAAP,EAA+B;QAAE,UAAA,EAAY;MAAd,CAA/B,EAA6D,QAAA,CAAC,IAAD,CAAA;QAC5D,OAAO,CAAC,GAAR,CAAY,IAAZ;eACA,CAAA,CAAE,aAAF,CAAgB,CAAC,KAAjB,CAAuB,IAAI,CAAC,IAA5B;MAF4D,CAA7D;IAFwB,CAAzB;IAMA,CAAA,CAAE,uBAAF,CAA0B,CAAC,KAA3B,CAAiC,QAAA,CAAC,CAAD,CAAA;AAChC,UAAA;MAAA,IAAG,CAAI,OAAA,CAAQ,+CAAR,CAAP;AACC,eADD;;MAEA,YAAA,GAAe,CAAA,CAAE,CAAC,CAAC,MAAJ,CAAW,CAAC,IAAZ,CAAiB,qBAAjB;aAEf,CAAC,CAAC,IAAF,CAAO,wBAAP,EAAiC;QAAE,UAAA,EAAY;MAAd,CAAjC,EAA+D,QAAA,CAAC,IAAD,CAAA;QAC9D,KAAA,CAAM,CAAA,QAAA,CAAA,CAAW,YAAX,CAAwB,CAAxB,CAAN;eACA,MAAM,CAAC,QAAQ,CAAC,MAAhB,CAAA;MAF8D,CAA/D;IALgC,CAAjC;WASA,CAAA,CAAE,oBAAF,CAAuB,CAAC,KAAxB,CAA8B,QAAA,CAAC,CAAD,CAAA;AAC7B,UAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,GAAA,EAAA;MAAA,CAAC,CAAC,cAAF,CAAA;MACA,MAAA,GAAS,CAAA;AACT;MAAA,KAAA,qCAAA;;QACC,MAAO,CAAA,CAAC,CAAC,IAAF,CAAP,GAAiB,CAAC,CAAC;MADpB;MAGA,IAAA,GAAO,GAAG,CAAC,IAAJ,CAAS,aAAT;MACP,MAAM,CAAC,WAAP,GAAqB,IAAI,CAAC,QAAL,CAAA;aAErB,CAAC,CAAC,IAAF,CAAO,MAAM,CAAC,QAAQ,CAAC,QAAvB,EAAiC,MAAjC,EAAyC,QAAA,CAAA,CAAA;QACxC,KAAA,CAAM,sBAAN;eACA,MAAM,CAAC,QAAQ,CAAC,MAAhB,CAAA;MAFwC,CAAzC;IAT6B,CAA9B;EArCgB;;EAmDjB,CAAA,CAAE,QAAF,CAAW,CAAC,KAAZ,CAAkB,QAAA,CAAA,CAAA;WACjB,cAAA,CAAA;EADiB,CAAlB;AAhEA", "sourcesContent": [ - "save_testcase = (test_case_id) ->\n\tinput = $(\"[data-tc-input-id=\\\"#{test_case_id}\\\"]\").val()\n\toutput = $(\"[data-tc-output-id=\\\"#{test_case_id}\\\"]\").val()\n\torder = $(\"[data-tc-order-id=\\\"#{test_case_id}\\\"]\").val()\n\n\t$.post '/admin/testcases/edit', {\n\t\t\"test_case_id\": test_case_id,\n\t\t\"input\": input || \"\",\n\t\t\"output\": output || \"\",\n\t\t\"order\": order,\n\t}, (data) ->\n\t\tconsole.log data\n\nsetup_handlers = ->\n\t$('[data-tc-save-all]').click ->\n\t\telements = $('[data-tc-save]')\n\t\telements.each (k, e) ->\n\t\t\ttest_case_id = $(e).attr 'data-tc-save'\n\t\t\tsave_testcase test_case_id\n\n\t\talert 'Saved all test cases'\n\t\twindow.location.reload()\n\n\t$('[data-tc-save]').click (e) ->\n\t\ttest_case_id = $(e.target).attr 'data-tc-save'\n\t\tsave_testcase test_case_id\n\t\talert 'Saved test case'\n\t\twindow.location.reload()\n\n\t$('[data-tc-delete]').click (e) ->\n\t\ttest_case_id = $(e.target).attr 'data-tc-delete'\n\t\t$.post '/admin/testcases/delete', { \"test_case_id\": test_case_id }, (data) ->\n\t\t\t$(\"[data-testcase=\\\"#{test_case_id}\\\"]\").remove()\n\t\t\tconsole.log data\n\n\t$('[data-new-tc]').click (e) ->\n\t\tproblem_name = $(e.target).attr 'data-new-tc'\n\t\t$.post '/admin/testcases/new', { short_name: problem_name }, (data) ->\n\t\t\tconsole.log data\n\t\t\t$('.test-cases').after data.html\n\n\t$('[data-problem-delete]').click (e) ->\n\t\tif not confirm 'Are you sure you want to delete this problem?'\n\t\t\treturn\n\t\tproblem_name = $(e.target).attr 'data-problem-delete'\n\n\t\t$.post '/admin/problems/delete', { short_name: problem_name }, (data) ->\n\t\t\talert \"Deleted #{problem_name}.\"\n\t\t\twindow.location.reload()\n\n$(document).ready ->\n\tsetup_handlers()\n\n" + "save_testcase = (test_case_id) ->\n\tinput = $(\"[data-tc-input-id=\\\"#{test_case_id}\\\"]\").val()\n\toutput = $(\"[data-tc-output-id=\\\"#{test_case_id}\\\"]\").val()\n\torder = $(\"[data-tc-order-id=\\\"#{test_case_id}\\\"]\").val()\n\n\t$.post '/admin/testcases/edit', {\n\t\t\"test_case_id\": test_case_id,\n\t\t\"input\": input || \"\",\n\t\t\"output\": output || \"\",\n\t\t\"order\": order,\n\t}, (data) ->\n\t\tconsole.log data\n\nsetup_handlers = ->\n\t$('[data-tc-save-all]').click ->\n\t\telements = $('[data-tc-save]')\n\t\telements.each (k, e) ->\n\t\t\ttest_case_id = $(e).attr 'data-tc-save'\n\t\t\tsave_testcase test_case_id\n\n\t\talert 'Saved all test cases'\n\t\twindow.location.reload()\n\n\t$('[data-tc-save]').click (e) ->\n\t\ttest_case_id = $(e.target).attr 'data-tc-save'\n\t\tsave_testcase test_case_id\n\t\talert 'Saved test case'\n\t\twindow.location.reload()\n\n\t$('[data-tc-delete]').click (e) ->\n\t\ttest_case_id = $(e.target).attr 'data-tc-delete'\n\t\t$.post '/admin/testcases/delete', { \"test_case_id\": test_case_id }, (data) ->\n\t\t\t$(\"[data-testcase=\\\"#{test_case_id}\\\"]\").remove()\n\t\t\tconsole.log data\n\n\t$('[data-new-tc]').click (e) ->\n\t\tproblem_name = $(e.target).attr 'data-new-tc'\n\t\t$.post '/admin/testcases/new', { short_name: problem_name }, (data) ->\n\t\t\tconsole.log data\n\t\t\t$('.test-cases').after data.html\n\n\t$('[data-problem-delete]').click (e) ->\n\t\tif not confirm 'Are you sure you want to delete this problem?'\n\t\t\treturn\n\t\tproblem_name = $(e.target).attr 'data-problem-delete'\n\n\t\t$.post '/admin/problems/delete', { short_name: problem_name }, (data) ->\n\t\t\talert \"Deleted #{problem_name}.\"\n\t\t\twindow.location.reload()\n\n\t$('input[type=submit]').click (e) ->\n\t\te.preventDefault()\n\t\tfields = {}\n\t\tfor f in $('form').serializeArray()\n\t\t\tfields[f.name] = f.value\n\n\t\tedit = ace.edit 'code-editor'\n\t\tfields.description = edit.getValue()\n\n\t\t$.post window.location.pathname, fields, ->\n\t\t\talert 'Updated problem info'\n\t\t\twindow.location.reload()\n\n\n$(document).ready ->\n\tsetup_handlers()\n\n" ] } \ No newline at end of file diff --git a/codebox/static/js/vendor/ace/mode-markdown.js b/codebox/static/js/vendor/ace/mode-markdown.js new file mode 100644 index 0000000..ce54c42 --- /dev/null +++ b/codebox/static/js/vendor/ace/mode-markdown.js @@ -0,0 +1,3189 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var DocCommentHighlightRules = function() { + this.$rules = { + "start" : [ { + token : "comment.doc.tag", + regex : "@[\\w\\d_]+" // TODO: fix email addresses + }, + DocCommentHighlightRules.getTagRule(), + { + defaultToken : "comment.doc", + caseInsensitive: true + }] + }; +}; + +oop.inherits(DocCommentHighlightRules, TextHighlightRules); + +DocCommentHighlightRules.getTagRule = function(start) { + return { + token : "comment.doc.tag.storage.type", + regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; + +DocCommentHighlightRules.getStartRule = function(start) { + return { + token : "comment.doc", // doc comment + regex : "\\/\\*(?=\\*)", + next : start + }; +}; + +DocCommentHighlightRules.getEndRule = function (start) { + return { + token : "comment.doc", // closing comment + regex : "\\*\\/", + next : start + }; +}; + + +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; + +var JavaScriptHighlightRules = function(options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": + "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document" , // Pseudo + "keyword": + "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", + "storage.type": + "const|let|var|function", + "constant.language": + "null|Infinity|NaN|undefined", + "support.function": + "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + + this.$rules = { + "no_regex" : [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token : "string", + regex : "'(?=.)", + next : "qstring" + }, { + token : "string", + regex : '"(?=.)', + next : "qqstring" + }, { + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token : [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text","keyword.operator" + ], + regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + next: "function_arguments" + }, { + token : [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + next: "function_arguments" + }, { + token : [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + next: "function_arguments" + }, { + token : [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token : [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token : [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + next: "function_arguments" + }, { + token : [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex : "(:)(\\s*)(function)(\\s*)(\\()", + next: "function_arguments" + }, { + token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", + regex : "(?:" + kwBeforeRe + ")\\b", + next : "start" + }, { + token : ["support.constant"], + regex : /that\b/ + }, { + token : ["storage.type", "punctuation.operator", "support.function.firebug"], + regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + }, { + token : keywordMapper, + regex : identifierRe + }, { + token : "punctuation.operator", + regex : /[.](?![.])/, + next : "property" + }, { + token : "storage.type", + regex : /=>/, + next : "start" + }, { + token : "keyword.operator", + regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next : "start" + }, { + token : "punctuation.operator", + regex : /[?:,;.]/, + next : "start" + }, { + token : "paren.lparen", + regex : /[\[({]/, + next : "start" + }, { + token : "paren.rparen", + regex : /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token : "text", + regex : "\\s+" + }, { + token : [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token : "punctuation.operator", + regex : /[.](?![.])/ + }, { + token : "support.function", + regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token : "support.function.dom", + regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token : "support.constant", + regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token : "identifier", + regex : identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token : "text", + regex : "\\s+|^$", + next : "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token : "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token : "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token : "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "function_arguments": [ + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "[, ]+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring" : [ + { + token : "constant.language.escape", + regex : escapedRe + }, { + token : "string", + regex : "\\\\$", + consumeLineEnd : true + }, { + token : "string", + regex : '"|$', + next : "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring" : [ + { + token : "constant.language.escape", + regex : escapedRe + }, { + token : "string", + regex : "\\\\$", + consumeLineEnd : true + }, { + token : "string", + regex : "'|$", + next : "no_regex" + }, { + defaultToken: "string" + } + ] + }; + + + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function(val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token : "string.quasi.start", + regex : /`/, + push : [{ + token : "constant.language.escape", + regex : escapedRe + }, { + token : "paren.quasi.start", + regex : /\${/, + push : "start" + }, { + token : "string.quasi.end", + regex : /`/, + next : "pop" + }, { + defaultToken: "string.quasi" + }] + }); + + if (!options || options.jsx != false) + JSX.call(this); + } + + this.embedRules(DocCommentHighlightRules, "doc-", + [ DocCommentHighlightRules.getEndRule("no_regex") ]); + + this.normalizeRules(); +}; + +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); + +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch : function(val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex : "", + onMatch : function(value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{type: this.token, value: value}]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token : "entity.other.attribute-name.xml", + regex : tagRegex + }, { + token : "keyword.operator.attribute-equals.xml", + regex : "=" + }, { + token : "text.tag-whitespace.xml", + regex : "\\s+" + }, { + token : "string.attribute-value.xml", + regex : "'", + stateName : "jsx_attr_q", + push : [ + {token : "string.attribute-value.xml", regex: "'", next: "pop"}, + {include : "reference"}, + {defaultToken : "string.attribute-value.xml"} + ] + }, { + token : "string.attribute-value.xml", + regex : '"', + stateName : "jsx_attr_qq", + push : [ + {token : "string.attribute-value.xml", regex: '"', next: "pop"}, + {include : "reference"}, + {defaultToken : "string.attribute-value.xml"} + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token : "constant.language.escape.reference.xml", + regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} + +function comments(next) { + return [ + { + token : "comment", // multi line comment + regex : /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + {token : "comment", regex : "\\*\\/", next : next || "pop"}, + {defaultToken : "comment", caseInsensitive: true} + ] + }, { + token : "comment", + regex : "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + {token : "comment", regex : "$|^", next : next || "pop"}, + {defaultToken : "comment", caseInsensitive: true} + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; +}); + +ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { +"use strict"; + +var Range = require("../range").Range; + +var MatchingBraceOutdent = function() {}; + +(function() { + + this.checkOutdent = function(line, input) { + if (! /^\s+$/.test(line)) + return false; + + return /^\s*\}/.test(input); + }; + + this.autoOutdent = function(doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + + if (!match) return 0; + + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({row: row, column: column}); + + if (!openBracePos || openBracePos.row == row) return 0; + + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column-1), indent); + }; + + this.$getIndent = function(line) { + return line.match(/^\s*/)[0]; + }; + +}).call(MatchingBraceOutdent.prototype); + +exports.MatchingBraceOutdent = MatchingBraceOutdent; +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; + +var FoldMode = exports.FoldMode = function(commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp( + this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) + ); + this.foldingStopMarker = new RegExp( + this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) + ); + } +}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function(session, foldStyle, row) { + var line = session.getLine(row); + + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + + var fw = this._getFoldWidgetBase(session, foldStyle, row); + + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + + return fw; + }; + + this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } else if (foldStyle != "all") + range = null; + } + + return range; + } + + if (foldStyle === "markbegin") + return; + + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + + return session.getCommentFoldRange(row, i, -1); + } + }; + + this.getSectionRange = function(session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } else if (subRange.isMultiLine()) { + row = subRange.end.row; + } else if (startIndent == indent) { + break; + } + } + endRow = row; + } + + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function(session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) continue; + if (m[1]) depth--; + else depth++; + + if (!depth) break; + } + + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; + +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = JavaScriptHighlightRules; + + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.lineCommentStart = "//"; + this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.createWorker = function(session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + + worker.on("annotate", function(results) { + session.setAnnotations(results.data); + }); + + worker.on("terminate", function() { + session.clearAnnotations(); + }); + + return worker; + }; + + this.$id = "ace/mode/javascript"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); + +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var XmlHighlightRules = function(normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + + this.$rules = { + start : [ + {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + { + token : ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + }, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { + token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + }, + {include : "tag"}, + {token : "text.end-tag-open.xml", regex: "", + next : "start" + }], + + doctype : [ + {include : "whitespace"}, + {include : "string"}, + {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, + {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, + {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + ], + + int_subset : [{ + token : "text.xml", + regex : "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex : "(<\\!)(" + tagRegex + ")", + push : [{ + token : "text", + regex : "\\s+" + }, + { + token : "punctuation.markup-decl.xml", + regex : ">", + next : "pop" + }, + {include : "string"}] + }], + + cdata : [ + {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, + {token : "text.xml", regex : "\\s+"}, + {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + ], + + comment : [ + {token : "comment.end.xml", regex : "-->", next : "start"}, + {defaultToken : "comment.xml"} + ], + + reference : [{ + token : "constant.language.escape.reference.xml", + regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + + attr_reference : [{ + token : "constant.language.escape.reference.attribute-value.xml", + regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + + tag : [{ + token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex : "(?:(<)|(", next : "start"} + ] + }], + + tag_whitespace : [ + {token : "text.tag-whitespace.xml", regex : "\\s+"} + ], + whitespace : [ + {token : "text.whitespace.xml", regex : "\\s+"} + ], + string: [{ + token : "string.xml", + regex : "'", + push : [ + {token : "string.xml", regex: "'", next: "pop"}, + {defaultToken : "string.xml"} + ] + }, { + token : "string.xml", + regex : '"', + push : [ + {token : "string.xml", regex: '"', next: "pop"}, + {defaultToken : "string.xml"} + ] + }], + + attributes: [{ + token : "entity.other.attribute-name.xml", + regex : tagRegex + }, { + token : "keyword.operator.attribute-equals.xml", + regex : "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + + attribute_value: [{ + token : "string.attribute-value.xml", + regex : "'", + push : [ + {token : "string.attribute-value.xml", regex: "'", next: "pop"}, + {include : "attr_reference"}, + {defaultToken : "string.attribute-value.xml"} + ] + }, { + token : "string.attribute-value.xml", + regex : '"', + push : [ + {token : "string.attribute-value.xml", regex: '"', next: "pop"}, + {include : "attr_reference"}, + {defaultToken : "string.attribute-value.xml"} + ] + }] + }; + + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; + + +(function() { + + this.embedTagRules = function(HighlightRules, prefix, tag){ + this.$rules.tag.unshift({ + token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex : "(<)(" + tag + "(?=\\s|>|$))", + next: [ + {include : "attributes"}, + {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + ] + }); + + this.$rules[tag + "-end"] = [ + {include : "attributes"}, + {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", + onMatch : function(value, currentState, stack) { + stack.splice(0); + return this.token; + }} + ]; + + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex : "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex : "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex : "\\]\\]>" + }]); + }; + +}).call(TextHighlightRules.prototype); + +oop.inherits(XmlHighlightRules, TextHighlightRules); + +exports.XmlHighlightRules = XmlHighlightRules; +}); + +ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); + +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} + +var XmlBehaviour = function () { + + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + + if (!token) + token = iterator.stepBackward(); + + if (!token) + return; + + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + + this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + + if (!token) { + return; + } + + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + + if (nextToken && nextToken.value === " -1; +} + +(function() { + + this.getFoldWidget = function(session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + + if (!tag) + return this.getCommentFoldWidget(session, row); + + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle == "markbeginend" ? "end" : ""; + + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + + return "start"; + }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + + return null; + }; + + this._findEndTagInLine = function(session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this._readTagForward = function(iterator) { + var token = iterator.getCurrentToken(); + if (!token) + return null; + + var tag = new Tag(); + do { + if (is(token, "tag-open")) { + tag.closing = is(token, "end-tag-open"); + tag.start.row = iterator.getCurrentTokenRow(); + tag.start.column = iterator.getCurrentTokenColumn(); + } else if (is(token, "tag-name")) { + tag.tagName = token.value; + } else if (is(token, "tag-close")) { + tag.selfClosing = token.value == "/>"; + tag.end.row = iterator.getCurrentTokenRow(); + tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; + iterator.stepForward(); + return tag; + } + } while(token = iterator.stepForward()); + + return null; + }; + + this._readTagBackward = function(iterator) { + var token = iterator.getCurrentToken(); + if (!token) + return null; + + var tag = new Tag(); + do { + if (is(token, "tag-open")) { + tag.closing = is(token, "end-tag-open"); + tag.start.row = iterator.getCurrentTokenRow(); + tag.start.column = iterator.getCurrentTokenColumn(); + iterator.stepBackward(); + return tag; + } else if (is(token, "tag-name")) { + tag.tagName = token.value; + } else if (is(token, "tag-close")) { + tag.selfClosing = token.value == "/>"; + tag.end.row = iterator.getCurrentTokenRow(); + tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; + } + } while(token = iterator.stepBackward()); + + return null; + }; + + this._pop = function(stack, tag) { + while (stack.length) { + + var top = stack[stack.length-1]; + if (!tag || top.tagName == tag.tagName) { + return stack.pop(); + } + else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { + stack.pop(); + continue; + } else { + return null; + } + } + }; + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var firstTag = this._getFirstTagInLine(session, row); + + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + + var isBackward = firstTag.closing || firstTag.selfClosing; + var stack = []; + var tag; + + if (!isBackward) { + var iterator = new TokenIterator(session, row, firstTag.start.column); + var start = { + row: row, + column: firstTag.start.column + firstTag.tagName.length + 2 + }; + if (firstTag.start.row == firstTag.end.row) + start.column = firstTag.end.column; + while (tag = this._readTagForward(iterator)) { + if (tag.selfClosing) { + if (!stack.length) { + tag.start.column += tag.tagName.length + 2; + tag.end.column -= 2; + return Range.fromPoints(tag.start, tag.end); + } else + continue; + } + + if (tag.closing) { + this._pop(stack, tag); + if (stack.length == 0) + return Range.fromPoints(start, tag.start); + } + else { + stack.push(tag); + } + } + } + else { + var iterator = new TokenIterator(session, row, firstTag.end.column); + var end = { + row: row, + column: firstTag.start.column + }; + + while (tag = this._readTagBackward(iterator)) { + if (tag.selfClosing) { + if (!stack.length) { + tag.start.column += tag.tagName.length + 2; + tag.end.column -= 2; + return Range.fromPoints(tag.start, tag.end); + } else + continue; + } + + if (!tag.closing) { + this._pop(stack, tag); + if (stack.length == 0) { + tag.start.column += tag.tagName.length + 2; + if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) + tag.start.column = tag.end.column; + return Range.fromPoints(tag.start, end); + } + } + else { + stack.push(tag); + } + } + } + + }; + +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var XmlFoldMode = require("./folding/xml").FoldMode; +var WorkerClient = require("../worker/worker_client").WorkerClient; + +var Mode = function() { + this.HighlightRules = XmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.foldingRules = new XmlFoldMode(); +}; + +oop.inherits(Mode, TextMode); + +(function() { + + this.voidElements = lang.arrayToMap([]); + + this.blockComment = {start: ""}; + + this.createWorker = function(session) { + var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + + worker.on("error", function(e) { + session.setAnnotations(e.data); + }); + + worker.on("terminate", function() { + session.clearAnnotations(); + }); + + return worker; + }; + + this.$id = "ace/mode/xml"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); + +ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; + +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; + +var CssHighlightRules = function() { + + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + + this.$rules = { + "start" : [{ + include : ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token : "constant.numeric", + regex : numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + + "media": [{ + include : ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] + }], + + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { + token : "punctuation.operator", + regex : "[:;]" + }, { + token : "paren.rparen", + regex : "\\}", + next : "start" + }, { + include : ["strings", "url", "comments"] + }, { + token : ["constant.numeric", "keyword"], + regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token : "constant.numeric", + regex : numRe + }, { + token : "constant.numeric", // hex6 color + regex : "#[a-f0-9]{6}" + }, { + token : "constant.numeric", // hex3 color + regex : "#[a-f0-9]{3}" + }, { + token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex : pseudoElements + }, { + token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex : pseudoClasses + }, { + include: "url" + }, { + token : keywordMapper, + regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + + }; + + this.normalizeRules(); +}; + +oop.inherits(CssHighlightRules, TextHighlightRules); + +exports.CssHighlightRules = CssHighlightRules; + +}); + +ace.define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { +"use strict"; + +var propertyMap = { + "background": {"#$0": 1}, + "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, + "background-image": {"url('/$0')": 1}, + "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, + "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, + "background-attachment": {"scroll": 1, "fixed": 1}, + "background-size": {"cover": 1, "contain": 1}, + "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, + "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, + "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, + "border-color": {"#$0": 1}, + "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, + "border-collapse": {"collapse": 1, "separate": 1}, + "bottom": {"px": 1, "em": 1, "%": 1}, + "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, + "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, + "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, + "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, + "empty-cells": {"show": 1, "hide": 1}, + "float": {"left": 1, "right": 1, "none": 1}, + "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, + "font-size": {"px": 1, "em": 1, "%": 1}, + "font-weight": {"bold": 1, "normal": 1}, + "font-style": {"italic": 1, "normal": 1}, + "font-variant": {"normal": 1, "small-caps": 1}, + "height": {"px": 1, "em": 1, "%": 1}, + "left": {"px": 1, "em": 1, "%": 1}, + "letter-spacing": {"normal": 1}, + "line-height": {"normal": 1}, + "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, + "margin": {"px": 1, "em": 1, "%": 1}, + "margin-right": {"px": 1, "em": 1, "%": 1}, + "margin-left": {"px": 1, "em": 1, "%": 1}, + "margin-top": {"px": 1, "em": 1, "%": 1}, + "margin-bottom": {"px": 1, "em": 1, "%": 1}, + "max-height": {"px": 1, "em": 1, "%": 1}, + "max-width": {"px": 1, "em": 1, "%": 1}, + "min-height": {"px": 1, "em": 1, "%": 1}, + "min-width": {"px": 1, "em": 1, "%": 1}, + "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, + "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, + "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, + "padding": {"px": 1, "em": 1, "%": 1}, + "padding-top": {"px": 1, "em": 1, "%": 1}, + "padding-right": {"px": 1, "em": 1, "%": 1}, + "padding-bottom": {"px": 1, "em": 1, "%": 1}, + "padding-left": {"px": 1, "em": 1, "%": 1}, + "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, + "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, + "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, + "right": {"px": 1, "em": 1, "%": 1}, + "table-layout": {"fixed": 1, "auto": 1}, + "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, + "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, + "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, + "top": {"px": 1, "em": 1, "%": 1}, + "vertical-align": {"top": 1, "bottom": 1}, + "visibility": {"hidden": 1, "visible": 1}, + "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, + "width": {"px": 1, "em": 1, "%": 1}, + "word-spacing": {"normal": 1}, + "filter": {"alpha(opacity=$0100)": 1}, + + "text-shadow": {"$02px 2px 2px #777": 1}, + "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, + "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, + "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } +}; + +var CssCompletions = function() { + +}; + +(function() { + + this.completionsDefined = false; + + this.defineCompletions = function() { + if (document) { + var style = document.createElement('c').style; + + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + + var name = i.replace(/[A-Z]/g, function(x) { + return '-' + x.toLowerCase(); + }); + + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + + this.completionsDefined = true; + }; + + this.getCompletions = function(state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + + if (state==='ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + + return this.getPropertyValueCompletions(state, session, pos, prefix); + } else { + return this.getPropertyCompletions(state, session, pos, prefix); + } + } + + return []; + }; + + this.getPropertyCompletions = function(state, session, pos, prefix) { + var properties = Object.keys(propertyMap); + return properties.map(function(property){ + return { + caption: property, + snippet: property + ': $0;', + meta: "property", + score: 1000000 + }; + }); + }; + + this.getPropertyValueCompletions = function(state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function(value){ + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; + +}).call(CssCompletions.prototype); + +exports.CssCompletions = CssCompletions; +}); + +ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; + +var CssBehaviour = function () { + + this.inherit(CstyleBehaviour); + + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column ++; + return range; + } + } + } + }); + + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); + +}; +oop.inherits(CssBehaviour, CstyleBehaviour); + +exports.CssBehaviour = CssBehaviour; +}); + +ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.foldingRules = "cStyle"; + this.blockComment = {start: "/*", end: "*/"}; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + + return indent; + }; + + this.checkOutdent = function(state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + + this.autoOutdent = function(state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + + this.getCompletions = function(state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + + this.createWorker = function(session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + + worker.on("annotate", function(e) { + session.setAnnotations(e.data); + }); + + worker.on("terminate", function() { + session.clearAnnotations(); + }); + + return worker; + }; + + this.$id = "ace/mode/css"; +}).call(Mode.prototype); + +exports.Mode = Mode; + +}); + +ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; + +var tagMap = lang.createMap({ + a : 'anchor', + button : 'form', + form : 'form', + img : 'image', + input : 'form', + label : 'form', + option : 'form', + script : 'script', + select : 'form', + textarea : 'form', + style : 'style', + table : 'table', + tbody : 'table', + td : 'table', + tfoot : 'table', + th : 'table', + tr : 'table' +}); + +var HtmlHighlightRules = function() { + XmlHighlightRules.call(this); + + this.addRules({ + attributes: [{ + include : "tag_whitespace" + }, { + token : "entity.other.attribute-name.xml", + regex : "[-_a-zA-Z0-9:.]+" + }, { + token : "keyword.operator.attribute-equals.xml", + regex : "=", + push : [{ + include: "tag_whitespace" + }, { + token : "string.unquoted.attribute-value.html", + regex : "[^<>='\"`\\s]+", + next : "pop" + }, { + token : "empty", + regex : "", + next : "pop" + }] + }, { + include : "attribute_value" + }], + tag: [{ + token : function(start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex : "(", next : "start"} + ] + }); + + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); + + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; + +oop.inherits(HtmlHighlightRules, XmlHighlightRules); + +exports.HtmlHighlightRules = HtmlHighlightRules; +}); + +ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; + +var FoldMode = exports.FoldMode = function(defaultMode, subModes) { + this.defaultMode = defaultMode; + this.subModes = subModes; +}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + + this.$getMode = function(state) { + if (typeof state != "string") + state = state[0]; + for (var key in this.subModes) { + if (state.indexOf(key) === 0) + return this.subModes[key]; + } + return null; + }; + + this.$tryMode = function(state, session, foldStyle, row) { + var mode = this.$getMode(state); + return (mode ? mode.getFoldWidget(session, foldStyle, row) : ""); + }; + + this.getFoldWidget = function(session, foldStyle, row) { + return ( + this.$tryMode(session.getState(row-1), session, foldStyle, row) || + this.$tryMode(session.getState(row), session, foldStyle, row) || + this.defaultMode.getFoldWidget(session, foldStyle, row) + ); + }; + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var mode = this.$getMode(session.getState(row-1)); + + if (!mode || !mode.getFoldWidget(session, foldStyle, row)) + mode = this.$getMode(session.getState(row)); + + if (!mode || !mode.getFoldWidget(session, foldStyle, row)) + mode = this.defaultMode; + + return mode.getFoldWidgetRange(session, foldStyle, row); + }; + +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; + +var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; + +oop.inherits(FoldMode, MixedFoldMode); + +}); + +ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { +"use strict"; + +var TokenIterator = require("../token_iterator").TokenIterator; + +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; + +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; + +var globalAttributes = commonAttributes.concat(eventAttributes); + +var attributeMap = { + "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, + "abbr": {}, + "address": {}, + "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, + "article": {"pubdate": 1}, + "aside": {}, + "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, + "b": {}, + "base": {"href": 1, "target": 1}, + "bdi": {}, + "bdo": {}, + "blockquote": {"cite": 1}, + "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, + "br": {}, + "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, + "canvas": {"width": 1, "height": 1}, + "caption": {}, + "cite": {}, + "code": {}, + "col": {"span": 1}, + "colgroup": {"span": 1}, + "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, + "data": {}, + "datalist": {}, + "dd": {}, + "del": {"cite": 1, "datetime": 1}, + "details": {"open": 1}, + "dfn": {}, + "dialog": {"open": 1}, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, + "fieldset": {"disabled": 1, "form": 1, "name": 1}, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": {"manifest": 1}, + "i": {}, + "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, + "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, + "input": { + "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, + "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, + "ins": {"cite": 1, "datetime": 1}, + "kbd": {}, + "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, + "label": {"form": 1, "for": 1}, + "legend": {}, + "li": {"value": 1}, + "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, + "main": {}, + "map": {"name": 1}, + "mark": {}, + "math": {}, + "menu": {"type": 1, "label": 1}, + "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, + "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, + "nav": {}, + "noscript": {"href": 1}, + "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, + "ol": {"start": 1, "reversed": 1}, + "optgroup": {"disabled": 1, "label": 1}, + "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, + "output": {"for": 1, "form": 1, "name": 1}, + "p": {}, + "param": {"name": 1, "value": 1}, + "pre": {}, + "progress": {"value": 1, "max": 1}, + "q": {"cite": 1}, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, + "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, + "small": {}, + "source": {"src": 1, "type": 1, "media": 1}, + "span": {}, + "strong": {}, + "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, + "sub": {}, + "sup": {}, + "svg": {}, + "table": {"summary": 1}, + "tbody": {}, + "td": {"headers": 1, "rowspan": 1, "colspan": 1}, + "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, + "tfoot": {}, + "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, + "thead": {}, + "time": {"datetime": 1}, + "title": {}, + "tr": {}, + "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, + "wbr": {} +}; + +var elements = Object.keys(attributeMap); + +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} + +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")){ + token = iterator.stepBackward(); + } + if (token) + return token.value; +} + +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")){ + token = iterator.stepBackward(); + } + if (token) + return token.value; +} + +var HtmlCompletions = function() { + +}; + +(function() { + + this.getCompletions = function(state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + + return []; + }; + + this.getTagCompletions = function(state, session, pos, prefix) { + return elements.map(function(element){ + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + + this.getAttributeCompletions = function(state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function(attribute){ + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + + this.getAttributeValueCompletions = function(state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function(value){ + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + + this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + + return values.map(function(value){ + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; + +}).call(HtmlCompletions.prototype); + +exports.HtmlCompletions = HtmlCompletions; +}); + +ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; + +var Mode = function(options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); + +(function() { + + this.blockComment = {start: ""}; + + this.voidElements = lang.arrayToMap(voidElements); + + this.getNextLineIndent = function(state, line, tab) { + return this.$getIndent(line); + }; + + this.checkOutdent = function(state, line, input) { + return false; + }; + + this.getCompletions = function(state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + + this.createWorker = function(session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + + if (this.fragmentContext) + worker.call("setOptions", [{context: this.fragmentContext}]); + + worker.on("error", function(e) { + session.setAnnotations(e.data); + }); + + worker.on("terminate", function() { + session.clearAnnotations(); + }); + + return worker; + }; + + this.$id = "ace/mode/html"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); + +ace.define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { +"use strict"; + +var modes = require("../config").$modes; + +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; + +var escaped = function(ch) { + return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*"; +}; + +var MarkdownHighlightRules = function() { + HtmlHighlightRules.call(this); + var codeBlockStartRule = { + token : "support.function", + regex : /^\s*(```+[^`]*|~~~+[^~]*)$/, + onMatch: function(value, state, stack, line) { + var m = value.match(/^(\s*)([`~]+)(.*)/); + var language = /[\w-]+|$/.exec(m[3])[0]; + if (!modes[language]) + language = ""; + stack.unshift("githubblock", [], [m[1], m[2], language], state); + return this.token; + }, + next : "githubblock" + }; + var codeBlockRules = [{ + token : "support.function", + regex : ".*", + onMatch: function(value, state, stack, line) { + var embedState = stack[1]; + var indent = stack[2][0]; + var endMarker = stack[2][1]; + var language = stack[2][2]; + + var m = /^(\s*)(`+|~+)\s*$/.exec(value); + if ( + m && m[1].length < indent.length + 3 + && m[2].length >= endMarker.length && m[2][0] == endMarker[0] + ) { + stack.splice(0, 3); + this.next = stack.shift(); + return this.token; + } + this.next = ""; + if (language && modes[language]) { + var data = modes[language].getTokenizer().getLineTokens(value, embedState.slice(0)); + stack[1] = data.state; + return data.tokens; + } + return this.token; + } + }]; + + this.$rules["start"].unshift({ + token : "empty_line", + regex : '^$', + next: "allowBlock" + }, { // h1 + token: "markup.heading.1", + regex: "^=+(?=\\s*$)" + }, { // h2 + token: "markup.heading.2", + regex: "^\\-+(?=\\s*$)" + }, { + token : function(value) { + return "markup.heading." + value.length; + }, + regex : /^#{1,6}(?=\s|$)/, + next : "header" + }, + codeBlockStartRule, + { // block quote + token : "string.blockquote", + regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", + next : "blockquote" + }, { // HR * - _ + token : "constant", + regex : "^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$", + next: "allowBlock" + }, { // list + token : "markup.list", + regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", + next : "listblock-start" + }, { + include : "basic" + }); + + this.addRules({ + "basic" : [{ + token : "constant.language.escape", + regex : /\\[\\`*_{}\[\]()#+\-.!]/ + }, { // code span ` + token : "support.function", + regex : "(`+)(.*?[^`])(\\1)" + }, { // reference + token : ["text", "constant", "text", "url", "string", "text"], + regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" + }, { // link by reference + token : ["text", "string", "text", "constant", "text"], + regex : "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)("+ escaped("]") + ")(\\])" + }, { // link by url + token : ["text", "string", "text", "markup.underline", "string", "text"], + regex : "(\\!?\\[)(" + // [ + escaped("]") + // link text or alt text + ")(\\]\\()"+ // ]( + '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href or image + '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" + "(\\))" // ) + }, { // strong ** __ + token : "string.strong", + regex : "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" + }, { // emphasis * _ + token : "string.emphasis", + regex : "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" + }, { // + token : ["text", "url", "text"], + regex : "(<)("+ + "(?:https?|ftp|dict):[^'\">\\s]+"+ + "|"+ + "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+"+ + ")(>)" + }], + "allowBlock": [ + {token : "support.function", regex : "^ {4}.+", next : "allowBlock"}, + {token : "empty_line", regex : '^$', next: "allowBlock"}, + {token : "empty", regex : "", next : "start"} + ], + + "header" : [{ + regex: "$", + next : "start" + }, { + include: "basic" + }, { + defaultToken : "heading" + } ], + + "listblock-start" : [{ + token : "support.variable", + regex : /(?:\[[ x]\])?/, + next : "listblock" + }], + + "listblock" : [ { // Lists only escape on completely blank lines. + token : "empty_line", + regex : "^$", + next : "start" + }, { // list + token : "markup.list", + regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", + next : "listblock-start" + }, { + include : "basic", noEscape: true + }, + codeBlockStartRule, + { + defaultToken : "list" //do not use markup.list to allow stling leading `*` differntly + } ], + + "blockquote" : [ { // Blockquotes only escape on blank lines. + token : "empty_line", + regex : "^\\s*$", + next : "start" + }, { // block quote + token : "string.blockquote", + regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", + next : "blockquote" + }, { + include : "basic", noEscape: true + }, { + defaultToken : "string.blockquote" + } ], + + "githubblock" : codeBlockRules + }); + + this.normalizeRules(); +}; +oop.inherits(MarkdownHighlightRules, TextHighlightRules); + +exports.MarkdownHighlightRules = MarkdownHighlightRules; +}); + +ace.define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; + +var FoldMode = exports.FoldMode = function() {}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + this.foldingStartMarker = /^(?:[=-]+\s*$|#{1,6} |`{3})/; + + this.getFoldWidget = function(session, foldStyle, row) { + var line = session.getLine(row); + if (!this.foldingStartMarker.test(line)) + return ""; + + if (line[0] == "`") { + if (session.bgTokenizer.getState(row) == "start") + return "end"; + return "start"; + } + + return "start"; + }; + + this.getFoldWidgetRange = function(session, foldStyle, row) { + var line = session.getLine(row); + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + if (!line.match(this.foldingStartMarker)) + return; + + if (line[0] == "`") { + if (session.bgTokenizer.getState(row) !== "start") { + while (++row < maxRow) { + line = session.getLine(row); + if (line[0] == "`" & line.substring(0, 3) == "```") + break; + } + return new Range(startRow, startColumn, row, 0); + } else { + while (row -- > 0) { + line = session.getLine(row); + if (line[0] == "`" & line.substring(0, 3) == "```") + break; + } + return new Range(row, line.length, startRow, 0); + } + } + + var token; + function isHeading(row) { + token = session.getTokens(row)[0]; + return token && token.type.lastIndexOf(heading, 0) === 0; + } + + var heading = "markup.heading"; + function getLevel() { + var ch = token.value[0]; + if (ch == "=") return 6; + if (ch == "-") return 5; + return 7 - token.value.search(/[^#]|$/); + } + + if (isHeading(row)) { + var startHeadingLevel = getLevel(); + while (++row < maxRow) { + if (!isHeading(row)) + continue; + var level = getLevel(); + if (level >= startHeadingLevel) + break; + } + + endRow = row - (!token || ["=", "-"].indexOf(token.value[0]) == -1 ? 1 : 2); + + if (endRow > startRow) { + while (endRow > startRow && /^\s*$/.test(session.getLine(endRow))) + endRow--; + } + + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + } + }; + +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var reservedKeywords = exports.reservedKeywords = ( + '!|{|}|case|do|done|elif|else|'+ + 'esac|fi|for|if|in|then|until|while|'+ + '&|;|export|local|read|typeset|unset|'+ + 'elif|select|set|function|declare|readonly' + ); + +var languageConstructs = exports.languageConstructs = ( + '[|]|alias|bg|bind|break|builtin|'+ + 'cd|command|compgen|complete|continue|'+ + 'dirs|disown|echo|enable|eval|exec|'+ + 'exit|fc|fg|getopts|hash|help|history|'+ + 'jobs|kill|let|logout|popd|printf|pushd|'+ + 'pwd|return|set|shift|shopt|source|'+ + 'suspend|test|times|trap|type|ulimit|'+ + 'umask|unalias|wait' +); + +var ShHighlightRules = function() { + var keywordMapper = this.createKeywordMapper({ + "keyword": reservedKeywords, + "support.function.builtin": languageConstructs, + "invalid.deprecated": "debugger" + }, "identifier"); + + var integer = "(?:(?:[1-9]\\d*)|(?:0))"; + + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; + var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + var fileDescriptor = "(?:&" + intPart + ")"; + + var variableName = "[a-zA-Z_][a-zA-Z0-9_]*"; + var variable = "(?:" + variableName + "(?==))"; + + var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; + + var func = "(?:" + variableName + "\\s*\\(\\))"; + + this.$rules = { + "start" : [{ + token : "constant", + regex : /\\./ + }, { + token : ["text", "comment"], + regex : /(^|\s)(#.*)$/ + }, { + token : "string.start", + regex : '"', + push : [{ + token : "constant.language.escape", + regex : /\\(?:[$`"\\]|$)/ + }, { + include : "variables" + }, { + token : "keyword.operator", + regex : /`/ // TODO highlight ` + }, { + token : "string.end", + regex : '"', + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token : "string", + regex : "\\$'", + push : [{ + token : "constant.language.escape", + regex : /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ + }, { + token : "string", + regex : "'", + next: "pop" + }, { + defaultToken: "string" + }] + }, { + regex : "<<<", + token : "keyword.operator" + }, { + stateName: "heredoc", + regex : "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", + onMatch : function(value, currentState, stack) { + var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; + var tokens = value.split(this.splitRegex); + stack.push(next, tokens[4]); + return [ + {type:"constant", value: tokens[1]}, + {type:"text", value: tokens[2]}, + {type:"string", value: tokens[3]}, + {type:"support.class", value: tokens[4]}, + {type:"string", value: tokens[5]} + ]; + }, + rules: { + heredoc: [{ + onMatch: function(value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], + indentedHeredoc: [{ + token: "string", + regex: "^\t+" + }, { + onMatch: function(value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] + } + }, { + regex : "$", + token : "empty", + next : function(currentState, stack) { + if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") + return stack[0]; + return currentState; + } + }, { + token : ["keyword", "text", "text", "text", "variable"], + regex : /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ + }, { + token : "variable.language", + regex : builtinVariable + }, { + token : "variable", + regex : variable + }, { + include : "variables" + }, { + token : "support.function", + regex : func + }, { + token : "support.function", + regex : fileDescriptor + }, { + token : "string", // ' string + start : "'", end : "'" + }, { + token : "constant.numeric", // float + regex : floatNumber + }, { + token : "constant.numeric", // integer + regex : integer + "\\b" + }, { + token : keywordMapper, + regex : "[a-zA-Z_][a-zA-Z0-9_]*\\b" + }, { + token : "keyword.operator", + regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" + }, { + token : "punctuation.operator", + regex : ";" + }, { + token : "paren.lparen", + regex : "[\\[\\(\\{]" + }, { + token : "paren.rparen", + regex : "[\\]]" + }, { + token : "paren.rparen", + regex : "[\\)\\}]", + next : "pop" + }], + variables: [{ + token : "variable", + regex : /(\$)(\w+)/ + }, { + token : ["variable", "paren.lparen"], + regex : /(\$)(\()/, + push : "start" + }, { + token : ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], + regex : /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, + push : "start" + }, { + token : "variable", + regex : /\$[*@#?\-$!0_]/ + }, { + token : ["variable", "paren.lparen"], + regex : /(\$)(\{)/, + push : "start" + }] + }; + + this.normalizeRules(); +}; + +oop.inherits(ShHighlightRules, TextHighlightRules); + +exports.ShHighlightRules = ShHighlightRules; +}); + +ace.define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; +var Range = require("../range").Range; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; + +var Mode = function() { + this.HighlightRules = ShHighlightRules; + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = new CstyleBehaviour(); +}; +oop.inherits(Mode, TextMode); + +(function() { + + + this.lineCommentStart = "#"; + + this.getNextLineIndent = function(state, line, tab) { + var indent = this.$getIndent(line); + + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + + if (tokens.length && tokens[tokens.length-1].type == "comment") { + return indent; + } + + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + + return indent; + }; + + var outdents = { + "pass": 1, + "return": 1, + "raise": 1, + "break": 1, + "continue": 1 + }; + + this.checkOutdent = function(state, line, input) { + if (input !== "\r\n" && input !== "\r" && input !== "\n") + return false; + + var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; + + if (!tokens) + return false; + do { + var last = tokens.pop(); + } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); + + if (!last) + return false; + + return (last.type == "keyword" && outdents[last.value]); + }; + + this.autoOutdent = function(state, doc, row) { + + row += 1; + var indent = this.$getIndent(doc.getLine(row)); + var tab = doc.getTabString(); + if (indent.slice(-tab.length) == tab) + doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); + }; + + this.$id = "ace/mode/sh"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); + +ace.define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript","ace/mode/xml","ace/mode/html","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown","ace/mode/javascript","ace/mode/html","ace/mode/sh","ace/mode/sh","ace/mode/xml","ace/mode/css"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var XmlMode = require("./xml").Mode; +var HtmlMode = require("./html").Mode; +var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules; +var MarkdownFoldMode = require("./folding/markdown").FoldMode; + +var Mode = function() { + this.HighlightRules = MarkdownHighlightRules; + + this.createModeDelegates({ + javascript: require("./javascript").Mode, + html: require("./html").Mode, + bash: require("./sh").Mode, + sh: require("./sh").Mode, + xml: require("./xml").Mode, + css: require("./css").Mode + }); + + this.foldingRules = new MarkdownFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); + +(function() { + this.type = "text"; + this.blockComment = {start: ""}; + this.$quotes = {'"': '"', "`": "`"}; + + this.getNextLineIndent = function(state, line, tab) { + if (state == "listblock") { + var match = /^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(line); + if (!match) + return ""; + var marker = match[2]; + if (!marker) + marker = parseInt(match[3], 10) + 1 + "."; + return match[1] + marker + match[4]; + } else { + return this.$getIndent(line); + } + }; + this.$id = "ace/mode/markdown"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); (function() { + ace.require(["ace/mode/markdown"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/codebox/static/scss/core.scss b/codebox/static/scss/core.scss index 60ad87b..7759121 100644 --- a/codebox/static/scss/core.scss +++ b/codebox/static/scss/core.scss @@ -190,4 +190,8 @@ form { position: relative; width: 100%; min-height: 24rem; +} + +.problem-description { + font-size: 1.2rem; } \ No newline at end of file diff --git a/codebox/views/admin/problem/edit.moon b/codebox/views/admin/problem/edit.moon index 611713c..7940908 100644 --- a/codebox/views/admin/problem/edit.moon +++ b/codebox/views/admin/problem/edit.moon @@ -6,34 +6,36 @@ class AdminProblemEdit extends html.Widget h1 "Editing '#{@problem.name}'" div class: 'content', -> - div class: 'split-2', -> - div -> - h2 class: 'pad-l-12', 'Problem info' - form method: 'POST', -> - input type: 'hidden', name: 'csrf_token', value: @csrf_token - input type: 'hidden', name: 'problem_id', value: @problem.id + div -> + h2 class: 'pad-l-12', 'Problem info' + form method: 'POST', -> + input type: 'hidden', name: 'csrf_token', value: @csrf_token + input type: 'hidden', name: 'problem_id', value: @problem.id - label for: 'name', 'Problem name' - input type: 'text', name: 'name', placeholder: 'Problem name', value: @problem.name, "" + label for: 'name', 'Problem name' + input type: 'text', name: 'name', placeholder: 'Problem name', value: @problem.name, "" - label for: 'name', 'Short name' - input type: 'text', name: 'short_name', placeholder: 'Short URL name', value: @problem.short_name, "" + div class: 'split-2', -> + div -> + label for: 'name', 'Short name' + input type: 'text', name: 'short_name', placeholder: 'Short URL name', value: @problem.short_name, "" - label for: 'name', 'Problem description' - textarea name: 'description', placeholder: 'Problem description', @problem.description + div -> + label for: 'name', 'Time limit' + input type: 'number', value: 500, name: 'time_limit', value: @problem.time_limit, "" - label for: 'name', 'Time limit' - input type: 'number', value: 500, name: 'time_limit', value: @problem.time_limit, "" + div class: 'header-line', -> div 'Problem description' + pre { style: 'height: 32rem;', id: 'code-editor', 'data-lang': 'markdown' }, @problem.description - input type: 'submit', value: 'Update problem info' + input class: 'mar-t-24', type: 'submit', value: 'Update problem info' - div -> - h2 class: 'pad-l-12', 'Test cases' + div class: 'mar-t-24', -> + h2 class: 'pad-l-12', 'Test cases' - div class: 'test-cases', -> - for test_case in *@test_cases - widget (TestCase test_case.testcase_order, test_case.uuid, test_case.input, test_case.output) + div class: 'test-cases', -> + for test_case in *@test_cases + widget (TestCase test_case.testcase_order, test_case.uuid, test_case.input, test_case.output) - button { 'data-new-tc': @problem.short_name }, 'New test case' - button { 'data-tc-save-all': true }, 'Save all' + button { 'data-new-tc': @problem.short_name }, 'New test case' + button { 'data-tc-save-all': true }, 'Save all' \ No newline at end of file diff --git a/codebox/views/problem/problem.moon b/codebox/views/problem/problem.moon index 2f710ab..78d7a24 100644 --- a/codebox/views/problem/problem.moon +++ b/codebox/views/problem/problem.moon @@ -3,6 +3,9 @@ markdown = require "markdown" class Problems extends html.Widget content: => + raw ' + ' + div class: 'sidebar-page-container', -> div class: 'sidebar-problem-list', -> widget (require 'views.partials.problem_sidebar') @@ -56,4 +59,5 @@ class Problems extends html.Widget p style: "color: #777777", -> text "Other error" p "#{error}" - raw (markdown @problem.description) + div class: 'problem-description', -> + raw (markdown @problem.description) -- 2.25.1