diff --git a/Gemfile b/Gemfile
index e456d6f..40cd3dd 100644
--- a/Gemfile
+++ b/Gemfile
@@ -2,8 +2,6 @@
source 'https://rubygems.org'
-gem "bootstrap", "~> 5.2"
-
gem 'jekyll', '~> 4'
gem 'faraday-retry', '~> 2.2'
@@ -16,10 +14,6 @@ group :jekyll_plugins do
gem 'just-the-docs'
end
-source 'https://rubygems.org'
-gem 'github-pages', group: :jekyll_plugins
-
-
group :development, :test do
gem 'axe-core-capybara'
gem 'axe-core-rspec'
diff --git a/Gemfile.lock b/Gemfile.lock
index 39cac66..8d6ed00 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -54,16 +54,12 @@ GEM
faraday-retry (2.2.1)
faraday (~> 2.0)
ffi (1.17.0-arm64-darwin)
- ffi (1.17.0-x64-mingw-ucrt)
ffi (1.17.0-x86_64-darwin)
ffi (1.17.0-x86_64-linux-gnu)
forwardable-extended (2.6.0)
google-protobuf (4.27.3-arm64-darwin)
bigdecimal
rake (>= 13)
- google-protobuf (4.27.3-x64-mingw-ucrt)
- bigdecimal
- rake (>= 13)
google-protobuf (4.27.3-x86_64-darwin)
bigdecimal
rake (>= 13)
@@ -129,8 +125,6 @@ GEM
uri
nokogiri (1.16.7-arm64-darwin)
racc (~> 1.4)
- nokogiri (1.16.7-x64-mingw-ucrt)
- racc (~> 1.4)
nokogiri (1.16.7-x86_64-darwin)
racc (~> 1.4)
nokogiri (1.16.7-x86_64-linux)
@@ -196,8 +190,6 @@ GEM
safe_yaml (1.0.5)
sass-embedded (1.77.8-arm64-darwin)
google-protobuf (~> 4.26)
- sass-embedded (1.77.8-x64-mingw-ucrt)
- google-protobuf (~> 4.26)
sass-embedded (1.77.8-x86_64-darwin)
google-protobuf (~> 4.26)
sass-embedded (1.77.8-x86_64-linux-gnu)
@@ -228,7 +220,6 @@ GEM
PLATFORMS
arm64-darwin-23
- x64-mingw-ucrt
x86_64-darwin-23
x86_64-linux
diff --git a/_config.yml b/_config.yml
index 6c6d45d..eb89c28 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1,28 +1,43 @@
-title: CS10 Summer 2024
-tagline: The Beauty and Joy of Computing
-description: A gentle but thorough introduction to computer science.
-author: Victoria Phelps
-baseurl: fa24 # the subpath of your site, e.g. /blog
-url: https://cs10.org/
-exclude: ["Gemfile", "Gemfile.lock", "LICENSE", "README.md"]
-remote_theme: pmarsceill/just-the-docs@v0.3.3
-
-
-logo: "./assets/images/bjc.png"
-
-sass:
- load_paths:
- - _sass
- - C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/bootstrap-5.2.3
+# Welcome to Jekyll!
+#
+# This config file is meant for settings that affect your whole site, values
+# which you are expected to set up once and rarely edit after that. If you find
+# yourself editing these this file very often, consider using Jekyll's data files
+# feature for the data you need to update frequently.
+#
+# For technical reasons, this file is *NOT* reloaded automatically when you use
+# 'jekyll serve'. If you change this file, please restart the server process.
+
+# Site settings
+# These are used to personalize your new site. If you look in the HTML files,
+# you will see them accessed via {{ site.title }}, {{ site.github_repo }}, and so on.
+# You can create any custom variable you would like, and they will be accessible
+# in the templates via {{ site.myvariable }}.
+
+# TODO(setup): Typically the course number, "DEPT XXX". it appears on nearly every page. Keep it short. :)
+title: Berkeley Class Site
+# TODO:(setup): This should be the extended title of your course. e.g. "Introduction to Data Science"
+tagline: A Jekyll template for course websites
+description: A modern, highly customizable, responsive Jekyll template for course websites
+# TODO(template): this should be built from the staff list...
+author: Various Bears
+# You should use either light or dark as the theme.
+color_scheme: light
-# Class settings
+# TODO(setup): Set this to the semester, e.g. /sp24, (faXX / spXX / suXX / wiXX )
+baseurl: '/berkeley-class-site' # the subpath of your site, which should just be the semester.
+# TODO(setup): Set this to your course's domain
+url: 'https://berkeley-eecs.github.io' # the hostname & protocol for your site, e.g. http://example.com
+# Course variables
+# Course variables can appear in various places around the website, if something isn't used leave it blank.
+# TODO(setup): Set all of these course variables
course: SAMPLE 101
-course_email: cs10@berkeley.edu
+course_email: COURSE_EMAIL@berkeley.edu
gradescope_course_id: 123456 # you can find this in the Gradescope URL after /courses
bcourses_course_id: 123456 # Same as above, but for bCourses. Leave blank if not in use...
ed_course_id: 123456 # Again, same as above.
-sememster: fa24
+sememster: spYY | suYY | faYY # set for the current seemester
# This should be one of eecs, dsus, stat
# (Future) This will control some footer text, and later custom styling.
course_department: dsus
@@ -31,26 +46,16 @@ course_department: dsus
# If you have no archive page, comment this line out or leave blank.
class_archive_path: /
-# Theme settings
+# TODO(setup): Set these auxiliary links as you wish - they show up on the top right
+aux_links:
+ # TODO(template): Move this to be built-in.
+ Ed:
+ - 'https://edstem.org'
+ OH Queue:
+ - 'https://oh.c88c.org'
+ Berkeley Class Site on GitHub:
+ - 'https://github.com/berkeley-eecs/berkeley-class-site'
-color_scheme: light
-search_enabled: true
-heading_anchors: true
-permalink: pretty
-aux_links_new_tab: true
-ga_tracking: UA-47210910-1
-external_navigation:
- - title: iClicker
- url: https://student.iclicker.com/#/login
- - title: Lecture Recordings
- url: https://drive.google.com/drive/folders/1euBGG5sG6TnWGIE0qYiY5IbvvpW7Rh_X?usp=sharing
- - title: Ed Discussion
- url: https://edstem.org/us/courses/59710/discussion/
- - title: Gradescope
- url: https://www.gradescope.com/courses/782967
- - title: Snap!
- url: https://snap.berkeley.edu/run
-footer_content:
# Collections for website data
collections:
@@ -133,7 +138,7 @@ plugins:
- jekyll-include-cache
# Theme settings
-
+theme: just-the-docs
search_enabled: true
heading_anchors: true
permalink: pretty
diff --git a/_includes/nav.html b/_includes/nav.html
deleted file mode 100644
index 18a388f..0000000
--- a/_includes/nav.html
+++ /dev/null
@@ -1,109 +0,0 @@
-
- {%- assign titled_pages = include.pages
- | where_exp:"item", "item.title != nil" -%}
-
- {%- comment -%}
- The values of `title` and `nav_order` can be numbers or strings.
- Jekyll gives build failures when sorting on mixtures of different types,
- so numbers and strings need to be sorted separately.
-
- Here, numbers are sorted by their values, and come before all strings.
- An omitted `nav_order` value is equivalent to the page's `title` value
- (except that a numerical `title` value is treated as a string).
-
- The case-sensitivity of string sorting is determined by `site.nav_sort`.
- {%- endcomment -%}
-
- {%- assign string_ordered_pages = titled_pages
- | where_exp:"item", "item.nav_order == nil" -%}
- {%- assign nav_ordered_pages = titled_pages
- | where_exp:"item", "item.nav_order != nil" -%}
-
- {%- comment -%}
- The nav_ordered_pages have to be added to number_ordered_pages and
- string_ordered_pages, depending on the nav_order value.
- The first character of the jsonify result is `"` only for strings.
- {%- endcomment -%}
- {%- assign nav_ordered_groups = nav_ordered_pages
- | group_by_exp:"item", "item.nav_order | jsonify | slice: 0" -%}
- {%- assign number_ordered_pages = "" | split:"X" -%}
- {%- for group in nav_ordered_groups -%}
- {%- if group.name == '"' -%}
- {%- assign string_ordered_pages = string_ordered_pages | concat: group.items -%}
- {%- else -%}
- {%- assign number_ordered_pages = number_ordered_pages | concat: group.items -%}
- {%- endif -%}
- {%- endfor -%}
-
- {%- assign sorted_number_ordered_pages = number_ordered_pages | sort:"nav_order" -%}
-
- {%- comment -%}
- The string_ordered_pages have to be sorted by nav_order, and otherwise title
- (where appending the empty string to a numeric title converts it to a string).
- After grouping them by those values, the groups are sorted, then the items
- of each group are concatenated.
- {%- endcomment -%}
- {%- assign string_ordered_groups = string_ordered_pages
- | group_by_exp:"item", "item.nav_order | default: item.title | append:''" -%}
- {%- if site.nav_sort == 'case_insensitive' -%}
- {%- assign sorted_string_ordered_groups = string_ordered_groups | sort_natural:"name" -%}
- {%- else -%}
- {%- assign sorted_string_ordered_groups = string_ordered_groups | sort:"name" -%}
- {%- endif -%}
- {%- assign sorted_string_ordered_pages = "" | split:"X" -%}
- {%- for group in sorted_string_ordered_groups -%}
- {%- assign sorted_string_ordered_pages = sorted_string_ordered_pages | concat: group.items -%}
- {%- endfor -%}
-
- {%- assign pages_list = sorted_number_ordered_pages | concat: sorted_string_ordered_pages -%}
-
- {%- for node in pages_list -%}
- {%- if node.parent == nil -%}
- {%- unless node.nav_exclude -%}
-
- {%- if node.has_children -%}
-
- {%- endif -%}
- {{ node.title }}
- {%- if node.has_children -%}
- {%- assign children_list = pages_list | where: "parent", node.title -%}
-
- {%- for child in children_list -%}
- {%- unless child.nav_exclude -%}
-
- {%- if child.has_children -%}
-
- {%- endif -%}
- {{ child.title }}
- {%- if child.has_children -%}
- {%- assign grand_children_list = pages_list | where: "parent", child.title | where: "grand_parent", node.title -%}
-
- {%- for grand_child in grand_children_list -%}
- {%- unless grand_child.nav_exclude -%}
-
- {{ grand_child.title }}
-
- {%- endunless -%}
- {%- endfor -%}
-
- {%- endif -%}
-
- {%- endunless -%}
- {%- endfor -%}
-
- {%- endif -%}
-
- {%- endunless -%}
- {%- endif -%}
- {%- endfor -%}
-
-
-
-
- {%- assign external_navigation = site.external_navigation -%}
- {%- for link in external_navigation -%}
-
- {{ link.title }}
-
- {%- endfor -%}
-
diff --git a/_includes/youtube.html b/_includes/youtube.html
deleted file mode 100644
index 72d4376..0000000
--- a/_includes/youtube.html
+++ /dev/null
@@ -1,18 +0,0 @@
-
- VIDEO
-
-
-
-
\ No newline at end of file
diff --git a/_layouts/minimal.html b/_layouts/minimal.html
deleted file mode 100644
index 5c70640..0000000
--- a/_layouts/minimal.html
+++ /dev/null
@@ -1,124 +0,0 @@
----
-layout: table_wrappers
----
-
-
-
-
-{% include head.html %}
-
-
-
- Link
-
-
-
-
-
-
- {% capture nav %}
- {% if site.just_the_docs.collections %}
- {% assign collections_size = site.just_the_docs.collections | size %}
- {% for collection_entry in site.just_the_docs.collections %}
- {% assign collection_key = collection_entry[0] %}
- {% assign collection_value = collection_entry[1] %}
- {% assign collection = site[collection_key] %}
- {% if collection_value.nav_exclude != true %}
- {% include nav.html pages=collection %}
- {% endif %}
- {% endfor %}
- {% else %}
- {% include nav.html pages=site.html_pages %}
- {% endif %}
- {% endcapture %}
-
-
- {% unless page.url == "/" %}
- {% if page.parent %}
- {%- for node in pages_list -%}
- {%- if node.parent == nil -%}
- {%- if page.parent == node.title or page.grand_parent == node.title -%}
- {%- assign first_level_url = node.url | absolute_url -%}
- {%- endif -%}
- {%- if node.has_children -%}
- {%- assign children_list = pages_list | where: "parent", node.title -%}
- {%- for child in children_list -%}
- {%- if page.url == child.url or page.parent == child.title -%}
- {%- assign second_level_url = child.url | absolute_url -%}
- {%- endif -%}
- {%- endfor -%}
- {%- endif -%}
- {%- endif -%}
- {%- endfor -%}
-
-
- {% if page.grand_parent %}
- {{ page.grand_parent }}
- {{ page.parent }}
- {% else %}
- {{ page.parent }}
- {% endif %}
- {{ page.title }}
-
-
- {% endif %}
- {% endunless %}
-
- {% if site.heading_anchors != false %}
- {% include vendor/anchor_headings.html html=content beforeHeading="true" anchorBody="
" anchorClass="anchor-heading" %}
- {% else %}
- {{ content }}
- {% endif %}
-
- {% if page.has_children == true and page.has_toc != false %}
-
-
Table of contents
-
- {%- assign children_list = pages_list | where: "parent", page.title | where: "grand_parent", page.parent -%}
- {% for child in children_list %}
-
- {{ child.title }} {% if child.summary %} - {{ child.summary }}{% endif %}
-
- {% endfor %}
-
- {% endif %}
-
- {% capture footer_custom %}
- {%- include footer_custom.html -%}
- {% endcapture %}
- {% if footer_custom != "" or site.last_edit_timestamp or site.gh_edit_link %}
-
-
- {% if site.back_to_top %}
- {{ site.back_to_top_text }}
- {% endif %}
-
- {{ footer_custom }}
-
- {% if site.last_edit_timestamp or site.gh_edit_link %}
-
- {% if site.last_edit_timestamp and site.last_edit_time_format and page.last_modified_date %}
-
- Page last modified: {{ page.last_modified_date | date: site.last_edit_time_format }} .
-
- {% endif %}
- {% if
- site.gh_edit_link and
- site.gh_edit_link_text and
- site.gh_edit_repository and
- site.gh_edit_branch and
- site.gh_edit_view_mode
- %}
-
- {{ site.gh_edit_link_text }}
-
- {% endif %}
-
- {% endif %}
-
- {% endif %}
-
-
-
-
-
diff --git a/assets/.DS_Store b/assets/.DS_Store
deleted file mode 100644
index e0e8539..0000000
Binary files a/assets/.DS_Store and /dev/null differ
diff --git a/assets/cities.csv b/assets/cities.csv
deleted file mode 100644
index abd4a19..0000000
--- a/assets/cities.csv
+++ /dev/null
@@ -1,629 +0,0 @@
-Name,Chinese?
-Hong Kong,1
-Macau,1
-Beijing,1
-Chongqing,1
-Shanghai,1
-Tianjin,1
-Anqing,1
-Bengbu,1
-Bozhou,1
-Chaohu,1
-Chizhou,1
-Chuzhou,1
-Fuyang,1
-Hefei,1
-Huaibei,1
-Huainan,1
-Huangshan,1
-Jieshou,1
-Lu'an,1
-Ma'anshan,1
-Mingguang,1
-Ningguo,1
-Qianshan,1
-Suzhou,1
-Tianchang,1
-Tongcheng,1
-Tongling,1
-Wuhu,1
-Xuancheng,1
-Fu'an,1
-Fuding,1
-Fuqing,1
-Fuzhou,1
-Jian'ou,1
-Jinjiang,1
-Longhai,1
-Longyan,1
-Nan'an,1
-Nanping,1
-Ningde,1
-Putian,1
-Quanzhou,1
-Sanming,1
-Shaowu,1
-Shishi,1
-Wuyishan,1
-Xiamen,1
-Yong'an,1
-Zhangping,1
-Zhangzhou,1
-Baiyin,1
-Dingxi,1
-Dunhuang,1
-Hezuo,1
-Huating,1
-Jiayuguan,1
-Jinchang,1
-Jiuquan,1
-Lanzhou,1
-Linxia,1
-Longnan,1
-Pingliang,1
-Qingyang,1
-Tianshui,1
-Wuwei,1
-Yumen,1
-Zhangye,1
-Chaozhou,1
-Dongguan,1
-Enping,1
-Foshan,1
-Gaozhou,1
-Guangzhou,1
-Heshan,1
-Heyuan,1
-Huazhou,1
-Huizhou,1
-Jiangmen,1
-Jieyang,1
-Kaiping,1
-Lechang,1
-Leizhou,1
-Lianjiang,1
-Lianzhou,1
-Lufeng,1
-Luoding,1
-Maoming,1
-Meizhou,1
-Nanxiong,1
-Puning,1
-Qingyuan,1
-Shantou,1
-Shanwei,1
-Shaoguan,1
-Shenzhen,1
-Sihui,1
-Taishan,1
-Wuchuan,1
-Xingning,1
-Xinyi,1
-Yangchun,1
-Yangjiang,1
-Yingde,1
-Yunfu,1
-Zhanjiang,1
-Zhaoqing,1
-Zhongshan,1
-Zhuhai,1
-Baise,1
-Beihai,1
-Beiliu,1
-Cenxi,1
-Chongzuo,1
-Dongxing,1
-Fangchenggang,1
-Guigang,1
-Guilin,1
-Guiping,1
-Hechi,1
-Heshan,1
-Hezhou,1
-Jingxi,1
-Laibin,1
-Lipu,1
-Liuzhou,1
-Nanning,1
-Pingxiang,1
-Qinzhou,1
-Wuzhou,1
-Yulin,1
-Anshun,1
-Bijie,1
-Chishui,1
-Duyun,1
-Fuquan,1
-Guiyang,1
-Kaili,1
-Liupanshui,1
-Panzhou,1
-Qingzhen,1
-Renhuai,1
-Tongren,1
-Xingren,1
-Xingyi,1
-Zunyi,1
-Danzhou,1
-Dongfang,1
-Haikou,1
-Qionghai,1
-Sansha,1
-Sanya,1
-Wanning,1
-Wenchang,1
-Wuzhishan,1
-Anguo,1
-Baoding,1
-Bazhou,1
-Botou,1
-Cangzhou,1
-Chengde,1
-Dingzhou,1
-Gaobeidian,1
-Handan,1
-Hengshui,1
-Hejian,1
-Huanghua,1
-Jinzhou,1
-Langfang,1
-Luanzhou,1
-Nangong,1
-Pingquan,1
-Qian'an,1
-Qinhuangdao,1
-Renqiu,1
-Sanhe,1
-Shahe,1
-Shenzhou,1
-Shijiazhuang,1
-Tangshan,1
-Xinji,1
-Wu'an,1
-Xingtai,1
-Xinle,1
-Zhangjiakou,1
-Zhuozhou,1
-Zunhua,1
-Anda,1
-Bei'an,1
-Daqing,1
-Dongning,1
-Fujin,1
-Fuyuan,1
-Hailin,1
-Hailun,1
-Harbin,1
-Hegang,1
-Heihe,1
-Hulin,1
-Jiamusi,1
-Jixi,1
-Mishan,1
-Mohe,1
-Mudanjiang,1
-Muling,1
-Nehe,1
-Ning'an,1
-Qiqihar,1
-Qitaihe,1
-Shangzhi,1
-Shuangyashan,1
-Suifenhe,1
-Suihua,1
-Tieli,1
-Tongjiang,1
-Wuchang,1
-Wudalianchi,1
-Yichun,1
-Zhaodong,1
-Anyang,1
-Changge,1
-Dengfeng,1
-Dengzhou,1
-Gongyi,1
-Hebi,1
-Huixian,1
-Jiaozuo,1
-Jiyuan,1
-Kaifeng,1
-Lingbao,1
-Linzhou,1
-Luohe,1
-Luoyang,1
-Mengzhou,1
-Nanyang,1
-Pingdingshan,1
-Puyang,1
-Qinyang,1
-Ruzhou,1
-Sanmenxia,1
-Shangqiu,1
-Weihui,1
-Wugang,1
-Xiangcheng,1
-Xingyang,1
-Xinmi,1
-Xinxiang,1
-Xinyang,1
-Xinzheng,1
-Xuchang,1
-Yanshi,1
-Yima,1
-Yongcheng,1
-Yuzhou,1
-Zhengzhou,1
-Zhoukou,1
-Zhumadian,1
-Anlu,1
-Chibi,1
-Dangyang,1
-Danjiangkou,1
-Daye,1
-Enshi,1
-Ezhou,1
-Guangshui,1
-Hanchuan,1
-Honghu,1
-Huanggang,1
-Huangshi,1
-Jingmen,1
-Jingshan,1
-Jingzhou,1
-Laohekou,1
-Lichuan,1
-Macheng,1
-Qianjiang,1
-Shishou,1
-Shiyan,1
-Suizhou,1
-Songzi,1
-Tianmen,1
-Wuhan,1
-Wuxue,1
-Xiangyang,1
-Xianning,1
-Xiantao,1
-Xiaogan,1
-Yichang,1
-Yicheng,1
-Yidu,1
-Yingcheng,1
-Zaoyang,1
-Zhijiang,1
-Zhongxiang,1
-Changde,1
-Changning,1
-Changsha,1
-Chenzhou,1
-Hengyang,1
-Hongjiang,1
-Huaihua,1
-Jinshi,1
-Jishou,1
-Leiyang,1
-Lengshuijiang,1
-Lianyuan,1
-Liling,1
-Linxiang,1
-Liuyang,1
-Loudi,1
-Miluo,1
-Ningxiang,1
-Shaoshan,1
-Shaoyang,1
-Wugang,1
-New York,0
-Los Angeles,0
-Chicago,0
-Houston,0
-Phoenix,0
-Philadelphia,0
-San Antonio,0
-San Diego,0
-Dallas,0
-San Jose,0
-Austin,0
-Jacksonville,0
-Fort Worth,0
-Columbus,0
-San Francisco,0
-Charlotte,0
-Indianapolis,0
-Seattle,0
-Denver,0
-Washington,0
-Boston,0
-El Paso,0
-Detroit,0
-Nashville,0
-Portland,0
-Memphis,0
-Oklahoma City,0
-Las Vegas,0
-Louisville,0
-Baltimore,0
-Milwaukee,0
-Albuquerque,0
-Tucson,0
-Fresno,0
-Mesa,0
-Sacramento,0
-Atlanta,0
-Kansas City,0
-Colorado Springs,0
-Miami,0
-Raleigh,0
-Omaha,0
-Long Beach,0
-Virginia Beach,0
-Oakland,0
-Minneapolis,0
-Tulsa,0
-Arlington,0
-Tampa,0
-New Orleans,0
-Wichita,0
-Cleveland,0
-Bakersfield,0
-Aurora,0
-Anaheim,0
-Honolulu,0
-Santa Ana,0
-Riverside,0
-Corpus Christi,0
-Lexington,0
-Stockton,0
-Henderson,0
-Saint Paul,0
-St. Louis,0
-Cincinnati,0
-Pittsburgh,0
-Greensboro,0
-Anchorage,0
-Plano,0
-Lincoln,0
-Orlando,0
-Irvine,0
-Newark,0
-Toledo,0
-Durham,0
-Chula Vista,0
-Fort Wayne,0
-Jersey City,0
-St. Petersburg,0
-Laredo,0
-Madison,0
-Chandler,0
-Buffalo,0
-Lubbock,0
-Scottsdale,0
-Reno,0
-Glendale,0
-Gilbert,0
-Winston–Salem,0
-North Las Vegas,0
-Norfolk,0
-Chesapeake,0
-Garland,0
-Irving,0
-Hialeah,0
-Fremont,0
-Boise,0
-Richmond,0
-Baton Rouge,0
-Spokane,0
-Des Moines,0
-Tacoma,0
-San Bernardino,0
-Modesto,0
-Fontana,0
-Santa Clarita,0
-Birmingham,0
-Oxnard,0
-Fayetteville,0
-Moreno Valley,0
-Rochester,0
-Glendale,0
-Huntington Beach,0
-Salt Lake City,0
-Grand Rapids,0
-Amarillo,0
-Yonkers,0
-Aurora,0
-Montgomery,0
-Akron,0
-Little Rock,0
-Huntsville,0
-Augusta,0
-Port St. Lucie,0
-Grand Prairie,0
-Columbus,0
-Tallahassee,0
-Overland Park,0
-Tempe,0
-McKinney,0
-Mobile,0
-Cape Coral,0
-Shreveport,0
-Frisco,0
-Knoxville,0
-Worcester,0
-Brownsville,0
-Vancouver,0
-Fort Lauderdale,0
-Sioux Falls,0
-Ontario,0
-Chattanooga,0
-Providence,0
-Newport News,0
-Rancho Cucamonga,0
-Santa Rosa,0
-Oceanside,0
-Salem,0
-Elk Grove,0
-Garden Grove,0
-Pembroke Pines,0
-Peoria,0
-Eugene,0
-Corona,0
-Cary,0
-Springfield,0
-Fort Collins,0
-Jackson,0
-Alexandria,0
-Hayward,0
-Lancaster,0
-Lakewood,0
-Clarksville,0
-Palmdale,0
-Salinas,0
-Springfield,0
-Hollywood,0
-Pasadena,0
-Sunnyvale,0
-Macon,0
-Kansas City,0
-Pomona,0
-Escondido,0
-Killeen,0
-Naperville,0
-Joliet,0
-Bellevue,0
-Rockford,0
-Savannah,0
-Paterson,0
-Torrance,0
-Bridgeport,0
-McAllen,0
-Mesquite,0
-Syracuse,0
-Midland,0
-Pasadena,0
-Murfreesboro,0
-Miramar,0
-Dayton,0
-Fullerton,0
-Olathe,0
-Orange,0
-Thornton,0
-Roseville,0
-Denton,0
-Waco,0
-Surprise,0
-Carrollton,0
-West Valley City,0
-Charleston,0
-Warren,0
-Hampton,0
-Gainesville,0
-Visalia,0
-Coral Springs,0
-Columbia,0
-Cedar Rapids,0
-Sterling Heights,0
-New Haven,0
-Stamford,0
-Concord,0
-Kent,0
-Santa Clara,0
-Elizabeth,0
-Round Rock,0
-Thousand Oaks,0
-Lafayette,0
-Athens,0
-Topeka,0
-Simi Valley,0
-Fargo,0
-Norman,0
-Columbia,0
-Abilene,0
-Wilmington,0
-Hartford,0
-Victorville,0
-Pearland,0
-Vallejo,0
-Ann Arbor,0
-Berkeley,0
-Allentown,0
-Richardson,0
-Odessa,0
-Arvada,0
-Cambridge,0
-Sugar Land,0
-Beaumont,0
-Lansing,0
-Evansville,0
-Rochester,0
-Independence,0
-Fairfield,0
-Provo,0
-Clearwater,0
-College Station,0
-West Jordan,0
-Carlsbad,0
-El Monte,0
-Murrieta,0
-Temecula,0
-Springfield,0
-Palm Bay,0
-Costa Mesa,0
-Westminster,0
-North Charleston,0
-Miami Gardens,0
-Manchester,0
-High Point,0
-Downey,0
-Clovis,0
-Pompano Beach,0
-Pueblo,0
-Elgin,0
-Lowell,0
-Antioch,0
-West Palm Beach,0
-Peoria,0
-Everett,0
-Ventura,0
-Centennial,0
-Lakeland,0
-Gresham,0
-Richmond,0
-Billings,0
-Inglewood,0
-Broken Arrow,0
-Sandy Springs,0
-Jurupa Valley,0
-Hillsboro,0
-Waterbury,0
-Santa Maria,0
-Boulder,0
-Greeley,0
-Daly City,0
-Meridian,0
-Lewisville,0
-Davie,0
-West Covina,0
-League City,0
-Tyler,0
-Norwalk,0
-San Mateo,0
-Green Bay,0
-Wichita Falls,0
-Sparks,0
-Lakewood,0
-Burbank,0
-Rialto,0
-Allen,0
-El Cajon,0
-Las Cruces,0
-Renton,0
-Davenport,0
-South Bend,0
-Vista,0
-Tuscaloosa,0
-Clinton,0
-Edison,0
-Woodbridge,0
-San Angelo,0
-Kenosha,0
-Vacaville,0
\ No newline at end of file
diff --git a/assets/css/styles.scss b/assets/css/styles.scss
deleted file mode 100644
index 65bf29f..0000000
--- a/assets/css/styles.scss
+++ /dev/null
@@ -1,14 +0,0 @@
-.youtube-wrapper {
- position: relative;
- width: 100%;
- height: 0;
- padding-bottom: 56.25%;
- padding-top: 25px;
-}
-.youtube-wrapper iframe {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
-}
\ No newline at end of file
diff --git a/assets/dayjs.min.js b/assets/dayjs.min.js
deleted file mode 100644
index ac8df8c..0000000
--- a/assets/dayjs.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):t.dayjs=n()}(this,function(){"use strict";var t="millisecond",n="second",e="minute",r="hour",i="day",s="week",u="month",o="quarter",a="year",h=/^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/,f=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,c=function(t,n,e){var r=String(t);return!r||r.length>=n?t:""+Array(n+1-r.length).join(e)+t},d={s:c,z:function(t){var n=-t.utcOffset(),e=Math.abs(n),r=Math.floor(e/60),i=e%60;return(n<=0?"+":"-")+c(r,2,"0")+":"+c(i,2,"0")},m:function(t,n){var e=12*(n.year()-t.year())+(n.month()-t.month()),r=t.clone().add(e,u),i=n-r<0,s=t.clone().add(e+(i?-1:1),u);return Number(-(e+(n-r)/(i?r-s:s-r))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(h){return{M:u,y:a,w:s,d:i,D:"date",h:r,m:e,s:n,ms:t,Q:o}[h]||String(h||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},$={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},l="en",m={};m[l]=$;var y=function(t){return t instanceof v},M=function(t,n,e){var r;if(!t)return l;if("string"==typeof t)m[t]&&(r=t),n&&(m[t]=n,r=t);else{var i=t.name;m[i]=t,r=i}return e||(l=r),r},g=function(t,n,e){if(y(t))return t.clone();var r=n?"string"==typeof n?{format:n,pl:e}:n:{};return r.date=t,new v(r)},D=d;D.l=M,D.i=y,D.w=function(t,n){return g(t,{locale:n.$L,utc:n.$u,$offset:n.$offset})};var v=function(){function c(t){this.$L=this.$L||M(t.locale,null,!0),this.parse(t)}var d=c.prototype;return d.parse=function(t){this.$d=function(t){var n=t.date,e=t.utc;if(null===n)return new Date(NaN);if(D.u(n))return new Date;if(n instanceof Date)return new Date(n);if("string"==typeof n&&!/Z$/i.test(n)){var r=n.match(h);if(r)return e?new Date(Date.UTC(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)):new Date(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)}return new Date(n)}(t),this.init()},d.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},d.$utils=function(){return D},d.isValid=function(){return!("Invalid Date"===this.$d.toString())},d.isSame=function(t,n){var e=g(t);return this.startOf(n)<=e&&e<=this.endOf(n)},d.isAfter=function(t,n){return g(t)+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML=" ";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML=" ",y.option=!!ce.lastChild;var ge={thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 `assign.html?//docs.google.com/document/d/${id}/pub`
-const gs = id => `https://www.gradescope.com/courses/354801/assignments/${id}`;
-const slides = id => `https://docs.google.com/a/berkeley.edu/presentation/d/${id}`;
-const labURL = topic => `https://cs10.org/bjc-r/topic/topic.html?topic=${topic}&course=cs10_fa21.html`;
-
-// Monday of the first week of classes
-const SKIPPED_ITEM = { title: 'SKIP' };
-const COUNTER = {
- lecture: 1,
- homework: 0,
- discussion: 1,
- lab: 1,
-}
-
-let FIRST_DAY = dayjs('2022-01-16');
-let LAST_DAY = dayjs('2022-05-14');
-
-// TODO: Model out the schedule object for 1 day.
-// TODO: Readings() should be 1 obj with multiple links.
-// TODO: What about `options` stuff? 2 Due dates in 1 day?
-
-function createSchedule(startDate, endDate) {
- if (startDate.day() !== 0) {
- throw new Error('Start Date must start on a Sunday');
- }
- let schedule = {};
- let index = startDate;
- let stop = endDate.add(1, 'day');
- while (index.isBefore(stop)) {
- // Skip weekends
- if (index.day() > 0 && index.day() < 6) {
- schedule[index.format('YYYY-MM-DD')] = {
- date: index,
- lecture: {},
- lab: {},
- reading: {},
- discussion: {},
- assignment: {}
- };
- }
- index = index.add(1, 'day');
- }
- return schedule;
-}
-
-
-function addToSchedule(date, item, type) {
- let key = date.format('YYYY-MM-DD');
- let column = item.type || type;
- if (!CS10_SCHEDULE[key]) {
- console.log('ERROR, what? Missing date...')
- CS10_SCHEDULE[key] = {};
- }
- CS10_SCHEDULE[key][column] = item;
-}
-
-function Lecture(title, release_date, {url, gradescope, recording, options}={}) {
- if (title.slice(0, 3) === 'No ') {
- addToSchedule(release_date, { type: 'lecture', title: 'No Class', date: release_date, classes: 'no-class'});
- // TYPE_ORDER.filter(key => key !== 'lecture').forEach(type => {});
- }
- let links = {
- 'Slides': slides(url),
- 'Self-Check': gs(gradescope),
- 'Recording': recording
- }
-
- if (options && options.links) {
- links = Object.assign(links, options.links);
- }
-
- let lecture = {
- title: `${COUNTER.lecture}. ${title}`,
- date: release_date, url, links, options, type: 'lecture'
- }
- COUNTER.lecture += 1;
- addToSchedule(release_date, lecture);
- return lecture;
-}
-
-function Assignment(title, release_date, {spec_url, due_date, submission_url, type, options}={}) {
- let days = due_date.diff(release_date, 'day');
- let assignment = {
- title: `${COUNTER.homework}: ${title}`,
- type: 'assignment',
- classes: [type],
- date: release_date, url: spec_url,
- due_date, options, days, submission_url
- }
- COUNTER.homework += 1;
- addToSchedule(release_date, assignment);
- return assignment;
-}
-
-function Homework(title, release_date, {url, due_date, submission_url, options}={}) {
- return Assignment(title, release_date, {url, due_date, submission_url, type: 'homework', options});
-}
-
-function Project(title, {release_date, url, due_date, submission_url, options}={}) {
- return Assignment(title, release_date, url, due_date, submission_url, 'project', options);
-}
-
-// TODO: Add link to check off questions
-// TODO: Add link to bCourses?
-function Lab(title, release_date, {topic, due_date, options}={}) {
- if (title == 'No Lab') {
- return { type: 'lab', title: 'No Lab', date: release_date, classes: 'no-class'};
- }
- if (!due_date) {
- due_date = release_date.add(7, 'days');
- }
- let days = due_date.diff(release_date, 'day');
- let lab = {
- title: `${COUNTER.lab}. ${title}`,
- date: release_date, url: labURL(topic), due_date, options, days, type: 'lab'
- }
- COUNTER.lab += 1;
- addToSchedule(release_date, lab);
- return lab;
-}
-
-function Reading(readings, release_date, {options}={}) {
- readings.forEach(reading => {
- if (!reading.status) {
- reading.status = 'required';
- }
- })
- function renderReadings(readings) {
- return `
- ${readings.map(renderReading).join(' ')}
- `;
- }
- function renderReading({ title, url, status }) {
- return `${title} `;
- }
- let reading = {
- content: renderReadings(readings), date: release_date, options, type: 'reading'
- }
- addToSchedule(release_date, reading);
- return reading;
-}
-
-function Discussion(title, release_date, {url, options}={}) {
- let discussion = {
- title: `${COUNTER.discussion}: ${title}`,
- url, release_date, options, type: 'discussion'
- }
- addToSchedule(release_date, discussion);
- return discussion;
-}
-
-function GenerateDateIncrementor(start_date, skip_days) {
- // Return a function that returns the next date after start_date
- // incremented by skip_days, where skip_days is an array.
- // at the end of the array, the days cycle.
- // e.g. a Monday-Wednesdy schedule has skip_days = [2, 5]
- // Returns start_date the first time the function is called.
- let skip_days_index = 0;
- let next_date = start_date;
- return function() {
- let current_date = next_date;
- next_date = current_date.add(skip_days[skip_days_index], 'day');
- skip_days_index = (skip_days_index + 1) % skip_days.length;
- return current_date;
- }
-}
-
-function weekNumber(date, startDate) {
- // Return the number of weeks of firstWeek - date of the course in range [1, 17] else -1
- return Math.abs(startDate.week() - date.week()) + 1;
-}
-
-function render(item) {
- console.log('Render Indiv.', item);
- let content = '';
- if (!item || !item.title) { return ''; }
- if (item.content) {
- return item.content;
- }
-
- if (!item.url) {
- content += `${item.title} `;
- } else {
- contet += `${item.title} "`;
- }
- if (item.due_date) {
- content += `Due: ${item.due_date} `;
- }
- if (item.submision_url) {
- content += `(Submit )`
- }
- if (item.links) {
- content += renderLinks(item.links)
- }
- if (item.options) {
- content += options;
- }
- return content;
-}
-
-// Turn a {link-text: URL} map into a nice series of links.
-function renderLinks(links) {
- return Object.entries(links).filter(link => link[0] && link[1]).map(link => `(${link[0]} )`).join(' | ');
-}
-
-const MONDAY = 1;
-const SUNDAY = 0;
-const SATURDAY = 6;
-const TYPE_ORDER = [
- 'lecture',
- 'reading',
- 'lab',
- 'discussion',
- 'assignment'
-];
-
-function renderSchedule(schedule, target) {
- let scheduleTable = $(target);
- let currentDate = FIRST_DAY;
- let now = dayjs();
- let row;
- console.log('RENDER SCHEDULE: ', schedule)
- while (currentDate.isBefore(LAST_DAY)) {
- let dayOfWeek = currentDate.day();
- if (dayOfWeek == SATURDAY || dayOfWeek == SUNDAY) {
- currentDate = currentDate.add(1, 'day');
- continue;
- }
- // TODO: Getting a value by date object needs to be easier.
- let current = schedule[currentDate.format('YYYY-MM-DD')];
- let week = weekNumber(currentDate, FIRST_DAY);
- let rowClasses = week % 2 == 0 ? 'even' : 'odd';
- let colspan = 1;
- let rowspan = 1;
- if (currentDate.isSame(now, 'day')) {
- rowClasses += ' today'
- }
- row = $(``);
- console.log(row);
- if (dayOfWeek == MONDAY) {
- row.append(`${week} `);
- }
- row.append(`${currentDate.format('dd M/D')} `);
- TYPE_ORDER.forEach(type => {
- let event = current[type];
- if (event === SKIPPED_ITEM) {
- return;
- }
- row.append(`
- ${render(event || {})}
- `);
- });
- scheduleTable.append(row);
- currentDate = currentDate.add(1, 'day');
- }
-}
-
-//////////////////////////////////////////////////
-// FIRST_DAY == Sunday
-let firstLecture = FIRST_DAY.add(1, 'day');
-let firstLab = FIRST_DAY.add(4, 'days');
-let firstDiscussion = FIRST_DAY.add(5, 'days');
-let firstReading = firstLab;
-
-let nextLecture = GenerateDateIncrementor(firstLecture, [2, 7]);
-let nextLab = GenerateDateIncrementor(firstLab, [2, 7]);
-let nextDiscussion = GenerateDateIncrementor(firstDiscussion, [7]);
-let nextReading = GenerateDateIncrementor(firstReading, [7]);
-
-let CS10_SCHEDULE = createSchedule(FIRST_DAY, LAST_DAY);
-
-// Monday 1/17
-Lecture('No Class', nextLecture());
-// Tues 1/18
-Lab('No Lab', nextLab());
-// Weds 1/19
-Lecture('Welcome to CS10!', nextLecture(), {
- slides: '1R2-4v31x8TF1N4owleDSKJR1AqXKtVxLUXfA8gJZO5E',
- recording: 'https://youtu.be/HDtns_jV-Y8',
-});
-// Thurs 1/20
-Lab('Intro to Snap!', nextLab(), {
- topic: 'berkeley_bjc/intro_pair/1-introduction.topic'
-});
-// Fri 1/21
-Discussion('Welcome to CS10', nextDiscussion());
-Homework('Introduce Yourself', dayjs('2022-01-19'), {
- url: gs(1770006),
- due_date: dayjs('2022-01-22')
-});
-
-// Week 2:
-
-// Week 3:
-
-// Week 4:
-
-// Week 5:
-
-
-window.addEventListener('load', () => {
- dayjs.extend(dayjs_plugin_weekOfYear);
- renderSchedule(CS10_SCHEDULE, '.schedule-table');
-});
diff --git a/assets/test.html b/assets/test.html
deleted file mode 100644
index 8af9af5..0000000
--- a/assets/test.html
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Week
- Date
- Lecture
- Readings
- Lab
- Discussion
- Assignment
-
-
-
-
- 1
- Mon 1/17
- No Class
- No Class
- No Class
- No Class
- No Class
-
-
- Tue 1/18
- No Class
- No Class
- No Class
- No Class
- No Class
-
-
- Wed 1/19
- Welcome to CS10!
-
-
-
-
-
-
- Thur 1/20
-
-
- Welcome to Snap!
-
-
-
-
- Fri 1/21
-
-
-
- Welcome to CS10!
- HW0
-
-
-
-
-
diff --git a/home.md b/home.md
index c1b3949..a5b6013 100644
--- a/home.md
+++ b/home.md
@@ -1,32 +1,39 @@
---
-layout: home
-title: Home
-nav_exclude: false
-nav_order: 1
+layout: page
+title: Welcome!
+nav_exclude: true
permalink: /
seo:
type: Course
- name: CS10 - The Beauty and Joy of Computing
+ name: Berkeley Class Site
---
-# **CS 10: The Beauty and Joy of Computing**
-{: .mb-2 }
-UC Berkeley, Fall 2023
-{: .mb-2 .fs-6 .text-grey-dk-100 }
+# UC Berkeley Class Site Template
-{{ site.description }}
-{: .mb-2 .fs-5 }
+Just the Class is a GitHub Pages template developed for the purpose of quickly deploying course websites. In addition to serving plain web pages and files, it provides a boilerplate for:
-**Instructor:** Teaching Professor Dan Garcia
-**Instructor's OH:** Friday 1-2PM in Soda-777
-**Lectures:** Monday, Wednesday 1-2PM in Evans-10
-**OH Queue:** oh.cs10.org
-{: .fs-4 }
+- [announcements](announcements.md),
+- a [course calendar](calendar.md),
+- a [staff](staff.md) page,
+- and a weekly [schedule](schedule.md).
+Just the Class is a template that extends the popular [Just the Docs](https://github.com/just-the-docs/just-the-docs) theme, which provides a robust and thoroughly-tested foundation for your website. Just the Docs include features such as:
-{% include youtube.html id='oG1OItm4JyU' %}
+- automatic [navigation structure](https://just-the-docs.github.io/just-the-docs/docs/navigation-structure/),
+- instant, full-text [search](https://just-the-docs.github.io/just-the-docs/docs/search/) and page indexing,
+- and a set of [UI components](https://just-the-docs.github.io/just-the-docs/docs/ui-components) and authoring [utilities](https://just-the-docs.github.io/just-the-docs/docs/utilities).
+## Getting Started
-## CS10 Calendar
+Getting started with Just the Class is simple.
-{% include_relative calendar.md %}
+1. Create a [new repository based on Just the Class](https://github.com/kevinlin1/just-the-class/generate).
+1. Update `_config.yml` and `README.md` with your course information. [Be sure to update the url and baseurl](https://mademistakes.com/mastering-jekyll/site-url-baseurl/).
+1. Configure a [publishing source for GitHub Pages](https://help.github.com/en/articles/configuring-a-publishing-source-for-github-pages). Your course website is now live!
+1. Edit and create `.md` [Markdown files](https://guides.github.com/features/mastering-markdown/) to add more content pages.
+
+Just the Class has been used by instructors at Stanford University ([CS 161](https://stanford-cs161.github.io/winter2021/)), UC Berkeley ([Data 100](https://ds100.org/fa21/)), UC Santa Barbara ([CSW8](https://ucsb-csw8.github.io/s22/)), Northeastern University ([CS4530/5500](https://neu-se.github.io/CS4530-CS5500-Spring-2021/)), and Carnegie Mellon University ([17-450/17-950](https://cmu-crafting-software.github.io/)). Share your course website and find more examples in the [show and tell discussion](https://github.com/kevinlin1/just-the-class/discussions/categories/show-and-tell)!
+
+### Local development environment
+
+Just the Class requires no special Jekyll plugins and can run on GitHub Pages' standard Jekyll compiler. To setup a local development environment, clone your template repository and follow the GitHub Docs on [Testing your GitHub Pages site locally with Jekyll](https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/testing-your-github-pages-site-locally-with-jekyll).