{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/url-polyfill/url-polyfill.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/js/back-to-top.js","webpack:///./src/js/agenda-emailer.js","webpack:///./src/js/routing.js","webpack:///./src/js/speaker-modals.js","webpack:///./node_modules/ramda/es/internal/_isPlaceholder.js","webpack:///./node_modules/ramda/es/internal/_curry1.js","webpack:///./node_modules/ramda/es/internal/_curry2.js","webpack:///./node_modules/ramda/es/internal/_isArray.js","webpack:///./node_modules/ramda/es/internal/_isString.js","webpack:///./node_modules/ramda/es/internal/_isArrayLike.js","webpack:///./node_modules/ramda/es/internal/_xwrap.js","webpack:///./node_modules/ramda/es/internal/_arity.js","webpack:///./node_modules/ramda/es/bind.js","webpack:///./node_modules/ramda/es/internal/_reduce.js","webpack:///./node_modules/ramda/es/internal/_concat.js","webpack:///./node_modules/ramda/es/internal/_isTransformer.js","webpack:///./node_modules/ramda/es/internal/_dispatchable.js","webpack:///./node_modules/ramda/es/internal/_xfBase.js","webpack:///./node_modules/ramda/es/internal/_xmap.js","webpack:///./node_modules/ramda/es/curryN.js","webpack:///./node_modules/ramda/es/internal/_curryN.js","webpack:///./node_modules/ramda/es/internal/_has.js","webpack:///./node_modules/ramda/es/internal/_isArguments.js","webpack:///./node_modules/ramda/es/keys.js","webpack:///./node_modules/ramda/es/map.js","webpack:///./node_modules/ramda/es/internal/_map.js","webpack:///./node_modules/ramda/es/ap.js","webpack:///./node_modules/ramda/es/liftN.js","webpack:///./node_modules/ramda/es/complement.js","webpack:///./node_modules/ramda/es/lift.js","webpack:///./node_modules/ramda/es/not.js","webpack:///./node_modules/ramda/es/internal/_isObject.js","webpack:///./node_modules/ramda/es/empty.js","webpack:///./node_modules/ramda/es/internal/_arrayFromIterator.js","webpack:///./node_modules/ramda/es/internal/_includesWith.js","webpack:///./node_modules/ramda/es/internal/_objectIs.js","webpack:///./node_modules/ramda/es/type.js","webpack:///./node_modules/ramda/es/internal/_equals.js","webpack:///./node_modules/ramda/es/internal/_functionName.js","webpack:///./node_modules/ramda/es/equals.js","webpack:///./node_modules/ramda/es/isEmpty.js","webpack:///./node_modules/ramda/es/internal/_curry3.js","webpack:///./node_modules/ramda/es/ifElse.js","webpack:///./node_modules/ramda/es/internal/_includes.js","webpack:///./node_modules/ramda/es/internal/_indexOf.js","webpack:///./node_modules/ramda/es/includes.js","webpack:///./node_modules/ramda/es/flip.js","webpack:///./node_modules/ramda/es/internal/_filter.js","webpack:///./node_modules/ramda/es/internal/_xfilter.js","webpack:///./node_modules/ramda/es/filter.js","webpack:///./node_modules/ramda/es/reject.js","webpack:///./node_modules/ramda/es/internal/_complement.js","webpack:///./node_modules/ramda/es/without.js","webpack:///./node_modules/ramda/es/append.js","webpack:///./node_modules/ramda/es/internal/_identity.js","webpack:///./node_modules/ramda/es/identity.js","webpack:///./node_modules/ramda/es/internal/_Set.js","webpack:///./node_modules/ramda/es/uniq.js","webpack:///./node_modules/ramda/es/uniqBy.js","webpack:///./node_modules/ramda/es/intersection.js","webpack:///./src/js/session-filters.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","iteratorSupported","iterator","error","checkIfIteratorIsSupported","createIterator","items","next","shift","done","serializeParam","encodeURIComponent","replace","deserializeParam","decodeURIComponent","String","URLSearchParams","global","toString","set","e","checkIfURLSearchParamsSupported","searchString","this","writable","typeofSearchString","_fromString","_this","forEach","append","TypeError","length","entry","proto","_entries","push","delete","getAll","slice","has","callback","thisArg","entries","keys","values","searchArray","join","polyfillURLSearchParams","sort","a","b","configurable","attribute","attributes","split","window","self","u","URL","pathname","href","searchParams","checkIfURLIsSupported","_URL","url","base","baseElement","doc","document","location","implementation","createHTMLDocument","createElement","head","appendChild","indexOf","Error","err","anchorElement","body","inputElement","type","protocol","test","checkValidity","search","enableSearchUpdate","enableSearchParamsUpdate","methodName","method","apply","arguments","attributeName","_anchorElement","linkURLWithAnchorAttribute","_updateSearchParams","defineProperties","expectedPort","addPortToOrigin","port","hostname","createObjectURL","blob","revokeObjectURL","polyfillURL","getOrigin","setInterval","origin","g","Function","$window","jQuery","on","scrollTop","backToTopVisible","requestAnimationFrame","scrollPos","fadeIn","fadeOut","myAgenda","updateEmailButton","attr","find","html","is","addClass","removeClass","alert","email","val","data","action","options","_session_opts","ids","post","ajaxurl","response","success","setTimeout","modal","content","map","id","_sessions","session_start_time_display","session_end_time_display","launchEmailerModal","idx","splice","each","$this","myID","includes","toggleSessionID","routeSessionHash","hash","$el","collapse","offset","top","launchSpeakerModal","_speakers","$modal","sessions","session","title","company","image","bio","selector","description","media","$at","console","warn","addthis","addthis_share","toolbox","launchAddThis","_isPlaceholder","_curry1","fn","f1","_curry2","f2","_b","_a","preventDefault","stopPropagation","nextURL","params","setSFQueryVar","history","pushState","ready","getSFQueryVar","load","withoutSFQueryVar","addEventListener","log","Array","_isString","x","_isArray","nodeType","XWrap","f","acc","_arity","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","thisObj","_iterableReduce","xf","iter","step","_methodReduce","obj","symIterator","_reduce","list","_xwrap","len","_arrayReduce","reduce","_concat","set1","set2","len1","len2","result","_isTransformer","_dispatchable","methodNames","args","pop","transducer","XMap","_xfBase","input","_curryN","received","combined","argsIdx","left","combinedIdx","_has","prop","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","hasArgsEnumBug","contains","item","nIdx","ks","checkArgsLength","functor","_map","applyF","applyX","ap","arity","lifted","_isObject","constructor","empty","_arrayFromIterator","_includesWith","pred","undefined","_uniqContentEquals","aIterator","bIterator","stackA","stackB","eq","_equals","aItem","match","typeA","equals","valueOf","message","source","ignoreCase","multiline","sticky","unicode","size","concat","keysA","extendedStackA","extendedStackB","_curry3","f3","_c","condition","onTrue","onFalse","Math","max","_includes","inf","_indexOf","_filter","XFilter","filterable","xs","el","_identity","hasOrAdd","shouldAdd","prevSize","Infinity","_items","_nativeSet","add","bIdx","_Set","Set","appliedItem","list1","list2","lookupList","filteredList","notEmpty","R","trackFilters","searchText","searchBox","getElementById","updateSessionFilters","hide","show","total","myTracks","searchHaystack","text","toLowerCase","foundInSearch","keywordsFound","visible","$s","sessionVisibility","visibleSessions","$navItem","trim"],"mappings":"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","file":"sessionlist-2020.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/wp-content/themes/plugins/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n","(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if (iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(String(value).replace(/\\+/g, ' '));\r\n };\r\n\r\n var polyfillURLSearchParams = function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { writable: true, value: {} });\r\n var typeofSearchString = typeof searchString;\r\n\r\n if (typeofSearchString === 'undefined') {\r\n // do nothing\r\n } else if (typeofSearchString === 'string') {\r\n if (searchString !== '') {\r\n this._fromString(searchString);\r\n }\r\n } else if (searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(name, value);\r\n });\r\n } else if ((searchString !== null) && (typeofSearchString === 'object')) {\r\n if (Object.prototype.toString.call(searchString) === '[object Array]') {\r\n for (var i = 0; i < searchString.length; i++) {\r\n var entry = searchString[i];\r\n if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {\r\n this.append(entry[0], entry[1]);\r\n } else {\r\n throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\r\n }\r\n }\r\n } else {\r\n for (var key in searchString) {\r\n if (searchString.hasOwnProperty(key)) {\r\n this.append(key, searchString[key]);\r\n }\r\n }\r\n }\r\n } else {\r\n throw new TypeError('Unsupported input\\'s type for URLSearchParams');\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if (name in this._entries) {\r\n this._entries[name].push(String(value));\r\n } else {\r\n this._entries[name] = [String(value)];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [String(value)];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for (var name in this._entries) {\r\n if (this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for (var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push(name);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) {\r\n items.push(value);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n if (iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchArray = [];\r\n this.forEach(function(value, name) {\r\n searchArray.push(serializeParam(name) + '=' + serializeParam(value));\r\n });\r\n return searchArray.join('&');\r\n };\r\n\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n var checkIfURLSearchParamsSupported = function() {\r\n try {\r\n var URLSearchParams = global.URLSearchParams;\r\n\r\n return (new URLSearchParams('?a=1').toString() === 'a=1') && (typeof URLSearchParams.prototype.set === 'function');\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n if (!checkIfURLSearchParamsSupported()) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n var proto = global.URLSearchParams.prototype;\r\n\r\n if (typeof proto.sort !== 'function') {\r\n proto.sort = function() {\r\n var _this = this;\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n if (!_this._entries) {\r\n _this.delete(name);\r\n }\r\n });\r\n items.sort(function(a, b) {\r\n if (a[0] < b[0]) {\r\n return -1;\r\n } else if (a[0] > b[0]) {\r\n return +1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n if (_this._entries) { // force reset because IE keeps keys index\r\n _this._entries = {};\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n this.append(items[i][0], items[i][1]);\r\n }\r\n };\r\n }\r\n\r\n if (typeof proto._fromString !== 'function') {\r\n Object.defineProperty(proto, '_fromString', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function(searchString) {\r\n if (this._entries) {\r\n this._entries = {};\r\n } else {\r\n var keys = [];\r\n this.forEach(function(value, name) {\r\n keys.push(name);\r\n });\r\n for (var i = 0; i < keys.length; i++) {\r\n this.delete(keys[i]);\r\n }\r\n }\r\n\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for (var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new global.URL('b', 'http://a');\r\n u.pathname = 'c d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if (typeof url !== 'string') url = String(url);\r\n\r\n // Only create another document if the base is different from current location.\r\n var doc = document, baseElement;\r\n if (base && (global.location === void 0 || base !== global.location.href)) {\r\n doc = document.implementation.createHTMLDocument('');\r\n baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n try {\r\n if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\r\n } catch (err) {\r\n throw new Error('URL unable to set base ' + base + ' due to ' + err);\r\n }\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n if (baseElement) {\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n }\r\n\r\n var inputElement = doc.createElement('input');\r\n inputElement.type = 'url';\r\n inputElement.value = url;\r\n\r\n if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href) || (!inputElement.checkValidity() && !base)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n\r\n\r\n // create a linked searchParams which reflect its changes on URL\r\n var searchParams = new global.URLSearchParams(this.search);\r\n var enableSearchUpdate = true;\r\n var enableSearchParamsUpdate = true;\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n if (enableSearchUpdate) {\r\n enableSearchParamsUpdate = false;\r\n _this.search = searchParams.toString();\r\n enableSearchParamsUpdate = true;\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperty(this, 'searchParams', {\r\n value: searchParams,\r\n enumerable: true\r\n });\r\n\r\n var search = void 0;\r\n Object.defineProperty(this, '_updateSearchParams', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function() {\r\n if (this.search !== search) {\r\n search = this.search;\r\n if (enableSearchParamsUpdate) {\r\n enableSearchUpdate = false;\r\n this.searchParams._fromString(this.search);\r\n enableSearchUpdate = true;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperty(proto, 'search', {\r\n get: function() {\r\n return this._anchorElement['search'];\r\n },\r\n set: function(value) {\r\n this._anchorElement['search'] = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href': {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/, '');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname': {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== '';\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if (!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if ((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch (e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","// Scroll position on page where back to top button first appears\nconst BACK_TO_TOP_THRESH = 350;\n\nconst FADE_SPEED = 100;\n\nconst $window = jQuery(window);\nconst $document = jQuery(document);\n\n// Scroll to top of page on click\n$document.on('click', '.back-to-top', function() {\n $window.scrollTop(0);\n});\n\nlet backToTopVisible = false;\n$window.on('scroll', function() {\n requestAnimationFrame(() => {\n const scrollPos = $window.scrollTop();\n if (scrollPos > BACK_TO_TOP_THRESH && !backToTopVisible) {\n backToTopVisible = true;\n jQuery('.back-to-top').fadeIn(FADE_SPEED);\n }\n else if (scrollPos <= BACK_TO_TOP_THRESH && backToTopVisible) {\n backToTopVisible = false;\n jQuery('.back-to-top').fadeOut(FADE_SPEED); \n }\n });\n})","(function() {\n let myAgenda = [];\n\n function launchEmailerModal() {\n const toEmail = myAgenda.map(id => _sessions[id]);\n const formattedSessions = toEmail.map(s => (/*html*/`\n
  • \n
    \n ${s.session_start_time_display} – ${s.session_end_time_display}\n
    \n
    ${s.name}
    \n
  • `\n ));\n const content = /*html*/`\n
    \n

    Email Me My Agenda

    \n \n
    \n \n \n
    \n
    \n
    \n `;\n jQuery('#evtx-modal .modal-body')\n .addClass('email-my-agenda-modal')\n .html(content)\n jQuery('#evtx-modal').modal('show');\n }\n\n jQuery(document).on('keyup', '#email-recipient', function (e){\n if (jQuery(this).is(':invalid')) {\n jQuery('.btn-send-my-agenda')\n .addClass('disabled')\n }\n else {\n jQuery('.btn-send-my-agenda')\n .removeClass('disabled') \n }\n\n })\n\n jQuery(document).on('click', '.btn-send-my-agenda', function() {\n if (jQuery('#email-recipient').is(':invalid')) {\n alert('Please enter a valid email address.');\n return;\n }\n const email = jQuery('#email-recipient').val();\n const ids = myAgenda;\n const data = {\n action: 'email_my_agenda',\n options: _session_opts,\n ids,\n email,\n };\n jQuery.post(ajaxurl, data, function(response) {\n if (response.success) {\n jQuery('.email-my-agenda .feedback')\n .removeClass('error')\n .addClass('success')\n .html('Email successfully sent.')\n setTimeout(function(){\n myAgenda = [];\n jQuery('#evtx-modal').modal('hide');\n updateEmailButton();\n }, 2000);\n }\n else {\n jQuery('.email-my-agenda .feedback')\n .removeClass('success')\n .addClass('error')\n .html('Error sending email')\n }\n });\n })\n\n jQuery(document).on('click', '.btn-email-my-agenda', function() {\n launchEmailerModal();\n });\n\n function toggleSessionID(id) {\n const idx = myAgenda.indexOf(id);\n if (idx >= 0) {\n myAgenda.splice(idx, 1);\n }\n else {\n myAgenda.push(id);\n }\n\n // update buttons to reflect activated sessions\n jQuery('.btn-add-to-my-agenda').each(function() {\n const $this = jQuery(this);\n const myID = $this.attr('data-session-id');\n if (myAgenda.includes(myID)) {\n $this.addClass('active');\n jQuery('.btn-email-my-agenda')\n .addClass('added');\n setTimeout(function() {\n jQuery('.btn-email-my-agenda')\n .removeClass('added');\n }, 500);\n }\n else {\n $this.removeClass('active');\n }\n });\n updateEmailButton();\n }\n jQuery('#evtx-modal').on('hidden.bs.modal', function (e) {\n jQuery(this)\n .find('.modal-body')\n .removeClass('.email-my-agenda-modal');\n });\n jQuery(document).on('click', '.btn-add-to-my-agenda', function() {\n const $this = jQuery(this);\n const sessionID = $this.attr('data-session-id');\n toggleSessionID(sessionID);\n });\n\n function updateEmailButton () {\n jQuery('.btn-email-my-agenda')\n .attr('data-num-sessions', myAgenda.length);\n if (myAgenda.length) {\n jQuery('.btn-email-my-agenda')\n .find('span')\n .html(`Email Me ${myAgenda.length} Sessions`);\n }\n }\n\n})();\n","import 'url-polyfill';\nimport { launchSpeakerModal } from \"./speaker-modals\";\n\nexport const SF_QUERY_VAR = 'sid';\nexport const SESSION_HASH = '#session-';\n\nfunction getSFQueryVar(url) {\n const u = new URL(url);\n const params = new URLSearchParams(u.search); \n return params.get(SF_QUERY_VAR);\n}\n\nfunction setSFQueryVar(url, id) {\n const u = new URL(url);\n const params = new URLSearchParams(u.search);\n params.set(SF_QUERY_VAR, id);\n u.search = params.toString();\n return u.toString(); \n}\n\nfunction withoutSFQueryVar(url) {\n const u = new URL(url);\n const params = new URLSearchParams(u.search);\n params.delete(SF_QUERY_VAR);\n u.search = params.toString();\n return u.toString();\n}\n\n// catch links that start with ?sid=\njQuery(document).on('click', `[href^=\"?${SF_QUERY_VAR}=\"]`, function(e) {\n const href = jQuery(this).attr('href');\n const p = new URLSearchParams(href);\n const id = p.get(SF_QUERY_VAR);\n \n if (!id) return;\n\n // don't reload page\n e.preventDefault();\n e.stopPropagation();\n \n // add ID to query params of current url\n const nextURL = setSFQueryVar(location.href, id)\n\n history.pushState({id}, '', nextURL);\n\n launchSpeakerModal(id);\n});\n\njQuery(document).ready(function(){\n const id = getSFQueryVar(location.href);\n if (id) {\n launchSpeakerModal(id);\n }\n routeSessionHash();\n});\njQuery(window).load(function(){\n \n})\n\n\njQuery('#evtx-modal').on('hidden.bs.modal', function (e) {\n const $m = jQuery('#evtx-modal');\n // remove salesforce query variable if in an sf-speaker-modal\n if ($m.find('.sf-speaker-modal').length) {\n history.pushState(\n {},\n '',\n withoutSFQueryVar(location.href)\n );\n }\n})\n\nfunction routeSessionHash() {\n const hash = location.hash;\n if (hash.indexOf(SESSION_HASH) === 0) {\n // we have a session url\n const id = hash.replace(SESSION_HASH, '');\n const $el = jQuery(SESSION_HASH + id);\n if ($el.length) {\n $el.collapse('show');\n setTimeout(function(){\n const offset = $el.offset().top;\n jQuery(window).scrollTop(offset - 150);\n }, 800);\n }\n return true;\n }\n return false;\n}\n\n// expanding a session updates URL\njQuery(document).on('click', '.session [data-toggle=\"collapse\"]', function(){\n const href = jQuery(this).attr('href');\n history.pushState({}, '', href);\n\n})\n\nwindow.addEventListener('hashchange', function(e) {\n // prevent default if hash change handled\n if (routeSessionHash()) {\n e.preventDefault();\n }\n});","import { SESSION_HASH } from \"./routing\";\n\n\nexport function launchSpeakerModal(id) {\n const s = window._speakers[id];\n const $modal = jQuery('#evtx-modal');\n\n const sessions = s.sessions.map(session => (\n `
  • \n \n ${session.name}\n \n
  • `\n ));\n const content = /*html*/`\n
    \n

    ${s.name}

    \n
    \n ${s.title}\n ${s.company}\n
    \n \n
    \n
    \n \"${s.name}\"/\n
    \n ${s.bio ? `

    ${s.bio}

    ` : ''}\n
    \n
    \n
    \n \n \n \n \n
    \n
    \n
    \n `;\n $modal.find('.modal-body').html(content);\n launchAddThis(\n '.sf-speaker-modal .addthis_toolbox',\n {\n url: location.href,\n description: s.bio,\n media: s.image.url || '',\n title: s.name\n },\n );\n \n $modal.modal('show');\n}\n\nfunction launchAddThis(selector, {url, description, media, title}) {\n const $at = jQuery(selector);\n if (!$at.length) {\n console.warn('AddThis toolbox div not found.');\n return;\n }\n if (!window.addthis) {\n console.warn('AddThis not found.')\n return;\n }\n \n window.addthis_share = {url, title, media, description};\n\n $at.attr('addthis:url', url);\n $at.attr('addthis:title', title);\n $at.attr('addthis:description', description);\n $at.attr('addthis:media', media);\n \n window.addthis.toolbox(selector);\n}\n\njQuery(document).on('click', '.session-speaker', function(){\n var id = jQuery(this).attr('data-id');\n launchSpeakerModal(id);\n});\n\njQuery(document).on('click', '.sf-speaker-modal .session-link', function() {\n jQuery('#evtx-modal').modal('hide');\n});\n\nwindow.addEventListener('hashchange', function(){\n console.log('hi');\n console.log(location.hash);\n})","export default function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}","import _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}","import _curry1 from \"./_curry1.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nexport default Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};","export default function _isString(x) {\n return Object.prototype.toString.call(x) === '[object String]';\n}","import _curry1 from \"./_curry1.js\";\nimport _isArray from \"./_isArray.js\";\nimport _isString from \"./_isString.js\";\n/**\n * Tests whether or not an object is similar to an array.\n *\n * @private\n * @category Type\n * @category List\n * @sig * -> Boolean\n * @param {*} x The object to test.\n * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise.\n * @example\n *\n * _isArrayLike([]); //=> true\n * _isArrayLike(true); //=> false\n * _isArrayLike({}); //=> false\n * _isArrayLike({length: 10}); //=> false\n * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true\n */\n\nvar _isArrayLike =\n/*#__PURE__*/\n_curry1(function isArrayLike(x) {\n if (_isArray(x)) {\n return true;\n }\n\n if (!x) {\n return false;\n }\n\n if (typeof x !== 'object') {\n return false;\n }\n\n if (_isString(x)) {\n return false;\n }\n\n if (x.nodeType === 1) {\n return !!x.length;\n }\n\n if (x.length === 0) {\n return true;\n }\n\n if (x.length > 0) {\n return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1);\n }\n\n return false;\n});\n\nexport default _isArrayLike;","var XWrap =\n/*#__PURE__*/\nfunction () {\n function XWrap(fn) {\n this.f = fn;\n }\n\n XWrap.prototype['@@transducer/init'] = function () {\n throw new Error('init not implemented on XWrap');\n };\n\n XWrap.prototype['@@transducer/result'] = function (acc) {\n return acc;\n };\n\n XWrap.prototype['@@transducer/step'] = function (acc, x) {\n return this.f(acc, x);\n };\n\n return XWrap;\n}();\n\nexport default function _xwrap(fn) {\n return new XWrap(fn);\n}","export default function _arity(n, fn) {\n /* eslint-disable no-unused-vars */\n switch (n) {\n case 0:\n return function () {\n return fn.apply(this, arguments);\n };\n\n case 1:\n return function (a0) {\n return fn.apply(this, arguments);\n };\n\n case 2:\n return function (a0, a1) {\n return fn.apply(this, arguments);\n };\n\n case 3:\n return function (a0, a1, a2) {\n return fn.apply(this, arguments);\n };\n\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.apply(this, arguments);\n };\n\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.apply(this, arguments);\n };\n\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.apply(this, arguments);\n };\n\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.apply(this, arguments);\n };\n\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.apply(this, arguments);\n };\n\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.apply(this, arguments);\n };\n\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.apply(this, arguments);\n };\n\n default:\n throw new Error('First argument to _arity must be a non-negative integer no greater than ten');\n }\n}","import _arity from \"./internal/_arity.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Creates a function that is bound to a context.\n * Note: `R.bind` does not provide the additional argument-binding capabilities of\n * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @category Object\n * @sig (* -> *) -> {*} -> (* -> *)\n * @param {Function} fn The function to bind to context\n * @param {Object} thisObj The context to bind `fn` to\n * @return {Function} A function that will execute in the context of `thisObj`.\n * @see R.partial\n * @example\n *\n * const log = R.bind(console.log, console);\n * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3}\n * // logs {a: 2}\n * @symb R.bind(f, o)(a, b) = f.call(o, a, b)\n */\n\nvar bind =\n/*#__PURE__*/\n_curry2(function bind(fn, thisObj) {\n return _arity(fn.length, function () {\n return fn.apply(thisObj, arguments);\n });\n});\n\nexport default bind;","import _isArrayLike from \"./_isArrayLike.js\";\nimport _xwrap from \"./_xwrap.js\";\nimport bind from \"../bind.js\";\n\nfunction _arrayReduce(xf, acc, list) {\n var idx = 0;\n var len = list.length;\n\n while (idx < len) {\n acc = xf['@@transducer/step'](acc, list[idx]);\n\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n\n idx += 1;\n }\n\n return xf['@@transducer/result'](acc);\n}\n\nfunction _iterableReduce(xf, acc, iter) {\n var step = iter.next();\n\n while (!step.done) {\n acc = xf['@@transducer/step'](acc, step.value);\n\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n\n step = iter.next();\n }\n\n return xf['@@transducer/result'](acc);\n}\n\nfunction _methodReduce(xf, acc, obj, methodName) {\n return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc));\n}\n\nvar symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';\nexport default function _reduce(fn, acc, list) {\n if (typeof fn === 'function') {\n fn = _xwrap(fn);\n }\n\n if (_isArrayLike(list)) {\n return _arrayReduce(fn, acc, list);\n }\n\n if (typeof list['fantasy-land/reduce'] === 'function') {\n return _methodReduce(fn, acc, list, 'fantasy-land/reduce');\n }\n\n if (list[symIterator] != null) {\n return _iterableReduce(fn, acc, list[symIterator]());\n }\n\n if (typeof list.next === 'function') {\n return _iterableReduce(fn, acc, list);\n }\n\n if (typeof list.reduce === 'function') {\n return _methodReduce(fn, acc, list, 'reduce');\n }\n\n throw new TypeError('reduce: list must be array or iterable');\n}","/**\n * Private `concat` function to merge two array-like objects.\n *\n * @private\n * @param {Array|Arguments} [set1=[]] An array-like object.\n * @param {Array|Arguments} [set2=[]] An array-like object.\n * @return {Array} A new, merged array.\n * @example\n *\n * _concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]\n */\nexport default function _concat(set1, set2) {\n set1 = set1 || [];\n set2 = set2 || [];\n var idx;\n var len1 = set1.length;\n var len2 = set2.length;\n var result = [];\n idx = 0;\n\n while (idx < len1) {\n result[result.length] = set1[idx];\n idx += 1;\n }\n\n idx = 0;\n\n while (idx < len2) {\n result[result.length] = set2[idx];\n idx += 1;\n }\n\n return result;\n}","export default function _isTransformer(obj) {\n return obj != null && typeof obj['@@transducer/step'] === 'function';\n}","import _isArray from \"./_isArray.js\";\nimport _isTransformer from \"./_isTransformer.js\";\n/**\n * Returns a function that dispatches with different strategies based on the\n * object in list position (last argument). If it is an array, executes [fn].\n * Otherwise, if it has a function with one of the given method names, it will\n * execute that function (functor case). Otherwise, if it is a transformer,\n * uses transducer [xf] to return a new transformer (transducer case).\n * Otherwise, it will default to executing [fn].\n *\n * @private\n * @param {Array} methodNames properties to check for a custom implementation\n * @param {Function} xf transducer to initialize if object is transformer\n * @param {Function} fn default ramda implementation\n * @return {Function} A function that dispatches on object in list position\n */\n\nexport default function _dispatchable(methodNames, xf, fn) {\n return function () {\n if (arguments.length === 0) {\n return fn();\n }\n\n var args = Array.prototype.slice.call(arguments, 0);\n var obj = args.pop();\n\n if (!_isArray(obj)) {\n var idx = 0;\n\n while (idx < methodNames.length) {\n if (typeof obj[methodNames[idx]] === 'function') {\n return obj[methodNames[idx]].apply(obj, args);\n }\n\n idx += 1;\n }\n\n if (_isTransformer(obj)) {\n var transducer = xf.apply(null, args);\n return transducer(obj);\n }\n }\n\n return fn.apply(this, arguments);\n };\n}","export default {\n init: function () {\n return this.xf['@@transducer/init']();\n },\n result: function (result) {\n return this.xf['@@transducer/result'](result);\n }\n};","import _curry2 from \"./_curry2.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XMap =\n/*#__PURE__*/\nfunction () {\n function XMap(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n\n XMap.prototype['@@transducer/init'] = _xfBase.init;\n XMap.prototype['@@transducer/result'] = _xfBase.result;\n\n XMap.prototype['@@transducer/step'] = function (result, input) {\n return this.xf['@@transducer/step'](result, this.f(input));\n };\n\n return XMap;\n}();\n\nvar _xmap =\n/*#__PURE__*/\n_curry2(function _xmap(f, xf) {\n return new XMap(f, xf);\n});\n\nexport default _xmap;","import _arity from \"./internal/_arity.js\";\nimport _curry1 from \"./internal/_curry1.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _curryN from \"./internal/_curryN.js\";\n/**\n * Returns a curried equivalent of the provided function, with the specified\n * arity. The curried function has two unusual capabilities. First, its\n * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.5.0\n * @category Function\n * @sig Number -> (* -> a) -> (* -> a)\n * @param {Number} length The arity for the returned function.\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curry\n * @example\n *\n * const sumArgs = (...args) => R.sum(args);\n *\n * const curriedAddFourNumbers = R.curryN(4, sumArgs);\n * const f = curriedAddFourNumbers(1, 2);\n * const g = f(3);\n * g(4); //=> 10\n */\n\nvar curryN =\n/*#__PURE__*/\n_curry2(function curryN(length, fn) {\n if (length === 1) {\n return _curry1(fn);\n }\n\n return _arity(length, _curryN(length, [], fn));\n});\n\nexport default curryN;","import _arity from \"./_arity.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Internal curryN function.\n *\n * @private\n * @category Function\n * @param {Number} length The arity of the curried function.\n * @param {Array} received An array of arguments received thus far.\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curryN(length, received, fn) {\n return function () {\n var combined = [];\n var argsIdx = 0;\n var left = length;\n var combinedIdx = 0;\n\n while (combinedIdx < received.length || argsIdx < arguments.length) {\n var result;\n\n if (combinedIdx < received.length && (!_isPlaceholder(received[combinedIdx]) || argsIdx >= arguments.length)) {\n result = received[combinedIdx];\n } else {\n result = arguments[argsIdx];\n argsIdx += 1;\n }\n\n combined[combinedIdx] = result;\n\n if (!_isPlaceholder(result)) {\n left -= 1;\n }\n\n combinedIdx += 1;\n }\n\n return left <= 0 ? fn.apply(this, combined) : _arity(left, _curryN(length, combined, fn));\n };\n}","export default function _has(prop, obj) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}","import _has from \"./_has.js\";\nvar toString = Object.prototype.toString;\n\nvar _isArguments =\n/*#__PURE__*/\nfunction () {\n return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) {\n return toString.call(x) === '[object Arguments]';\n } : function _isArguments(x) {\n return _has('callee', x);\n };\n}();\n\nexport default _isArguments;","import _curry1 from \"./internal/_curry1.js\";\nimport _has from \"./internal/_has.js\";\nimport _isArguments from \"./internal/_isArguments.js\"; // cover IE < 9 keys issues\n\nvar hasEnumBug = !\n/*#__PURE__*/\n{\n toString: null\n}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; // Safari bug\n\nvar hasArgsEnumBug =\n/*#__PURE__*/\nfunction () {\n 'use strict';\n\n return arguments.propertyIsEnumerable('length');\n}();\n\nvar contains = function contains(list, item) {\n var idx = 0;\n\n while (idx < list.length) {\n if (list[idx] === item) {\n return true;\n }\n\n idx += 1;\n }\n\n return false;\n};\n/**\n * Returns a list containing the names of all the enumerable own properties of\n * the supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own properties.\n * @see R.keysIn, R.values\n * @example\n *\n * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c']\n */\n\n\nvar keys = typeof Object.keys === 'function' && !hasArgsEnumBug ?\n/*#__PURE__*/\n_curry1(function keys(obj) {\n return Object(obj) !== obj ? [] : Object.keys(obj);\n}) :\n/*#__PURE__*/\n_curry1(function keys(obj) {\n if (Object(obj) !== obj) {\n return [];\n }\n\n var prop, nIdx;\n var ks = [];\n\n var checkArgsLength = hasArgsEnumBug && _isArguments(obj);\n\n for (prop in obj) {\n if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) {\n ks[ks.length] = prop;\n }\n }\n\n if (hasEnumBug) {\n nIdx = nonEnumerableProps.length - 1;\n\n while (nIdx >= 0) {\n prop = nonEnumerableProps[nIdx];\n\n if (_has(prop, obj) && !contains(ks, prop)) {\n ks[ks.length] = prop;\n }\n\n nIdx -= 1;\n }\n }\n\n return ks;\n});\nexport default keys;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _map from \"./internal/_map.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport _xmap from \"./internal/_xmap.js\";\nimport curryN from \"./curryN.js\";\nimport keys from \"./keys.js\";\n/**\n * Takes a function and\n * a [functor](https://github.com/fantasyland/fantasy-land#functor),\n * applies the function to each of the functor's values, and returns\n * a functor of the same shape.\n *\n * Ramda provides suitable `map` implementations for `Array` and `Object`,\n * so this function may be applied to `[1, 2, 3]` or `{x: 1, y: 2, z: 3}`.\n *\n * Dispatches to the `map` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * Also treats functions as functors and will compose them together.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Functor f => (a -> b) -> f a -> f b\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {Array} list The list to be iterated over.\n * @return {Array} The new list.\n * @see R.transduce, R.addIndex\n * @example\n *\n * const double = x => x * 2;\n *\n * R.map(double, [1, 2, 3]); //=> [2, 4, 6]\n *\n * R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6}\n * @symb R.map(f, [a, b]) = [f(a), f(b)]\n * @symb R.map(f, { x: a, y: b }) = { x: f(a), y: f(b) }\n * @symb R.map(f, functor_o) = functor_o.map(f)\n */\n\nvar map =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['fantasy-land/map', 'map'], _xmap, function map(fn, functor) {\n switch (Object.prototype.toString.call(functor)) {\n case '[object Function]':\n return curryN(functor.length, function () {\n return fn.call(this, functor.apply(this, arguments));\n });\n\n case '[object Object]':\n return _reduce(function (acc, key) {\n acc[key] = fn(functor[key]);\n return acc;\n }, {}, keys(functor));\n\n default:\n return _map(fn, functor);\n }\n}));\n\nexport default map;","export default function _map(fn, functor) {\n var idx = 0;\n var len = functor.length;\n var result = Array(len);\n\n while (idx < len) {\n result[idx] = fn(functor[idx]);\n idx += 1;\n }\n\n return result;\n}","import _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport map from \"./map.js\";\n/**\n * ap applies a list of functions to a list of values.\n *\n * Dispatches to the `ap` method of the second argument, if present. Also\n * treats curried functions as applicatives.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig [a -> b] -> [a] -> [b]\n * @sig Apply f => f (a -> b) -> f a -> f b\n * @sig (r -> a -> b) -> (r -> a) -> (r -> b)\n * @param {*} applyF\n * @param {*} applyX\n * @return {*}\n * @example\n *\n * R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=> [2, 4, 6, 4, 5, 6]\n * R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=> [\"tasty pizza\", \"tasty salad\", \"PIZZA\", \"SALAD\"]\n *\n * // R.ap can also be used as S combinator\n * // when only two functions are passed\n * R.ap(R.concat, R.toUpper)('Ramda') //=> 'RamdaRAMDA'\n * @symb R.ap([f, g], [a, b]) = [f(a), f(b), g(a), g(b)]\n */\n\nvar ap =\n/*#__PURE__*/\n_curry2(function ap(applyF, applyX) {\n return typeof applyX['fantasy-land/ap'] === 'function' ? applyX['fantasy-land/ap'](applyF) : typeof applyF.ap === 'function' ? applyF.ap(applyX) : typeof applyF === 'function' ? function (x) {\n return applyF(x)(applyX(x));\n } : _reduce(function (acc, f) {\n return _concat(acc, map(f, applyX));\n }, [], applyF);\n});\n\nexport default ap;","import _curry2 from \"./internal/_curry2.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport ap from \"./ap.js\";\nimport curryN from \"./curryN.js\";\nimport map from \"./map.js\";\n/**\n * \"lifts\" a function to be the specified arity, so that it may \"map over\" that\n * many lists, Functions or other objects that satisfy the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig Number -> (*... -> *) -> ([*]... -> [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.lift, R.ap\n * @example\n *\n * const madd3 = R.liftN(3, (...args) => R.sum(args));\n * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]\n */\n\nvar liftN =\n/*#__PURE__*/\n_curry2(function liftN(arity, fn) {\n var lifted = curryN(arity, fn);\n return curryN(arity, function () {\n return _reduce(ap, map(lifted, arguments[0]), Array.prototype.slice.call(arguments, 1));\n });\n});\n\nexport default liftN;","import lift from \"./lift.js\";\nimport not from \"./not.js\";\n/**\n * Takes a function `f` and returns a function `g` such that if called with the same arguments\n * when `f` returns a \"truthy\" value, `g` returns `false` and when `f` returns a \"falsy\" value `g` returns `true`.\n *\n * `R.complement` may be applied to any functor\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -> *) -> (*... -> Boolean)\n * @param {Function} f\n * @return {Function}\n * @see R.not\n * @example\n *\n * const isNotNil = R.complement(R.isNil);\n * isNil(null); //=> true\n * isNotNil(null); //=> false\n * isNil(7); //=> false\n * isNotNil(7); //=> true\n */\n\nvar complement =\n/*#__PURE__*/\nlift(not);\nexport default complement;","import _curry1 from \"./internal/_curry1.js\";\nimport liftN from \"./liftN.js\";\n/**\n * \"lifts\" a function of arity > 1 so that it may \"map over\" a list, Function or other\n * object that satisfies the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig (*... -> *) -> ([*]... -> [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.liftN\n * @example\n *\n * const madd3 = R.lift((a, b, c) => a + b + c);\n *\n * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]\n *\n * const madd5 = R.lift((a, b, c, d, e) => a + b + c + d + e);\n *\n * madd5([1,2], [3], [4, 5], [6], [7, 8]); //=> [21, 22, 22, 23, 22, 23, 23, 24]\n */\n\nvar lift =\n/*#__PURE__*/\n_curry1(function lift(fn) {\n return liftN(fn.length, fn);\n});\n\nexport default lift;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * A function that returns the `!` of its argument. It will return `true` when\n * passed false-y value, and `false` when passed a truth-y one.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig * -> Boolean\n * @param {*} a any value\n * @return {Boolean} the logical inverse of passed argument.\n * @see R.complement\n * @example\n *\n * R.not(true); //=> false\n * R.not(false); //=> true\n * R.not(0); //=> true\n * R.not(1); //=> false\n */\n\nvar not =\n/*#__PURE__*/\n_curry1(function not(a) {\n return !a;\n});\n\nexport default not;","export default function _isObject(x) {\n return Object.prototype.toString.call(x) === '[object Object]';\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _isArguments from \"./internal/_isArguments.js\";\nimport _isArray from \"./internal/_isArray.js\";\nimport _isObject from \"./internal/_isObject.js\";\nimport _isString from \"./internal/_isString.js\";\n/**\n * Returns the empty value of its argument's type. Ramda defines the empty\n * value of Array (`[]`), Object (`{}`), String (`''`), and Arguments. Other\n * types are supported if they define `.empty`,\n * `.prototype.empty` or implement the\n * [FantasyLand Monoid spec](https://github.com/fantasyland/fantasy-land#monoid).\n *\n * Dispatches to the `empty` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig a -> a\n * @param {*} x\n * @return {*}\n * @example\n *\n * R.empty(Just(42)); //=> Nothing()\n * R.empty([1, 2, 3]); //=> []\n * R.empty('unicorns'); //=> ''\n * R.empty({x: 1, y: 2}); //=> {}\n */\n\nvar empty =\n/*#__PURE__*/\n_curry1(function empty(x) {\n return x != null && typeof x['fantasy-land/empty'] === 'function' ? x['fantasy-land/empty']() : x != null && x.constructor != null && typeof x.constructor['fantasy-land/empty'] === 'function' ? x.constructor['fantasy-land/empty']() : x != null && typeof x.empty === 'function' ? x.empty() : x != null && x.constructor != null && typeof x.constructor.empty === 'function' ? x.constructor.empty() : _isArray(x) ? [] : _isString(x) ? '' : _isObject(x) ? {} : _isArguments(x) ? function () {\n return arguments;\n }() : void 0 // else\n ;\n});\n\nexport default empty;","export default function _arrayFromIterator(iter) {\n var list = [];\n var next;\n\n while (!(next = iter.next()).done) {\n list.push(next.value);\n }\n\n return list;\n}","export default function _includesWith(pred, x, list) {\n var idx = 0;\n var len = list.length;\n\n while (idx < len) {\n if (pred(x, list[idx])) {\n return true;\n }\n\n idx += 1;\n }\n\n return false;\n}","// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction _objectIs(a, b) {\n // SameValue algorithm\n if (a === b) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return a !== 0 || 1 / a === 1 / b;\n } else {\n // Step 6.a: NaN == NaN\n return a !== a && b !== b;\n }\n}\n\nexport default typeof Object.is === 'function' ? Object.is : _objectIs;","import _curry1 from \"./internal/_curry1.js\";\n/**\n * Gives a single-word string description of the (native) type of a value,\n * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not\n * attempt to distinguish user Object types any further, reporting them all as\n * 'Object'.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Type\n * @sig (* -> {*}) -> String\n * @param {*} val The value to test\n * @return {String}\n * @example\n *\n * R.type({}); //=> \"Object\"\n * R.type(1); //=> \"Number\"\n * R.type(false); //=> \"Boolean\"\n * R.type('s'); //=> \"String\"\n * R.type(null); //=> \"Null\"\n * R.type([]); //=> \"Array\"\n * R.type(/[A-z]/); //=> \"RegExp\"\n * R.type(() => {}); //=> \"Function\"\n * R.type(undefined); //=> \"Undefined\"\n */\n\nvar type =\n/*#__PURE__*/\n_curry1(function type(val) {\n return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1);\n});\n\nexport default type;","import _arrayFromIterator from \"./_arrayFromIterator.js\";\nimport _includesWith from \"./_includesWith.js\";\nimport _functionName from \"./_functionName.js\";\nimport _has from \"./_has.js\";\nimport _objectIs from \"./_objectIs.js\";\nimport keys from \"../keys.js\";\nimport type from \"../type.js\";\n/**\n * private _uniqContentEquals function.\n * That function is checking equality of 2 iterator contents with 2 assumptions\n * - iterators lengths are the same\n * - iterators values are unique\n *\n * false-positive result will be returned for comparision of, e.g.\n * - [1,2,3] and [1,2,3,4]\n * - [1,1,1] and [1,2,3]\n * */\n\nfunction _uniqContentEquals(aIterator, bIterator, stackA, stackB) {\n var a = _arrayFromIterator(aIterator);\n\n var b = _arrayFromIterator(bIterator);\n\n function eq(_a, _b) {\n return _equals(_a, _b, stackA.slice(), stackB.slice());\n } // if *a* array contains any element that is not included in *b*\n\n\n return !_includesWith(function (b, aItem) {\n return !_includesWith(eq, aItem, b);\n }, b, a);\n}\n\nexport default function _equals(a, b, stackA, stackB) {\n if (_objectIs(a, b)) {\n return true;\n }\n\n var typeA = type(a);\n\n if (typeA !== type(b)) {\n return false;\n }\n\n if (a == null || b == null) {\n return false;\n }\n\n if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') {\n return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a);\n }\n\n if (typeof a.equals === 'function' || typeof b.equals === 'function') {\n return typeof a.equals === 'function' && a.equals(b) && typeof b.equals === 'function' && b.equals(a);\n }\n\n switch (typeA) {\n case 'Arguments':\n case 'Array':\n case 'Object':\n if (typeof a.constructor === 'function' && _functionName(a.constructor) === 'Promise') {\n return a === b;\n }\n\n break;\n\n case 'Boolean':\n case 'Number':\n case 'String':\n if (!(typeof a === typeof b && _objectIs(a.valueOf(), b.valueOf()))) {\n return false;\n }\n\n break;\n\n case 'Date':\n if (!_objectIs(a.valueOf(), b.valueOf())) {\n return false;\n }\n\n break;\n\n case 'Error':\n return a.name === b.name && a.message === b.message;\n\n case 'RegExp':\n if (!(a.source === b.source && a.global === b.global && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.sticky === b.sticky && a.unicode === b.unicode)) {\n return false;\n }\n\n break;\n }\n\n var idx = stackA.length - 1;\n\n while (idx >= 0) {\n if (stackA[idx] === a) {\n return stackB[idx] === b;\n }\n\n idx -= 1;\n }\n\n switch (typeA) {\n case 'Map':\n if (a.size !== b.size) {\n return false;\n }\n\n return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b]));\n\n case 'Set':\n if (a.size !== b.size) {\n return false;\n }\n\n return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b]));\n\n case 'Arguments':\n case 'Array':\n case 'Object':\n case 'Boolean':\n case 'Number':\n case 'String':\n case 'Date':\n case 'Error':\n case 'RegExp':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'ArrayBuffer':\n break;\n\n default:\n // Values of other types are only equal if identical.\n return false;\n }\n\n var keysA = keys(a);\n\n if (keysA.length !== keys(b).length) {\n return false;\n }\n\n var extendedStackA = stackA.concat([a]);\n var extendedStackB = stackB.concat([b]);\n idx = keysA.length - 1;\n\n while (idx >= 0) {\n var key = keysA[idx];\n\n if (!(_has(key, b) && _equals(b[key], a[key], extendedStackA, extendedStackB))) {\n return false;\n }\n\n idx -= 1;\n }\n\n return true;\n}","export default function _functionName(f) {\n // String(x => x) evaluates to \"x => x\", so the pattern may not match.\n var match = String(f).match(/^function (\\w*)/);\n return match == null ? '' : match[1];\n}","import _curry2 from \"./internal/_curry2.js\";\nimport _equals from \"./internal/_equals.js\";\n/**\n * Returns `true` if its arguments are equivalent, `false` otherwise. Handles\n * cyclical data structures.\n *\n * Dispatches symmetrically to the `equals` methods of both arguments, if\n * present.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -> b -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n * R.equals(1, 1); //=> true\n * R.equals(1, '1'); //=> false\n * R.equals([1, 2, 3], [1, 2, 3]); //=> true\n *\n * const a = {}; a.v = a;\n * const b = {}; b.v = b;\n * R.equals(a, b); //=> true\n */\n\nvar equals =\n/*#__PURE__*/\n_curry2(function equals(a, b) {\n return _equals(a, b, [], []);\n});\n\nexport default equals;","import _curry1 from \"./internal/_curry1.js\";\nimport empty from \"./empty.js\";\nimport equals from \"./equals.js\";\n/**\n * Returns `true` if the given value is its type's empty value; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -> Boolean\n * @param {*} x\n * @return {Boolean}\n * @see R.empty\n * @example\n *\n * R.isEmpty([1, 2, 3]); //=> false\n * R.isEmpty([]); //=> true\n * R.isEmpty(''); //=> true\n * R.isEmpty(null); //=> false\n * R.isEmpty({}); //=> true\n * R.isEmpty({length: 0}); //=> false\n */\n\nvar isEmpty =\n/*#__PURE__*/\n_curry1(function isEmpty(x) {\n return x != null && equals(x, empty(x));\n});\n\nexport default isEmpty;","import _curry1 from \"./_curry1.js\";\nimport _curry2 from \"./_curry2.js\";\nimport _isPlaceholder from \"./_isPlaceholder.js\";\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nexport default function _curry3(fn) {\n return function f3(a, b, c) {\n switch (arguments.length) {\n case 0:\n return f3;\n\n case 1:\n return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n });\n\n case 2:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _curry1(function (_c) {\n return fn(a, b, _c);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) {\n return fn(_a, _b, c);\n }) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b, c);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b, c);\n }) : _isPlaceholder(c) ? _curry1(function (_c) {\n return fn(a, b, _c);\n }) : fn(a, b, c);\n }\n };\n}","import _curry3 from \"./internal/_curry3.js\";\nimport curryN from \"./curryN.js\";\n/**\n * Creates a function that will process either the `onTrue` or the `onFalse`\n * function depending upon the result of the `condition` predicate.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Logic\n * @sig (*... -> Boolean) -> (*... -> *) -> (*... -> *) -> (*... -> *)\n * @param {Function} condition A predicate function\n * @param {Function} onTrue A function to invoke when the `condition` evaluates to a truthy value.\n * @param {Function} onFalse A function to invoke when the `condition` evaluates to a falsy value.\n * @return {Function} A new function that will process either the `onTrue` or the `onFalse`\n * function depending upon the result of the `condition` predicate.\n * @see R.unless, R.when, R.cond\n * @example\n *\n * const incCount = R.ifElse(\n * R.has('count'),\n * R.over(R.lensProp('count'), R.inc),\n * R.assoc('count', 1)\n * );\n * incCount({}); //=> { count: 1 }\n * incCount({ count: 1 }); //=> { count: 2 }\n */\n\nvar ifElse =\n/*#__PURE__*/\n_curry3(function ifElse(condition, onTrue, onFalse) {\n return curryN(Math.max(condition.length, onTrue.length, onFalse.length), function _ifElse() {\n return condition.apply(this, arguments) ? onTrue.apply(this, arguments) : onFalse.apply(this, arguments);\n });\n});\n\nexport default ifElse;","import _indexOf from \"./_indexOf.js\";\nexport default function _includes(a, list) {\n return _indexOf(list, a, 0) >= 0;\n}","import equals from \"../equals.js\";\nexport default function _indexOf(list, a, idx) {\n var inf, item; // Array.prototype.indexOf doesn't exist below IE9\n\n if (typeof list.indexOf === 'function') {\n switch (typeof a) {\n case 'number':\n if (a === 0) {\n // manually crawl the list to distinguish between +0 and -0\n inf = 1 / a;\n\n while (idx < list.length) {\n item = list[idx];\n\n if (item === 0 && 1 / item === inf) {\n return idx;\n }\n\n idx += 1;\n }\n\n return -1;\n } else if (a !== a) {\n // NaN\n while (idx < list.length) {\n item = list[idx];\n\n if (typeof item === 'number' && item !== item) {\n return idx;\n }\n\n idx += 1;\n }\n\n return -1;\n } // non-zero numbers can utilise Set\n\n\n return list.indexOf(a, idx);\n // all these types can utilise Set\n\n case 'string':\n case 'boolean':\n case 'function':\n case 'undefined':\n return list.indexOf(a, idx);\n\n case 'object':\n if (a === null) {\n // null can utilise Set\n return list.indexOf(a, idx);\n }\n\n }\n } // anything else not covered above, defer to R.equals\n\n\n while (idx < list.length) {\n if (equals(list[idx], a)) {\n return idx;\n }\n\n idx += 1;\n }\n\n return -1;\n}","import _includes from \"./internal/_includes.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns `true` if the specified value is equal, in [`R.equals`](#equals)\n * terms, to at least one element of the given list; `false` otherwise.\n * Works also with strings.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category List\n * @sig a -> [a] -> Boolean\n * @param {Object} a The item to compare against.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise.\n * @see R.any\n * @example\n *\n * R.includes(3, [1, 2, 3]); //=> true\n * R.includes(4, [1, 2, 3]); //=> false\n * R.includes({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true\n * R.includes([42], [[42]]); //=> true\n * R.includes('ba', 'banana'); //=>true\n */\n\nvar includes =\n/*#__PURE__*/\n_curry2(_includes);\n\nexport default includes;","import _curry1 from \"./internal/_curry1.js\";\nimport curryN from \"./curryN.js\";\n/**\n * Returns a new function much like the supplied one, except that the first two\n * arguments' order is reversed.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((a, b, c, ...) -> z) -> (b -> a -> c -> ... -> z)\n * @param {Function} fn The function to invoke with its first two parameters reversed.\n * @return {*} The result of invoking `fn` with its first two parameters' order reversed.\n * @example\n *\n * const mergeThree = (a, b, c) => [].concat(a, b, c);\n *\n * mergeThree(1, 2, 3); //=> [1, 2, 3]\n *\n * R.flip(mergeThree)(1, 2, 3); //=> [2, 1, 3]\n * @symb R.flip(f)(a, b, c) = f(b, a, c)\n */\n\nvar flip =\n/*#__PURE__*/\n_curry1(function flip(fn) {\n return curryN(fn.length, function (a, b) {\n var args = Array.prototype.slice.call(arguments, 0);\n args[0] = b;\n args[1] = a;\n return fn.apply(this, args);\n });\n});\n\nexport default flip;","export default function _filter(fn, list) {\n var idx = 0;\n var len = list.length;\n var result = [];\n\n while (idx < len) {\n if (fn(list[idx])) {\n result[result.length] = list[idx];\n }\n\n idx += 1;\n }\n\n return result;\n}","import _curry2 from \"./_curry2.js\";\nimport _xfBase from \"./_xfBase.js\";\n\nvar XFilter =\n/*#__PURE__*/\nfunction () {\n function XFilter(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n\n XFilter.prototype['@@transducer/init'] = _xfBase.init;\n XFilter.prototype['@@transducer/result'] = _xfBase.result;\n\n XFilter.prototype['@@transducer/step'] = function (result, input) {\n return this.f(input) ? this.xf['@@transducer/step'](result, input) : result;\n };\n\n return XFilter;\n}();\n\nvar _xfilter =\n/*#__PURE__*/\n_curry2(function _xfilter(f, xf) {\n return new XFilter(f, xf);\n});\n\nexport default _xfilter;","import _curry2 from \"./internal/_curry2.js\";\nimport _dispatchable from \"./internal/_dispatchable.js\";\nimport _filter from \"./internal/_filter.js\";\nimport _isObject from \"./internal/_isObject.js\";\nimport _reduce from \"./internal/_reduce.js\";\nimport _xfilter from \"./internal/_xfilter.js\";\nimport keys from \"./keys.js\";\n/**\n * Takes a predicate and a `Filterable`, and returns a new filterable of the\n * same type containing the members of the given filterable which satisfy the\n * given predicate. Filterable objects include plain objects or any object\n * that has a filter method such as `Array`.\n *\n * Dispatches to the `filter` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array} Filterable\n * @see R.reject, R.transduce, R.addIndex\n * @example\n *\n * const isEven = n => n % 2 === 0;\n *\n * R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\n\nvar filter =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['filter'], _xfilter, function (pred, filterable) {\n return _isObject(filterable) ? _reduce(function (acc, key) {\n if (pred(filterable[key])) {\n acc[key] = filterable[key];\n }\n\n return acc;\n }, {}, keys(filterable)) : // else\n _filter(pred, filterable);\n}));\n\nexport default filter;","import _complement from \"./internal/_complement.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport filter from \"./filter.js\";\n/**\n * The complement of [`filter`](#filter).\n *\n * Acts as a transducer if a transformer is given in list position. Filterable\n * objects include plain objects or any object that has a filter method such\n * as `Array`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array}\n * @see R.filter, R.transduce, R.addIndex\n * @example\n *\n * const isOdd = (n) => n % 2 === 1;\n *\n * R.reject(isOdd, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\n\nvar reject =\n/*#__PURE__*/\n_curry2(function reject(pred, filterable) {\n return filter(_complement(pred), filterable);\n});\n\nexport default reject;","export default function _complement(f) {\n return function () {\n return !f.apply(this, arguments);\n };\n}","import _includes from \"./internal/_includes.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport flip from \"./flip.js\";\nimport reject from \"./reject.js\";\n/**\n * Returns a new list without values in the first argument.\n * [`R.equals`](#equals) is used to determine equality.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig [a] -> [a] -> [a]\n * @param {Array} list1 The values to be removed from `list2`.\n * @param {Array} list2 The array to remove values from.\n * @return {Array} The new array without values in `list1`.\n * @see R.transduce, R.difference, R.remove\n * @example\n *\n * R.without([1, 2], [1, 2, 1, 3, 4]); //=> [3, 4]\n */\n\nvar without =\n/*#__PURE__*/\n_curry2(function (xs, list) {\n return reject(flip(_includes)(xs), list);\n});\n\nexport default without;","import _concat from \"./internal/_concat.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns a new list containing the contents of the given list, followed by\n * the given element.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> [a]\n * @param {*} el The element to add to the end of the new list.\n * @param {Array} list The list of elements to add a new item to.\n * list.\n * @return {Array} A new list containing the elements of the old list followed by `el`.\n * @see R.prepend\n * @example\n *\n * R.append('tests', ['write', 'more']); //=> ['write', 'more', 'tests']\n * R.append('tests', []); //=> ['tests']\n * R.append(['tests'], ['write', 'more']); //=> ['write', 'more', ['tests']]\n */\n\nvar append =\n/*#__PURE__*/\n_curry2(function append(el, list) {\n return _concat(list, [el]);\n});\n\nexport default append;","export default function _identity(x) {\n return x;\n}","import _curry1 from \"./internal/_curry1.js\";\nimport _identity from \"./internal/_identity.js\";\n/**\n * A function that does nothing but return the parameter supplied to it. Good\n * as a default or placeholder function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> a\n * @param {*} x The value to return.\n * @return {*} The input value, `x`.\n * @example\n *\n * R.identity(1); //=> 1\n *\n * const obj = {};\n * R.identity(obj) === obj; //=> true\n * @symb R.identity(a) = a\n */\n\nvar identity =\n/*#__PURE__*/\n_curry1(_identity);\n\nexport default identity;","import _includes from \"./_includes.js\";\n\nvar _Set =\n/*#__PURE__*/\nfunction () {\n function _Set() {\n /* globals Set */\n this._nativeSet = typeof Set === 'function' ? new Set() : null;\n this._items = {};\n }\n\n // until we figure out why jsdoc chokes on this\n // @param item The item to add to the Set\n // @returns {boolean} true if the item did not exist prior, otherwise false\n //\n _Set.prototype.add = function (item) {\n return !hasOrAdd(item, true, this);\n }; //\n // @param item The item to check for existence in the Set\n // @returns {boolean} true if the item exists in the Set, otherwise false\n //\n\n\n _Set.prototype.has = function (item) {\n return hasOrAdd(item, false, this);\n }; //\n // Combines the logic for checking whether an item is a member of the set and\n // for adding a new item to the set.\n //\n // @param item The item to check or add to the Set instance.\n // @param shouldAdd If true, the item will be added to the set if it doesn't\n // already exist.\n // @param set The set instance to check or add to.\n // @return {boolean} true if the item already existed, otherwise false.\n //\n\n\n return _Set;\n}();\n\nfunction hasOrAdd(item, shouldAdd, set) {\n var type = typeof item;\n var prevSize, newSize;\n\n switch (type) {\n case 'string':\n case 'number':\n // distinguish between +0 and -0\n if (item === 0 && 1 / item === -Infinity) {\n if (set._items['-0']) {\n return true;\n } else {\n if (shouldAdd) {\n set._items['-0'] = true;\n }\n\n return false;\n }\n } // these types can all utilise the native Set\n\n\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n\n set._nativeSet.add(item);\n\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = {};\n set._items[type][item] = true;\n }\n\n return false;\n } else if (item in set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][item] = true;\n }\n\n return false;\n }\n }\n\n case 'boolean':\n // set._items['boolean'] holds a two element array\n // representing [ falseExists, trueExists ]\n if (type in set._items) {\n var bIdx = item ? 1 : 0;\n\n if (set._items[type][bIdx]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][bIdx] = true;\n }\n\n return false;\n }\n } else {\n if (shouldAdd) {\n set._items[type] = item ? [false, true] : [true, false];\n }\n\n return false;\n }\n\n case 'function':\n // compare functions for reference equality\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n\n set._nativeSet.add(item);\n\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n\n return false;\n }\n\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n\n return false;\n }\n\n return true;\n }\n\n case 'undefined':\n if (set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type] = true;\n }\n\n return false;\n }\n\n case 'object':\n if (item === null) {\n if (!set._items['null']) {\n if (shouldAdd) {\n set._items['null'] = true;\n }\n\n return false;\n }\n\n return true;\n }\n\n /* falls through */\n\n default:\n // reduce the search size of heterogeneous sets by creating buckets\n // for each type.\n type = Object.prototype.toString.call(item);\n\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n\n return false;\n } // scan through all previously applied items\n\n\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n\n return false;\n }\n\n return true;\n }\n} // A simple Set type that honours R.equals semantics\n\n\nexport default _Set;","import identity from \"./identity.js\";\nimport uniqBy from \"./uniqBy.js\";\n/**\n * Returns a new list containing only one copy of each element in the original\n * list. [`R.equals`](#equals) is used to determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniq([1, 1, 2, 1]); //=> [1, 2]\n * R.uniq([1, '1']); //=> [1, '1']\n * R.uniq([[42], [42]]); //=> [[42]]\n */\n\nvar uniq =\n/*#__PURE__*/\nuniqBy(identity);\nexport default uniq;","import _Set from \"./internal/_Set.js\";\nimport _curry2 from \"./internal/_curry2.js\";\n/**\n * Returns a new list containing only one copy of each element in the original\n * list, based upon the value returned by applying the supplied function to\n * each list element. Prefers the first item if the supplied function produces\n * the same value on two items. [`R.equals`](#equals) is used for comparison.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -> b) -> [a] -> [a]\n * @param {Function} fn A function used to produce a value to use during comparisons.\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=> [-1, -5, 2, 10]\n */\n\nvar uniqBy =\n/*#__PURE__*/\n_curry2(function uniqBy(fn, list) {\n var set = new _Set();\n var result = [];\n var idx = 0;\n var appliedItem, item;\n\n while (idx < list.length) {\n item = list[idx];\n appliedItem = fn(item);\n\n if (set.add(appliedItem)) {\n result.push(item);\n }\n\n idx += 1;\n }\n\n return result;\n});\n\nexport default uniqBy;","import _includes from \"./internal/_includes.js\";\nimport _curry2 from \"./internal/_curry2.js\";\nimport _filter from \"./internal/_filter.js\";\nimport flip from \"./flip.js\";\nimport uniq from \"./uniq.js\";\n/**\n * Combines two lists into a set (i.e. no duplicates) composed of those\n * elements common to both lists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The list of elements found in both `list1` and `list2`.\n * @see R.innerJoin\n * @example\n *\n * R.intersection([1,2,3,4], [7,6,5,4,3]); //=> [4, 3]\n */\n\nvar intersection =\n/*#__PURE__*/\n_curry2(function intersection(list1, list2) {\n var lookupList, filteredList;\n\n if (list1.length > list2.length) {\n lookupList = list1;\n filteredList = list2;\n } else {\n lookupList = list2;\n filteredList = list1;\n }\n\n return uniq(_filter(flip(_includes)(lookupList), filteredList));\n});\n\nexport default intersection;","import * as R from 'ramda';\nconst notEmpty = R.complement(R.isEmpty);\n\nconst listToggle = (item, list) => R.ifElse(\n R.includes(item),\n R.without([item]),\n R.append(item)\n)(list);\n\nvar trackFilters = [];\n\nconst CLASS_HIDE = 'hide';\nconst CLASS_ACTIVE = 'active';\n\nfunction sessionVisibility($s, visible = true) {\n if (visible) {\n $s\n .removeClass(CLASS_HIDE)\n .find('.session-content')\n .collapse('show')\n }\n else {\n $s\n .addClass(CLASS_HIDE)\n .find('.session-content')\n .collapse('hide');\n }\n}\n\n// update search needle when input changes\nvar searchText = '';\nvar searchBox = document.getElementById('sessions-search');\nif (searchBox) {\n searchBox.addEventListener('keyup', function(e) {\n const next = jQuery('#sessions-search').val().toLowerCase().trim();\n if (next !== searchText) {\n searchText = next;\n updateSessionFilters();\n jQuery(window).scrollTop(0);\n }\n console.log(searchText);\n });\n}\n\nfunction updateSessionFilters() {\n jQuery('.btn-track-filter').each(function(){\n var $this = jQuery(this);\n var t = $this.attr('data-track-target');\n if (trackFilters.includes(t)) {\n $this.addClass(CLASS_ACTIVE);\n }\n else {\n $this.removeClass(CLASS_ACTIVE);\n }\n });\n\n if (!trackFilters.length && !searchText) {\n // show all sessions, but collapse\n jQuery('.session')\n .removeClass(CLASS_HIDE)\n .find('.session-content')\n .collapse('hide');\n jQuery('.agenda-day').removeClass(CLASS_HIDE);\n jQuery('.clear-filters').hide();\n jQuery(window).scrollTop(0);\n jQuery('.nav--event-dates a').fadeIn(100);\n return;\n }\n jQuery('.clear-filters').show();\n \n let total = 0;\n console.log(searchText);\n jQuery('.session').each(function() {\n var $this = jQuery(this);\n\n // check if tracks match filter\n var myTracks = $this\n .attr('data-tracks')\n .split(', ');\n\n const searchHaystack = $this.text().toLowerCase();\n\n const foundInSearch = searchText\n ? searchHaystack.includes(searchText)\n : true;\n\n const keywordsFound = trackFilters.length\n ? notEmpty(R.intersection(myTracks, trackFilters))\n : true;\n \n const visible = foundInSearch && keywordsFound;\n \n if (visible) {\n total++;\n }\n sessionVisibility($this, visible);\n });\n \n if (!total) {\n jQuery('.none-found').show();\n }\n else {\n jQuery('.none-found').hide();\n }\n\n jQuery('.agenda-day').each(function(){\n var $this = jQuery(this);\n const id = $this.attr('id');\n const visibleSessions = $this.find(`.session:not(.${CLASS_HIDE})`);\n // const visibleSessions = $this\n // .find('.session:visible');\n const $navItem = jQuery('.nav--event-dates')\n .find(`a[href=\"#${id}\"]`);\n\n if (visibleSessions.length) {\n $this.removeClass(CLASS_HIDE);\n $navItem.fadeIn(100);\n }\n else {\n $this.addClass(CLASS_HIDE);\n $navItem.fadeOut(100);\n }\n });\n\n\n}\n\njQuery(document).on('click', '.btn-track-filter', function(){\n var $this = jQuery(this);\n var t = $this.attr('data-track-target');\n trackFilters = listToggle(t, trackFilters);\n updateSessionFilters();\n});\n\njQuery(document).on('click', '.clear-filters', function(){\n trackFilters = [];\n searchText = '';\n jQuery('#sessions-search').val('');\n updateSessionFilters();\n})\n"],"sourceRoot":""}