├── CNAME
├── ai-deadlines.ics
├── .gitignore
├── static
├── img
│ ├── favicon.png
│ ├── calendar.png
│ ├── 072-location.svg
│ ├── 084-calendar.svg
│ ├── 269-info.svg
│ ├── 033-books.svg
│ └── 203-earth.svg
├── fonts
│ ├── KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2
│ ├── KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2
│ ├── KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2
│ ├── KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2
│ ├── KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2
│ ├── KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2
│ ├── KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2
│ ├── KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2
│ ├── KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2
│ ├── KFOlCnqEu92Fr1MmWUlfBBc4AMP6lQ.woff2
│ ├── KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmWUlfABc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmWUlfBxc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmWUlfCBc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmWUlfCRc4AMP6lbBP.woff2
│ ├── KFOlCnqEu92Fr1MmWUlfChc4AMP6lbBP.woff2
│ └── KFOlCnqEu92Fr1MmWUlfCxc4AMP6lbBP.woff2
├── css
│ ├── calendar.css
│ ├── js-year-calendar.min.css
│ └── deadlines.css
└── js
│ ├── store.min.js
│ ├── jquery.countdown.min.js
│ ├── ouical.min.js
│ ├── popper.min.js
│ ├── bootstrap-multiselect.min.js
│ └── moment.min.js
├── Gemfile
├── _config.yml
├── .travis.yml
├── _includes
├── load_data.js
├── handle_url_retrieval.js
├── google_analytics.js
├── multiselect_handler.js
├── utils.js
├── head.html
├── header.html
├── footer.html
└── calendar.js
├── _data
└── types.yml
├── LICENSE
├── _layouts
└── calendar.ics
├── utils
└── process.py
├── README.md
├── calendar.html
├── _plugins
└── data_page_generator.rb
├── _pages
└── conference.html
├── Gemfile.lock
└── index.html
/CNAME:
--------------------------------------------------------------------------------
1 | aideadlin.es
--------------------------------------------------------------------------------
/ai-deadlines.ics:
--------------------------------------------------------------------------------
1 | ---
2 | layout: calendar
3 | ---
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | _site
2 | .bundle
3 | vendor
4 | .vscode
5 | .DS_Store
6 | .idea
--------------------------------------------------------------------------------
/static/img/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/img/favicon.png
--------------------------------------------------------------------------------
/static/img/calendar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/img/calendar.png
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | gem "github-pages", group: :jekyll_plugins
4 | gem 'html-proofer'
5 |
6 | gem "webrick", "~> 1.7"
7 |
--------------------------------------------------------------------------------
/static/fonts/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmWUlfBBc4AMP6lQ.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmWUlfBBc4AMP6lQ.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmWUlfABc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmWUlfABc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmWUlfBxc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmWUlfBxc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmWUlfCBc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmWUlfCBc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmWUlfCRc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmWUlfCRc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmWUlfChc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmWUlfChc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/static/fonts/KFOlCnqEu92Fr1MmWUlfCxc4AMP6lbBP.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paperswithcode/ai-deadlines/HEAD/static/fonts/KFOlCnqEu92Fr1MmWUlfCxc4AMP6lbBP.woff2
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | title: AI Conference Deadlines
2 | description: Countdowns to top CV/NLP/ML/Robotics/AI conference deadlines
3 | author: Abhishek Das
4 |
5 | domain: "aideadlin.es"
6 | baseurl: ""
7 |
8 | twitter_hashtag: machinelearning
9 | github_username: paperswithcode
10 | github_repo: ai-deadlines
11 |
12 | markdown: kramdown
13 | ga_id:
14 |
15 | include: ['_pages']
16 |
--------------------------------------------------------------------------------
/static/css/calendar.css:
--------------------------------------------------------------------------------
1 | .color-box {
2 | width: 16px;
3 | height: 16px;
4 | display: inline-block;
5 | background-color: #ccc;
6 | border-radius: 5px;
7 | }
8 |
9 | .deadline-text {
10 | text-decoration: underline;
11 | text-decoration-color: red;
12 | }
13 |
14 | @media only screen and (max-width: 550px) {
15 | #calendar-page {
16 | display: inline;
17 | }
18 |
19 | }
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: ruby
2 | rvm:
3 | - 2.4
4 | script:
5 | - bundle exec jekyll build --future
6 | - bundle exec htmlproofer ./_site --only-4xx --check-favicon --check-html --url-ignore "/#.*/" --http-status-ignore "400,441"
7 | env:
8 | global:
9 | - NOKOGIRI_USE_SYSTEM_LIBRARIES=true
10 | branches:
11 | only:
12 | - gh-pages
13 | - /.*/
14 | notifications:
15 | on_success: never
16 | on_failure: always
17 |
--------------------------------------------------------------------------------
/_includes/load_data.js:
--------------------------------------------------------------------------------
1 |
2 | var subs = [];
3 | var _all_subs = [];
4 | // Get all subs
5 | var conf_type_data = {{ site.data.types | jsonify}};
6 | var sub2name = {}; var name2sub = {};
7 | for (var i = 0; i < conf_type_data.length; i++) {
8 | _all_subs[i] = conf_type_data[i]['sub'];
9 | sub2name[conf_type_data[i]['sub']] = conf_type_data[i]['name'];
10 | name2sub[conf_type_data[i]['name']] = conf_type_data[i]['sub'];
11 | }
12 | const all_subs = _all_subs;
13 |
14 |
--------------------------------------------------------------------------------
/_includes/handle_url_retrieval.js:
--------------------------------------------------------------------------------
1 | // Get subjects from URL/Cache
2 | var url = new URL(window.location);
3 | subs = url.searchParams.get("sub");
4 | if (subs == undefined) {
5 | subs = store.get("{{site.domain}}-subs");
6 | } else {
7 | subs = subs.toUpperCase().split(",");
8 | }
9 |
10 | // Apply selections
11 | if (subs == undefined) {
12 | subs = all_subs;
13 | }
14 | $("#subject-select").multiselect("select", subs);
15 | update_filtering({ subs: subs, all_subs: all_subs });
16 |
--------------------------------------------------------------------------------
/static/img/072-location.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/static/img/084-calendar.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/_includes/google_analytics.js:
--------------------------------------------------------------------------------
1 | (function (i, s, o, g, r, a, m) {
2 | i["GoogleAnalyticsObject"] = r;
3 | (i[r] =
4 | i[r] ||
5 | function () {
6 | (i[r].q = i[r].q || []).push(arguments);
7 | }),
8 | (i[r].l = 1 * new Date());
9 | (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
10 | a.async = 1;
11 | a.src = g;
12 | m.parentNode.insertBefore(a, m);
13 | })(
14 | window,
15 | document,
16 | "script",
17 | "https://www.google-analytics.com/analytics.js",
18 | "ga"
19 | );
20 | ga("create", "{{ site.ga_id }}", "auto");
21 | ga("send", "pageview");
22 |
--------------------------------------------------------------------------------
/_data/types.yml:
--------------------------------------------------------------------------------
1 | ---
2 | - name: Machine Learning
3 | sub: ML
4 | color: "#ffd300"
5 | - name: Computer Vision
6 | sub: CV
7 | color: "#deff0a"
8 | - name: Computer Graphics
9 | sub: CG
10 | color: "#0aefff"
11 | - name: Natural Language Proc
12 | sub: NLP
13 | color: "#147df5"
14 | - name: Robotics
15 | sub: RO
16 | color: "#0aff99"
17 | - name: Speech/SigProc
18 | sub: SP
19 | color: "#580aff"
20 | - name: Data Mining
21 | sub: DM
22 | color: "#be0aff"
23 | - name: Automated Planning
24 | sub: AP
25 | color: "#a432a8"
26 | - name: Knowledge Representation
27 | sub: KR
28 | color: "#32a855"
29 | - name: Human-Computer Interaction
30 | sub: HCI
31 | color: "#a83232"
32 |
--------------------------------------------------------------------------------
/static/img/269-info.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/static/img/033-books.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Abhishek Das
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/static/img/203-earth.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/_includes/multiselect_handler.js:
--------------------------------------------------------------------------------
1 | // Multi-select handler
2 | $("#subject-select").multiselect({
3 | includeSelectAllOption: true,
4 | numberDisplayed: 5,
5 | onChange: function (option, checked, select) {
6 | var csub = $(option).val();
7 | if (checked == true) {
8 | if (subs.indexOf(csub) < 0) subs.push(csub);
9 | } else {
10 | var idx = subs.indexOf(csub);
11 | if (idx >= 0) subs.splice(idx, 1);
12 | // In case a conf with multiple types (including this type) is wrongly hid, show all confs with at least one checked type.
13 | for (var i = 0; i < subs.length; i++) {
14 | // $('.' + subs[i] + '-conf').show();
15 | }
16 | }
17 | update_filtering({ subs: subs, all_subs: all_subs });
18 | },
19 | onSelectAll: function (options) {
20 | subs = all_subs;
21 | update_filtering({ subs: subs, all_subs: all_subs });
22 | },
23 | onDeselectAll: function (options) {
24 | subs = [];
25 | update_filtering({ subs: subs, all_subs: all_subs });
26 | },
27 | buttonText: function (options, select) {
28 | if (options.length === 0) {
29 | return "None selected";
30 | } else {
31 | var labels = [];
32 | options.each(function () {
33 | if ($(this).attr("value") !== undefined) {
34 | labels.push($(this).attr("value"));
35 | } else {
36 | labels.push($(this).html());
37 | }
38 | });
39 | return labels.join(", ") + "";
40 | }
41 | },
42 | buttonTitle: function (options, select) {
43 | return "";
44 | },
45 | });
46 |
--------------------------------------------------------------------------------
/_includes/utils.js:
--------------------------------------------------------------------------------
1 | // Borrowed from https://github.com/moment/moment-timezone/issues/167
2 | // Adds support for time zones 'UTC-12'..'UTC+12'
3 | function addUtcTimeZones() {
4 | // Moment.js uses the IANA timezone database, which supports generic time zones like 'Etc/GMT+1'.
5 | // However, the signs for these time zones are inverted compared to ISO 8601.
6 | // For more details, see https://github.com/moment/moment-timezone/issues/167
7 | for (let offset = -12; offset <= 12; offset++) {
8 | const posixSign = offset <= 0 ? "+" : "-";
9 | const isoSign = offset >= 0 ? "+" : "-";
10 | const link = `Etc/GMT${posixSign}${Math.abs(
11 | offset
12 | )}|UTC${isoSign}${Math.abs(offset)}`;
13 | moment.tz.link(link);
14 | }
15 | }
16 |
17 | function update_filtering(data) {
18 | var page_url = "{{site.baseurl}}";
19 | store.set("{{site.domain}}-subs", data.subs);
20 |
21 | $(".confItem").hide();
22 | for (const j in data.all_subs) {
23 | const s = data.all_subs[j];
24 | const identifier = "." + s + "-conf";
25 | if (data.subs.includes(s)) {
26 | $(identifier).show();
27 | }
28 | }
29 |
30 | if (subs.length == 0) {
31 | window.history.pushState("", "", page_url);
32 | } else {
33 | window.history.pushState("", "", page_url + "/?sub=" + data.subs.join());
34 | }
35 | }
36 |
37 | function createCalendarFromObject(data) {
38 | return createCalendar({
39 | options: {
40 | class: "calendar-obj",
41 |
42 | // You can pass an ID. If you don't, one will be generated for you
43 | id: data.id,
44 | },
45 | data: {
46 | // Event title
47 | title: data.title,
48 |
49 | // Event start date
50 | start: data.date,
51 |
52 | // Event duration
53 | duration: 60,
54 | },
55 | });
56 | }
57 |
--------------------------------------------------------------------------------
/_layouts/calendar.ics:
--------------------------------------------------------------------------------
1 | BEGIN:VCALENDAR
2 | METHOD:PUBLISH
3 | VERSION:2.0
4 | PRODID:-//{{ site.domain }}//ai-deadlines//EN
5 | X-PUBLISHED-TTL:PT1H
6 | {%- for conf in site.data.conferences -%}
7 | {% if conf.abstract_deadline and conf.abstract_deadline != "TBA" %}
8 | BEGIN:VEVENT
9 | SUMMARY:{{ conf.title }} {{ conf.year }} abstract deadline
10 | UID:{{ conf.id }}-abstract {% if conf.timezone contains "UTC" %} {% assign tz = conf.timezone | split: "UTC" %} {% if tz[1] contains "-" %} {% assign tz = tz[1] | replace: "-", "+" %} {% else if tz[1] contains "+" %} {% assign tz = tz[1] | replace: "+", "-" %} {% else assign tz = tz[1] %} {% endif %}
11 | ORGANIZER:aideadlin.es
12 | DTSTAMP:{{ site.time | date: "%Y%m%dT%H%M%SZ" }}
13 | DTSTART;TZID=Etc/GMT{{ tz }}:{{ conf.abstract_deadline | date: "%Y%m%dT%H%M%S" }}
14 | {% else %}
15 | ORGANIZER:aideadlin.es
16 | DTSTAMP:{{ site.time | date: "%Y%m%dT%H%M%SZ" }}
17 | DTSTART;TZID={{ conf.timezone }}:{{ conf.abstract_deadline | date: "%Y%m%dT%H%M%S" }}
18 | {% endif %}END:VEVENT{% endif %}
19 | {% if conf.deadline != "TBA" %}BEGIN:VEVENT
20 | SUMMARY:{{ conf.title }} {{ conf.year }} deadline
21 | UID:{{ conf.id }} {% if conf.timezone contains "UTC" %} {% assign tz = conf.timezone | split: "UTC" %} {% if tz[1] contains "-" %} {% assign tz = tz[1] | replace: "-", "+" %} {% else if tz[1] contains "+" %} {% assign tz = tz[1] | replace: "+", "-" %} {% else assign tz = tz[1] %} {% endif %}
22 | ORGANIZER:aideadlin.es
23 | DTSTAMP:{{ site.time | date: "%Y%m%dT%H%M%SZ" }}
24 | DTSTART;TZID=Etc/GMT{{ tz }}:{{ conf.deadline | date: "%Y%m%dT%H%M%S" }}
25 | {% else %}
26 | ORGANIZER:aideadlin.es
27 | DTSTAMP:{{ site.time | date: "%Y%m%dT%H%M%SZ" }}
28 | DTSTART;TZID={{ conf.timezone }}:{{ conf.deadline | date: "%Y%m%dT%H%M%S" }}
29 | {% endif %}END:VEVENT
30 | {% endif %}
31 | {%- endfor -%}END:VCALENDAR
32 |
--------------------------------------------------------------------------------
/_includes/head.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{{ site.title }}
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/_includes/header.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
18 |
20 |
21 |
22 |
42 |
43 |
--------------------------------------------------------------------------------
/_includes/footer.html:
--------------------------------------------------------------------------------
1 |
9 |
21 |
--------------------------------------------------------------------------------
/static/js/store.min.js:
--------------------------------------------------------------------------------
1 | /* Copyright (c) 2010-2016 Marcus Westin */
2 | (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.store = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;odocument.w=window"+a+'>'),u.close(),c=u.w.frames[0].document,t=c.createElement("div")}catch(l){t=i.createElement("div"),c=i.body}var f=function(e){return function(){var n=Array.prototype.slice.call(arguments,0);n.unshift(t),c.appendChild(t),t.addBehavior("#default#userData"),t.load(o);var i=e.apply(r,n);return c.removeChild(t),i}},d=new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]","g"),s=function(e){return e.replace(/^d/,"___$&").replace(d,"___")};r.set=f(function(e,t,n){return t=s(t),void 0===n?r.remove(t):(e.setAttribute(t,r.serialize(n)),e.save(o),n)}),r.get=f(function(e,t,n){t=s(t);var i=r.deserialize(e.getAttribute(t));return void 0===i?n:i}),r.remove=f(function(e,t){t=s(t),e.removeAttribute(t),e.save(o)}),r.clear=f(function(e){var t=e.XMLDocument.documentElement.attributes;e.load(o);for(var r=t.length-1;r>=0;r--)e.removeAttribute(t[r].name);e.save(o)}),r.getAll=function(e){var t={};return r.forEach(function(e,r){t[e]=r}),t},r.forEach=f(function(e,t){for(var n,i=e.XMLDocument.documentElement.attributes,o=0;n=i[o];++o)t(n.name,r.deserialize(e.getAttribute(n.name)))})}try{var v="__storejs__";r.set(v,v),r.get(v)!=v&&(r.disabled=!0),r.remove(v)}catch(l){r.disabled=!0}return r.enabled=!r.disabled,r}();
5 | }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
6 | },{}]},{},[1])(1)
7 | });
--------------------------------------------------------------------------------
/utils/process.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | # coding: utf-8
3 |
4 | # Sort and Clean conference data.
5 | # It writes to `sorted_data.yml` and `cleaned_data.yml`, copy those to the conference.yml after screening.
6 |
7 | import yaml
8 | import datetime
9 | import sys
10 | from shutil import copyfile
11 | from builtins import input
12 | import pytz
13 |
14 | import pdb
15 |
16 | try:
17 | # for python newer than 2.7
18 | from collections import OrderedDict
19 | except ImportError:
20 | # use backport from pypi
21 | from ordereddict import OrderedDict
22 |
23 | try:
24 | from yaml import CLoader as Loader, CDumper as Dumper
25 | except ImportError:
26 | from yaml import Loader, Dumper
27 | from yaml.representer import SafeRepresenter
28 | _mapping_tag = yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG
29 |
30 |
31 | def dict_representer(dumper, data):
32 | return dumper.represent_dict(data.iteritems())
33 |
34 |
35 | def dict_constructor(loader, node):
36 | return OrderedDict(loader.construct_pairs(node))
37 |
38 |
39 | Dumper.add_representer(OrderedDict, dict_representer)
40 | Loader.add_constructor(_mapping_tag, dict_constructor)
41 |
42 | Dumper.add_representer(str, SafeRepresenter.represent_str)
43 |
44 |
45 | def ordered_dump(data, stream=None, Dumper=yaml.Dumper, **kwds):
46 | class OrderedDumper(Dumper):
47 | pass
48 |
49 | def _dict_representer(dumper, data):
50 | return dumper.represent_mapping(
51 | yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, data.items())
52 |
53 | OrderedDumper.add_representer(OrderedDict, _dict_representer)
54 | return yaml.dump(data, stream, OrderedDumper, **kwds)
55 |
56 |
57 | dateformat = '%Y-%m-%d %H:%M:%S'
58 | tba_words = ["tba", "tbd"]
59 |
60 | right_now = datetime.datetime.utcnow().replace(
61 | microsecond=0).strftime(dateformat)
62 |
63 |
64 | # Helper function for yes no questions
65 | def query_yes_no(question, default="no"):
66 | """Ask a yes/no question via input() and return their answer.
67 |
68 | "question" is a string that is presented to the user.
69 | "default" is the presumed answer if the user just hits .
70 | It must be "yes" (the default), "no" or None (meaning
71 | an answer is required of the user).
72 |
73 | The "answer" return value is True for "yes" or False for "no".
74 | """
75 | valid = {"yes": True, "y": True, "ye": True, "no": False, "n": False}
76 | if default is None:
77 | prompt = " [y/n] "
78 | elif default == "yes":
79 | prompt = " [Y/n] "
80 | elif default == "no":
81 | prompt = " [y/N] "
82 | else:
83 | raise ValueError("invalid default answer: '%s'" % default)
84 |
85 | while True:
86 | sys.stdout.write(question + prompt)
87 | choice = input().lower()
88 | if default is not None and choice == '':
89 | return valid[default]
90 | elif choice in valid:
91 | return valid[choice]
92 | else:
93 | sys.stdout.write("Please respond with 'yes' or 'no' "
94 | "(or 'y' or 'n').\n")
95 |
96 |
97 | # Sort:
98 |
99 | with open("../_data/conferences.yml", 'r') as stream:
100 | try:
101 | data = yaml.load(stream, Loader=Loader)
102 | print("Initial Sorting:")
103 | for q in data:
104 | print(q["deadline"], " - ", q["title"])
105 | print("\n\n")
106 | conf = [x for x in data if x['deadline'].lower() not in tba_words]
107 | tba = [x for x in data if x['deadline'].lower() in tba_words]
108 |
109 | # just sort:
110 | conf.sort(key=lambda x: pytz.utc.normalize(datetime.datetime.strptime(x['deadline'], dateformat).replace(tzinfo=pytz.timezone(x['timezone'].replace('UTC+', 'Etc/GMT-').replace('UTC-', 'Etc/GMT+')))))
111 | print("Date Sorting:")
112 | for q in conf + tba:
113 | print(q["deadline"], " - ", q["title"])
114 | print("\n\n")
115 | conf.sort(key=lambda x: pytz.utc.normalize(datetime.datetime.strptime(x['deadline'], dateformat).replace(tzinfo=pytz.timezone(x['timezone'].replace('UTC+', 'Etc/GMT-').replace('UTC-', 'Etc/GMT+')))).strftime(dateformat) < right_now)
116 | print("Date and Passed Deadline Sorting with tba:")
117 | for q in conf + tba:
118 | print(q["deadline"], " - ", q["title"])
119 | print("\n\n")
120 |
121 | with open('sorted_data.yml', 'w') as outfile:
122 | for line in ordered_dump(
123 | conf + tba,
124 | Dumper=yaml.SafeDumper,
125 | default_flow_style=False,
126 | explicit_start=True).splitlines():
127 | outfile.write(line.replace('- title:', '\n- title:'))
128 | outfile.write('\n')
129 | except yaml.YAMLError as exc:
130 | print(exc)
131 |
--------------------------------------------------------------------------------
/static/js/jquery.countdown.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * The Final Countdown for jQuery v2.2.0 (http://hilios.github.io/jQuery.countdown/)
3 | * Copyright (c) 2016 Edson Hilios
4 | *
5 | * Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | * this software and associated documentation files (the "Software"), to deal in
7 | * the Software without restriction, including without limitation the rights to
8 | * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | * the Software, and to permit persons to whom the Software is furnished to do so,
10 | * subject to the following conditions:
11 | *
12 | * The above copyright notice and this permission notice shall be included in all
13 | * copies or substantial portions of the Software.
14 | *
15 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 | */
22 | !function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){"use strict";function b(a){if(a instanceof Date)return a;if(String(a).match(g))return String(a).match(/^[0-9]*$/)&&(a=Number(a)),String(a).match(/\-/)&&(a=String(a).replace(/\-/g,"/")),new Date(a);throw new Error("Couldn't cast `"+a+"` to a date object.")}function c(a){var b=a.toString().replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1");return new RegExp(b)}function d(a){return function(b){var d=b.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi);if(d)for(var f=0,g=d.length;f1?c:d}var f=[],g=[],h={precision:100,elapse:!1,defer:!1};g.push(/^[0-9]*$/.source),g.push(/([0-9]{1,2}\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/.source),g.push(/[0-9]{4}([\/\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/.source),g=new RegExp(g.join("|"));var i={Y:"years",m:"months",n:"daysToMonth",d:"daysToWeek",w:"weeks",W:"weeksToMonth",H:"hours",M:"minutes",S:"seconds",D:"totalDays",I:"totalHours",N:"totalMinutes",T:"totalSeconds"},j=function(b,c,d){this.el=b,this.$el=a(b),this.interval=null,this.offset={},this.options=a.extend({},h),this.instanceNumber=f.length,f.push(this),this.$el.data("countdown-instance",this.instanceNumber),d&&("function"==typeof d?(this.$el.on("update.countdown",d),this.$el.on("stoped.countdown",d),this.$el.on("finish.countdown",d)):this.options=a.extend({},h,d)),this.setFinalDate(c),this.options.defer===!1&&this.start()};a.extend(j.prototype,{start:function(){null!==this.interval&&clearInterval(this.interval);var a=this;this.update(),this.interval=setInterval(function(){a.update.call(a)},this.options.precision)},stop:function(){clearInterval(this.interval),this.interval=null,this.dispatchEvent("stoped")},toggle:function(){this.interval?this.stop():this.start()},pause:function(){this.stop()},resume:function(){this.start()},remove:function(){this.stop.call(this),f[this.instanceNumber]=null,delete this.$el.data().countdownInstance},setFinalDate:function(a){this.finalDate=b(a)},update:function(){if(0===this.$el.closest("html").length)return void this.remove();var b,c=void 0!==a._data(this.el,"events"),d=new Date;b=this.finalDate.getTime()-d.getTime(),b=Math.ceil(b/1e3),b=!this.options.elapse&&b<0?0:Math.abs(b),this.totalSecsLeft!==b&&c&&(this.totalSecsLeft=b,this.elapsed=d>=this.finalDate,this.offset={seconds:this.totalSecsLeft%60,minutes:Math.floor(this.totalSecsLeft/60)%60,hours:Math.floor(this.totalSecsLeft/60/60)%24,days:Math.floor(this.totalSecsLeft/60/60/24)%7,daysToWeek:Math.floor(this.totalSecsLeft/60/60/24)%7,daysToMonth:Math.floor(this.totalSecsLeft/60/60/24%30.4368),weeks:Math.floor(this.totalSecsLeft/60/60/24/7),weeksToMonth:Math.floor(this.totalSecsLeft/60/60/24/7)%4,months:Math.floor(this.totalSecsLeft/60/60/24/30.4368),years:Math.abs(this.finalDate.getFullYear()-d.getFullYear()),totalDays:Math.floor(this.totalSecsLeft/60/60/24),totalHours:Math.floor(this.totalSecsLeft/60/60),totalMinutes:Math.floor(this.totalSecsLeft/60),totalSeconds:this.totalSecsLeft},this.options.elapse||0!==this.totalSecsLeft?this.dispatchEvent("update"):(this.stop(),this.dispatchEvent("finish")))},dispatchEvent:function(b){var c=a.Event(b+".countdown");c.finalDate=this.finalDate,c.elapsed=this.elapsed,c.offset=a.extend({},this.offset),c.strftime=d(this.offset),this.$el.trigger(c)}}),a.fn.countdown=function(){var b=Array.prototype.slice.call(arguments,0);return this.each(function(){var c=a(this).data("countdown-instance");if(void 0!==c){var d=f[c],e=b[0];j.prototype.hasOwnProperty(e)?d[e].apply(d,b.slice(1)):null===String(e).match(/^[$A-Z_][0-9A-Z_$]*$/i)?(d.setFinalDate.call(d,e),d.start()):a.error("Method %s does not exist on jQuery.countdown".replace(/\%s/gi,e))}else new j(this,b[0],b[1])})}});
--------------------------------------------------------------------------------
/static/css/js-year-calendar.min.css:
--------------------------------------------------------------------------------
1 | .calendar{padding:4px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;direction:ltr;overflow-x:hidden;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.calendar:after{clear:both;content:"";display:block}.calendar .calendar-rtl{direction:rtl}.calendar .calendar-rtl .calendar-rtl table tr td span{float:right}.calendar table{margin:auto;border-spacing:0}.calendar table td,.calendar table th{text-align:center;width:20px;height:20px;border:none;padding:4px 5px;font-size:12px}.calendar .calendar-header{width:100%;margin-bottom:20px;border:1px solid #ddd}.calendar .calendar-header table{width:100%}.calendar .calendar-header table th{font-size:22px;padding:5px 10px;cursor:pointer}.calendar .calendar-header table th:hover{background:#eee}.calendar .calendar-header table th.disabled,.calendar .calendar-header table th.disabled:hover{background:0 0;cursor:default;color:#fff}.calendar .calendar-header table th.next,.calendar .calendar-header table th.prev{width:20px}.calendar .calendar-header .year-title{font-weight:700;text-align:center;height:20px;width:auto}.calendar .calendar-header .year-neighbor{opacity:.4}@media (max-width:991px){.calendar .calendar-header .year-neighbor{display:none}}.calendar .calendar-header .year-neighbor2{opacity:.2}@media (max-width:767px){.calendar .calendar-header .year-neighbor2{display:none}}.calendar .months-container{width:100%;display:none;flex-wrap:wrap}.calendar .months-container .month-container{float:left;text-align:center;padding:0}.calendar .months-container .month-container.month-2{width:16.66666667%}.calendar .months-container .month-container.month-3{width:25%}.calendar .months-container .month-container.month-4{width:33.33333333%}.calendar .months-container .month-container.month-6{width:50%}.calendar .months-container .month-container.month-12{width:100%}.calendar table.month th.month-title{font-size:16px;padding-bottom:5px}.calendar table.month th.day-header{font-size:14px}.calendar table.month tr td,.calendar table.month tr th{padding:0}.calendar table.month tr td.hidden,.calendar table.month tr th.hidden{display:none}.calendar table.month td.week-number{cursor:default;font-weight:700;border-right:1px solid #eee;padding:5px}.calendar table.month td.day.round-left{-webkit-border-radius:8px 0 0 8px;-moz-border-radius:8px 0 0 8px;border-radius:8px 0 0 8px}.calendar table.month td.day.round-right{webkit-border-radius:0 8px 8px 0;-moz-border-radius:0 8px 8px 0;border-radius:0 8px 8px 0}.calendar table.month td.day .day-content{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;padding:5px 6px}.calendar table.month td.new,.calendar table.month td.new:hover,.calendar table.month td.old,.calendar table.month td.old:hover{background:0 0;cursor:default}.calendar table.month td.disabled,.calendar table.month td.disabled:hover{color:#ddd}.calendar table.month td.disabled .day-content:hover,.calendar table.month td.disabled:hover .day-content:hover{background:0 0;cursor:default}.calendar table.month td.range .day-content{background:rgba(0,0,0,.2);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.calendar table.month td.range.range-start .day-content{border-top-left-radius:4px;border-bottom-left-radius:4px}.calendar table.month td.range.range-end .day-content{border-top-right-radius:4px;border-bottom-right-radius:4px}.calendar .calendar-loading-container{position:relative;text-align:center;min-height:200px}.calendar .calendar-loading-container .calendar-loading{position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%)}.calendar .calendar-spinner{margin:20px auto;width:80px;text-align:center}.calendar .calendar-spinner>div{width:16px;height:16px;margin:5px;background-color:#333;border-radius:100%;display:inline-block;-webkit-animation:sk-bouncedelay 1s infinite ease-in-out both;animation:sk-bouncedelay 1s infinite ease-in-out both}.calendar .calendar-spinner>div.bounce1{-webkit-animation-delay:-.32s;animation-delay:-.32s}.calendar .calendar-spinner>div.bounce2{-webkit-animation-delay:-.16s;animation-delay:-.16s}.calendar-context-menu,.calendar-context-menu .submenu{border:1px solid #ddd;background-color:#fff;box-shadow:2px 2px 5px rgba(0,0,0,.2);-webkit-box-shadow:2px 2px 5px rgba(0,0,0,.2);position:absolute;display:none}.calendar-context-menu .item{position:relative}.calendar-context-menu .item .content{padding:5px 10px;cursor:pointer;display:table;width:100%;white-space:nowrap;box-sizing:border-box}.calendar-context-menu .item .content:hover{background:#eee}.calendar-context-menu .item .content .text{display:table-cell}.calendar-context-menu .item .content .arrow{display:table-cell;padding-left:10px;text-align:right}.calendar-context-menu .item .submenu{top:-1px}.calendar-context-menu .item .submenu:not(.open-left){left:100%}.calendar-context-menu .item .submenu.open-left{right:100%}.calendar-context-menu .item:hover>.submenu{display:block}.table-striped .calendar table.month tr td,.table-striped .calendar table.month tr th{background-color:transparent}table.month td.day .day-content:hover{background:rgba(0,0,0,.2);cursor:pointer}@-webkit-keyframes sk-bouncedelay{0%,100%,80%{-webkit-transform:scale(0)}40%{-webkit-transform:scale(1)}}@keyframes sk-bouncedelay{0%,100%,80%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## AI Deadlines [](https://travis-ci.com/abhshkdz/ai-deadlines)
2 |
3 | Countdown timers to keep track of a bunch of CV/NLP/ML/RO conference deadlines.
4 |
5 | ## Contributing
6 |
7 | [](https://sourcerer.io/fame/abhshkdz/abhshkdz/ai-deadlines/links/0)[](https://sourcerer.io/fame/abhshkdz/abhshkdz/ai-deadlines/links/1)[](https://sourcerer.io/fame/abhshkdz/abhshkdz/ai-deadlines/links/2)[](https://sourcerer.io/fame/abhshkdz/abhshkdz/ai-deadlines/links/3)[](https://sourcerer.io/fame/abhshkdz/abhshkdz/ai-deadlines/links/4)[](https://sourcerer.io/fame/abhshkdz/abhshkdz/ai-deadlines/links/5)[](https://sourcerer.io/fame/abhshkdz/abhshkdz/ai-deadlines/links/6)[](https://sourcerer.io/fame/abhshkdz/abhshkdz/ai-deadlines/links/7)
8 |
9 | Contributions are very welcome!
10 |
11 | To keep things minimal, I'm only looking to list top-tier conferences in AI as per [conferenceranks.com][6] and my judgement calls. Please feel free to maintain a separate fork if you don't see your sub-field or conference of interest listed.
12 |
13 | To add or update a deadline:
14 | - Fork the repository
15 | - Update `_data/conferences.yml`
16 | - Make sure it has the `title`, `year`, `id`, `link`, `deadline`, `timezone`, `date`, `place`, `sub` attributes
17 | + See available timezone strings [here](https://momentjs.com/timezone/).
18 | - Optionally add a `note` and `abstract_deadline` in case the conference has a separate mandatory abstract deadline
19 | - Optionally add `hindex` (refers to h5-index from [here](https://scholar.google.com/citations?view_op=top_venues&vq=eng))
20 | - Example:
21 | ```yaml
22 | - title: BestConf
23 | year: 2022
24 | id: bestconf22 # title as lower case + last two digits of year
25 | full_name: Best Conference for Anything # full conference name
26 | link: link-to-website.com
27 | deadline: YYYY-MM-DD HH:SS
28 | abstract_deadline: YYYY-MM-DD HH:SS
29 | timezone: Asia/Seoul
30 | place: Incheon, South Korea
31 | date: September, 18-22, 2022
32 | start: YYYY-MM-DD
33 | end: YYYY-MM-DD
34 | paperslink: link-to-full-paper-list.com
35 | pwclink: link-to-papers-with-code.com
36 | hindex: 100.0
37 | sub: SP
38 | note: Important
39 | ```
40 | - Send a pull request
41 |
42 | ## Forks & other useful listings
43 |
44 | - [geodeadlin.es][3] by @LukasMosser
45 | - [neuro-deadlines][4] by @tbryn
46 | - [ai-challenge-deadlines][5] by @dieg0as
47 | - [CV-oriented ai-deadlines (with an emphasis on medical images)][8] by @duducheng
48 | - [es-deadlines (Embedded Systems, Computer Architecture, and Cyber-physical Systems)][9] by @AlexVonB and @k0nze
49 | - [2019-2020 International Conferences in AI, CV, DM, NLP and Robotics][10] by @JackieTseng
50 | - [ccf-deadlines][11] by @ccfddl
51 | - [networking-deadlines (Computer Networking, Measurement)][12] by @andrewcchu
52 | - [ad-deadlines.com][13] by @daniel-bogdoll
53 | - [sec-deadlines.github.io/ (Security and Privacy)][14] by @clementfung
54 | - [pythondeadlin.es][15] by @jesperdramsch
55 | - [deadlines.openlifescience.ai (Healthcare domain conferences and workshops)][16] by @monk1337
56 | - [hci-deadlines.github.io (Human-Computer Interaction conferences)][17] by @makinteract
57 | - [ds-deadlines.github.io (Distributed Systems, Event-based Systems, Performance, and Software Engineering conferences)][18] by @ds-deadlines
58 | - [https://deadlines.cpusec.org/ (Computer Architecture-Security conferences)][19] by @hoseinyavarzadeh
59 | - [se-deadlines.github.io (Software engineering conferences)][20] by @sivanahamer and @imranur-rahman
60 | - [awesome-mlss (Machine Learning Summer Schools)][21] by @sshkhr and @gmberton
61 |
62 | ## License
63 |
64 | This project is licensed under [MIT][1].
65 |
66 | It uses:
67 |
68 | - [IcoMoon Icons](https://icomoon.io/#icons-icomoon): [GPL](http://www.gnu.org/licenses/gpl.html) / [CC BY4.0](http://creativecommons.org/licenses/by/4.0/)
69 |
70 | [1]: https://abhshkdz.mit-license.org/
71 | [2]: http://aideadlin.es/
72 | [3]: https://github.com/LukasMosser/geo-deadlines
73 | [4]: https://github.com/tbryn/neuro-deadlines
74 | [5]: https://github.com/dieg0as/ai-challenge-deadlines
75 | [6]: http://www.conferenceranks.com/#
76 | [8]: https://m3dv.github.io/ai-deadlines/
77 | [9]: https://ekut-es.github.io/es-deadlines/
78 | [10]: https://jackietseng.github.io/conference_call_for_paper/conferences.html
79 | [11]: https://ccfddl.github.io/
80 | [12]: https://noise-lab.net/networking-deadlines/
81 | [13]: https://ad-deadlines.com/
82 | [14]: https://sec-deadlines.github.io/
83 | [15]: https://pythondeadlin.es/
84 | [16]: https://deadlines.openlifescience.ai/
85 | [17]: https://hci-deadlines.github.io/
86 | [18]: https://ds-deadlines.github.io
87 | [19]: https://deadlines.cpusec.org/
88 | [20]: https://se-deadlines.github.io/
89 | [21]: https://awesome-mlss.com/
--------------------------------------------------------------------------------
/_includes/calendar.js:
--------------------------------------------------------------------------------
1 |
2 | // calendar data template
3 | var calendar_data = {
4 | clickDay: function (e) {
5 | if (e.events.length > 0) {
6 | for (var i in e.events) {
7 | window.open("{{site.baseurl}}/conference?id=" + e.events[i].abbreviation, "_self")
8 | }
9 | }
10 | },
11 | mouseOnDay: function (e) {
12 | if (e.events.length > 0) {
13 | var content = "";
14 |
15 | for (var i in e.events) {
16 | var headline_color = "";
17 | var break_html = ' ';
18 |
19 | var location_html = ' ' + e.events[i].location;
20 | var date_html = ' ' + e.events[i].date;
21 |
22 | var badges_html = "";
23 | var subs = e.events[i].subject.split(',');
24 | for (let i = 0; i < subs.length; i++) {
25 | var sub = subs[i].replace(" ", "");
26 | badges_html += '' + sub + ' '
27 | }
28 | if (e.events[i].hindex != "") {
29 | badges_html += '' + e.events[i].hindex + ' '
30 | }
31 |
32 | if (i == e.events.length - 1) {
33 | break_html = '';
34 | }
35 |
36 |
37 | if (e.events[i].id.endsWith("deadline")) {
38 | headline_color = 'deadline-text';
39 | } else {
40 | }
41 | content +=
42 | '' +
43 | '
' +
44 | '' + e.events[i].name + ' ' +
45 | '
' +
46 | '
' +
47 | location_html +
48 | ' ' +
49 | date_html +
50 | ' ' +
51 | badges_html +
52 | '
' +
53 | break_html +
54 | '
';
55 | }
56 |
57 | $(e.element).popover({
58 | trigger: "manual",
59 | container: "body",
60 | html: true,
61 | content: content,
62 | });
63 |
64 | $(e.element).popover("show");
65 | }
66 | },
67 | mouseOutDay: function (e) {
68 | if (e.events.length > 0) {
69 | $(e.element).popover("hide");
70 | }
71 | },
72 | customDayRenderer: function (cellContent, currentDate) {
73 | var today = new Date();
74 | // render today
75 | if (today.getFullYear() === currentDate.getFullYear() && today.getMonth() === currentDate.getMonth() && today.getDate() === currentDate.getDate()) {
76 | cellContent.style = "background-color: gray;";
77 | }
78 | },
79 | dayContextMenu: function (e) {
80 | $(e.element).popover("hide");
81 | },
82 | dataSource: conf_list_all
83 | }
84 | function load_conference_list() {
85 | // Gather data
86 | var conf_list_all = [];
87 | {% for conf in site.data.conferences %}
88 | // add deadlines in red
89 | conf_list_all.push({
90 | id: "{{conf.id}}-deadline",
91 | abbreviation: "{{conf.id}}",
92 | name: "{{conf.title}} {{conf.year}}",
93 | color: "red",
94 | location: "{{conf.place}}",
95 | date: "{{conf.date}}",
96 | hindex: "{{conf.hindex}}",
97 | subject: "{{conf.sub}}",
98 | startDate: Date.parse("{{conf.deadline}}"),
99 | endDate: Date.parse("{{conf.deadline}}"),
100 | });
101 |
102 | // add Conferences in chosen color
103 | {% if conf.start != "" %}
104 | var color = "black";
105 | {% assign conf_sub = conf.sub | split: ',' | first | strip %} // use first sub to choose color
106 | {% for type in site.data.types %}
107 | {% if conf_sub == type.sub %}
108 | color = "{{type.color}}";
109 | {% endif %}
110 | {% endfor %}
111 | conf_list_all.push({
112 | id: "{{conf.id}}-conference",
113 | abbreviation: "{{conf.id}}",
114 | name: "{{conf.title}} {{conf.year}}",
115 | color: color,
116 | location: "{{conf.place}}",
117 | date: "{{conf.date}}",
118 | hindex: "{{conf.hindex}}",
119 | subject: "{{conf.sub}}",
120 | startDate: Date.parse("{{conf.start}}"),
121 | endDate: Date.parse("{{conf.end}}"),
122 | });
123 | {% endif %}
124 | {% endfor %}
125 |
126 | return conf_list_all;
127 | }
128 |
129 | function update_filtering(data) {
130 | store.set('{{site.domain}}-subs', data.subs);
131 |
132 | conf_list = conf_list_all.filter(v => {
133 | var commonValues = data.subs.filter(function (value) {
134 | return v.subject.indexOf(value) > -1;
135 | });
136 | var subject_match = commonValues.length > 0;
137 | return subject_match;
138 | });
139 |
140 | // rerender calendar
141 | calendar_data['dataSource'] = conf_list; // need to update only this
142 | calendar = new Calendar("#calendar-page", calendar_data);
143 |
144 | if (subs.length == 0) {
145 | window.history.pushState('', '', page_url);
146 | } else {
147 | window.history.pushState('', '', page_url + '/?sub=' + data.subs.join());
148 | }
149 | }
--------------------------------------------------------------------------------
/static/css/deadlines.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-size: 16px;
3 | line-height: 23px;
4 | font-weight: 300;
5 | -webkit-font-smoothing: subpixel-antialiased;
6 | }
7 |
8 | body *::selection {
9 | background: #e74c3c;
10 | color: #fff;
11 | }
12 |
13 | .container {
14 | max-width: 980px;
15 | }
16 |
17 | .top-strip {
18 | background-color: #333;
19 | height: 0.25em;
20 | width: 100%;
21 | }
22 |
23 | h1,
24 | h2,
25 | h3 {
26 | /* font-weight: 300; */
27 | }
28 |
29 | h1 {
30 | margin: 0 0 10px;
31 | font-size: 30px;
32 | line-height: 35px;
33 | }
34 |
35 | h2 {
36 | margin: 0 0 10px;
37 | font-size: 25px;
38 | line-height: 30px;
39 | }
40 |
41 | h3 {
42 | margin: 0;
43 | font-size: 20px;
44 | line-height: 25px;
45 | }
46 |
47 | .page-header {
48 | margin-top: 20px;
49 | margin-bottom: 20px;
50 | }
51 |
52 | #conf-title.page-header {
53 | border-bottom: none;
54 | }
55 |
56 | #conf-full-name {
57 | margin-bottom: 5px;
58 | }
59 |
60 | p.authors {
61 | margin-bottom: 5px;
62 | color: #808080;
63 | font-size: 20px;
64 | }
65 |
66 | p.authors a {
67 | border-color: #dedede;
68 | }
69 |
70 | img {
71 | max-width: 100%;
72 | }
73 |
74 | p {
75 | text-align: justify;
76 | }
77 |
78 | a {
79 | text-decoration: none;
80 | border-bottom: 1px solid #ccc;
81 | color: inherit;
82 | }
83 |
84 | p.lead.authors a {
85 | border-bottom: none;
86 | }
87 |
88 | a:hover,
89 | a:focus {
90 | color: inherit;
91 | text-decoration: none;
92 | }
93 |
94 | .thumb {
95 | margin: 20px 0;
96 | border: 1px solid #808080;
97 | }
98 |
99 | pre {
100 | color: #333;
101 | font-size: 12px;
102 | line-height: 17px;
103 | }
104 |
105 | footer {
106 | font-size: 13px;
107 | }
108 |
109 | .conf-row {
110 | margin-bottom: 5px;
111 | }
112 |
113 | .conf-title,
114 | .conf-title-small,
115 | .conf-title-icon {
116 | font-size: 20px;
117 | font-weight: 400;
118 |
119 | }
120 |
121 | .conf-title-small {
122 | display: none;
123 | }
124 |
125 | .conf-title-icon {
126 | white-space: nowrap;
127 | font-size: 20px;
128 | }
129 |
130 | .deadline,
131 | .meta {
132 | font-size: 13px;
133 | }
134 |
135 | .note {
136 | font-size: 13px;
137 | margin-bottom: 5px;
138 | }
139 |
140 | .timer,
141 | .timer-small {
142 | font-size: 20px;
143 | font-weight: 400;
144 | }
145 |
146 | #confs {
147 | margin-top: 20px;
148 | }
149 | .timer-small {
150 | display: none;
151 | }
152 |
153 | #conf-timer {
154 | font-size: 72px;
155 | color: #444;
156 | margin-top: 40px;
157 | margin-bottom: 0.5em;
158 | }
159 |
160 | #conf-key-facts {
161 | margin-bottom: 10px;
162 | }
163 |
164 | .conf-sub {
165 | color: rgb(36, 101, 191);
166 | background: rgba(236, 240, 241, 0.7);
167 | font-size: 13px;
168 | padding: 3px 5px;
169 | margin-right: 8px;
170 | cursor: pointer;
171 | font-weight: 300;
172 | }
173 |
174 | .conf-sub::selection {
175 | background: #0097e6;
176 | }
177 |
178 | .checkbox input[type="checkbox"]:checked:after {
179 | background-color: #0097e6;
180 | border-color: #0097e6;
181 | }
182 |
183 | .checkbox input[type="checkbox"]:after,
184 | .checkbox input[type="checkbox"]:focus:after {
185 | border-color: #0097e6;
186 | }
187 |
188 | #sort-order-checkbox {
189 | text-align: right;
190 | font-size: 14px;
191 | padding-top: 5px;
192 | }
193 |
194 | #sort-order-checkbox input[type="checkbox"]:checked:after {
195 | background-color: #0097e6;
196 | border-color: #0097e6;
197 | }
198 |
199 | #sort-order-checkbox input[type="checkbox"]:after,
200 | #sort-order-checkbox input[type="checkbox"]:focus:after {
201 | border-color: #0097e6;
202 | }
203 |
204 | .filter-label {
205 | text-align: right;
206 | }
207 |
208 |
209 | .pwc-link {
210 | text-decoration: none;
211 | border: none;
212 | vertical-align: middle;
213 | }
214 |
215 | .pwc-link:hover {
216 | border-bottom: 1px solid #1198b2;
217 | }
218 |
219 | .icon-inner {
220 | width: .95em;
221 | height: .95em;
222 | display: inline-block;
223 | vertical-align: middle;
224 | position: relative;
225 | fill: currentColor;
226 | }
227 |
228 | .pwc-icon {
229 | color: #1198b2;
230 | }
231 |
232 | .twitter-github-icons {
233 | line-height: 16px;
234 | }
235 |
236 | #past-events-title {
237 | padding-bottom: 15px;
238 | border-bottom: 2px solid #bb2d3b;
239 | }
240 |
241 | .badge-link {
242 | vertical-align: middle;
243 | margin-bottom: 3px;
244 | margin-left: 2px;
245 | margin-right: 2px;
246 | }
247 |
248 |
249 | .badge-danger {
250 | background-color: #bb2d3b;
251 | }
252 |
253 | @media only screen and (max-width: 768px) {
254 | #conf-timer {
255 | font-size: 64px;
256 | }
257 | .calendar {
258 | margin-bottom: 10px;
259 | }
260 | .filter-label {
261 | text-align: left;
262 | }
263 | }
264 |
265 | @media only screen and (max-width: 576px) {
266 | #conf-timer {
267 | font-size: 36px;
268 | }
269 | .conf-place {
270 | display: none;
271 | }
272 | .conf-date {
273 | display: none;
274 | }
275 | .note {
276 | display: none;
277 | }
278 | .conf-row {
279 | margin-bottom: 7px;
280 | }
281 | .timer {
282 | display: none;
283 | }
284 | .timer-small {
285 | text-align: right;
286 | display: grid;
287 | }
288 | .conf-title {
289 | display: none;
290 | }
291 | .conf-title-small {
292 | display: inline;
293 | }
294 |
295 | }
296 |
297 | @media only screen and (max-width: 375px) {
298 | #conf-timer {
299 | font-size: 28px;
300 | }
301 | }
302 |
303 | .checkbox {
304 | font-size: 12px;
305 | }
306 |
307 | .calendar {
308 | font-size: 12px;
309 | margin-top: 3px;
310 | }
311 |
312 | .calendar img {
313 | margin-right: 5px;
314 | }
315 |
316 | .ind-cal {
317 | margin: 0 5px;
318 | }
319 |
320 | .calendar img {
321 | height: 20px;
322 | }
323 |
--------------------------------------------------------------------------------
/calendar.html:
--------------------------------------------------------------------------------
1 | ---
2 | permalink: /calendar/
3 | ---
4 |
5 |
6 |
7 | {% include head.html %}
8 |
9 |
10 |
11 |
12 | {% include header.html %}
13 |
14 |
15 |
Calendar Overview of Conference Deadlines and Dates
16 |
23 |
24 |
25 |
26 |
27 |
54 |
55 |
56 |
57 |
58 |
107 |
108 |
109 |
110 |
111 | Deadlines
112 |
113 |
114 | Today
115 |
116 | {% for type in site.data.types %}
117 |
118 | {{ type.name }}
119 |
120 | {% endfor %}
121 |
122 |
123 |
124 | {% include footer.html %}
125 |
126 |
127 |
128 |
129 |
130 |
131 |
156 |
157 |
--------------------------------------------------------------------------------
/_plugins/data_page_generator.rb:
--------------------------------------------------------------------------------
1 | # coding: utf-8
2 | # Generate pages from individual records in yml files
3 | # (c) 2014-2016 Adolfo Villafiorita
4 | # Distributed under the conditions of the MIT License
5 |
6 | module Jekyll
7 |
8 | module Sanitizer
9 | # strip characters and whitespace to create valid filenames, also lowercase
10 | def sanitize_filename(name)
11 | if(name.is_a? Integer)
12 | return name.to_s
13 | end
14 | return name.tr(
15 | "ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÑñÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž",
16 | "AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz"
17 | ).downcase.strip.gsub(' ', '-').gsub(/[^\w.-]/, '')
18 | end
19 | end
20 |
21 | # this class is used to tell Jekyll to generate a page
22 | class DataPage < Page
23 | include Sanitizer
24 |
25 | # - site and base are copied from other plugins: to be honest, I am not sure what they do
26 | #
27 | # - `index_files` specifies if we want to generate named folders (true) or not (false)
28 | # - `dir` is the default output directory
29 | # - `data` is the data defined in `_data.yml` of the record for which we are generating a page
30 | # - `name` is the key in `data` which determines the output filename
31 | # - `template` is the name of the template for generating the page
32 | # - `extension` is the extension for the generated file
33 | def initialize(site, base, index_files, dir, data, name, template, extension)
34 | @site = site
35 | @base = base
36 |
37 | # @dir is the directory where we want to output the page
38 | # @name is the name of the page to generate
39 | #
40 | # the value of these variables changes according to whether we
41 | # want to generate named folders or not
42 | if data[name] == nil
43 | puts "error (datapage_gen). empty value for field '#{name}' in record #{data}"
44 | else
45 | filename = sanitize_filename(data[name]).to_s
46 |
47 | @dir = dir + (index_files ? "/" + filename + "/" : "")
48 | @name = (index_files ? "index" : filename) + "." + extension.to_s
49 |
50 | self.process(@name)
51 | self.read_yaml(File.join(base, '_layouts'), template + ".html")
52 | self.data['title'] = data[name]
53 | # add all the information defined in _data for the current record to the
54 | # current page (so that we can access it with liquid tags)
55 | self.data.merge!(data)
56 | end
57 | end
58 | end
59 |
60 | class DataPagesGenerator < Generator
61 | safe true
62 |
63 | # generate loops over _config.yml/page_gen invoking the DataPage
64 | # constructor for each record for which we want to generate a page
65 |
66 | def generate(site)
67 | # page_gen_dirs determines whether we want to generate index pages
68 | # (name/index.html) or standard files (name.html). This information
69 | # is passed to the DataPage constructor, which sets the @dir variable
70 | # as required by this directive
71 | index_files = site.config['page_gen-dirs'] == true
72 |
73 | # data contains the specification of the data for which we want to generate
74 | # the pages (look at the README file for its specification)
75 | data = site.config['page_gen']
76 | if data
77 | data.each do |data_spec|
78 | index_files_for_this_data = data_spec['index_files'] != nil ? data_spec['index_files'] : index_files
79 | template = data_spec['template'] || data_spec['data']
80 | name = data_spec['name']
81 | dir = data_spec['dir'] || data_spec['data']
82 | extension = data_spec['extension'] || "html"
83 |
84 | if site.layouts.key? template
85 | # records is the list of records defined in _data.yml
86 | # for which we want to generate different pages
87 | records = nil
88 | data_spec['data'].split('.').each do |level|
89 | if records.nil?
90 | records = site.data[level]
91 | else
92 | records = records[level]
93 | end
94 | end
95 |
96 | # apply filtering conditions:
97 | # - filter requires the name of a boolean field
98 | # - filter_condition evals a ruby expression
99 | records = records.select { |r| r[data_spec['filter']] } if data_spec['filter']
100 | records = records.select { |record| eval(data_spec['filter_condition']) } if data_spec['filter_condition']
101 |
102 | records.each do |record|
103 | site.pages << DataPage.new(site, site.source, index_files_for_this_data, dir, record, name, template, extension)
104 | end
105 | else
106 | puts "error (datapage_gen). could not find template #{template}" if not site.layouts.key? template
107 | end
108 | end
109 | end
110 | end
111 | end
112 |
113 | module DataPageLinkGenerator
114 | include Sanitizer
115 |
116 | # use it like this: {{input | datapage_url: dir}}
117 | # to generate a link to a data_page.
118 | #
119 | # the filter is smart enough to generate different link styles
120 | # according to the data_page-dirs directive ...
121 | #
122 | # ... however, the filter is not smart enough to support different
123 | # extensions for filenames.
124 | #
125 | # Thus, if you use the `extension` feature of this plugin, you
126 | # need to generate the links by hand
127 | def datapage_url(input, dir)
128 | extension = Jekyll.configuration({})['page_gen-dirs'] ? '/' : '.html'
129 | "#{dir}/#{sanitize_filename(input)}#{extension}"
130 | end
131 | end
132 |
133 | end
134 |
135 | Liquid::Template.register_filter(Jekyll::DataPageLinkGenerator)
136 |
--------------------------------------------------------------------------------
/static/js/ouical.min.js:
--------------------------------------------------------------------------------
1 | !function(e){var o=function(e){return e.toISOString().replace(/-|:|\.\d+/g,"")},t=function(e){return e.end?o(e.end):o(new Date(e.start.getTime()+6e4*e.duration))},n={google:function(e){var n=o(e.start),i=t(e);return'Google '},yahoo:function(e){var t=e.end?(e.end.getTime()-e.start.getTime())/6e4:e.duration,n=(t<600?"0"+Math.floor(t/60):Math.floor(t/60)+"")+(t%60<10?"0"+t%60:t%60+""),i=o(new Date(e.start-6e4*e.start.getTimezoneOffset()))||"";return'Yahoo! '},ics:function(e,n,i){var a=o(e.start),d=t(e);return''+i+" "},ical:function(e){return this.ics(e,"icon-ical","iCal")},outlook:function(e){return this.ics(e,"icon-outlook","Outlook")}},i=function(){var e=document.createElement("style");return e.id="ouical-css",e.innerHTML="background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFQAAAAQCAYAAACIoli7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MzJCRDU2NUE1MDIxMUUyOTY1Q0EwNTkxNEJDOUIwNCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MzJCRDU2NkE1MDIxMUUyOTY1Q0EwNTkxNEJDOUIwNCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQzMkJENTYzQTUwMjExRTI5NjVDQTA1OTE0QkM5QjA0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQzMkJENTY0QTUwMjExRTI5NjVDQTA1OTE0QkM5QjA0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1Gcb3QAACh1JREFUeNrEWAtwVNUZ/u7d9yvZJBtMIC8eBhIKMkQIhqIBKirWwpSW0dahCir1gQhWg2XKjNRqR7AjQ6QjglBFRIW20KmC0KRYjRYMCZGHGEjIY0Oy2U32lX3d3Xv6nxuSbEJCQNvpn/n33POfxz33u9//uBGaBQFcMhgrpGYC6ddk+zfiZKgxsvOG4buJMGATNtzcq4l+WStbsGgpvOiELpgBWetGQGNCstSGkKwH1Ek04oVNFUZQsEAjedCg0iBRVivrP737CL+H8Na7f7lpRFa2cOfMqdUn9n3ARGc7NLEYJj62Qle6Z3/ZlATt82mINV4QVPV33HVXmK/1bRgPvst60vzXgJzZZ84UlOfnV1L/YvwhBxk7Q7quZ3zZLrvSivRy+PtR0Y8oUit2P7+aWm5TifxahErVPWfd/JRBQaNVjA2CIhsecEwIubHzB3+CQWNDNBCCyuiEC6NgpV3agkCszYWknBTInjAMFh20HAo1/QQFVM7Kw9aly7D1ze2iJEemhbu8Mzf++rkVNGMkaS7puKadb0yubGscp/Wa3rc0nNXVJ6RsJvsaUhmXt5oyZv36e4o//hi1tbUonjWrYNTs2QXxhywuL+8bmzevoG7dOu3gj8Po2MIVZGIcAw6TcPma0YV4JfXYEBiy/rbeqZcv+i1tEbIgagzgOAWMerT5MvDuXgfOH6vAsRoRgVAqHOp2TMrX4dYfFmLhVAHTRqtgkn0QQ3W0anZK+UsvzJe/qflxi2d04a3u9iJWdngUHd/I33KEyJEoqBE2mqCxGBCqq//p8idWvPh66Wa35ZlzUIcAnez3w+n14uwDD8CalYWo293vYePH+Fy+Jn58289HKu2rpbux9KF7EY4yfHroAHKL5iv2w/v2Ye7CBfBHBLRWHYJ54rzrCQcsDtx+YA4MAbyTqjsHLfLIrWWcChjwu/XHUVnuxrGDC2G2AdwnnKQNXwOLHnwFH4da8VnZBpg0ZqgcOgJMfKa+oqJkTDQMX3or3GF/khgJQ9TroDInQENq9rjItaNwqUWkeDoy0wtmTKYt/8XPpg4wZpADARTt2YOJx45Bo9PBlZEBy86dvQedPGkSxmZnw5SQAD6Xrxns6XWmYO+1x3e+n52D2WM3Y96w6F0F1F4wBwsBprBEv+0wIQO7Xj2HC0ercLbiEdi0zYgyAk1OgFUQccONwP5dyxELNMCQ5Cfq0YZpekgCpMZgENPvmIc5KckEm4gL7+9BrL0d1rFjYSGGGkePgyWX4qU1CQW3zVG5ztV+n25aQRpVGBojkFpWroTBaAQ/TpD6eput3xOZzWaKEjL43IEM3frHLZD8XtyQasXhdzbDbNTCJjN89tftvfaW8jd67fPyzP3jRBzThGGYKgwxrcceM2eyYDQNG9+8iAMfHsaRXY/AouV4qRAS9NCrmmkjKxBKwOQsM8X0iQhQkpK1IUiiBxq1+oLfaPJJXo8lEOyCJtGKScsfhTYpGYItFTUXG9DY2oqQw4UnFi5SGF/2zfkialQcUJ66V7PrFL5mQhwgXGRZZjv+8ALzBGPM4YuyA9s3sFMtIUW5/Xx7hNU0+RU7X7OM5bFlJxSQ2ODR+ArlIUy5HDjW04y+t5UrC9J5Vm5tYxkz/s5YF3WiESYzP2MRmbmp6+EH9vuZxM9N9iBz0ViUHbclsPuX/GJ2SUnJeX+LnUW6/MqzHTp6lL29dy9rtLewx598kpWsWcPuu+8+Fo1GlfG9+/bZn1q1Kk1JzHQSlUxHjBL7rkX5XL5mMBQks7WvY0vvZ3d4pW63j7Nfo/QDfYCbs3iGa6UORYMUP/92qhoYE4VsdNCoDEEyUYqnhBIDEmJ8hZYenKdmETH6468pWa3GJbvdHpKiTWpio4YSz7Hjx7Hu2Wdx9KOPkDkyHaWbNiE/Lw+LFy+makWlHCInOyc9MyOTJ3JRzcEhnCHHYtf0dCJtwrrp3Suvv/UGvO4uWBLN2L9/N7xeFzyedrS43+q1F401DQdaP+8Vrg1ppcRS3t+DDVQe9dhFqF3JiHTaIYaTyL2jYIld8IsGWCQRTB+GoCcgiU5q2QCD6KNFdQjrM1FVXeUYd+PYxg6nE+np6ZiYn48dO3Zg7dq1iEQi0Gq1KKeqh1h82T2BURkZQlpa2kzqHuJ1qEph3zCAPnVyDao8X6EgeQowANDlSx7mfo9t772NBQt+pmT5T468jgmFS5TxiqPvdderLO+Kfcnte2X71G9VzCvjulhfZaJFFjJSrCj7/DjCqgh0VN6EvSIsCUAXndxPvDxf1w5t4gjoY1qEnAYUfI8SpuokOlyIBIPhC06nSwHUZDIhNzcXoVAIRF7k5OQoLc83/E1eutSKpuYmRKToLZs3l6Zzhqo5QyPR6FVPfcJZg2lFN6Py80q+kbp2WzLwUEe/OZ2Ovr4YU11przqL/5XoRH3fvakwmjFdQtlH4/FC6VdY/dRNVKEYeMqAUR3EiSo9Vj56As2+MKwGMx68fySm5o+HSeDh6FLM7/fVu1zO3v24axcUFJDneZX+SkrgXq8PlZUnEKKKwGpNgM/rmaLT66Z1uzwxVBoC0JKqtTjpPtVd8sQ8YJKM+g3W5Ze/HpZ3f9r0kahk5aq41b/st1c8A3uYOQQrr0uyFwep+ujrG6HHip/YsPvlTmz+7dcovnMGZk4gt6cYKXQFMWuyAV98+iOcpfB6e9HzFBvvoS87J9XfynKZWFnfbLfzbwOlmpEkCauffhpejxenvjqF7KxsdPF6PByCz+PH6dOnKVRUW8eMGX1LN0MJ0MgQLl/dVgNb8YjuAj/qRFJhMmYVzkkv/3NZAV6jJPS4W/gWGLDr/Ua/mkQMzQM2T4dN58Q/DxbizuIKLLjtHax7bhqWPJaLVJMWPsXpzah3SWj3n6GQMKf7/wAmP6/65fq6uubGpsaOFntLuqPdARe5v4fY2emi1uej/OBmjjan3+V2tfi8voZYLFoXlaJnjQZDhZoJgi7GXX4IQPNN+Th9sJuhmKuCWM5w5pvqNiSLlfg/yhcLx2PEqA+QqhR/wX5jHirrdbIJI24A/lG9Gqt/U45NWz7Ey9s/BzQ3QpUQQajdjMS0NixdtQhFxTfTGzVQDc6rFJ/85Zdfem6ePr29dMuWdGKi5PV6Ov2BQFMoFL5INXqtx+upd3d21rXY7Y5AIMBvTp8FCJeXl/nVBKNFRa7Ag+xgsnH2K0p79+474Ix1IJWy5qgXuw40MPb8dwFkOFfngA0nY9zqQe1WnrQtzQRSBgwGEXs2zqUHmXvFvCCFLwP/Lw6PdhQLjVqFVIwSkCRFIgdPVp+sI66d7ury1Xrc7saGhkZ7OBziAEpxGotXYYQg/J4CReZwh3fdriqM2IQkrZN1mg/H9joY+4DMvSyt+eQlTL71uf8a+65VfvVw5nDh5Jpl58NHMK5FCT88diaSGi4DFYnTHvDkgTUyl/8IMABtKh8piZwIuwAAAABJRU5ErkJggg==);margin-right:.5em;content:' '}.icon-ical:before{background-position:-68px 0}.icon-outlook:before{}.icon-yahoo:before{background-position:-36px +4px}.icon-google:before{background-position:-52px 0}",e},a=function(e,o,t){var n=document.createElement("div");return n.innerHTML=' ',Object.keys(e).forEach(function(o){n.innerHTML+=''+e[o]+" "}),n.className="add-to-calendar",void 0!==o&&(n.className+=" "+o),document.getElementById("ouical-css")||document.getElementsByTagName("head")[0].appendChild(i()),n.id=t,n};e.createCalendar=function(e){var o,t,i;if(void 0!==(o=e).data&&void 0!==o.data.start&&(void 0!==o.data.end||void 0!==o.data.duration))return a((i=e.data,{google:n.google(i),yahoo:n.yahoo(i),ical:n.ical(i),outlook:n.outlook(i)}),function(e){if(e.options&&e.options.class)return e.options.class}(e),(t=e).options&&t.options.id?t.options.id:Math.floor(1e6*Math.random()));console.log("Event details missing.")}}(this);
--------------------------------------------------------------------------------
/_pages/conference.html:
--------------------------------------------------------------------------------
1 | ---
2 | permalink: /conference/
3 | ---
4 |
5 |
6 |
7 | {% include head.html %}
8 |
9 |
10 | {% include header.html %}
11 |
12 |
29 |
30 |
31 |
32 |
33 |
.
34 |
35 |
36 |
37 |
.
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | Accepted Papers:
46 |
47 |
48 |
49 |
50 | Papers with Code:
51 |
52 |
53 |
54 |
55 |
56 | Download Conference deadline:
57 |
58 |
59 |
60 |
61 | Deadline in timezone from conference website:
62 |
63 |
64 |
65 |
66 |
67 | Deadline in your local America/New_York timezone:
68 |
69 |
70 |
71 |
72 |
73 |
77 |
78 |
79 |
80 | {% include footer.html %}
81 |
82 |
83 |
175 |
176 |
177 |
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | activesupport (6.0.4.8)
5 | concurrent-ruby (~> 1.0, >= 1.0.2)
6 | i18n (>= 0.7, < 2)
7 | minitest (~> 5.1)
8 | tzinfo (~> 1.1)
9 | zeitwerk (~> 2.2, >= 2.2.2)
10 | addressable (2.8.0)
11 | public_suffix (>= 2.0.2, < 5.0)
12 | coffee-script (2.4.1)
13 | coffee-script-source
14 | execjs
15 | coffee-script-source (1.11.1)
16 | colorator (1.1.0)
17 | commonmarker (0.23.4)
18 | concurrent-ruby (1.1.10)
19 | dnsruby (1.61.9)
20 | simpleidn (~> 0.1)
21 | em-websocket (0.5.3)
22 | eventmachine (>= 0.12.9)
23 | http_parser.rb (~> 0)
24 | ethon (0.15.0)
25 | ffi (>= 1.15.0)
26 | eventmachine (1.2.7)
27 | execjs (2.8.1)
28 | faraday (1.10.0)
29 | faraday-em_http (~> 1.0)
30 | faraday-em_synchrony (~> 1.0)
31 | faraday-excon (~> 1.1)
32 | faraday-httpclient (~> 1.0)
33 | faraday-multipart (~> 1.0)
34 | faraday-net_http (~> 1.0)
35 | faraday-net_http_persistent (~> 1.0)
36 | faraday-patron (~> 1.0)
37 | faraday-rack (~> 1.0)
38 | faraday-retry (~> 1.0)
39 | ruby2_keywords (>= 0.0.4)
40 | faraday-em_http (1.0.0)
41 | faraday-em_synchrony (1.0.0)
42 | faraday-excon (1.1.0)
43 | faraday-httpclient (1.0.1)
44 | faraday-multipart (1.0.3)
45 | multipart-post (>= 1.2, < 3)
46 | faraday-net_http (1.0.1)
47 | faraday-net_http_persistent (1.2.0)
48 | faraday-patron (1.0.0)
49 | faraday-rack (1.0.0)
50 | faraday-retry (1.0.3)
51 | ffi (1.15.5)
52 | forwardable-extended (2.6.0)
53 | gemoji (3.0.1)
54 | github-pages (226)
55 | github-pages-health-check (= 1.17.9)
56 | jekyll (= 3.9.2)
57 | jekyll-avatar (= 0.7.0)
58 | jekyll-coffeescript (= 1.1.1)
59 | jekyll-commonmark-ghpages (= 0.2.0)
60 | jekyll-default-layout (= 0.1.4)
61 | jekyll-feed (= 0.15.1)
62 | jekyll-gist (= 1.5.0)
63 | jekyll-github-metadata (= 2.13.0)
64 | jekyll-include-cache (= 0.2.1)
65 | jekyll-mentions (= 1.6.0)
66 | jekyll-optional-front-matter (= 0.3.2)
67 | jekyll-paginate (= 1.1.0)
68 | jekyll-readme-index (= 0.3.0)
69 | jekyll-redirect-from (= 0.16.0)
70 | jekyll-relative-links (= 0.6.1)
71 | jekyll-remote-theme (= 0.4.3)
72 | jekyll-sass-converter (= 1.5.2)
73 | jekyll-seo-tag (= 2.8.0)
74 | jekyll-sitemap (= 1.4.0)
75 | jekyll-swiss (= 1.0.0)
76 | jekyll-theme-architect (= 0.2.0)
77 | jekyll-theme-cayman (= 0.2.0)
78 | jekyll-theme-dinky (= 0.2.0)
79 | jekyll-theme-hacker (= 0.2.0)
80 | jekyll-theme-leap-day (= 0.2.0)
81 | jekyll-theme-merlot (= 0.2.0)
82 | jekyll-theme-midnight (= 0.2.0)
83 | jekyll-theme-minimal (= 0.2.0)
84 | jekyll-theme-modernist (= 0.2.0)
85 | jekyll-theme-primer (= 0.6.0)
86 | jekyll-theme-slate (= 0.2.0)
87 | jekyll-theme-tactile (= 0.2.0)
88 | jekyll-theme-time-machine (= 0.2.0)
89 | jekyll-titles-from-headings (= 0.5.3)
90 | jemoji (= 0.12.0)
91 | kramdown (= 2.3.2)
92 | kramdown-parser-gfm (= 1.1.0)
93 | liquid (= 4.0.3)
94 | mercenary (~> 0.3)
95 | minima (= 2.5.1)
96 | nokogiri (>= 1.13.4, < 2.0)
97 | rouge (= 3.26.0)
98 | terminal-table (~> 1.4)
99 | github-pages-health-check (1.17.9)
100 | addressable (~> 2.3)
101 | dnsruby (~> 1.60)
102 | octokit (~> 4.0)
103 | public_suffix (>= 3.0, < 5.0)
104 | typhoeus (~> 1.3)
105 | html-pipeline (2.14.1)
106 | activesupport (>= 2)
107 | nokogiri (>= 1.4)
108 | html-proofer (3.19.3)
109 | addressable (~> 2.3)
110 | mercenary (~> 0.3)
111 | nokogiri (~> 1.12)
112 | parallel (~> 1.3)
113 | rainbow (~> 3.0)
114 | typhoeus (~> 1.3)
115 | yell (~> 2.0)
116 | http_parser.rb (0.8.0)
117 | i18n (0.9.5)
118 | concurrent-ruby (~> 1.0)
119 | jekyll (3.9.2)
120 | addressable (~> 2.4)
121 | colorator (~> 1.0)
122 | em-websocket (~> 0.5)
123 | i18n (~> 0.7)
124 | jekyll-sass-converter (~> 1.0)
125 | jekyll-watch (~> 2.0)
126 | kramdown (>= 1.17, < 3)
127 | liquid (~> 4.0)
128 | mercenary (~> 0.3.3)
129 | pathutil (~> 0.9)
130 | rouge (>= 1.7, < 4)
131 | safe_yaml (~> 1.0)
132 | jekyll-avatar (0.7.0)
133 | jekyll (>= 3.0, < 5.0)
134 | jekyll-coffeescript (1.1.1)
135 | coffee-script (~> 2.2)
136 | coffee-script-source (~> 1.11.1)
137 | jekyll-commonmark (1.4.0)
138 | commonmarker (~> 0.22)
139 | jekyll-commonmark-ghpages (0.2.0)
140 | commonmarker (~> 0.23.4)
141 | jekyll (~> 3.9.0)
142 | jekyll-commonmark (~> 1.4.0)
143 | rouge (>= 2.0, < 4.0)
144 | jekyll-default-layout (0.1.4)
145 | jekyll (~> 3.0)
146 | jekyll-feed (0.15.1)
147 | jekyll (>= 3.7, < 5.0)
148 | jekyll-gist (1.5.0)
149 | octokit (~> 4.2)
150 | jekyll-github-metadata (2.13.0)
151 | jekyll (>= 3.4, < 5.0)
152 | octokit (~> 4.0, != 4.4.0)
153 | jekyll-include-cache (0.2.1)
154 | jekyll (>= 3.7, < 5.0)
155 | jekyll-mentions (1.6.0)
156 | html-pipeline (~> 2.3)
157 | jekyll (>= 3.7, < 5.0)
158 | jekyll-optional-front-matter (0.3.2)
159 | jekyll (>= 3.0, < 5.0)
160 | jekyll-paginate (1.1.0)
161 | jekyll-readme-index (0.3.0)
162 | jekyll (>= 3.0, < 5.0)
163 | jekyll-redirect-from (0.16.0)
164 | jekyll (>= 3.3, < 5.0)
165 | jekyll-relative-links (0.6.1)
166 | jekyll (>= 3.3, < 5.0)
167 | jekyll-remote-theme (0.4.3)
168 | addressable (~> 2.0)
169 | jekyll (>= 3.5, < 5.0)
170 | jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
171 | rubyzip (>= 1.3.0, < 3.0)
172 | jekyll-sass-converter (1.5.2)
173 | sass (~> 3.4)
174 | jekyll-seo-tag (2.8.0)
175 | jekyll (>= 3.8, < 5.0)
176 | jekyll-sitemap (1.4.0)
177 | jekyll (>= 3.7, < 5.0)
178 | jekyll-swiss (1.0.0)
179 | jekyll-theme-architect (0.2.0)
180 | jekyll (> 3.5, < 5.0)
181 | jekyll-seo-tag (~> 2.0)
182 | jekyll-theme-cayman (0.2.0)
183 | jekyll (> 3.5, < 5.0)
184 | jekyll-seo-tag (~> 2.0)
185 | jekyll-theme-dinky (0.2.0)
186 | jekyll (> 3.5, < 5.0)
187 | jekyll-seo-tag (~> 2.0)
188 | jekyll-theme-hacker (0.2.0)
189 | jekyll (> 3.5, < 5.0)
190 | jekyll-seo-tag (~> 2.0)
191 | jekyll-theme-leap-day (0.2.0)
192 | jekyll (> 3.5, < 5.0)
193 | jekyll-seo-tag (~> 2.0)
194 | jekyll-theme-merlot (0.2.0)
195 | jekyll (> 3.5, < 5.0)
196 | jekyll-seo-tag (~> 2.0)
197 | jekyll-theme-midnight (0.2.0)
198 | jekyll (> 3.5, < 5.0)
199 | jekyll-seo-tag (~> 2.0)
200 | jekyll-theme-minimal (0.2.0)
201 | jekyll (> 3.5, < 5.0)
202 | jekyll-seo-tag (~> 2.0)
203 | jekyll-theme-modernist (0.2.0)
204 | jekyll (> 3.5, < 5.0)
205 | jekyll-seo-tag (~> 2.0)
206 | jekyll-theme-primer (0.6.0)
207 | jekyll (> 3.5, < 5.0)
208 | jekyll-github-metadata (~> 2.9)
209 | jekyll-seo-tag (~> 2.0)
210 | jekyll-theme-slate (0.2.0)
211 | jekyll (> 3.5, < 5.0)
212 | jekyll-seo-tag (~> 2.0)
213 | jekyll-theme-tactile (0.2.0)
214 | jekyll (> 3.5, < 5.0)
215 | jekyll-seo-tag (~> 2.0)
216 | jekyll-theme-time-machine (0.2.0)
217 | jekyll (> 3.5, < 5.0)
218 | jekyll-seo-tag (~> 2.0)
219 | jekyll-titles-from-headings (0.5.3)
220 | jekyll (>= 3.3, < 5.0)
221 | jekyll-watch (2.2.1)
222 | listen (~> 3.0)
223 | jemoji (0.12.0)
224 | gemoji (~> 3.0)
225 | html-pipeline (~> 2.2)
226 | jekyll (>= 3.0, < 5.0)
227 | kramdown (2.3.2)
228 | rexml
229 | kramdown-parser-gfm (1.1.0)
230 | kramdown (~> 2.0)
231 | liquid (4.0.3)
232 | listen (3.7.1)
233 | rb-fsevent (~> 0.10, >= 0.10.3)
234 | rb-inotify (~> 0.9, >= 0.9.10)
235 | mercenary (0.3.6)
236 | mini_portile2 (2.8.0)
237 | minima (2.5.1)
238 | jekyll (>= 3.5, < 5.0)
239 | jekyll-feed (~> 0.9)
240 | jekyll-seo-tag (~> 2.1)
241 | minitest (5.15.0)
242 | multipart-post (2.1.1)
243 | nokogiri (1.13.5)
244 | mini_portile2 (~> 2.8.0)
245 | racc (~> 1.4)
246 | octokit (4.22.0)
247 | faraday (>= 0.9)
248 | sawyer (~> 0.8.0, >= 0.5.3)
249 | parallel (1.22.1)
250 | pathutil (0.16.2)
251 | forwardable-extended (~> 2.6)
252 | public_suffix (4.0.7)
253 | racc (1.6.0)
254 | rainbow (3.1.1)
255 | rb-fsevent (0.11.1)
256 | rb-inotify (0.10.1)
257 | ffi (~> 1.0)
258 | rexml (3.2.5)
259 | rouge (3.26.0)
260 | ruby2_keywords (0.0.5)
261 | rubyzip (2.3.2)
262 | safe_yaml (1.0.5)
263 | sass (3.7.4)
264 | sass-listen (~> 4.0.0)
265 | sass-listen (4.0.0)
266 | rb-fsevent (~> 0.9, >= 0.9.4)
267 | rb-inotify (~> 0.9, >= 0.9.7)
268 | sawyer (0.8.2)
269 | addressable (>= 2.3.5)
270 | faraday (> 0.8, < 2.0)
271 | simpleidn (0.2.1)
272 | unf (~> 0.1.4)
273 | terminal-table (1.8.0)
274 | unicode-display_width (~> 1.1, >= 1.1.1)
275 | thread_safe (0.3.6)
276 | typhoeus (1.4.0)
277 | ethon (>= 0.9.0)
278 | tzinfo (1.2.9)
279 | thread_safe (~> 0.1)
280 | unf (0.1.4)
281 | unf_ext
282 | unf_ext (0.0.8.1)
283 | unicode-display_width (1.8.0)
284 | webrick (1.7.0)
285 | yell (2.2.2)
286 | zeitwerk (2.5.4)
287 |
288 | PLATFORMS
289 | ruby
290 |
291 | DEPENDENCIES
292 | github-pages
293 | html-proofer
294 | webrick (~> 1.7)
295 |
296 | BUNDLED WITH
297 | 2.3.13
298 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 | ---
2 | ---
3 |
4 |
5 |
6 |
7 | {% include head.html %}
8 |
9 |
10 | {% include header.html %}
11 |
12 |
66 |
67 |
68 | {% for conf in site.data.conferences %}
69 |
70 |
71 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
108 | {% if conf.note %}
109 |
110 | Note: {{conf.note}}
111 |
112 | {% endif %}
113 |
114 |
115 |
116 |
117 |
Deadline:
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 | {% for sub in conf.sub %}
127 |
128 | {% endfor %}
129 |
130 |
131 |
132 |
133 | {% endfor %}
134 |
135 |
136 |
Past Events
137 |
138 | Most recent first
139 |
140 |
141 |
142 |
143 | {% include footer.html %}
144 |
145 |
146 |
147 |
255 |
256 |
257 |
--------------------------------------------------------------------------------
/static/js/popper.min.js:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (C) Federico Zivolo 2019
3 | Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).
4 | */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=e.ownerDocument.defaultView,n=o.getComputedStyle(e,null);return t?n[t]:n}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll|overlay)/.test(r+s+p)?e:n(o(e))}function r(e){return 11===e?pe:10===e?se:pe||se}function p(e){if(!e)return document.documentElement;for(var o=r(10)?document.body:null,n=e.offsetParent||null;n===o&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TH','TD','TABLE'].indexOf(n.nodeName)&&'static'===t(n,'position')?p(n):n:e?e.ownerDocument.documentElement:document.documentElement}function s(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||p(e.firstElementChild)===e)}function d(e){return null===e.parentNode?e:d(e.parentNode)}function a(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,n=o?e:t,i=o?t:e,r=document.createRange();r.setStart(n,0),r.setEnd(i,0);var l=r.commonAncestorContainer;if(e!==l&&t!==l||n.contains(i))return s(l)?l:p(l);var f=d(e);return f.host?a(f.host,t):a(e,d(t).host)}function l(e){var t=1=o.clientWidth&&n>=o.clientHeight}),l=0a[e]&&!t.escapeWithReference&&(n=Q(f[o],a[e]-('right'===e?f.width:f.height))),le({},o,n)}};return l.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';f=fe({},f,m[t](e))}),e.offsets.popper=f,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,n=t.reference,i=e.placement.split('-')[0],r=Z,p=-1!==['top','bottom'].indexOf(i),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(n[s])&&(e.offsets.popper[d]=r(n[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var n;if(!K(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',c=a?'bottom':'right',u=S(i)[l];d[c]-us[c]&&(e.offsets.popper[m]+=d[m]+u-s[c]),e.offsets.popper=g(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f],10),E=parseFloat(w['border'+f+'Width'],10),v=b-e.offsets.popper[m]-y-E;return v=ee(Q(s[l]-u,v),0),e.arrowElement=i,e.offsets.arrow=(n={},le(n,m,$(v)),le(n,h,''),n),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),n=e.placement.split('-')[0],i=T(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case ge.FLIP:p=[n,i];break;case ge.CLOCKWISE:p=G(n);break;case ge.COUNTERCLOCKWISE:p=G(n,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(n!==s||p.length===d+1)return e;n=e.placement.split('-')[0],i=T(n);var a=e.offsets.popper,l=e.offsets.reference,f=Z,m='left'===n&&f(a.right)>f(l.left)||'right'===n&&f(a.left)f(l.top)||'bottom'===n&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&g||'bottom'===n&&u,w=-1!==['top','bottom'].indexOf(n),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u);(m||b||y)&&(e.flipped=!0,(m||b)&&(n=p[d+1]),y&&(r=z(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=fe({},e.offsets.popper,D(e.instance.popper,e.offsets.reference,e.placement)),e=P(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],n=e.offsets,i=n.popper,r=n.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return i[p?'left':'top']=r[o]-(s?i[p?'width':'height']:0),e.placement=T(t),e.offsets.popper=g(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!K(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=C(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.rightwindow.devicePixelRatio||!me),c='bottom'===o?'top':'bottom',g='right'===n?'left':'right',b=H('transform');if(d='bottom'==c?'HTML'===l.nodeName?-l.clientHeight+h.bottom:-f.height+h.bottom:h.top,s='right'==g?'HTML'===l.nodeName?-l.clientWidth+h.right:-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[g]=0,m.willChange='transform';else{var w='bottom'==c?-1:1,y='right'==g?-1:1;m[c]=d*w,m[g]=s*y,m.willChange=c+', '+g}var E={"x-placement":e.placement};return e.attributes=fe({},E,e.attributes),e.styles=fe({},m,e.styles),e.arrowStyles=fe({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return j(e.instance.popper,e.styles),V(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&j(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,n,i){var r=L(i,t,e,o.positionFixed),p=O(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),j(t,{position:o.positionFixed?'fixed':'absolute'}),o},gpuAcceleration:void 0}}},ue});
5 | //# sourceMappingURL=popper.min.js.map
6 |
--------------------------------------------------------------------------------
/static/js/bootstrap-multiselect.min.js:
--------------------------------------------------------------------------------
1 | !function(root,factory){"function"==typeof define&&define.amd&&"function"==typeof require&&"function"==typeof require.specified&&require.specified("knockout")?define(["jquery","knockout"],factory):factory(root.jQuery,root.ko)}(this,(function($,ko){"use strict";function forEach(array,callback){for(var index=0;index ').after(this.$container),this.options.onInitialized(this.$select,this.$container)}void 0!==ko&&ko.bindingHandlers&&!ko.bindingHandlers.multiselect&&(ko.bindingHandlers.multiselect={after:["options","value","selectedOptions","enable","disable"],init:function(element,valueAccessor,allBindings,viewModel,bindingContext){var $element=$(element),config=ko.toJS(valueAccessor());if($element.multiselect(config),allBindings.has("options")){var options=allBindings.get("options");ko.isObservable(options)&&ko.computed({read:function(){options(),setTimeout((function(){var ms=$element.data("multiselect");ms&&ms.updateOriginalOptions(),$element.multiselect("rebuild")}),1)},disposeWhenNodeIsRemoved:element})}if(allBindings.has("value")){var value=allBindings.get("value");ko.isObservable(value)&&ko.computed({read:function(){value(),setTimeout((function(){$element.multiselect("refresh")}),1)},disposeWhenNodeIsRemoved:element}).extend({rateLimit:100,notifyWhenChangesStop:!0})}if(allBindings.has("selectedOptions")){var selectedOptions=allBindings.get("selectedOptions");ko.isObservable(selectedOptions)&&ko.computed({read:function(){selectedOptions(),setTimeout((function(){$element.multiselect("refresh")}),1)},disposeWhenNodeIsRemoved:element}).extend({rateLimit:100,notifyWhenChangesStop:!0})}var setEnabled=function(enable){setTimeout((function(){enable?$element.multiselect("enable"):$element.multiselect("disable")}))};if(allBindings.has("enable")){var enable=allBindings.get("enable");ko.isObservable(enable)?ko.computed({read:function(){setEnabled(enable())},disposeWhenNodeIsRemoved:element}).extend({rateLimit:100,notifyWhenChangesStop:!0}):setEnabled(enable)}if(allBindings.has("disable")){var disable=allBindings.get("disable");ko.isObservable(disable)?ko.computed({read:function(){setEnabled(!disable())},disposeWhenNodeIsRemoved:element}).extend({rateLimit:100,notifyWhenChangesStop:!0}):setEnabled(!disable)}ko.utils.domNodeDisposal.addDisposeCallback(element,(function(){$element.multiselect("destroy")}))},update:function(element,valueAccessor,allBindings,viewModel,bindingContext){var $element=$(element),config=ko.toJS(valueAccessor());$element.multiselect("setOptions",config),$element.multiselect("rebuild")}}),Multiselect.prototype={defaults:{buttonText:function(options,select){if(this.disabledText.length>0&&(select.prop("disabled")||0==options.length&&this.disableIfEmpty))return this.disabledText;if(0===options.length)return this.nonSelectedText;if(this.allSelectedText&&options.length===$("option",$(select)).length&&1!==$("option",$(select)).length&&this.multiple)return this.selectAllNumber?this.allSelectedText+" ("+options.length+")":this.allSelectedText;if(0!=this.numberDisplayed&&options.length>this.numberDisplayed)return options.length+" "+this.nSelectedText;var selected="",delimiter=this.delimiterText;return options.each((function(){var label=void 0!==$(this).attr("label")?$(this).attr("label"):$(this).text();selected+=label+delimiter})),selected.substr(0,selected.length-this.delimiterText.length)},buttonTitle:function(options,select){if(0===options.length)return this.nonSelectedText;var selected="",delimiter=this.delimiterText;return options.each((function(){var label=void 0!==$(this).attr("label")?$(this).attr("label"):$(this).text();selected+=label+delimiter})),selected.substr(0,selected.length-this.delimiterText.length)},checkboxName:function(option){return!1},optionLabel:function(element){return $(element).attr("label")||$(element).text()},optionClass:function(element){return $(element).attr("class")||""},onChange:function(option,checked){},onDropdownShow:function(event){},onDropdownHide:function(event){},onDropdownShown:function(event){},onDropdownHidden:function(event){},onSelectAll:function(){},onDeselectAll:function(){},onInitialized:function($select,$container){},onFiltering:function($filter){},enableHTML:!1,buttonClass:"custom-select",inheritClass:!1,buttonWidth:"auto",buttonContainer:'
',dropRight:!1,dropUp:!1,selectedClass:"active",maxHeight:!1,includeSelectAllOption:!1,includeSelectAllIfMoreThan:0,selectAllText:" Select all",selectAllValue:"multiselect-all",selectAllName:!1,selectAllNumber:!0,selectAllJustVisible:!0,enableFiltering:!1,enableCaseInsensitiveFiltering:!1,enableFullValueFiltering:!1,enableClickableOptGroups:!1,enableCollapsibleOptGroups:!1,collapseOptGroupsByDefault:!1,filterPlaceholder:"Search",filterBehavior:"text",includeFilterClearBtn:!0,preventInputChangeEvent:!1,nonSelectedText:"None selected",nSelectedText:"selected",allSelectedText:"All selected",numberDisplayed:3,disableIfEmpty:!1,disabledText:"",delimiterText:", ",includeResetOption:!1,includeResetDivider:!1,resetText:"Reset",templates:{button:' ',popupContainer:'',filter:'',filterClearBtn:'
',option:' ',divider:'
',optionGroup:' ',resetButton:'
'}},constructor:Multiselect,buildContainer:function(){this.$container=$(this.options.buttonContainer),this.$container.on("show.bs.dropdown",this.options.onDropdownShow),this.$container.on("hide.bs.dropdown",this.options.onDropdownHide),this.$container.on("shown.bs.dropdown",this.options.onDropdownShown),this.$container.on("hidden.bs.dropdown",this.options.onDropdownHidden)},buildButton:function(){this.$button=$(this.options.templates.button).addClass(this.options.buttonClass),this.$select.attr("class")&&this.options.inheritClass&&this.$button.addClass(this.$select.attr("class")),this.$select.prop("disabled")?this.disable():this.enable(),this.options.buttonWidth&&"auto"!==this.options.buttonWidth&&(this.$button.css({width:"100%",overflow:"hidden","text-overflow":"ellipsis"}),this.$container.css({width:this.options.buttonWidth}));var tabindex=this.$select.attr("tabindex");tabindex&&this.$button.attr("tabindex",tabindex),this.$container.prepend(this.$button)},buildDropdown:function(){this.$popupContainer=$(this.options.templates.popupContainer),this.options.dropRight?this.$container.addClass("dropright"):this.options.dropUp&&this.$container.addClass("dropup"),this.options.maxHeight&&this.$popupContainer.css({"max-height":this.options.maxHeight+"px","overflow-y":"auto","overflow-x":"hidden"}),this.$popupContainer.on("touchstart click",(function(e){e.stopPropagation()})),this.$container.append(this.$popupContainer)},buildDropdownOptions:function(){this.$select.children().each($.proxy((function(index,element){var $element=$(element),tag=$element.prop("tagName").toLowerCase();$element.prop("value")!==this.options.selectAllValue&&("optgroup"===tag?this.createOptgroup(element):"option"===tag&&("divider"===$element.data("role")?this.createDivider():this.createOptionValue(element)))}),this)),$(this.$popupContainer).off("change",'> *:not(.multiselect-group) input[type="checkbox"], > *:not(.multiselect-group) input[type="radio"]'),$(this.$popupContainer).on("change",'> *:not(.multiselect-group) input[type="checkbox"], > *:not(.multiselect-group) input[type="radio"]',$.proxy((function(event){var $target=$(event.target),checked=$target.prop("checked")||!1,isSelectAllOption=$target.val()===this.options.selectAllValue;this.options.selectedClass&&(checked?$target.closest(".multiselect-option").addClass(this.options.selectedClass):$target.closest(".multiselect-option").removeClass(this.options.selectedClass));var value=$target.val(),$option=this.getOptionByValue(value),$optionsNotThis=$("option",this.$select).not($option),$checkboxesNotThis=$("input",this.$container).not($target);if(isSelectAllOption?checked?this.selectAll(this.options.selectAllJustVisible,!0):this.deselectAll(this.options.selectAllJustVisible,!0):(checked?($option.prop("selected",!0),this.options.multiple?$option.prop("selected",!0):(this.options.selectedClass&&$($checkboxesNotThis).closest(".dropdown-item").removeClass(this.options.selectedClass),$($checkboxesNotThis).prop("checked",!1),$optionsNotThis.prop("selected",!1),this.$button.click()),"active"===this.options.selectedClass&&$optionsNotThis.closest(".dropdown-item").css("outline","")):$option.prop("selected",!1),this.options.onChange($option,checked),this.updateSelectAll(),this.options.enableClickableOptGroups&&this.options.multiple&&this.updateOptGroups()),this.$select.change(),this.updateButtonText(),this.options.preventInputChangeEvent)return!1}),this)),$(".multiselect-option",this.$popupContainer).off("mousedown"),$(".multiselect-option",this.$popupContainer).on("mousedown",(function(e){if(e.shiftKey)return!1})),$(this.$popupContainer).off("touchstart click",".multiselect-option, .multiselect-all, .multiselect-group"),$(this.$popupContainer).on("touchstart click",".multiselect-option, .multiselect-all, .multiselect-group",$.proxy((function(event){event.stopPropagation();var $target=$(event.target),$input;if(event.shiftKey&&this.options.multiple){$target.is("input")||(event.preventDefault(),($target=$target.closest(".multiselect-option").find("input")).prop("checked",!$target.prop("checked")));var checked=$target.prop("checked")||!1;if(null!==this.lastToggledInput&&this.lastToggledInput!==$target){var from=this.$popupContainer.find(".multiselect-option:visible").index($target.closest(".multiselect-option")),to=this.$popupContainer.find(".multiselect-option:visible").index(this.lastToggledInput.closest(".multiselect-option"));if(from>to){var tmp=to;to=from,from=tmp}++to;var range=this.$popupContainer.find(".multiselect-option:not(.multiselect-filter-hidden)").slice(from,to).find("input");range.prop("checked",checked),this.options.selectedClass&&range.closest(".multiselect-option").toggleClass(this.options.selectedClass,checked);for(var i=0,j=range.length;i0)$checkbox.prop("checked",!$checkbox.prop("checked")),$checkbox.change();else if(this.options.enableClickableOptGroups&&this.options.multiple&&!$target.hasClass("caret-container")){var groupItem=$target;groupItem.hasClass("multiselect-group")||(groupItem=$target.closest(".multiselect-group")),($checkbox=groupItem.find(".form-check-input")).length>0&&($checkbox.prop("checked",!$checkbox.prop("checked")),$checkbox.change())}event.preventDefault()}$target.closest(".multiselect-option").find("input[type='checkbox'], input[type='radio']").length>0?this.lastToggledInput=$target:this.lastToggledInput=null,$target.blur()}),this)),this.$container.off("keydown.multiselect").on("keydown.multiselect",$.proxy((function(event){if(!$('input[type="text"]',this.$container).is(":focus"))if(9===event.keyCode&&this.$container.hasClass("show"))this.$button.click();else{var $items=$(this.$container).find(".multiselect-option:not(.disabled), .multiselect-group:not(.disabled), .multiselect-all").filter(":visible");if(!$items.length)return;var index=$items.index($items.filter(":focus")),$current=$items.eq(index);if(32===event.keyCode){var $checkbox=$current.find("input");$checkbox.prop("checked",!$checkbox.prop("checked")),$checkbox.change(),event.preventDefault()}13===event.keyCode&&setTimeout((function(){$current.focus()}),0)}}),this)),this.options.enableClickableOptGroups&&this.options.multiple&&($(".multiselect-group input",this.$popupContainer).off("change"),$(".multiselect-group input",this.$popupContainer).on("change",$.proxy((function(event){event.stopPropagation();var $target,checked=$(event.target).prop("checked")||!1,$item=$(event.target).closest(".dropdown-item"),$group,$inputs=$item.nextUntil(".multiselect-group").not(".multiselect-filter-hidden").not(".disabled").find("input"),$options=[];this.options.selectedClass&&(checked?$item.addClass(this.options.selectedClass):$item.removeClass(this.options.selectedClass)),$.each($inputs,$.proxy((function(index,input){var $input=$(input),value=$input.val(),$option=this.getOptionByValue(value);checked?($input.prop("checked",!0),$input.closest(".dropdown-item").addClass(this.options.selectedClass),$option.prop("selected",!0)):($input.prop("checked",!1),$input.closest(".dropdown-item").removeClass(this.options.selectedClass),$option.prop("selected",!1)),$options.push(this.getOptionByValue(value))}),this)),this.options.onChange($options,checked),this.$select.change(),this.updateButtonText(),this.updateSelectAll()}),this))),this.options.enableCollapsibleOptGroups&&this.options.multiple&&($(".multiselect-group .caret-container",this.$popupContainer).off("click"),$(".multiselect-group .caret-container",this.$popupContainer).on("click",$.proxy((function(event){var $group,$inputs=$(event.target).closest(".multiselect-group").nextUntil(".multiselect-group").not(".multiselect-filter-hidden"),visible=!0;$inputs.each((function(){visible=visible&&!$(this).hasClass("multiselect-collapsible-hidden")})),visible?$inputs.hide().addClass("multiselect-collapsible-hidden"):$inputs.show().removeClass("multiselect-collapsible-hidden")}),this)))},createCheckbox:function($item,label,name,value,title,inputType){var $wrapper=$(" ");if($wrapper.addClass("form-check"),this.options.enableHTML&&$(label).length>0)$wrapper.append($(label));else{var $checkboxLabel=$(' ');$checkboxLabel.text(label),$wrapper.append($checkboxLabel)}var $checkbox=$(' ').attr("type",inputType);return $checkbox.val(value),$wrapper.prepend($checkbox),name&&$checkbox.attr("name",name),$item.prepend($wrapper),$item.attr("title",title||label),$checkbox},createOptionValue:function(element){var $element=$(element);$element.is(":selected")&&$element.prop("selected",!0);var label=this.options.optionLabel(element),classes=this.options.optionClass(element),value=$element.val(),inputType=this.options.multiple?"checkbox":"radio",title=$element.attr("title"),$option=$(this.options.templates.option);$option.addClass(classes),this.options.collapseOptGroupsByDefault&&"optgroup"===$(element).parent().prop("tagName").toLowerCase()&&($option.addClass("multiselect-collapsible-hidden"),$option.hide());var name=this.options.checkboxName($element),$checkbox=this.createCheckbox($option,label,name,value,title,inputType),selected=$element.prop("selected")||!1;value===this.options.selectAllValue&&($option.addClass("multiselect-all"),$option.removeClass("multiselect-option"),$checkbox.parent().parent().addClass("multiselect-all")),this.$popupContainer.append($option),$element.is(":disabled")&&$checkbox.attr("disabled","disabled").prop("disabled",!0).closest(".dropdown-item").addClass("disabled"),$checkbox.prop("checked",selected),selected&&this.options.selectedClass&&$checkbox.closest(".dropdown-item").addClass(this.options.selectedClass)},createDivider:function(element){var $divider=$(this.options.templates.divider);this.$popupContainer.append($divider)},createOptgroup:function(group){var $group=$(group),label=$group.attr("label"),value=$group.attr("value"),title=$group.attr("title"),$groupOption=$(" ");if(this.options.enableClickableOptGroups&&this.options.multiple){$groupOption=$(this.options.templates.optionGroup);var $checkbox=this.createCheckbox($groupOption,label,null,value,title,"checkbox")}else this.options.enableHTML?$groupOption.html(" "+label):$groupOption.text(" "+label);var classes=this.options.optionClass(group);$groupOption.addClass(classes),this.options.enableCollapsibleOptGroups&&this.options.multiple&&($groupOption.find(".form-check").addClass("d-inline-block"),$groupOption.append(' ')),$group.is(":disabled")&&$groupOption.addClass("disabled"),this.$popupContainer.append($groupOption),$("option",group).each($.proxy((function($,group){this.createOptionValue(group)}),this))},buildReset:function(){if(this.options.includeResetOption){if(this.options.includeResetDivider){var divider=$(this.options.templates.divider);divider.addClass("mt-0"),this.$popupContainer.prepend(divider)}var $resetButton=$(this.options.templates.resetButton);this.options.enableHTML?$("button",$resetButton).html(this.options.resetText):$("button",$resetButton).text(this.options.resetText),$("button",$resetButton).click($.proxy((function(){this.clearSelection()}),this)),this.$popupContainer.prepend($resetButton)}},buildSelectAll:function(){var alreadyHasSelectAll;if("number"==typeof this.options.selectAllValue&&(this.options.selectAllValue=this.options.selectAllValue.toString()),!this.hasSelectAll()&&this.options.includeSelectAllOption&&this.options.multiple&&$("option",this.$select).length>this.options.includeSelectAllIfMoreThan){this.options.includeSelectAllDivider&&this.$popupContainer.prepend($(this.options.templates.divider));var $option=$(this.options.templates.li||this.options.templates.option),$checkbox=this.createCheckbox($option,this.options.selectAllText,this.options.selectAllName,this.options.selectAllValue,this.options.selectAllText,"checkbox");$option.addClass("multiselect-all"),$option.removeClass("multiselect-option"),$option.find(".form-check-label").addClass("font-weight-bold"),this.$popupContainer.prepend($option),$checkbox.prop("checked",!1)}},buildFilter:function(){if(this.options.enableFiltering||this.options.enableCaseInsensitiveFiltering){var enableFilterLength=Math.max(this.options.enableFiltering,this.options.enableCaseInsensitiveFiltering);if(this.$select.find("option").length>=enableFilterLength){if(this.$filter=$(this.options.templates.filter),$("input",this.$filter).attr("placeholder",this.options.filterPlaceholder),this.options.includeFilterClearBtn){var clearBtn=$(this.options.templates.filterClearBtn);clearBtn.on("click",$.proxy((function(event){clearTimeout(this.searchTimeout),this.query="",this.$filter.find(".multiselect-search").val(""),$(".dropdown-item",this.$popupContainer).show().removeClass("multiselect-filter-hidden"),this.updateSelectAll(),this.options.enableClickableOptGroups&&this.options.multiple&&this.updateOptGroups()}),this)),this.$filter.find(".input-group").append(clearBtn)}this.$popupContainer.prepend(this.$filter),this.$filter.val(this.query).on("click",(function(event){event.stopPropagation()})).on("input keydown",$.proxy((function(event){13===event.which&&event.preventDefault(),clearTimeout(this.searchTimeout),this.searchTimeout=this.asyncFunction($.proxy((function(){var currentGroup,currentGroupVisible;this.query!==event.target.value&&(this.query=event.target.value,$.each($(".multiselect-option, .multiselect-group",this.$popupContainer),$.proxy((function(index,element){var value=$("input",element).length>0?$("input",element).val():"",text=$(".form-check-label",element).text(),filterCandidate="";if("text"===this.options.filterBehavior?filterCandidate=text:"value"===this.options.filterBehavior?filterCandidate=value:"both"===this.options.filterBehavior&&(filterCandidate=text+"\n"+value),value!==this.options.selectAllValue&&text){var showElement=!1;if(this.options.enableCaseInsensitiveFiltering&&(filterCandidate=filterCandidate.toLowerCase(),this.query=this.query.toLowerCase()),this.options.enableFullValueFiltering&&"both"!==this.options.filterBehavior){var valueToMatch=filterCandidate.trim().substring(0,this.query.length);this.query.indexOf(valueToMatch)>-1&&(showElement=!0)}else filterCandidate.indexOf(this.query)>-1&&(showElement=!0);showElement||($(element).css("display","none"),$(element).addClass("multiselect-filter-hidden")),showElement&&($(element).css("display","block"),$(element).removeClass("multiselect-filter-hidden")),$(element).hasClass("multiselect-group")?(currentGroup=element,currentGroupVisible=showElement):(showElement&&$(currentGroup).show().removeClass("multiselect-filter-hidden"),!showElement&¤tGroupVisible&&$(element).show().removeClass("multiselect-filter-hidden"))}}),this)));this.updateSelectAll(),this.options.enableClickableOptGroups&&this.options.multiple&&this.updateOptGroups(),this.options.onFiltering(event.target)}),this),300,this)}),this))}}},destroy:function(){this.$container.remove(),this.$select.show(),this.$select.prop("disabled",this.options.wasDisabled),this.$select.data("multiselect",null)},refresh:function(){var inputs={};$(".multiselect-option input",this.$popupContainer).each((function(){inputs[$(this).val()]=$(this)})),$("option",this.$select).each($.proxy((function(index,element){var $elem=$(element),$input=inputs[$(element).val()];$elem.is(":selected")?($input.prop("checked",!0),this.options.selectedClass&&$input.closest(".multiselect-option").addClass(this.options.selectedClass)):($input.prop("checked",!1),this.options.selectedClass&&$input.closest(".multiselect-option").removeClass(this.options.selectedClass)),$elem.is(":disabled")?$input.attr("disabled","disabled").prop("disabled",!0).closest(".multiselect-option").addClass("disabled"):$input.prop("disabled",!1).closest(".multiselect-option").removeClass("disabled")}),this)),this.updateButtonText(),this.updateSelectAll(),this.options.enableClickableOptGroups&&this.options.multiple&&this.updateOptGroups()},select:function(selectValues,triggerOnChange){$.isArray(selectValues)||(selectValues=[selectValues]);for(var i=0;i ").attr({label:option.label||"Group "+groupCounter,disabled:!!option.disabled,value:option.value}),forEach(option.children,(function(subOption){var attributes={value:subOption.value,label:subOption.label||subOption.value,title:subOption.title,selected:!!subOption.selected,disabled:!!subOption.disabled};for(var key in subOption.attributes)attributes["data-"+key]=subOption.attributes[key];$tag.append($(" ").attr(attributes))}));else{var attributes={value:option.value,label:option.label||option.value,title:option.title,class:option.class,selected:!!option.selected,disabled:!!option.disabled};for(var key in option.attributes)attributes["data-"+key]=option.attributes[key];($tag=$(" ").attr(attributes)).text(option.label||option.value)}$select.append($tag)})),this.rebuild()},enable:function(){this.$select.prop("disabled",!1),this.$button.prop("disabled",!1).removeClass("disabled")},disable:function(){this.$select.prop("disabled",!0),this.$button.prop("disabled",!0).addClass("disabled")},setOptions:function(options){this.options=this.mergeOptions(options)},mergeOptions:function(options){return $.extend(!0,{},this.defaults,this.options,options)},hasSelectAll:function(){return $(".multiselect-all",this.$popupContainer).length>0},updateOptGroups:function(){var $groups=$(".multiselect-group",this.$popupContainer),selectedClass=this.options.selectedClass;$groups.each((function(){var $options=$(this).nextUntil(".multiselect-group").not(".multiselect-filter-hidden").not(".disabled"),checked=!0;$options.each((function(){var $input;$("input",this).prop("checked")||(checked=!1)})),selectedClass&&(checked?$(this).addClass(selectedClass):$(this).removeClass(selectedClass)),$("input",this).prop("checked",checked)}))},updateSelectAll:function(notTriggerOnSelectAll){if(this.hasSelectAll()){var allBoxes=$(".multiselect-option:not(.multiselect-filter-hidden):not(.multiselect-group):not(.disabled) input:enabled",this.$popupContainer),allBoxesLength=allBoxes.length,checkedBoxesLength=allBoxes.filter(":checked").length,selectAllItem=$(".multiselect-all",this.$popupContainer),selectAllInput=selectAllItem.find("input");checkedBoxesLength>0&&checkedBoxesLength===allBoxesLength?(selectAllInput.prop("checked",!0),selectAllItem.addClass(this.options.selectedClass)):(selectAllInput.prop("checked",!1),selectAllItem.removeClass(this.options.selectedClass))}},updateButtonText:function(){var options=this.getSelected();this.options.enableHTML?$(".multiselect .multiselect-selected-text",this.$container).html(this.options.buttonText(options,this.$select)):$(".multiselect .multiselect-selected-text",this.$container).text(this.options.buttonText(options,this.$select)),$(".multiselect",this.$container).attr("title",this.options.buttonTitle(options,this.$select))},getSelected:function(){return $("option",this.$select).filter(":selected")},getOptionByValue:function(value){for(var options=$("option",this.$select),valueToCompare=value.toString(),i=0;i>>0,s=0;sFe(e)?(r=e+1,a-Fe(e)):(r=e,a);return{year:r,dayOfYear:o}}function Ae(e,t,n){var s,i,r=Ge(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+je(i=e.year()-1,t,n):a>je(e.year(),t,n)?(s=a-je(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function je(e,t,n){var s=Ge(e,t,n),i=Ge(e+1,t,n);return(Fe(e)-s+i)/7}C("w",["ww",2],"wo","week"),C("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),A("week",5),A("isoWeek",5),ce("w",te),ce("ww",te,Q),ce("W",te),ce("WW",te,Q),ge(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=Z(e)});function Ie(e,t){return e.slice(t,7).concat(e.slice(0,t))}C("d",0,"do","day"),C("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),C("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),C("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),C("e",0,0,"weekday"),C("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),A("day",11),A("weekday",11),A("isoWeekday",11),ce("d",te),ce("e",te),ce("E",te),ce("dd",function(e,t){return t.weekdaysMinRegex(e)}),ce("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ce("dddd",function(e,t){return t.weekdaysRegex(e)}),ge(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:y(n).invalidWeekday=e}),ge(["d","e","E"],function(e,t,n,s){t[s]=Z(e)});var Ze="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),$e="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),qe=de,Be=de,Je=de;function Qe(){function e(e,t){return t.length-e.length}for(var t,n,s,i,r=[],a=[],o=[],u=[],l=0;l<7;l++)t=_([2e3,1]).day(l),n=me(this.weekdaysMin(t,"")),s=me(this.weekdaysShort(t,"")),i=me(this.weekdays(t,"")),r.push(n),a.push(s),o.push(i),u.push(n),u.push(s),u.push(i);r.sort(e),a.sort(e),o.sort(e),u.sort(e),this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Xe(){return this.hours()%12||12}function Ke(e,t){C(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function et(e,t){return t._meridiemParse}C("H",["HH",2],0,"hour"),C("h",["hh",2],0,Xe),C("k",["kk",2],0,function(){return this.hours()||24}),C("hmm",0,0,function(){return""+Xe.apply(this)+T(this.minutes(),2)}),C("hmmss",0,0,function(){return""+Xe.apply(this)+T(this.minutes(),2)+T(this.seconds(),2)}),C("Hmm",0,0,function(){return""+this.hours()+T(this.minutes(),2)}),C("Hmmss",0,0,function(){return""+this.hours()+T(this.minutes(),2)+T(this.seconds(),2)}),Ke("a",!0),Ke("A",!1),L("hour","h"),A("hour",13),ce("a",et),ce("A",et),ce("H",te),ce("h",te),ce("k",te),ce("HH",te,Q),ce("hh",te,Q),ce("kk",te,Q),ce("hmm",ne),ce("hmmss",se),ce("Hmm",ne),ce("Hmmss",se),ye(["H","HH"],Me),ye(["k","kk"],function(e,t,n){var s=Z(e);t[Me]=24===s?0:s}),ye(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ye(["h","hh"],function(e,t,n){t[Me]=Z(e),y(n).bigHour=!0}),ye("hmm",function(e,t,n){var s=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s)),y(n).bigHour=!0}),ye("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s,2)),t[Se]=Z(e.substr(i)),y(n).bigHour=!0}),ye("Hmm",function(e,t,n){var s=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s))}),ye("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[Me]=Z(e.substr(0,s)),t[De]=Z(e.substr(s,2)),t[Se]=Z(e.substr(i))});var tt=z("Hours",!0);var nt,st={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Te,monthsShort:Ne,week:{dow:0,doy:6},weekdays:Ze,weekdaysMin:$e,weekdaysShort:ze,meridiemParse:/[ap]\.?m?\.?/i},it={},rt={};function at(e){return e?e.toLowerCase().replace("_","-"):e}function ot(e){for(var t,n,s,i,r=0;r=t&&function(e,t){for(var n=Math.min(e.length,t.length),s=0;s=t-1)break;t--}r++}return nt}function ut(t){var e;if(void 0===it[t]&&"undefined"!=typeof module&&module&&module.exports)try{e=nt._abbr,require("./locale/"+t),lt(e)}catch(e){it[t]=null}return it[t]}function lt(e,t){var n;return e&&((n=r(t)?dt(e):ht(e,t))?nt=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),nt._abbr}function ht(e,t){if(null===t)return delete it[e],null;var n,s=st;if(t.abbr=e,null!=it[e])Y("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=it[e]._config;else if(null!=t.parentLocale)if(null!=it[t.parentLocale])s=it[t.parentLocale]._config;else{if(null==(n=ut(t.parentLocale)))return rt[t.parentLocale]||(rt[t.parentLocale]=[]),rt[t.parentLocale].push({name:e,config:t}),null;s=n._config}return it[e]=new x(b(s,t)),rt[e]&&rt[e].forEach(function(e){ht(e.name,e.config)}),lt(e),it[e]}function dt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return nt;if(!o(e)){if(t=ut(e))return t;e=[e]}return ot(e)}function ct(e){var t,n=e._a;return n&&-2===y(e).overflow&&(t=n[ve]<0||11xe(n[pe],n[ve])?ke:n[Me]<0||24je(n,r,a)?y(e)._overflowWeeks=!0:null!=u?y(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[pe]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=St(e._a[pe],s[pe]),(e._dayOfYear>Fe(r)||0===e._dayOfYear)&&(y(e)._overflowDayOfYear=!0),n=Ve(r,0,e._dayOfYear),e._a[ve]=n.getUTCMonth(),e._a[ke]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=u[t]=s[t];for(;t<7;t++)e._a[t]=u[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[Me]&&0===e._a[De]&&0===e._a[Se]&&0===e._a[Ye]&&(e._nextDay=!0,e._a[Me]=0),e._d=(e._useUTC?Ve:function(e,t,n,s,i,r,a){var o;return e<100&&0<=e?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}).apply(null,u),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Me]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(y(e).weekdayMismatch=!0)}}function Ot(e){if(e._f!==f.ISO_8601)if(e._f!==f.RFC_2822){e._a=[],y(e).empty=!0;for(var t,n,s,i,r,a,o,u=""+e._i,l=u.length,h=0,d=H(e._f,e._locale).match(N)||[],c=0;cn.valueOf():n.valueOf()"}),pn.toJSON=function(){return this.isValid()?this.toISOString():null},pn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},pn.unix=function(){return Math.floor(this.valueOf()/1e3)},pn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},pn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},pn.eraName=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},pn.isLocal=function(){return!!this.isValid()&&!this._isUTC},pn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},pn.isUtc=At,pn.isUTC=At,pn.zoneAbbr=function(){return this._isUTC?"UTC":""},pn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},pn.dates=n("dates accessor is deprecated. Use date instead.",fn),pn.months=n("months accessor is deprecated. Use month instead",Ue),pn.years=n("years accessor is deprecated. Use year instead",Le),pn.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),pn.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!r(this._isDSTShifted))return this._isDSTShifted;var e,t={};return v(t,this),(t=bt(t))._a?(e=(t._isUTC?_:Tt)(t._a),this._isDSTShifted=this.isValid()&&0